From 32b74dd34819fe1522577ac54fcd72eb062058c1 Mon Sep 17 00:00:00 2001 From: Delyan Angelov Date: Sat, 6 Nov 2021 18:24:19 +0200 Subject: [PATCH] gg: simplify the minimal gg application even more with `context.user_data = context` --- examples/gg/polygons.v | 28 ++++++++++------------------ vlib/gg/gg.c.v | 4 +++- vlib/gg/gg.v | 2 +- 3 files changed, 14 insertions(+), 20 deletions(-) diff --git a/examples/gg/polygons.v b/examples/gg/polygons.v index fc0c2f9776..1bf205a213 100644 --- a/examples/gg/polygons.v +++ b/examples/gg/polygons.v @@ -3,31 +3,23 @@ module main import gg import gx -struct App { -mut: - gg &gg.Context -} - fn main() { - mut app := &App{ - gg: 0 - } - app.gg = gg.new_context( + mut context := gg.new_context( bg_color: gx.rgb(174, 198, 255) width: 600 height: 400 window_title: 'Polygons' frame_fn: frame - user_data: app ) - app.gg.run() + context.user_data = context + context.run() } -fn frame(mut app App) { - app.gg.begin() - app.gg.draw_convex_poly([f32(100.0), 100.0, 200.0, 100.0, 300.0, 200.0, 200.0, 300.0, 100.0, - 300.0], gx.blue) - app.gg.draw_empty_poly([f32(50.0), 50.0, 70.0, 60.0, 90.0, 80.0, 70.0, 110.0], gx.black) - app.gg.draw_triangle(450, 142, 530, 280, 370, 280, gx.red) - app.gg.end() +fn frame(mut ctx gg.Context) { + ctx.begin() + ctx.draw_convex_poly([f32(100.0), 100.0, 200.0, 100.0, 300.0, 200.0, 200.0, 300.0, 100.0, 300.0], + gx.blue) + ctx.draw_empty_poly([f32(50.0), 50.0, 70.0, 60.0, 90.0, 80.0, 70.0, 110.0], gx.black) + ctx.draw_triangle(450, 142, 530, 280, 370, 280, gx.red) + ctx.end() } diff --git a/vlib/gg/gg.c.v b/vlib/gg/gg.c.v index af6f8933ad..1d6d1095ab 100644 --- a/vlib/gg/gg.c.v +++ b/vlib/gg/gg.c.v @@ -54,6 +54,7 @@ pub mut: window C.sapp_desc timage_pip C.sgl_pipeline config Config + user_data voidptr ft &FT font_inited bool ui_mode bool // do not redraw everything 60 times/second, but only when the user requests @@ -153,7 +154,7 @@ fn gg_init_sokol_window(user_data voidptr) { g.timage_pip = sgl.make_pipeline(&pipdesc) // if g.config.init_fn != voidptr(0) { - g.config.init_fn(g.config.user_data) + g.config.init_fn(g.user_data) } // Create images now that we can do that after sg is inited if g.native_rendering { @@ -170,6 +171,7 @@ fn gg_init_sokol_window(user_data voidptr) { // pub fn new_context(cfg Config) &Context { mut g := &Context{ + user_data: cfg.user_data width: cfg.width height: cfg.height config: cfg diff --git a/vlib/gg/gg.v b/vlib/gg/gg.v index 6ff3c04a17..408402ffe6 100644 --- a/vlib/gg/gg.v +++ b/vlib/gg/gg.v @@ -113,7 +113,7 @@ fn gg_frame_fn(user_data voidptr) { return } } - ctx.config.frame_fn(ctx.config.user_data) + ctx.config.frame_fn(ctx.user_data) ctx.needs_refresh = false }