diff options
| author | Sam Anthony <sam@samanthony.xyz> | 2025-02-28 14:43:29 -0500 |
|---|---|---|
| committer | Sam Anthony <sam@samanthony.xyz> | 2025-02-28 14:43:29 -0500 |
| commit | 1a4c280aaf00f23aa6a61867494e85f9b888d27f (patch) | |
| tree | ccc1b43223f695764752316204d16b263ca58737 /ui.c | |
| parent | 1342cca91b196431521e66b6fa6628901c5576bc (diff) | |
| download | volute-1a4c280aaf00f23aa6a61867494e85f9b888d27f.zip | |
set displacement
Diffstat (limited to 'ui.c')
| -rw-r--r-- | ui.c | 21 |
1 files changed, 21 insertions, 0 deletions
@@ -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; |