From a2010130adc4204e6eacf358480fb9e7a2b3dfd7 Mon Sep 17 00:00:00 2001 From: Delyan Angelov Date: Wed, 10 Dec 2025 20:51:07 +0200 Subject: [PATCH] gg, examples: add expanding_rect.v (modeled after the example from https://love2d.org/wiki/love), add generic helpers gg.frgb/3 gg.frgba/4 --- examples/gg/expanding_rect.v | 14 ++++++++++++++ vlib/gg/color.v | 23 +++++++++++++++++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 examples/gg/expanding_rect.v diff --git a/examples/gg/expanding_rect.v b/examples/gg/expanding_rect.v new file mode 100644 index 000000000..445e5fdac --- /dev/null +++ b/examples/gg/expanding_rect.v @@ -0,0 +1,14 @@ +import gg + +mut r := &gg.Rect{20, 20, 60, 20} +gg.start( + update_fn: fn [mut r] (dt f32, c &gg.Context) { + r.width++ + r.height++ + } + frame_fn: fn [mut r] (c &gg.Context) { + c.begin() + c.draw_rect_filled(r.x, r.y, r.width, r.height, gg.frgb(0.0, 0.4, 0.4)) + c.end() + } +) diff --git a/vlib/gg/color.v b/vlib/gg/color.v index 81325725d..313d96078 100644 --- a/vlib/gg/color.v +++ b/vlib/gg/color.v @@ -130,7 +130,25 @@ pub fn hex(color i32) Color { } } -// rgb builds a Color instance from given r, g, b values +// frgb builds a Color instance from the given floating point values (between 0.0 and 1.0) r, g, b +@[inline] +pub fn frgb[T](r T, g T, b T) Color { + return frgba(r, g, b, 1.0) +} + +// frgba builds a Color instance from the given floating point values (between 0.0 and 1.0) r, g, b, a +@[inline] +pub fn frgba[T](r T, g T, b T, a T) Color { + return Color{ + r: u8(r * 255.0) + g: u8(g * 255.0) + b: u8(b * 255.0) + a: u8(a * 255.0) + } +} + +// rgb builds a Color instance from the given r, g, b u8 values +@[inline] pub fn rgb(r u8, g u8, b u8) Color { return Color{ r: r @@ -139,7 +157,8 @@ pub fn rgb(r u8, g u8, b u8) Color { } } -// rgba builds a Color instance from given r, g, b, a values +// rgba builds a Color instance from the given r, g, b, a u8 values +@[inline] pub fn rgba(r u8, g u8, b u8, a u8) Color { return Color{ r: r -- 2.39.5