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;
|
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);
|
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);
|
int mm = prefs.units.length == units::METERS ? m * 1000 : feet_to_mm(ft);
|
||||||
return depth_t::from_base(mm);
|
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)) };
|
return pressure_t { .mbar = int_cast<int32_t> (1013.0 * exp(- altitude / 7800000.0)) };
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int32_t pressure_to_altitude(pressure_t pressure)
|
depth_t pressure_to_altitude(pressure_t pressure);
|
||||||
{ // returns altitude in mm above sea level
|
|
||||||
return (int32_t) (log(1013.0 / pressure.mbar) * 7800000);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We keep our internal data in well-specified units, but
|
* 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.tableWidget->view()->setItemDelegateForColumn(DivePlannerPointsModel::DEPTH, new SpinBoxDelegate(0, maxDepth, 1, this));
|
||||||
ui.atmHeight->blockSignals(true);
|
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.atmHeight->blockSignals(false);
|
||||||
|
|
||||||
ui.dateEdit->setDisplayFormat(QString::fromStdString(prefs.date_format));
|
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 };
|
pressure_t pressure { .mbar = pressure_in_mbar };
|
||||||
DivePlannerPointsModel::instance()->setSurfacePressure(pressure);
|
DivePlannerPointsModel::instance()->setSurfacePressure(pressure);
|
||||||
ui.atmHeight->blockSignals(true);
|
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);
|
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
|
} else { // i.e. event == COMBO_CHANGED, that is, "m" or "ft" was selected from combobox
|
||||||
// Show estimated altitude
|
// Show estimated altitude
|
||||||
bool ok;
|
bool ok;
|
||||||
double convertVal = 0.0010; // Metric conversion fro mm to m
|
|
||||||
pressure_t pressure = { .mbar = ui->atmPressVal->text().toInt(&ok,10) };
|
pressure_t pressure = { .mbar = ui->atmPressVal->text().toInt(&ok,10) };
|
||||||
if (ok && ui->atmPressVal->text().length()) { // Show existing atm press as an altitude:
|
if (ok && ui->atmPressVal->text().length()) { // Show existing atm press as an altitude:
|
||||||
if (prefs.units.length == units::FEET) // For imperial units
|
double convertVal = (prefs.units.length == units::FEET) ?
|
||||||
convertVal = mm_to_feet(1); // convert from mm to ft
|
mm_to_feet(1) : // convert from mm to ft
|
||||||
ui->atmPressVal->setText(QString::number((int)(pressure_to_altitude(pressure) * convertVal)));
|
0.001; // Metric conversion fro mm to m
|
||||||
|
ui->atmPressVal->setText(QString::number((int)(pressure_to_altitude(pressure).mm * convertVal)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue