mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	Implement height-to-pressure functions in planner
The units.h file has two functions to convert atm pressure to mbar and also to convert mbar to atm pressure. Implement these two functions in the planner. Signed-off-by: willemferguson <willemferguson@zoology.up.ac.za>
This commit is contained in:
		
							parent
							
								
									9590709e8c
								
							
						
					
					
						commit
						a969d1dd45
					
				
					 2 changed files with 7 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -11,6 +11,7 @@
 | 
			
		|||
#include <string.h>
 | 
			
		||||
#include "dive.h"
 | 
			
		||||
#include "deco.h"
 | 
			
		||||
#include "units.h"
 | 
			
		||||
#include "divelist.h"
 | 
			
		||||
#include "planner.h"
 | 
			
		||||
#include "gettext.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -420,7 +421,7 @@ void add_plan_to_notes(struct diveplan *diveplan, struct dive *dive, bool show_d
 | 
			
		|||
	put_string(&buf, "<br>");
 | 
			
		||||
 | 
			
		||||
	const char *depth_unit;
 | 
			
		||||
	int altitude = (int) get_depth_units((int) (log(1013.0 / diveplan->surface_pressure) * 7800000), NULL, &depth_unit);
 | 
			
		||||
	int altitude = (int) get_depth_units((int) (pressure_to_altitude(diveplan->surface_pressure)), NULL, &depth_unit);
 | 
			
		||||
 | 
			
		||||
	put_format_loc(&buf, translate("gettextFromC", "ATM pressure: %dmbar (%d%s)<br></div>"), diveplan->surface_pressure, altitude, depth_unit);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,6 +4,7 @@
 | 
			
		|||
#include "desktop-widgets/mainwindow.h"
 | 
			
		||||
#include "core/planner.h"
 | 
			
		||||
#include "core/qthelper.h"
 | 
			
		||||
#include "core/units.h"
 | 
			
		||||
#include "core/settings/qPrefDivePlanner.h"
 | 
			
		||||
#include "core/gettextfromc.h"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -235,7 +236,7 @@ void DivePlannerWidget::settingsChanged()
 | 
			
		|||
		ui.atmHeight->setMaximum(3000);
 | 
			
		||||
	}
 | 
			
		||||
	ui.atmHeight->blockSignals(true);
 | 
			
		||||
	ui.atmHeight->setValue((int) get_depth_units((int) (log(1013.0 / plannerModel->getSurfacePressure()) * 7800000), NULL,NULL));
 | 
			
		||||
	ui.atmHeight->setValue((int) get_depth_units((int) pressure_to_altitude(plannerModel->getSurfacePressure()), NULL,NULL));
 | 
			
		||||
	ui.atmHeight->blockSignals(false);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -243,13 +244,13 @@ void DivePlannerWidget::atmPressureChanged(const int pressure)
 | 
			
		|||
{
 | 
			
		||||
	plannerModel->setSurfacePressure(pressure);
 | 
			
		||||
	ui.atmHeight->blockSignals(true);
 | 
			
		||||
	ui.atmHeight->setValue((int) get_depth_units((int) (log(1013.0 / pressure) * 7800000), NULL,NULL));
 | 
			
		||||
	ui.atmHeight->setValue((int) get_depth_units((int) pressure_to_altitude(pressure), NULL,NULL));
 | 
			
		||||
	ui.atmHeight->blockSignals(false);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void DivePlannerWidget::heightChanged(const int height)
 | 
			
		||||
{
 | 
			
		||||
	int pressure = (int) (1013.0 * exp(- (double) units_to_depth((double) height).mm / 7800000.0));
 | 
			
		||||
{						// height is in ft or in meters
 | 
			
		||||
	int pressure = (int) (altitude_to_pressure(units_to_depth((double) height).mm));
 | 
			
		||||
	ui.ATMPressure->blockSignals(true);
 | 
			
		||||
	ui.ATMPressure->setValue(pressure);
 | 
			
		||||
	ui.ATMPressure->blockSignals(false);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue