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) println(res)
} }
} }

View File

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

View File

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

View File

@ -11,6 +11,46 @@ module gl
// joe-c: fix & remove // joe-c: fix & remove
pub enum TmpGlImportHack{ non_empty } 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() { pub fn init_glad() {
ok := C.gladLoadGL() ok := C.gladLoadGL()
if isnil(ok) { if isnil(ok) {

View File

@ -51,6 +51,25 @@ pub const (
KeyDown = 264 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 // joe-c: fix & remove
struct TmpGlImportHack { struct TmpGlImportHack {
hack gl.TmpGlImportHack hack gl.TmpGlImportHack
@ -341,3 +360,4 @@ pub fn (size Size) str() string {
pub fn get_window_user_pointer(gwnd voidptr) voidptr { pub fn get_window_user_pointer(gwnd voidptr) voidptr {
return C.glfwGetWindowUserPointer(gwnd) return C.glfwGetWindowUserPointer(gwnd)
} }

View File

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

View File

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

View File

@ -11,7 +11,7 @@ import (
) )
const ( const (
max_nr_errors = 100 max_nr_errors = 300
) )
pub struct Checker { 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()') g.writeln('free(_const_os__args.data); // empty, inited in _vinit()')
} }
$if windows { $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);') 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);')
} }
} }
} }