From 1a4c280aaf00f23aa6a61867494e85f9b888d27f Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Fri, 28 Feb 2025 14:43:29 -0500 Subject: set displacement --- ui.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'ui.c') diff --git a/ui.c b/ui.c index 5dc9021..f3e5c4a 100644 --- a/ui.c +++ b/ui.c @@ -1,3 +1,4 @@ +#include #include #include "microui.h" @@ -11,6 +12,10 @@ static const char *const displacement_units[] = {"cc", "l", "ci"}; +static Volume (*displacement_converters[nelem(displacement_units)])(double) = { + cubic_centimetre, litre, cubic_inch, +}; + static const char *const map_units[] = {"mbar", "kPa", "bar", "psi"}; @@ -31,6 +36,22 @@ init_ui(UI *ui) { init_engine(&ui->points[0]); } +void +set_displacement(UI *ui) { + int idx, i; + Volume (*convert)(double), disp; + + idx = ui->displacement_unit.idx; + assert(idx >= 0 && (long unsigned int) idx < nelem(displacement_units)); + + convert = displacement_converters[idx]; + disp = convert(ui->displacement.value); + + for (i = 0; i < ui->npoints; i++) { + ui->points[i].displacement = disp; + } +} + void insert_point(UI *ui, int idx) { int i; -- cgit v1.2.3