gl, glfw, freetype fixes

pull/4180/head
Alexander Medvednikov 2020-04-02 01:45:22 +02:00
parent 1cfe44d9c6
commit 88d15c6611
10 changed files with 77 additions and 14 deletions

View File

@ -131,4 +131,4 @@ fn main() {
}
println(res)
}
}
}

View File

@ -26,12 +26,12 @@ const (
const (
text_cfg = gx.TextCfg{
align:gx.ALIGN_LEFT
align:gx.align_left
size:TextSize
color:gx.rgb(0, 0, 0)
}
over_cfg = gx.TextCfg{
align:gx.ALIGN_LEFT
align:gx.align_left
size:TextSize
color:gx.White
}

View File

@ -110,16 +110,16 @@ struct C.FT_Glyph_Metrics {
}
struct C.Glyph {
bitmap Bitmap
bitmap C.Bitmap
bitmap_left int
bitmap_top int
advance Advance
metrics FT_Glyph_Metrics
metrics C.FT_Glyph_Metrics
}
[typedef]
struct C.FT_Face {
glyph &Glyph
glyph &C.Glyph
family_name charptr
style_name charptr
}
@ -193,7 +193,7 @@ pub fn new_context(cfg gg.Cfg) &FreeType {
projection := glm.ortho(0, width, 0, height)// 0 at BOT
shader.set_mat4('projection', projection)
// FREETYPE
ft := FT_Library{0}
ft := C.FT_Library{0}
// All functions return a value different than 0 whenever
// an error occurred
mut ret := C.FT_Init_FreeType(&ft)
@ -386,7 +386,7 @@ pub fn (ctx mut FreeType) draw_text_def(x, y int, text string) {
cfg := gx.TextCfg {
color: gx.Black
size: default_font_size
align: gx.ALIGN_LEFT
align: gx.align_left
}
ctx.draw_text(x, y, text, cfg)
}
@ -451,9 +451,12 @@ pub fn (ctx mut FreeType) text_size(s string) (int, int) {
return scaled_x, scaled_y
}
/*
pub fn (f FT_Face) str() string {
return 'FT_Face{ style_name: ${ptr_str(f.style_name)} family_name: ${ptr_str(f.family_name)} }'
}
*/
pub fn (ac []Character) str() string {
mut res := []string
for c in ac {

View File

@ -120,7 +120,7 @@ pub fn (ctx &GG) draw_text_def(x, y int, text string) {
cfg := gx.TextCfg {
color: gx.Black
size: default_font_size
align: gx.ALIGN_LEFT
align: gx.align_left
}
ctx.draw_text(x, y, text, cfg)
}

View File

@ -11,6 +11,46 @@ module gl
// joe-c: fix & remove
pub enum TmpGlImportHack{ non_empty }
fn C.glDisable()
fn C.glEnable()
fn C.glScissor()
fn C.glVertexAttribPointer()
fn C.glGenBuffers()
fn C.glEnableVertexAttribArray()
fn C.glGenVertexArrays()
fn C.glDrawElements()
fn C.glUseProgram()
fn C.glDrawArrays()
fn C.glBufferData()
fn C.glGenerateMipmap()
fn C.glTexParameteri()
fn C.glDeleteTextures()
fn C.glBindTexture()
fn C.glActiveTexture()
fn C.glGenTextures()
fn C.glBindBuffer()
fn C.glBindVertexArray()
fn C.glGetProgramInfoLog()
fn C.glGetShaderInfoLog()
fn C.glDeleteShader()
fn C.glGetProgramiv()
fn C.glLinkProgram()
fn C.glAttachShader()
fn C.glGetShaderiv()
fn C.glCompileShader()
fn C.glShaderSource()
fn C.glCreateProgram()
fn C.glClear()
fn C.glCreateShader()
fn C.glClearColor()
fn C.glViewport()
fn C.gladLoadGL()
fn C.glTexImage2D()
fn C.glPixelStorei()
fn C.glBlendFunc()
pub fn init_glad() {
ok := C.gladLoadGL()
if isnil(ok) {

View File

@ -51,6 +51,25 @@ pub const (
KeyDown = 264
)
fn C.glfwGetWindowUserPointer() voidptr
fn C.glfwGetPrimaryMonitor() voidptr
fn C.glfwSetWindowUserPointer()
fn C.glfwSetCursor()
fn C.glfwGetCursorPos()
fn C.glfwSetClipboardString()
fn C.glfwGetWindowContentScale()
fn C.glfwGetClipboardString()
fn C.glfwGetKey()
fn C.glfwGetTime()
fn C.glfwSetCharModsCallback()
fn C.glfwSetKeyCallback()
fn C.glfwPostEmptyEvent()
fn C.glfwSetScrollCallback()
fn C.glfwSetWindowSizeCallback()
fn C.glfwSetMouseButtonCallback()
fn C.glfwSetCursorPosCallback()
fn C.glfwSwapBuffers()
// joe-c: fix & remove
struct TmpGlImportHack {
hack gl.TmpGlImportHack
@ -341,3 +360,4 @@ pub fn (size Size) str() string {
pub fn get_window_user_pointer(gwnd voidptr) voidptr {
return C.glfwGetWindowUserPointer(gwnd)
}

View File

@ -262,7 +262,7 @@ pub fn identity2(res mut &f32) {
}
pub fn identity3() []f32 {
res := [1.0, 0, 0, 0,
res := [f32(1.0), 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1,

View File

@ -48,7 +48,7 @@ pub const (
)
pub const (
ALIGN_LEFT = 1
align_left = 1
ALIGN_RIGHT = 4
)

View File

@ -11,7 +11,7 @@ import (
)
const (
max_nr_errors = 100
max_nr_errors = 300
)
pub struct Checker {

View File

@ -790,9 +790,9 @@ fn (g mut Gen) gen_fn_decl(it ast.FnDecl) {
g.writeln('free(_const_os__args.data); // empty, inited in _vinit()')
}
$if windows {
g.writeln('_const_os__args = os__init_os_args(argc, (byteptr*)argv);')
} $else {
g.writeln('_const_os__args = os__init_os_args_wide(argc, (byteptr*)argv);')
} $else {
g.writeln('_const_os__args = os__init_os_args(argc, (byteptr*)argv);')
}
}
}