From 24d34a4f2c7ba4e56a45a944395b2e5375754fdb Mon Sep 17 00:00:00 2001 From: Delyan Angelov Date: Fri, 17 Jan 2020 21:05:45 +0200 Subject: [PATCH] sokol: fix building of examples and ci tests --- examples/sokol_examples/.gitignore | 3 + .../assets/DroidSerif-Regular.ttf | Bin 0 -> 162864 bytes examples/sokol_examples/assets/ProggyTiny.ttf | Bin 0 -> 35656 bytes examples/sokol_examples/drawing.v | 37 +++--- examples/sokol_examples/fonts.v | 96 ++++++--------- examples/sokol_examples/fonts2.v | 111 +++++++----------- vlib/fontstash/fontstash.v | 7 ++ vlib/sokol/c/c.v | 33 ++++++ vlib/sokol/f/f.v | 28 +++++ vlib/sokol/sapp/sapp_structs.v | 2 +- vlib/sokol/sfons/sfons.v | 6 +- vlib/sokol/sokol.v | 41 +------ 12 files changed, 181 insertions(+), 183 deletions(-) create mode 100644 examples/sokol_examples/.gitignore create mode 100644 examples/sokol_examples/assets/DroidSerif-Regular.ttf create mode 100644 examples/sokol_examples/assets/ProggyTiny.ttf create mode 100644 vlib/sokol/c/c.v create mode 100644 vlib/sokol/f/f.v diff --git a/examples/sokol_examples/.gitignore b/examples/sokol_examples/.gitignore new file mode 100644 index 0000000000..286eadb91f --- /dev/null +++ b/examples/sokol_examples/.gitignore @@ -0,0 +1,3 @@ +fonts +fonts2 +drawing diff --git a/examples/sokol_examples/assets/DroidSerif-Regular.ttf b/examples/sokol_examples/assets/DroidSerif-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..239ba38253cb2429c9501059b53a1513bce24352 GIT binary patch literal 162864 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 z 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 literal 0 HcmV?d00001 diff --git a/examples/sokol_examples/assets/ProggyTiny.ttf b/examples/sokol_examples/assets/ProggyTiny.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1c4312c3dbaa81babf38bac992e3722e15eedb73 GIT binary patch literal 35656 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 aWGe4uD(_?}?_?_PWGe4uD(~cOqW=eI(CQrk literal 0 HcmV?d00001 diff --git a/examples/sokol_examples/drawing.v b/examples/sokol_examples/drawing.v index b4f8bcc898..40388bcaba 100644 --- a/examples/sokol_examples/drawing.v +++ b/examples/sokol_examples/drawing.v @@ -2,28 +2,32 @@ import sokol import sokol.sapp import sokol.gfx import sokol.sgl -import fontstash struct AppState { pass_action sg_pass_action } +const ( + used_import = sokol.used_import +) + fn main() { state := &AppState{ pass_action: gfx.create_clear_pass(0.1, 0.1, 0.1, 1.0) } - + title := 'Sokol Drawing Template' desc := sapp_desc{ user_data: state init_userdata_cb: init frame_userdata_cb: frame - window_title: 'Sokal Drawing Template'.str + window_title: title.str + html5_canvas_name: title.str } sapp.run(&desc) } fn init(user_data voidptr) { - desc := sg_desc { + desc := sg_desc{ mtl_device: C.sapp_metal_get_device() mtl_renderpass_descriptor_cb: sapp_metal_get_renderpass_descriptor mtl_drawable_cb: sapp_metal_get_drawable @@ -33,17 +37,14 @@ fn init(user_data voidptr) { d3d11_depth_stencil_view_cb: sapp_d3d11_get_depth_stencil_view } gfx.setup(&desc) - sgl_desc := sgl_desc_t{} sgl.setup(&sgl_desc) } fn frame(user_data voidptr) { - //println('frame') + // println('frame') state := &AppState(user_data) - draw() - gfx.begin_default_pass(&state.pass_action, sapp.width(), sapp.height()) sgl.draw() gfx.end_pass() @@ -55,30 +56,28 @@ fn draw() { sgl.defaults() sgl.matrix_mode_projection() sgl.ortho(0.0, f32(sapp.width()), f32(sapp.height()), 0.0, -1.0, 1.0) - sgl.c4b(255, 0, 0, 128) draw_hollow_rect(10, 10, 100, 30) - sgl.c4b(25, 150, 0, 128) draw_filled_rect(10, 150, 80, 40) - //line(0, 0, 500, 500) + // line(0, 0, 500, 500) } fn draw_hollow_rect(x, y, w, h f32) { - sgl.begin_line_strip() - sgl.v2f(x, y) + sgl.begin_line_strip() + sgl.v2f(x, y) sgl.v2f(x + w, y) sgl.v2f(x + w, y + h) sgl.v2f(x, y + h) sgl.v2f(x, y) - sgl.end() + sgl.end() } fn draw_filled_rect(x, y, w, h f32) { - sgl.begin_quads() + sgl.begin_quads() sgl_v2f(x, y) - sgl_v2f(x + w, y) - sgl_v2f(x + w, y + h) - sgl_v2f(x, y + h) - sgl.end() + sgl_v2f(x + w, y) + sgl_v2f(x + w, y + h) + sgl_v2f(x, y + h) + sgl.end() } diff --git a/examples/sokol_examples/fonts.v b/examples/sokol_examples/fonts.v index c6ae4667b7..0f01c51d3d 100644 --- a/examples/sokol_examples/fonts.v +++ b/examples/sokol_examples/fonts.v @@ -3,48 +3,45 @@ import sokol.sapp import sokol.gfx import sokol.sgl import sokol.sfons -import fontstash import os import time struct AppState { mut: pass_action C.sg_pass_action - fons &C.FONScontext + fons &C.FONScontext font_normal int } fn main() { - mut color_action := sg_color_attachment_action { + mut color_action := sg_color_attachment_action{ action: C.SG_ACTION_CLEAR } color_action.val[0] = 0.3 color_action.val[1] = 0.3 color_action.val[2] = 0.32 color_action.val[3] = 1.0 - mut pass_action := sg_pass_action{} pass_action.colors[0] = color_action - state := &AppState{ pass_action: pass_action fons: &C.FONScontext(0) } - + title := 'V Metal/GL Text Rendering' desc := sapp_desc{ user_data: state init_userdata_cb: init frame_userdata_cb: frame - window_title: 'V Metal/GL Text Rendering'.str + window_title: title.str + html5_canvas_name: title.str } sapp.run(&desc) } fn init(user_data voidptr) { mut state := &AppState(user_data) - // dont actually alocate this on the heap in real life - gfx.setup(&sg_desc { + gfx.setup(&sg_desc{ mtl_device: C.sapp_metal_get_device() mtl_renderpass_descriptor_cb: sapp_metal_get_renderpass_descriptor mtl_drawable_cb: sapp_metal_get_drawable @@ -53,30 +50,25 @@ fn init(user_data voidptr) { d3d11_render_target_view_cb: sapp_d3d11_get_render_target_view d3d11_depth_stencil_view_cb: sapp_d3d11_get_depth_stencil_view }) - s := &C.sgl_desc_t{} C.sgl_setup(s) - - state.fons = C.sfons_create(512, 512, 1) - + state.fons = C.sfons_create(512, 512, 1) // or use DroidSerif-Regular.ttf - if bytes := os.read_bytes('assets/ProggyTiny.ttf') { + if bytes := os.read_bytes(os.resource_abs_path('assets/ProggyTiny.ttf')) { println('loaded font: $bytes.len') - state.font_normal = C.fonsAddFontMem(state.fons, "sans", bytes.data, bytes.len, false) + state.font_normal = C.fonsAddFontMem(state.fons, 'sans', bytes.data, bytes.len, false) } } fn frame(user_data voidptr) { - t:=time.ticks() + t := time.ticks() mut state := &AppState(user_data) - state.render_font() - gfx.begin_default_pass(&state.pass_action, sapp_width(), sapp_height()) sgl.draw() gfx.end_pass() gfx.commit() - //println(time.ticks()-t) + // println(time.ticks()-t) } fn (state &AppState) render_font() { @@ -85,21 +77,18 @@ fn (state &AppState) render_font() { mut dx := 0.0 mut dy := 0.0 lh := 0.0 - white := C.sfons_rgba(255, 255, 255, 255) - black := C.sfons_rgba(0, 0, 0, 255) - brown := C.sfons_rgba(192, 128, 0, 128) - blue := C.sfons_rgba(0, 192, 255, 255) - state.fons.clear_state() - + white := C.sfons_rgba(255, 255, 255, 255) + black := C.sfons_rgba(0, 0, 0, 255) + brown := C.sfons_rgba(192, 128, 0, 128) + blue := C.sfons_rgba(0, 192, 255, 255) + state.fons.clear_state() sgl.defaults() - sgl.matrix_mode_projection() - sgl.ortho(0.0, f32(C.sapp_width()), f32(C.sapp_height()), 0.0, -1.0, 1.0) - + sgl.matrix_mode_projection() + sgl.ortho(0.0, f32(C.sapp_width()), f32(C.sapp_height()), 0.0, -1.0, 1.0) sx = 0 sy = 50 - dx = sx + dx = sx dy = sy - state.fons.set_font(state.font_normal) state.fons.set_size(100.0) ascender := 0.0 @@ -109,24 +98,20 @@ fn (state &AppState) render_font() { dy += lh C.fonsSetColor(state.fons, white) dx = C.fonsDrawText(state.fons, dx, dy, c'The quick ', C.NULL) - fonsSetFont(state.fons, state.font_normal) fonsSetSize(state.fons, 48.0) fonsSetColor(state.fons, brown) - dx = fonsDrawText(state.fons, dx, dy, c"brown ", C.NULL) - + dx = fonsDrawText(state.fons, dx, dy, c'brown ', C.NULL) fonsSetFont(state.fons, state.font_normal) fonsSetSize(state.fons, 24.0) fonsSetColor(state.fons, white) - dx = fonsDrawText(state.fons, dx, dy, c"fox ", C.NULL) - + dx = fonsDrawText(state.fons, dx, dy, c'fox ', C.NULL) dx = sx dy += lh * 1.2 fonsSetSize(state.fons, 20.0) fonsSetFont(state.fons, state.font_normal) fonsSetColor(state.fons, blue) - fonsDrawText(state.fons, dx, dy, c"Now is the time for all good men to come to the aid of the party.", C.NULL) - + fonsDrawText(state.fons, dx, dy, c'Now is the time for all good men to come to the aid of the party.', C.NULL) dx = 300 dy = 350 fonsSetAlign(state.fons, C.FONS_ALIGN_LEFT | C.FONS_ALIGN_BASELINE) @@ -135,8 +120,7 @@ fn (state &AppState) render_font() { fonsSetColor(state.fons, white) fonsSetSpacing(state.fons, 5.0) fonsSetBlur(state.fons, 6.0) - fonsDrawText(state.fons, dx, dy, c"Blurry...", C.NULL) - + fonsDrawText(state.fons, dx, dy, c'Blurry...', C.NULL) dx = 300 dy += 50.0 fonsSetSize(state.fons, 28.0) @@ -144,47 +128,45 @@ fn (state &AppState) render_font() { fonsSetColor(state.fons, white) fonsSetSpacing(state.fons, 0.0) fonsSetBlur(state.fons, 3.0) - fonsDrawText(state.fons, dx,dy + 2, c"DROP SHADOW", C.NULL) + fonsDrawText(state.fons, dx, dy + 2, c'DROP SHADOW', C.NULL) fonsSetColor(state.fons, black) fonsSetBlur(state.fons, 0) - fonsDrawText(state.fons, dx,dy, c"DROP SHADOW", C.NULL) - + fonsDrawText(state.fons, dx, dy, c'DROP SHADOW', C.NULL) fonsSetSize(state.fons, 18.0) fonsSetFont(state.fons, state.font_normal) fonsSetColor(state.fons, white) dx = 50 dy = 350 - line(dx-10,dy,dx+250,dy) + line(dx - 10, dy, dx + 250, dy) C.fonsSetAlign(state.fons, C.FONS_ALIGN_LEFT | C.FONS_ALIGN_TOP) - dx = C.fonsDrawText(state.fons, dx,dy, c"Top",C.NULL) + dx = C.fonsDrawText(state.fons, dx, dy, c'Top', C.NULL) dx += 10 C.fonsSetAlign(state.fons, C.FONS_ALIGN_LEFT | C.FONS_ALIGN_MIDDLE) - dx = C.fonsDrawText(state.fons, dx,dy, c"Middle",C.NULL) + dx = C.fonsDrawText(state.fons, dx, dy, c'Middle', C.NULL) dx += 10 C.fonsSetAlign(state.fons, C.FONS_ALIGN_LEFT | C.FONS_ALIGN_BASELINE) - dx = C.fonsDrawText(state.fons, dx,dy, c"Baseline",C.NULL) + dx = C.fonsDrawText(state.fons, dx, dy, c'Baseline', C.NULL) dx += 10 C.fonsSetAlign(state.fons, C.FONS_ALIGN_LEFT | C.FONS_ALIGN_BOTTOM) - C.fonsDrawText(state.fons, dx,dy, c"Bottom",C.NULL) + C.fonsDrawText(state.fons, dx, dy, c'Bottom', C.NULL) dx = 150 dy = 400 - line(dx,dy-30,dx,dy+80.0) + line(dx, dy - 30, dx, dy + 80.0) C.fonsSetAlign(state.fons, C.FONS_ALIGN_LEFT | C.FONS_ALIGN_BASELINE) - C.fonsDrawText(state.fons, dx,dy, c"Left",C.NULL) + C.fonsDrawText(state.fons, dx, dy, c'Left', C.NULL) dy += 30 C.fonsSetAlign(state.fons, C.FONS_ALIGN_CENTER | C.FONS_ALIGN_BASELINE) - C.fonsDrawText(state.fons, dx,dy, c"Center",C.NULL) + C.fonsDrawText(state.fons, dx, dy, c'Center', C.NULL) dy += 30 C.fonsSetAlign(state.fons, C.FONS_ALIGN_RIGHT | C.FONS_ALIGN_BASELINE) - C.fonsDrawText(state.fons, dx,dy, c"Right",C.NULL) - + C.fonsDrawText(state.fons, dx, dy, c'Right', C.NULL) C.sfons_flush(state.fons) } fn line(sx f32, sy f32, ex f32, ey f32) { - sgl.begin_lines() - sgl.c4b(255, 255, 0, 128) - sgl.v2f(sx, sy) - sgl.v2f(ex, ey) - sgl.end() + sgl.begin_lines() + sgl.c4b(255, 255, 0, 128) + sgl.v2f(sx, sy) + sgl.v2f(ex, ey) + sgl.end() } diff --git a/examples/sokol_examples/fonts2.v b/examples/sokol_examples/fonts2.v index 127f13cca7..7bb063c886 100644 --- a/examples/sokol_examples/fonts2.v +++ b/examples/sokol_examples/fonts2.v @@ -3,51 +3,45 @@ import sokol.sapp import sokol.gfx import sokol.sgl import sokol.sfons -import fontstash import os -import time -import filepath - +// import time #define FONS_USE_FREETYPE 1 - struct AppState { mut: pass_action C.sg_pass_action - fons &C.FONScontext + fons &C.FONScontext font_normal int } fn main() { - mut color_action := sg_color_attachment_action { + mut color_action := sg_color_attachment_action{ action: C.SG_ACTION_CLEAR } color_action.val[0] = 0.3 color_action.val[1] = 0.3 color_action.val[2] = 0.32 color_action.val[3] = 1.0 - mut pass_action := sg_pass_action{} pass_action.colors[0] = color_action - state := &AppState{ pass_action: pass_action fons: &C.FONScontext(0) } - + title := 'V Metal/GL Text Rendering' desc := sapp_desc{ user_data: state init_userdata_cb: init frame_userdata_cb: frame - window_title: 'V Metal/GL Text Rendering'.str + window_title: title.str + html5_canvas_name: title.str } sapp.run(&desc) } fn init(user_data voidptr) { mut state := &AppState(user_data) - // dont actually alocate this on the heap in real life - gfx.setup(&sg_desc { + gfx.setup(&sg_desc{ mtl_device: C.sapp_metal_get_device() mtl_renderpass_descriptor_cb: sapp_metal_get_renderpass_descriptor mtl_drawable_cb: sapp_metal_get_drawable @@ -56,67 +50,53 @@ fn init(user_data voidptr) { d3d11_render_target_view_cb: sapp_d3d11_get_render_target_view d3d11_depth_stencil_view_cb: sapp_d3d11_get_depth_stencil_view }) - s := &C.sgl_desc_t{} C.sgl_setup(s) - - state.fons = C.sfons_create(512, 512, 1) - - //mut font_path := cfg.font_path - //if font_path == '' { - mut font_path := 'RobotoMono-Regular.ttf' - //} + state.fons = C.sfons_create(512, 512, 1) + mut font_path := os.resource_abs_path('assets/DroidSerif-Regular.ttf') if !os.exists(font_path) { - exe_path := os.executable() - exe_dir := filepath.basedir(exe_path) - font_path = filepath.basedir(exe_dir) + '/tetris/$font_path' + font_path = os.resource_abs_path('../tetris/RobotoMono-Regular.ttf') println(font_path) } if !os.exists(font_path) { println('failed to load $font_path') return } - if bytes := os.read_bytes(font_path) { println('loaded font: $bytes.len') - state.font_normal = C.fonsAddFontMem(state.fons, "sans", bytes.data, bytes.len, false) + state.font_normal = C.fonsAddFontMem(state.fons, 'sans', bytes.data, bytes.len, false) } } fn frame(user_data voidptr) { - t:=time.ticks() + // t:=time.ticks() mut state := &AppState(user_data) - state.render_font() - gfx.begin_default_pass(&state.pass_action, sapp_width(), sapp_height()) sgl.draw() gfx.end_pass() gfx.commit() - //println(time.ticks()-t) + // println(time.ticks()-t) } -fn (state &AppState) render_font() { +fn (state mut AppState) render_font() { mut sx := 0.0 mut sy := 0.0 mut dx := 0.0 mut dy := 0.0 lh := 0.0 - white := C.sfons_rgba(255, 255, 255, 255) - black := C.sfons_rgba(0, 0, 0, 255) - brown := C.sfons_rgba(192, 128, 0, 128) - blue := C.sfons_rgba(0, 192, 255, 255) - state.fons.clear_state() - + white := C.sfons_rgba(255, 255, 255, 255) + black := C.sfons_rgba(0, 0, 0, 255) + brown := C.sfons_rgba(192, 128, 0, 128) + blue := C.sfons_rgba(0, 192, 255, 255) + state.fons.clear_state() sgl.defaults() - sgl.matrix_mode_projection() - sgl.ortho(0.0, f32(C.sapp_width()), f32(C.sapp_height()), 0.0, -1.0, 1.0) - + sgl.matrix_mode_projection() + sgl.ortho(0.0, f32(C.sapp_width()), f32(C.sapp_height()), 0.0, -1.0, 1.0) sx = 0 sy = 50 - dx = sx + dx = sx dy = sy - state.fons.set_font(state.font_normal) state.fons.set_size(100.0) ascender := 0.0 @@ -126,24 +106,20 @@ fn (state &AppState) render_font() { dy += lh C.fonsSetColor(state.fons, white) dx = C.fonsDrawText(state.fons, dx, dy, c'The 新 quick ', C.NULL) - fonsSetFont(state.fons, state.font_normal) fonsSetSize(state.fons, 48.0) fonsSetColor(state.fons, brown) - dx = fonsDrawText(state.fons, dx, dy, c"brown ", C.NULL) - + dx = fonsDrawText(state.fons, dx, dy, c'brown ', C.NULL) fonsSetFont(state.fons, state.font_normal) fonsSetSize(state.fons, 24.0) fonsSetColor(state.fons, white) - dx = fonsDrawText(state.fons, dx, dy, c"fox ", C.NULL) - + dx = fonsDrawText(state.fons, dx, dy, c'fox ', C.NULL) dx = sx dy += lh * 1.2 fonsSetSize(state.fons, 20.0) fonsSetFont(state.fons, state.font_normal) fonsSetColor(state.fons, blue) - fonsDrawText(state.fons, dx, dy, c"Now is the time for all good men to come to the aid of the party.", C.NULL) - + fonsDrawText(state.fons, dx, dy, c'Now is the time for all good men to come to the aid of the party.', C.NULL) dx = 300 dy = 350 fonsSetAlign(state.fons, C.FONS_ALIGN_LEFT | C.FONS_ALIGN_BASELINE) @@ -152,8 +128,7 @@ fn (state &AppState) render_font() { fonsSetColor(state.fons, white) fonsSetSpacing(state.fons, 5.0) fonsSetBlur(state.fons, 6.0) - fonsDrawText(state.fons, dx, dy, c"Blurry...", C.NULL) - + fonsDrawText(state.fons, dx, dy, c'Blurry...', C.NULL) dx = 300 dy += 50.0 fonsSetSize(state.fons, 28.0) @@ -161,47 +136,45 @@ fn (state &AppState) render_font() { fonsSetColor(state.fons, white) fonsSetSpacing(state.fons, 0.0) fonsSetBlur(state.fons, 3.0) - fonsDrawText(state.fons, dx,dy + 2, c"DROP SHADOW", C.NULL) + fonsDrawText(state.fons, dx, dy + 2, c'DROP SHADOW', C.NULL) fonsSetColor(state.fons, black) fonsSetBlur(state.fons, 0) - fonsDrawText(state.fons, dx,dy, c"DROP SHADOW", C.NULL) - + fonsDrawText(state.fons, dx, dy, c'DROP SHADOW', C.NULL) fonsSetSize(state.fons, 18.0) fonsSetFont(state.fons, state.font_normal) fonsSetColor(state.fons, white) dx = 50 dy = 350 - line(dx-10,dy,dx+250,dy) + line(dx - 10, dy, dx + 250, dy) C.fonsSetAlign(state.fons, C.FONS_ALIGN_LEFT | C.FONS_ALIGN_TOP) - dx = C.fonsDrawText(state.fons, dx,dy, c"Top",C.NULL) + dx = C.fonsDrawText(state.fons, dx, dy, c'Top', C.NULL) dx += 10 C.fonsSetAlign(state.fons, C.FONS_ALIGN_LEFT | C.FONS_ALIGN_MIDDLE) - dx = C.fonsDrawText(state.fons, dx,dy, c"Middle",C.NULL) + dx = C.fonsDrawText(state.fons, dx, dy, c'Middle', C.NULL) dx += 10 C.fonsSetAlign(state.fons, C.FONS_ALIGN_LEFT | C.FONS_ALIGN_BASELINE) - dx = C.fonsDrawText(state.fons, dx,dy, c"Baseline",C.NULL) + dx = C.fonsDrawText(state.fons, dx, dy, c'Baseline', C.NULL) dx += 10 C.fonsSetAlign(state.fons, C.FONS_ALIGN_LEFT | C.FONS_ALIGN_BOTTOM) - C.fonsDrawText(state.fons, dx,dy, c"Bottom",C.NULL) + C.fonsDrawText(state.fons, dx, dy, c'Bottom', C.NULL) dx = 150 dy = 400 - line(dx,dy-30,dx,dy+80.0) + line(dx, dy - 30, dx, dy + 80.0) C.fonsSetAlign(state.fons, C.FONS_ALIGN_LEFT | C.FONS_ALIGN_BASELINE) - C.fonsDrawText(state.fons, dx,dy, c"Left",C.NULL) + C.fonsDrawText(state.fons, dx, dy, c'Left', C.NULL) dy += 30 C.fonsSetAlign(state.fons, C.FONS_ALIGN_CENTER | C.FONS_ALIGN_BASELINE) - C.fonsDrawText(state.fons, dx,dy, c"Center",C.NULL) + C.fonsDrawText(state.fons, dx, dy, c'Center', C.NULL) dy += 30 C.fonsSetAlign(state.fons, C.FONS_ALIGN_RIGHT | C.FONS_ALIGN_BASELINE) - C.fonsDrawText(state.fons, dx,dy, c"Right",C.NULL) - + C.fonsDrawText(state.fons, dx, dy, c'Right', C.NULL) C.sfons_flush(state.fons) } fn line(sx f32, sy f32, ex f32, ey f32) { - sgl.begin_lines() - sgl.c4b(255, 255, 0, 128) - sgl.v2f(sx, sy) - sgl.v2f(ex, ey) - sgl.end() + sgl.begin_lines() + sgl.c4b(255, 255, 0, 128) + sgl.v2f(sx, sy) + sgl.v2f(ex, ey) + sgl.end() } diff --git a/vlib/fontstash/fontstash.v b/vlib/fontstash/fontstash.v index c3eb9b6431..8413afb4e0 100644 --- a/vlib/fontstash/fontstash.v +++ b/vlib/fontstash/fontstash.v @@ -2,6 +2,13 @@ module fontstash #flag -I @VROOT/thirdparty/fontstash +#define FONTSTASH_IMPLEMENTATION +#include "fontstash.h" + +pub const ( + // TODO: fontstash.used_import is used to keep v from warning about unused imports + used_import = 1 +) // Contructor and destructor. [inline] diff --git a/vlib/sokol/c/c.v b/vlib/sokol/c/c.v new file mode 100644 index 0000000000..77e12f9afe --- /dev/null +++ b/vlib/sokol/c/c.v @@ -0,0 +1,33 @@ +module c + +pub const ( + used_import = 1 +) + +#flag -I @VROOT/thirdparty/sokol +#flag -I @VROOT/thirdparty/sokol/util + +#flag darwin -fobjc-arc +#flag linux -lX11 -lGL + +// METAL +// #flag -DSOKOL_METAL +// #flag darwin -framework Metal -framework Cocoa -framework MetalKit -framework QuartzCore + +// OPENGL +#flag -DSOKOL_GLCORE33 +#flag darwin -framework OpenGL -framework Cocoa -framework QuartzCore + + +// for simplicity, all header includes are here because import order matters and we dont have any way +// to ensure import order with V yet +#define SOKOL_IMPL +#define SOKOL_NO_ENTRY +#include "sokol_app.h" + +#define SOKOL_IMPL +#define SOKOL_NO_DEPRECATED +#include "sokol_gfx.h" + +#define SOKOL_GL_IMPL +#include "util/sokol_gl.h" diff --git a/vlib/sokol/f/f.v b/vlib/sokol/f/f.v new file mode 100644 index 0000000000..2751aa8efa --- /dev/null +++ b/vlib/sokol/f/f.v @@ -0,0 +1,28 @@ +module f + +import fontstash + +pub const ( + used_import = 1 + fontstash.used_import +) + +#flag windows -I @VROOT/thirdparty/freetype/include +#flag windows -L @VROOT/thirdparty/freetype/win64 + +#flag linux -I/usr/include/freetype2 +#flag darwin -I/usr/local/include/freetype2 +#flag darwin -I/opt/local/include/freetype2 +#flag darwin -I/usr/local/Cellar/freetype/2.10.0/include/freetype2/ +#flag freebsd -I/usr/local/include/freetype2 +#flag freebsd -Wl -L/usr/local/lib + +#flag -lfreetype +#flag darwin -lpng -lbz2 -lz + +#flag linux -I. + +#include "ft2build.h" + +#define FONS_USE_FREETYPE +#define SOKOL_FONTSTASH_IMPL +#include "util/sokol_fontstash.h" diff --git a/vlib/sokol/sapp/sapp_structs.v b/vlib/sokol/sapp/sapp_structs.v index c8a688650e..e6ed0882da 100644 --- a/vlib/sokol/sapp/sapp_structs.v +++ b/vlib/sokol/sapp/sapp_structs.v @@ -27,7 +27,7 @@ pub: enable_clipboard bool /* enable clipboard access, default is false */ clipboard_size int /* max size of clipboard content in bytes */ - html5_canvas_name byteptr /* the name (id) of the HTML5 canvas element, default is "canvas" */ + html5_canvas_name byteptr /* the name (id) of the HTML5 canvas element, default is "canvas" */ html5_canvas_resize bool /* if true, the HTML5 canvas size is set to sapp_desc.width/height, otherwise canvas size is tracked */ html5_preserve_drawing_buffer bool /* HTML5 only: whether to preserve default framebuffer content between frames */ html5_premultiplied_alpha bool /* HTML5 only: whether the rendered pixels use premultiplied alpha convention */ diff --git a/vlib/sokol/sfons/sfons.v b/vlib/sokol/sfons/sfons.v index 3736c441b1..33ffe6b9dc 100644 --- a/vlib/sokol/sfons/sfons.v +++ b/vlib/sokol/sfons/sfons.v @@ -1,7 +1,11 @@ module sfons + import fontstash -#flag -I fontstash/thirdparty +const ( + // keep v from warning about unused imports + used_import = fontstash.used_import + 1 +) [inline] pub fn sfons_create(width int, height int, flags int) &C.FONScontext { diff --git a/vlib/sokol/sokol.v b/vlib/sokol/sokol.v index 313aad3ec6..2e80d9aa5d 100644 --- a/vlib/sokol/sokol.v +++ b/vlib/sokol/sokol.v @@ -1,39 +1,8 @@ module sokol -#flag -I @VROOT/thirdparty/sokol -#flag -I @VROOT/thirdparty/sokol/util +import sokol.c +import sokol.f -#flag darwin -fobjc-arc -#flag linux -lX11 -lGL - -#flag darwin -I/usr/local/Cellar/freetype/2.10.0/include/freetype2/ -#flag -lfreetype - - -// METAL -// #flag -DSOKOL_METAL -// #flag darwin -framework Metal -framework Cocoa -framework MetalKit -framework QuartzCore - -// OPENGL -#flag -DSOKOL_GLCORE33 -#flag darwin -framework OpenGL -framework Cocoa -framework QuartzCore - - -// for simplicity, all header includes are here because import order matters and we dont have any way -// to ensure import order with V yet -#define SOKOL_IMPL -#define SOKOL_NO_ENTRY -#include "sokol_app.h" - -#define SOKOL_IMPL -#define SOKOL_NO_DEPRECATED -#include "sokol_gfx.h" - -#define SOKOL_GL_IMPL -#include "util/sokol_gl.h" - -#define FONS_USE_FREETYPE -#define FONTSTASH_IMPLEMENTATION -#include "fontstash.h" -#define SOKOL_FONTSTASH_IMPL -#include "util/sokol_fontstash.h" +pub const ( + used_import = c.used_import + f.used_import +)