aboutsummaryrefslogtreecommitdiffstats
path: root/ui.c
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2025-02-28 14:43:29 -0500
committerSam Anthony <sam@samanthony.xyz>2025-02-28 14:43:29 -0500
commit1a4c280aaf00f23aa6a61867494e85f9b888d27f (patch)
treeccc1b43223f695764752316204d16b263ca58737 /ui.c
parent1342cca91b196431521e66b6fa6628901c5576bc (diff)
downloadvolute-1a4c280aaf00f23aa6a61867494e85f9b888d27f.zip
set displacement
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;