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:
Berthold Stoeger 2024-12-14 21:03:23 +01:00 committed by Michael Keller
parent 4237cb9999
commit 1d14b03935
5 changed files with 13 additions and 11 deletions

View file

@ -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);
}

View file

@ -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));
}

View file

@ -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