mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
sokol: fix building of examples and ci tests
This commit is contained in:
parent
3d57d3bb7b
commit
24d34a4f2c
3
examples/sokol_examples/.gitignore
vendored
Normal file
3
examples/sokol_examples/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
fonts
|
||||
fonts2
|
||||
drawing
|
BIN
examples/sokol_examples/assets/DroidSerif-Regular.ttf
Normal file
BIN
examples/sokol_examples/assets/DroidSerif-Regular.ttf
Normal file
Binary file not shown.
BIN
examples/sokol_examples/assets/ProggyTiny.ttf
Normal file
BIN
examples/sokol_examples/assets/ProggyTiny.ttf
Normal file
Binary file not shown.
@ -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()
|
||||
}
|
||||
|
@ -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()
|
||||
}
|
||||
|
@ -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()
|
||||
}
|
||||
|
@ -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]
|
||||
|
33
vlib/sokol/c/c.v
Normal file
33
vlib/sokol/c/c.v
Normal file
@ -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"
|
28
vlib/sokol/f/f.v
Normal file
28
vlib/sokol/f/f.v
Normal file
@ -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"
|
@ -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 */
|
||||
|
@ -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 {
|
||||
|
@ -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
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user