summaryrefslogtreecommitdiffstats
path: root/equipment.c
diff options
context:
space:
mode:
authorGravatar Linus Torvalds <torvalds@linux-foundation.org>2011-11-02 12:39:55 -0700
committerGravatar Linus Torvalds <torvalds@linux-foundation.org>2011-11-02 12:39:55 -0700
commit55352a051cfa7ac519e397cd3d18851e5050517b (patch)
tree8d42a09d66212b84f992c8d3ce6b8e341cdac94a /equipment.c
parente4bfb6597279ca3d9aa3678a617f5f0aef298278 (diff)
parent619ab9e828d4db7b0c4089018b09892c9d04ece9 (diff)
downloadsubsurface-55352a051cfa7ac519e397cd3d18851e5050517b.tar.gz
Merge branch 'add-info-stats-page' of git://github.com/dirkhh/subsurface
* 'add-info-stats-page' of git://github.com/dirkhh/subsurface: Add Info & Stats page to the notebook Even more places with pressure and volume conversions Further cleanup of pressure and volume conversions Use unit functions to get column headers, add unit function for pressure More consistency improvements Add new helper function to get temperature and unit
Diffstat (limited to 'equipment.c')
-rw-r--r--equipment.c44
1 files changed, 23 insertions, 21 deletions
diff --git a/equipment.c b/equipment.c
index 12f39ae3f..c7a683b89 100644
--- a/equipment.c
+++ b/equipment.c
@@ -49,18 +49,19 @@ struct cylinder_widget {
GtkWidget *o2, *gasmix_button;
};
+/* we want bar - so let's not use our unit functions */
static int convert_pressure(int mbar, double *p)
{
int decimals = 1;
double pressure;
- pressure = mbar / 1000.0;
- if (mbar) {
- if (output_units.pressure == PSI) {
- pressure *= 14.5037738; /* Bar to PSI */
- decimals = 0;
- }
+ if (output_units.pressure == PSI) {
+ pressure = mbar_to_PSI(mbar);
+ decimals = 0;
+ } else {
+ pressure = mbar / 1000.0;
}
+
*p = pressure;
return decimals;
}
@@ -70,17 +71,18 @@ static int convert_volume_pressure(int ml, int mbar, double *v, double *p)
int decimals = 1;
double volume, pressure;
- volume = ml / 1000.0;
- pressure = mbar / 1000.0;
if (mbar) {
if (output_units.volume == CUFT) {
- volume /= 28.3168466; /* Liters to cuft */
- volume *= pressure / 1.01325;
- }
+ volume = ml_to_cuft(ml);
+ volume *= bar_to_atm(mbar / 1000.0);
+ } else
+ volume = ml / 1000.0;
+
if (output_units.pressure == PSI) {
- pressure *= 14.5037738; /* Bar to PSI */
+ pressure = mbar_to_PSI(mbar);
decimals = 0;
- }
+ } else
+ pressure = mbar / 1000.0;
}
*v = volume;
*p = pressure;
@@ -352,14 +354,14 @@ static void fill_cylinder_info(struct cylinder_widget *cylinder, cylinder_t *cyl
int mbar, ml;
if (output_units.pressure == PSI) {
- pressure /= 14.5037738;
- start /= 14.5037738;
- end /= 14.5037738;
+ pressure = psi_to_bar(pressure);
+ start = psi_to_bar(start);
+ end = psi_to_bar(end);
}
if (pressure && output_units.volume == CUFT) {
- volume *= 28.3168466; /* CUFT to liter */
- volume /= pressure / 1.01325;
+ volume = cuft_to_l(volume);
+ volume /= bar_to_atm(pressure);
}
ml = volume * 1000 + 0.5;
@@ -461,9 +463,9 @@ static void fill_tank_list(GtkListStore *store)
/* Is it in cuft and psi? */
if (psi) {
- double bar = 0.0689475729 * psi;
- double airvolume = 28316.8466 * size;
- double atm = bar / 1.01325;
+ double bar = psi_to_bar(psi);
+ double airvolume = cuft_to_l(size) * 1000.0;
+ double atm = bar_to_atm(bar);
ml = airvolume / atm + 0.5;
mbar = bar*1000 + 0.5;