aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dive.c24
-rw-r--r--dive.h7
-rw-r--r--divelist.c21
-rw-r--r--profile.c21
4 files changed, 34 insertions, 39 deletions
diff --git a/dive.c b/dive.c
index 53a874b9b..cb94e7925 100644
--- a/dive.c
+++ b/dive.c
@@ -29,6 +29,30 @@ void add_event(struct dive *dive, int time, int type, int flags, int value, cons
remember_event(name);
}
+int get_pressure_units(unsigned int mb, const char **units)
+{
+ int pressure;
+ const char* unit;
+
+ switch (output_units.pressure) {
+ case PASCAL:
+ pressure = mb * 100;
+ unit = "pascal";
+ break;
+ case BAR:
+ pressure = (mb + 500) / 1000;
+ unit = "bar";
+ break;
+ case PSI:
+ pressure = mbar_to_PSI(mb);
+ unit = "psi";
+ break;
+ }
+ if (units)
+ *units = unit;
+ return pressure;
+}
+
double get_temp_units(unsigned int mk, const char **units)
{
double deg;
diff --git a/dive.h b/dive.h
index 5eec6f170..fe4515ee6 100644
--- a/dive.h
+++ b/dive.h
@@ -86,6 +86,7 @@ typedef struct {
pressure_t start, end;
} cylinder_t;
+extern int get_pressure_units(unsigned int mb, const char **units);
extern double get_depth_units(unsigned int mm, int *frac, const char **units);
extern double get_volume_units(unsigned int mm, int *frac, const char **units);
extern double get_temp_units(unsigned int mm, const char **units);
@@ -146,6 +147,12 @@ static inline double to_ATM(pressure_t pressure)
return pressure.mbar / 1013.25;
}
+static inline int mbar_to_PSI(int mbar)
+{
+ pressure_t p = {mbar};
+ return to_PSI(p);
+}
+
struct sample {
duration_t time;
depth_t depth;
diff --git a/divelist.c b/divelist.c
index ca984b4eb..acaf08d38 100644
--- a/divelist.c
+++ b/divelist.c
@@ -420,27 +420,10 @@ void update_dive_list_units(void)
const char *unit;
GtkTreeModel *model = GTK_TREE_MODEL(dive_list.model);
- switch (output_units.length) {
- case METERS:
- unit = "m";
- break;
- case FEET:
- unit = "ft";
- break;
- }
+ (void) get_depth_units(0, NULL, &unit);
gtk_tree_view_column_set_title(dive_list.depth, unit);
- switch (output_units.temperature) {
- case CELSIUS:
- unit = UTF8_DEGREE "C";
- break;
- case FAHRENHEIT:
- unit = UTF8_DEGREE "F";
- break;
- case KELVIN:
- unit = "Kelvin";
- break;
- }
+ (void) get_temp_units(0, &unit);
gtk_tree_view_column_set_title(dive_list.temperature, unit);
gtk_tree_model_foreach(model, set_one_dive, NULL);
diff --git a/profile.c b/profile.c
index f81ae7138..7caa5da9f 100644
--- a/profile.c
+++ b/profile.c
@@ -611,32 +611,13 @@ static void plot_cylinder_pressure(struct graphics_context *gc, struct plot_info
plot_pressure_helper(gc, pi, INTERPOLATED_PR);
}
-static int mbar_to_PSI(int mbar)
-{
- pressure_t p = {mbar};
- return to_PSI(p);
-}
-
static void plot_pressure_value(struct graphics_context *gc, int mbar, int sec,
int xalign, int yalign)
{
int pressure;
const char *unit;
- switch (output_units.pressure) {
- case PASCAL:
- pressure = mbar * 100;
- unit = "pascal";
- break;
- case BAR:
- pressure = (mbar + 500) / 1000;
- unit = "bar";
- break;
- case PSI:
- pressure = mbar_to_PSI(mbar);
- unit = "psi";
- break;
- }
+ pressure = get_pressure_units(mbar, &unit);
text_render_options_t tro = {10, 0.2, 1.0, 0.2, xalign, yalign};
plot_text(gc, &tro, sec, mbar, "%d %s", pressure, unit);
}