diff options
| author | Sam Anthony <sam@samanthony.xyz> | 2025-04-30 11:37:49 -0400 |
|---|---|---|
| committer | Sam Anthony <sam@samanthony.xyz> | 2025-04-30 11:37:49 -0400 |
| commit | 5ac5c25c299b3c1d390c68c3d04ae979e787def0 (patch) | |
| tree | bf0a222e5075be9ead50c05f942768b484435572 | |
| parent | 550dee49514fe3528c43541f062c1ae5590313ae (diff) | |
| download | volute-5ac5c25c299b3c1d390c68c3d04ae979e787def0.zip | |
canvas widget
| -rw-r--r-- | renderer.h | 2 | ||||
| -rw-r--r-- | widget.c | 17 | ||||
| -rw-r--r-- | widget.h | 8 |
3 files changed, 27 insertions, 0 deletions
@@ -3,9 +3,11 @@ void r_free(void); void r_input(mu_Context *ctx); void r_render(mu_Context *ctx); void r_get_window_size(int *w, int *h); + int r_add_icon(const char *path); void r_remove_icon(int); void r_get_icon_size(int id, int *w, int *h); + int r_add_canvas(const char *bg_img_path); void r_remove_canvas(int id); int r_canvas_draw_circle(int id, int x, int y, int r, mu_Color color); @@ -333,3 +333,20 @@ update_active(mu_Context *ctx, mu_Id id, mu_Rect r, int *active) { mu_update_control(ctx, id, r, 0); *active ^= (ctx->mouse_pressed == MU_MOUSE_LEFT && ctx->focus == id); } + +/* Create a canvas with the background loaded from an image file. Returns non-zero on error. */ +int +w_init_canvas(w_Canvas *c, const char *bg_img_path) { + c->id = r_add_canvas(bg_img_path); + if (c->id < 0) { + weprintf("failed to create canvas widget"); + return 1; + } + return 0; +} + +void +w_free_canvas(w_Canvas *c) { + r_remove_canvas(c->id); + c->id = -1; +} @@ -74,3 +74,11 @@ void w_init_image(w_Image *img); void w_free_image(w_Image *img); int w_set_image(w_Image *img, const char *path); void w_image(mu_Context *ctx, w_Image *img); + + +typedef struct { + int id; /* renderer canvas id. */ +} w_Canvas; + +int w_init_canvas(w_Canvas *c, const char *bg_img_path); +void w_free_canvas(w_Canvas *c); |