diff options
| -rw-r--r-- | main.c | 9 | ||||
| -rw-r--r-- | widget.c | 7 | ||||
| -rw-r--r-- | widget.h | 1 |
3 files changed, 16 insertions, 1 deletions
@@ -12,6 +12,7 @@ #include "engine.h" #include "ui.h" #include "color.h" +#include "eprintf.h" /* Macros. */ @@ -386,8 +387,14 @@ mass_flow_rate_corrected_row(mu_Context *ctx, UI *ui) { static void comp_select(mu_Context *ctx, UI *ui) { + const Compressor *comp; + if (w_select_compressor(ctx, &ui->comp_select) & MU_RES_CHANGE) { - /* TODO */ + comp = &ui->comps[ui->comp_select.idx]; + if (w_canvas_set_bg(&ui->comp_img, comp->imgfile) != 0) { + weprintf("failed to set compressor image: %s", comp->imgfile); + } + compute_all(ui); } } @@ -396,3 +396,10 @@ w_clear_canvas(w_Canvas *canvas) { r_clear_canvas(canvas->id); canvas->dirty = 1; } + +/* Set the background image of the canvas. Returns non-zero on error. */ +int +w_canvas_set_bg(w_Canvas *canvas, const char *path) { + r_remove_canvas(canvas->id); + return w_init_canvas(canvas, path); +} @@ -87,3 +87,4 @@ void w_free_canvas(w_Canvas *c); void w_canvas(mu_Context *ctx, w_Canvas *canvas); void w_canvas_draw_circle(w_Canvas *canvas, int x, int y, int r, mu_Color color); void w_clear_canvas(w_Canvas *canvas); +int w_canvas_set_bg(w_Canvas *canvas, const char *path); |