gg: support transparency for rect/triangle/etc primitives too
parent
4ae88c69ac
commit
d4fbf422b3
|
@ -87,7 +87,7 @@ const (
|
|||
]
|
||||
|
||||
background_color = gx.white
|
||||
ui_color = gx.red
|
||||
ui_color = gx.rgba(255,0,0, 210)
|
||||
)
|
||||
|
||||
// TODO: type Tetro [tetro_size]struct{ x, y int }
|
||||
|
|
12
vlib/gg/gg.v
12
vlib/gg/gg.v
|
@ -226,6 +226,9 @@ pub fn (mut ctx Context) set_bg_color(c gx.Color) {
|
|||
|
||||
// TODO: Fix alpha
|
||||
pub fn (ctx &Context) draw_rect(x, y, w, h f32, c gx.Color) {
|
||||
if c.a != 255 {
|
||||
sgl.load_pipeline(ctx.timage_pip)
|
||||
}
|
||||
sgl.c4b(c.r, c.g, c.b, c.a)
|
||||
sgl.begin_quads()
|
||||
sgl.v2f(x * ctx.scale, y * ctx.scale)
|
||||
|
@ -236,6 +239,9 @@ pub fn (ctx &Context) draw_rect(x, y, w, h f32, c gx.Color) {
|
|||
}
|
||||
|
||||
pub fn (ctx &Context) draw_triangle(x, y, x2, y2, x3, y3 f32, c gx.Color) {
|
||||
if c.a != 255 {
|
||||
sgl.load_pipeline(ctx.timage_pip)
|
||||
}
|
||||
sgl.c4b(c.r, c.g, c.b, c.a)
|
||||
sgl.begin_quads()
|
||||
sgl.v2f(x * ctx.scale, y * ctx.scale)
|
||||
|
@ -245,6 +251,9 @@ pub fn (ctx &Context) draw_triangle(x, y, x2, y2, x3, y3 f32, c gx.Color) {
|
|||
}
|
||||
|
||||
pub fn (ctx &Context) draw_empty_rect(x, y, w, h f32, c gx.Color) {
|
||||
if c.a != 255 {
|
||||
sgl.load_pipeline(ctx.timage_pip)
|
||||
}
|
||||
sgl.c4b(c.r, c.g, c.b, c.a)
|
||||
sgl.begin_line_strip()
|
||||
if ctx.scale == 1 {
|
||||
|
@ -295,6 +304,9 @@ fn abs(a f32) f32 {
|
|||
|
||||
|
||||
pub fn (ctx &Context) draw_line(x, y, x2, y2 f32, c gx.Color) {
|
||||
if c.a != 255 {
|
||||
sgl.load_pipeline(ctx.timage_pip)
|
||||
}
|
||||
if ctx.scale > 1 {
|
||||
// Make the line more clear on hi dpi screens: draw a rectangle
|
||||
mut width := abs(x2 - x)
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
module gg
|
||||
|
||||
import sokol.sfons
|
||||
import sokol.sgl
|
||||
import gx
|
||||
import os
|
||||
|
||||
|
@ -94,7 +95,10 @@ fn (ctx &Context) set_cfg(cfg gx.TextCfg) {
|
|||
size := if cfg.mono { cfg.size - 2 } else { cfg.size }
|
||||
ctx.ft.fons.set_size(scale * f32(size))
|
||||
C.fonsSetAlign(ctx.ft.fons, int(cfg.align) | int(cfg.vertical_align))
|
||||
color := C.sfons_rgba(cfg.color.r, cfg.color.g, cfg.color.b, 255)
|
||||
color := C.sfons_rgba(cfg.color.r, cfg.color.g, cfg.color.b, cfg.color.a)
|
||||
if cfg.color.a != 255 {
|
||||
sgl.load_pipeline(ctx.timage_pip)
|
||||
}
|
||||
C.fonsSetColor(ctx.ft.fons, color)
|
||||
ascender := f32(0.0)
|
||||
descender := f32(0.0)
|
||||
|
|
Loading…
Reference in New Issue