From 8cd4a9079a3a4343c2e2fa34d41901569541ec98 Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Sat, 1 Mar 2025 12:27:50 -0500 Subject: reformat displacement when unit changes --- ui.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'ui.c') diff --git a/ui.c b/ui.c index 3fca1ae..216a10b 100644 --- a/ui.c +++ b/ui.c @@ -16,6 +16,9 @@ static const char *const volume_units[] = {"cc", "l", "ci"}; static const VolumeMaker volume_makers[nelem(volume_units)] = { cubic_centimetre, litre, cubic_inch, }; +static const VolumeReader volume_readers[nelem(volume_units)] = { + as_cubic_centimetre, as_litre, as_cubic_inch, +}; static const char *const pressure_units[] = {"mbar", "kPa", "bar", "psi"}; static const PressureMaker pressure_makers[nelem(pressure_units)] = { @@ -65,6 +68,18 @@ set_displacement(UI *ui) { } } +void +set_displacement_unit(UI *ui) { + VolumeMaker maker; + Volume disp; + VolumeReader reader; + + maker = volume_makers[ui->displacement_unit.oldidx]; + disp = maker(ui->displacement.value); + reader = volume_readers[ui->displacement_unit.idx]; + w_set_field(&ui->displacement, reader(disp)); +} + void set_map(UI *ui, int idx) { int unit_idx; -- cgit v1.2.3