From 0ed8199da261a4d80dae956c1fdd4679730776aa Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Mon, 6 Jul 2020 20:29:05 +0200 Subject: [PATCH] gg: merge ft module --- vlib/gg/gg.v | 20 ++---------- vlib/gg/{ft/ft.v => text_rendering.v} | 44 ++++++++++++--------------- 2 files changed, 23 insertions(+), 41 deletions(-) rename vlib/gg/{ft/ft.v => text_rendering.v} (58%) diff --git a/vlib/gg/gg.v b/vlib/gg/gg.v index 2a0038f9f0..3a47b14d64 100644 --- a/vlib/gg/gg.v +++ b/vlib/gg/gg.v @@ -1,6 +1,5 @@ // Copyright (c) 2019-2020 Alexander Medvednikov. All rights reserved. -// Use of this source code is governed by an MIT license -// that can be found in the LICENSE file. +// Use of this source code is governed by an MIT license that can be found in the LICENSE file. module gg import gx @@ -9,7 +8,6 @@ import sokol import sokol.sapp import sokol.sgl import sokol.gfx -import gg.ft pub type FNCb fn(x voidptr) pub type FNEvent fn(e voidptr, x voidptr) @@ -55,7 +53,7 @@ pub mut: clear_pass C.sg_pass_action window C.sapp_desc config Config - ft &ft.FT + ft &FT font_inited bool } @@ -87,7 +85,7 @@ fn gg_init_sokol_window(user_data voidptr) { //println('g.scale=$g.scale is_high_dpi=$is_high_dpi fb_w=$fb_w fb_h=$fb_h') //if g.config.init_text { if g.config.font_path != '' { - g.ft = ft.new({ font_path: g.config.font_path, scale: sapp.dpi_scale() }) or {panic(err)} + g.ft = new_ft({ font_path: g.config.font_path, scale: sapp.dpi_scale() }) or {panic(err)} g.font_inited = true } if g.config.init_fn != voidptr(0) { @@ -272,18 +270,6 @@ pub fn (ctx &Context) draw_rounded_rect(x, y, width, height, radius f32, color g pub fn (ctx &Context) draw_empty_rounded_rect(x, y, width, height, radius f32, border_color gx.Color) { } -pub fn (ctx &Context) draw_text(x, y int, text string, cfg gx.TextCfg) { - if !ctx.font_inited { - return - } - ctx.ft.draw_text(x, y, text, cfg) -} - -pub fn (ctx &Context) draw_text_def(x, y int, text string) { - ctx.ft.draw_text_def(x, y, text) -} - - fn C.WaitMessage() pub fn wait_events() { diff --git a/vlib/gg/ft/ft.v b/vlib/gg/text_rendering.v similarity index 58% rename from vlib/gg/ft/ft.v rename to vlib/gg/text_rendering.v index f78ac189f4..a9c4bf39fd 100644 --- a/vlib/gg/ft/ft.v +++ b/vlib/gg/text_rendering.v @@ -1,4 +1,6 @@ -module ft +// Copyright (c) 2019-2020 Alexander Medvednikov. All rights reserved. +// Use of this source code is governed by an MIT license that can be found in the LICENSE file. +module gg import sokol.sfons import gx @@ -7,13 +9,6 @@ import os const ( default_font_size = 20 ) -// TODO remove globals -/* -__global g_fons &C.FONScontext -__global g_font_normal int -__global g_font_path string -*/ - pub struct FT { pub: @@ -23,13 +18,13 @@ pub struct FT { scale f32 = 1.0 } -pub struct Config { +pub struct FTConfig { font_path string scale f32 = 1.0 font_size int } -pub fn new(c Config) ?&FT{ +fn new_ft(c Config) ?&FT{ if c.font_path == '' { // Load default font } @@ -50,38 +45,40 @@ pub fn new(c Config) ?&FT{ } -pub fn (ft &FT) draw_text(x, y int, text string, cfg gx.TextCfg) { - ft.fons.set_font(ft.font_normal) - ft.fons.set_size(2.0 * ft.scale * f32(cfg.size)) +pub fn (ctx &Context) draw_text(x, y int, text string, cfg gx.TextCfg) { + if !ctx.font_inited { + return + } + ctx.ft.fons.set_font(ctx.ft.font_normal) + ctx.ft.fons.set_size(2.0 * ctx.ft.scale * f32(cfg.size)) if cfg.align == gx.align_right { - C.fonsSetAlign(ft.fons, C.FONS_ALIGN_RIGHT | C.FONS_ALIGN_TOP) + C.fonsSetAlign(ctx.ft.fons, C.FONS_ALIGN_RIGHT | C.FONS_ALIGN_TOP) } else { - C.fonsSetAlign(ft.fons, C.FONS_ALIGN_LEFT | C.FONS_ALIGN_TOP) + C.fonsSetAlign(ctx.ft.fons, C.FONS_ALIGN_LEFT | C.FONS_ALIGN_TOP) } color := C.sfons_rgba(cfg.color.r, cfg.color.g, cfg.color.b, 255) - C.fonsSetColor(ft.fons, color) + C.fonsSetColor(ctx.ft.fons, color) ascender := f32(0.0) descender := f32(0.0) lh := f32(0.0) - ft.fons.vert_metrics(&ascender, &descender, &lh) - C.fonsDrawText(ft.fons, x*ft.scale, y*ft.scale, text.str, 0) // TODO: check offsets/alignment + ctx.ft.fons.vert_metrics(&ascender, &descender, &lh) + C.fonsDrawText(ctx.ft.fons, x*ctx.ft.scale, y*ctx.ft.scale, text.str, 0) // TODO: check offsets/alignment } -pub fn (ft &FT) draw_text_def(x, y int, text string) { +pub fn (ctx &Context) draw_text_def(x, y int, text string) { cfg := gx.TextCfg { color: gx.black size: default_font_size align: gx.align_left } - ft.draw_text(x, y, text, cfg) + ctx.draw_text(x, y, text, cfg) } +/* pub fn (mut gg FT) init_font() { - // TODO - ////gg.fons =g_fons - //gg.font_normal=g_font_normal } +*/ pub fn (ft &FT) flush(){ sfons.flush(ft.fons) @@ -93,7 +90,6 @@ pub fn (ft &FT) text_width(s string) int { pub fn (ft &FT) text_height(s string) int { return 0 - } pub fn (ft &FT) text_size(s string) (int, int) {