summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dive.h16
-rw-r--r--info.c38
2 files changed, 46 insertions, 8 deletions
diff --git a/dive.h b/dive.h
index ea8fceec1..15f082104 100644
--- a/dive.h
+++ b/dive.h
@@ -95,7 +95,21 @@ static inline int to_C(temperature_t temp)
{
if (!temp.mkelvin)
return 0;
- return (temp.mkelvin - 273150) / 1000;
+ return (temp.mkelvin - 273150 + 499) / 1000;
+}
+
+static inline int to_F(temperature_t temp)
+{
+ if (!temp.mkelvin)
+ return 0;
+ return temp.mkelvin * 9 / 5000.0 - 459.670 + 0.5;
+}
+
+static inline int to_K(temperature_t temp)
+{
+ if (!temp.mkelvin)
+ return 0;
+ return (temp.mkelvin + 499)/1000;
}
static inline int to_PSI(pressure_t pressure)
diff --git a/info.c b/info.c
index 94dcd3485..b789d9fd8 100644
--- a/info.c
+++ b/info.c
@@ -78,9 +78,18 @@ void update_dive_info(struct dive *dive)
tm->tm_hour, tm->tm_min, tm->tm_sec);
gtk_label_set_text(GTK_LABEL(divetime), buffer);
- snprintf(buffer, sizeof(buffer),
- "%d ft",
- to_feet(dive->maxdepth));
+ switch (output_units.length) {
+ case METERS:
+ snprintf(buffer, sizeof(buffer),
+ "%.1f m",
+ dive->maxdepth.mm / 1000.0);
+ break;
+ case FEET:
+ snprintf(buffer, sizeof(buffer),
+ "%d ft",
+ to_feet(dive->maxdepth));
+ break;
+ }
gtk_label_set_text(GTK_LABEL(depth), buffer);
snprintf(buffer, sizeof(buffer),
@@ -89,10 +98,25 @@ void update_dive_info(struct dive *dive)
gtk_label_set_text(GTK_LABEL(duration), buffer);
*buffer = 0;
- if (dive->watertemp.mkelvin)
- snprintf(buffer, sizeof(buffer),
- "%d C",
- to_C(dive->watertemp));
+ if (dive->watertemp.mkelvin) {
+ switch (output_units.temperature) {
+ case CELSIUS:
+ snprintf(buffer, sizeof(buffer),
+ "%d C",
+ to_C(dive->watertemp));
+ break;
+ case FAHRENHEIT:
+ snprintf(buffer, sizeof(buffer),
+ "%d F",
+ to_F(dive->watertemp));
+ break;
+ case KELVIN:
+ snprintf(buffer, sizeof(buffer),
+ "%d K",
+ to_K(dive->watertemp));
+ break;
+ }
+ }
gtk_label_set_text(GTK_LABEL(temperature), buffer);
text = dive->location ? : "";