aboutsummaryrefslogtreecommitdiffstats
path: root/ui.c
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2025-03-01 12:27:50 -0500
committerSam Anthony <sam@samanthony.xyz>2025-03-01 12:27:50 -0500
commit8cd4a9079a3a4343c2e2fa34d41901569541ec98 (patch)
treeb5c94d79823c73eab85e86bc16ae8940b6b51145 /ui.c
parent89fd08ec37e6b3d5191d20c2e3d219579255d934 (diff)
downloadvolute-8cd4a9079a3a4343c2e2fa34d41901569541ec98.zip
reformat displacement when unit changes
Diffstat (limited to 'ui.c')
-rw-r--r--ui.c15
1 files changed, 15 insertions, 0 deletions
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)] = {
@@ -66,6 +69,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;
PressureMaker convert;