forked from organicmaps/organicmaps
Returning min and max route altitude and units.
This commit is contained in:
parent
93511da6d6
commit
7a3d5a810d
2 changed files with 37 additions and 4 deletions
|
@ -2988,7 +2988,9 @@ bool Framework::OriginalFeatureHasDefaultName(FeatureID const & fid) const
|
|||
bool Framework::HasRouteAltitude() const { return m_routingSession.HasRouteAltitude(); }
|
||||
|
||||
bool Framework::GenerateRouteAltitudeChart(uint32_t width, uint32_t height,
|
||||
vector<uint8_t> & imageRGBAData) const
|
||||
vector<uint8_t> & imageRGBAData,
|
||||
int32_t & minRouteAltitude, int32_t & maxRouteAltitude,
|
||||
measurement_utils::Units & altitudeUnits) const
|
||||
{
|
||||
feature::TAltitudes altitudes;
|
||||
vector<double> segDistance;
|
||||
|
@ -2997,6 +2999,29 @@ bool Framework::GenerateRouteAltitudeChart(uint32_t width, uint32_t height,
|
|||
return false;
|
||||
segDistance.insert(segDistance.begin(), 0.0);
|
||||
|
||||
return maps::GenerateChart(width, height, segDistance, altitudes,
|
||||
GetMapStyle(), imageRGBAData);
|
||||
if (altitudes.empty())
|
||||
return false;
|
||||
|
||||
if (!maps::GenerateChart(width, height, segDistance, altitudes, GetMapStyle(), imageRGBAData))
|
||||
return false;
|
||||
|
||||
auto const minMaxIt = minmax_element(altitudes.cbegin(), altitudes.cend());
|
||||
feature::TAltitude const minRouteAltitudeM = *minMaxIt.first;
|
||||
feature::TAltitude const maxRouteAltitudeM = *minMaxIt.second;
|
||||
|
||||
altitudeUnits = measurement_utils::Units::Metric;
|
||||
UNUSED_VALUE(settings::Get(settings::kMeasurementUnits, altitudeUnits));
|
||||
|
||||
switch (altitudeUnits)
|
||||
{
|
||||
case measurement_utils::Units::Imperial:
|
||||
minRouteAltitude = measurement_utils::MetersToFeet(minRouteAltitudeM);
|
||||
maxRouteAltitude = measurement_utils::MetersToFeet(maxRouteAltitudeM);
|
||||
break;
|
||||
case measurement_utils::Units::Metric:
|
||||
minRouteAltitude = minRouteAltitudeM;
|
||||
maxRouteAltitude = maxRouteAltitudeM;
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -729,13 +729,21 @@ public:
|
|||
/// false otherwise.
|
||||
bool HasRouteAltitude() const;
|
||||
/// \brief Generates 4 bytes per point image (RGBA) and put the data to |imageRGBAData|.
|
||||
/// \param width is width of chart shall be generated in pixels.
|
||||
/// \param height is height of chart shall be generated in pixels.
|
||||
/// \param imageRGBAData is bits of result image in RGBA.
|
||||
/// \param minRouteAltitude is min altitude along the route in altitudeUnits.
|
||||
/// \param maxRouteAltitude is max altitude along the route in altitudeUnits.
|
||||
/// \param altitudeUnits is units (meters or feet) which is used to pass min and max altitudes.
|
||||
/// \returns If there is valid route info and the chart was generated returns true
|
||||
/// and false otherwise. If the method returns true it is guaranteed that the size of
|
||||
/// |imageRGBAData| is not zero.
|
||||
/// \note If HasRouteAltitude() method returns true, GenerateRouteAltitudeChart(...)
|
||||
/// could return false if route was deleted or rebuilt between the calls.
|
||||
bool GenerateRouteAltitudeChart(uint32_t width, uint32_t height,
|
||||
vector<uint8_t> & imageRGBAData) const;
|
||||
vector<uint8_t> & imageRGBAData,
|
||||
int32_t & minRouteAltitude, int32_t & maxRouteAltitude,
|
||||
measurement_utils::Units & altitudeUnits) const;
|
||||
|
||||
public:
|
||||
/// @name Editor interface.
|
||||
|
|
Loading…
Add table
Reference in a new issue