ogl_beamforming

Ultrasound Beamforming Implemented with OpenGL
git clone anongit@rnpnr.xyz:ogl_beamforming.git
Log | Files | Refs | Feed | Submodules | LICENSE

Commit: 6ac2b3166087631a3ce446eee0ae839a61b471ec
Parent: 5dc7f3d0a847118978a493db00482bc19d506b40
Author: Randy Palamar
Date:   Wed, 23 Apr 2025 19:49:49 -0600

ui: make table cell data generic

Diffstat:
Mui.c | 20++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/ui.c b/ui.c @@ -375,9 +375,21 @@ typedef enum { TRK_TABLE, } TableRowKind; +typedef enum { + TCK_NONE, + TCK_GENERIC, + TCK_INTEGER, + TCK_VARIABLE, +} TableCellKind; + typedef struct { s8 text; - Variable *var; + union { + i64 integer; + Variable *var; + void *generic; + }; + TableCellKind kind; f32 width; } TableCell; @@ -665,7 +677,7 @@ table_cell_align(TableCell *cell, TextAlignment align, Rect r) function TableCell table_variable_cell(Arena *a, Variable *var) { - TableCell result = {.var = var}; + TableCell result = {.var = var, .kind = TCK_VARIABLE}; Arena tmp = *a; Stream text = arena_stream(&tmp); stream_append_variable(&text, var); @@ -1698,14 +1710,14 @@ draw_table_cell(BeamformerUI *ui, TableCell *cell, Rect cell_rect, TextAlignment cell_rect.size.w = MIN(ts.limits.size.w, cell_rect.size.w); v4 base_colour = ts.colour; - if (cell->var && cell->var->flags & V_INPUT) { + if (cell->kind == TCK_VARIABLE && cell->var->flags & V_INPUT) { if (hover_var(ui, mouse, cell_rect, cell->var) && (cell->var->flags & V_TEXT)) ui->interaction.hot_font = ts.font; ts.colour = lerp_v4(ts.colour, HOVERED_COLOUR, cell->var->hover_t); } /* TODO(rnp): push truncated text for hovering */ - if (cell->var && cell->var->flags & V_RADIO_BUTTON) + if (cell->kind == TCK_VARIABLE && cell->var->flags & V_RADIO_BUTTON) draw_radio_button(ui, cell->var, cell_at, mouse, base_colour, ts.font->baseSize); else if (cell->text.len) draw_text(cell->text, cell_at, &ts);