From e9e5c21068ab8d92b69d522a752f4362a112242b Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Sat, 1 Mar 2025 12:40:27 -0500 Subject: reformat MAP when unit changes --- main.c | 4 +++- ui.c | 18 ++++++++++++++++++ ui.h | 1 + 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/main.c b/main.c index 2b712d1..7d5bdd3 100644 --- a/main.c +++ b/main.c @@ -187,7 +187,9 @@ map_row(mu_Context *ctx, UI *ui) { mu_layout_width(ctx, LABEL_WIDTH); mu_label(ctx, "map:"); mu_layout_width(ctx, UNIT_WIDTH); - w_select(ctx, &ui->map_unit); + if (w_select(ctx, &ui->map_unit) & MU_RES_CHANGE) { + set_map_unit(ui); + } mu_layout_width(ctx, FIELD_WIDTH); for (i = 0; i npoints; i++) { if (w_field(ctx, &ui->map[i])) { diff --git a/ui.c b/ui.c index cd9dddb..fea7e20 100644 --- a/ui.c +++ b/ui.c @@ -24,6 +24,9 @@ static const char *const pressure_units[] = {"mbar", "kPa", "bar", "psi"}; static const PressureMaker pressure_makers[nelem(pressure_units)] = { millibar, kilopascal, bar, psi, }; +static const PressureReader pressure_readers[nelem(pressure_units)] = { + as_millibar, as_kilopascal, as_bar, as_psi, +}; static const char *const volume_flow_rate_units[] = {"m³/s", "CFM"}; static VolumeFlowRateReader volume_flow_rate_readers[nelem(volume_flow_rate_units)] = { @@ -94,6 +97,21 @@ set_map(UI *ui, int idx) { ui->points[idx].map = p; } +void +set_map_unit(UI *ui) { + PressureMaker maker; + PressureReader reader; + int i; + Pressure map; + + maker = pressure_makers[ui->map_unit.oldidx]; + reader = pressure_readers[ui->map_unit.idx]; + for (i = 0; i < ui->npoints; i++) { + map = maker(ui->map[i].value); + w_set_field(&ui->map[i], reader(map)); + } +} + void set_ve(UI *ui, int idx) { ui->points[idx].ve = percent(ui->ve[idx].value); diff --git a/ui.h b/ui.h index 1238325..02baee6 100644 --- a/ui.h +++ b/ui.h @@ -23,6 +23,7 @@ void init_ui(UI *ui); void set_displacement(UI *ui); void set_displacement_unit(UI* ui); void set_map(UI *ui, int idx); +void set_map_unit(UI *ui); void set_ve(UI *ui, int idx); void set_volume_flow_rate(UI *ui, int idx); void set_all_volume_flow_rate(UI *ui); -- cgit v1.2.3