Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/map
diff options
context:
space:
mode:
authorVladimir Byko-Ianko <v.bykoianko@corp.mail.ru>2016-09-13 17:47:05 +0300
committerVladimir Byko-Ianko <v.bykoianko@corp.mail.ru>2016-09-14 17:37:20 +0300
commit7a3d5a810dae814d2b8b9dfce9379eb02bb659c7 (patch)
treea3b72fde35973d0063929290d5482c8c54587068 /map
parent93511da6d6a059d142978a557719ede7657c1906 (diff)
Returning min and max route altitude and units.
Diffstat (limited to 'map')
-rw-r--r--map/framework.cpp31
-rw-r--r--map/framework.hpp10
2 files changed, 37 insertions, 4 deletions
diff --git a/map/framework.cpp b/map/framework.cpp
index 92f3bccb53..9f5e13fdad 100644
--- a/map/framework.cpp
+++ b/map/framework.cpp
@@ -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;
}
diff --git a/map/framework.hpp b/map/framework.hpp
index 0b96e79f15..64511e7b6c 100644
--- a/map/framework.hpp
+++ b/map/framework.hpp
@@ -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.