mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	core: let pressure_to_altitude return a depth_t
Also un-inline it. There seems no reason for exporting the implementation details in the header file. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
		
							parent
							
								
									4237cb9999
								
							
						
					
					
						commit
						1d14b03935
					
				
					 5 changed files with 13 additions and 11 deletions
				
			
		|  | @ -443,7 +443,7 @@ void diveplan::add_plan_to_notes(struct dive &dive, bool show_disclaimer, planne | |||
| 
 | ||||
| 	{ | ||||
| 		const char *depth_unit; | ||||
| 		int altitude = (int) get_depth_units((int) (pressure_to_altitude(surface_pressure)), NULL, &depth_unit); | ||||
| 		int altitude = (int) get_depth_units(pressure_to_altitude(surface_pressure).mm, NULL, &depth_unit); | ||||
| 
 | ||||
| 		buf += casprintf_loc(translate("gettextFromC", "ATM pressure: %dmbar (%d%s)<br/>\n</div>\n"), surface_pressure, altitude, depth_unit); | ||||
| 	} | ||||
|  |  | |||
|  | @ -204,3 +204,8 @@ depth_t m_or_ft(int m, int ft) | |||
| 	int mm = prefs.units.length == units::METERS ? m * 1000 : feet_to_mm(ft); | ||||
| 	return depth_t::from_base(mm); | ||||
| } | ||||
| 
 | ||||
| depth_t pressure_to_altitude(pressure_t pressure) | ||||
| {						// returns altitude in mm above sea level
 | ||||
| 	return depth_t::from_base(static_cast<int32_t>(log(1013.0 / pressure.mbar) * 7800000)); | ||||
| } | ||||
|  |  | |||
|  | @ -436,10 +436,7 @@ static inline pressure_t altitude_to_pressure(int32_t altitude) { 	// altitude i | |||
| 	return pressure_t { .mbar = int_cast<int32_t> (1013.0 * exp(- altitude / 7800000.0)) }; | ||||
| } | ||||
| 
 | ||||
| static inline int32_t pressure_to_altitude(pressure_t pressure) | ||||
| {						// returns altitude in mm above sea level
 | ||||
| 	return (int32_t) (log(1013.0 / pressure.mbar) * 7800000); | ||||
| } | ||||
| depth_t pressure_to_altitude(pressure_t pressure); | ||||
| 
 | ||||
| /*
 | ||||
|  * We keep our internal data in well-specified units, but | ||||
|  |  | |||
|  | @ -163,7 +163,7 @@ void DivePlannerWidget::settingsChanged() | |||
| 	} | ||||
| 	ui.tableWidget->view()->setItemDelegateForColumn(DivePlannerPointsModel::DEPTH, new SpinBoxDelegate(0, maxDepth, 1, this)); | ||||
| 	ui.atmHeight->blockSignals(true); | ||||
| 	ui.atmHeight->setValue((int) get_depth_units((int) pressure_to_altitude(DivePlannerPointsModel::instance()->getSurfacePressure()), NULL, NULL)); | ||||
| 	ui.atmHeight->setValue((int) get_depth_units(pressure_to_altitude(DivePlannerPointsModel::instance()->getSurfacePressure()).mm, NULL, NULL)); | ||||
| 	ui.atmHeight->blockSignals(false); | ||||
| 
 | ||||
| 	ui.dateEdit->setDisplayFormat(QString::fromStdString(prefs.date_format)); | ||||
|  | @ -175,7 +175,7 @@ void DivePlannerWidget::atmPressureChanged(int pressure_in_mbar) | |||
| 	pressure_t pressure { .mbar = pressure_in_mbar }; | ||||
| 	DivePlannerPointsModel::instance()->setSurfacePressure(pressure); | ||||
| 	ui.atmHeight->blockSignals(true); | ||||
| 	ui.atmHeight->setValue((int) get_depth_units((int) pressure_to_altitude(pressure), NULL, NULL)); | ||||
| 	ui.atmHeight->setValue((int) get_depth_units(pressure_to_altitude(pressure).mm, NULL, NULL)); | ||||
| 	ui.atmHeight->blockSignals(false); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -442,12 +442,12 @@ void TabDiveInformation::updateTextBox(int event) // Either the text box has bee | |||
| 			} else { // i.e. event == COMBO_CHANGED, that is, "m" or "ft" was selected from combobox
 | ||||
| 				 // Show estimated altitude
 | ||||
| 				bool ok; | ||||
| 				double convertVal = 0.0010;	// Metric conversion fro mm to m
 | ||||
| 				pressure_t pressure = { .mbar = ui->atmPressVal->text().toInt(&ok,10) }; | ||||
| 				if (ok && ui->atmPressVal->text().length()) {  // Show existing atm press as an altitude:
 | ||||
| 					if (prefs.units.length == units::FEET) // For imperial units
 | ||||
| 						convertVal = mm_to_feet(1);    // convert from mm to ft
 | ||||
| 					ui->atmPressVal->setText(QString::number((int)(pressure_to_altitude(pressure) * convertVal))); | ||||
| 					double convertVal = (prefs.units.length == units::FEET) ? | ||||
| 						mm_to_feet(1) :		// convert from mm to ft
 | ||||
| 						0.001;			// Metric conversion fro mm to m
 | ||||
| 					ui->atmPressVal->setText(QString::number((int)(pressure_to_altitude(pressure).mm * convertVal))); | ||||
| 				} | ||||
| 			} | ||||
| 			break; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue