aboutsummaryrefslogtreecommitdiffstats
path: root/ui.c
diff options
context:
space:
mode:
Diffstat (limited to 'ui.c')
-rw-r--r--ui.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/ui.c b/ui.c
index 5dc9021..f3e5c4a 100644
--- a/ui.c
+++ b/ui.c
@@ -1,3 +1,4 @@
+#include <assert.h>
#include <string.h>
#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"};
@@ -32,6 +37,22 @@ init_ui(UI *ui) {
}
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;