]> git.tdb.fi Git - ext/subsurface.git/blobdiff - dive.h
Declare 'update_dive()' properly
[ext/subsurface.git] / dive.h
diff --git a/dive.h b/dive.h
index 82b336e5356cadaaf447060ec1d7c51d756e3956..6191b60b9179d2fcde0847cde6efcdbf36ead229 100644 (file)
--- 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)
@@ -126,6 +140,22 @@ struct dive {
        struct sample sample[];
 };
 
+/*
+ * We keep our internal data in well-specified units, but
+ * the input and output may come in some random format. This
+ * keeps track of those units.
+ */
+struct units {
+       enum { METERS, FEET } length;
+       enum { LITER, CUFT } volume;
+       enum { BAR, PSI, PASCAL } pressure;
+       enum { CELSIUS, FAHRENHEIT, KELVIN } temperature;
+       enum { KG, LBS } weight;
+};
+
+extern const struct units SI_units, IMPERIAL_units;
+extern struct units input_units, output_units;
+
 extern int verbose;
 
 struct dive_table {
@@ -145,7 +175,13 @@ static inline struct dive *get_dive(unsigned int nr)
 extern void parse_xml_init(void);
 extern void parse_xml_file(const char *filename, GError **error);
 
-extern void flush_dive_info_changes(void);
+extern void show_dive_info(struct dive *);
+extern void flush_dive_info_changes(struct dive *);
+
+extern void show_dive_equipment(struct dive *);
+extern void flush_dive_equipment_changes(struct dive *);
+
+extern void update_dive(struct dive *new_dive);
 extern void save_dives(const char *filename);
 
 static inline unsigned int dive_size(int samples)