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
diff options
context:
space:
mode:
authorVladimir Byko-Ianko <v.bykoianko@corp.mail.ru>2016-06-21 11:46:32 +0300
committerVladimir Byko-Ianko <v.bykoianko@corp.mail.ru>2016-07-23 10:25:09 +0300
commitde84454400b0c35f8556957e4945cd7f68b6c8e6 (patch)
treef88a7acfac7344e79719ebb2091820dd697833a8 /routing
parenteead0e66ec4f397ecb67aedc8bf252c370efff31 (diff)
[altitude] The first version of writing to mwm and reading from altitude information.
Diffstat (limited to 'routing')
-rw-r--r--routing/bicycle_model.cpp7
-rw-r--r--routing/bicycle_model.hpp3
-rw-r--r--routing/features_road_graph.cpp5
-rw-r--r--routing/pedestrian_model.cpp7
-rw-r--r--routing/pedestrian_model.hpp2
-rw-r--r--routing/road_graph.hpp2
-rw-r--r--routing/routing.pro2
-rw-r--r--routing/routing_helpers.hpp17
8 files changed, 44 insertions, 1 deletions
diff --git a/routing/bicycle_model.cpp b/routing/bicycle_model.cpp
index 458bdced2b..5d629bf18a 100644
--- a/routing/bicycle_model.cpp
+++ b/routing/bicycle_model.cpp
@@ -638,6 +638,13 @@ bool BicycleModel::IsOneWay(FeatureType const & f) const
return VehicleModel::IsOneWay(f);
}
+// static
+BicycleModel const & BicycleModel::DefaultInstance()
+{
+ static BicycleModel const instance;
+ return instance;
+}
+
BicycleModelFactory::BicycleModelFactory()
{
m_models[string()] = make_shared<BicycleModel>(g_bicycleLimitsDefault);
diff --git a/routing/bicycle_model.hpp b/routing/bicycle_model.hpp
index 85820d4344..3765abb9f3 100644
--- a/routing/bicycle_model.hpp
+++ b/routing/bicycle_model.hpp
@@ -17,6 +17,8 @@ public:
/// VehicleModel overrides:
bool IsOneWay(FeatureType const & f) const override;
+ static BicycleModel const & DefaultInstance();
+
protected:
RoadAvailability GetRoadAvailability(feature::TypesHolder const & types) const override;
@@ -45,5 +47,4 @@ public:
private:
unordered_map<string, shared_ptr<IVehicleModel>> m_models;
};
-
} // namespace routing
diff --git a/routing/features_road_graph.cpp b/routing/features_road_graph.cpp
index 602d0a2d37..8d0d1dcd22 100644
--- a/routing/features_road_graph.cpp
+++ b/routing/features_road_graph.cpp
@@ -277,6 +277,11 @@ IRoadGraph::RoadInfo const & FeaturesRoadGraph::GetCachedRoadInfo(FeatureID cons
ri.m_speedKMPH = GetSpeedKMPHFromFt(ft);
ft.SwapPoints(ri.m_points);
+ ft.ParseAltitude();
+ // @TODO It's better to use swap here when altitudes is kept in a vector.
+ ri.m_altitudes = ft.GetAltitudes();
+ LOG(LINFO, ("ri.m_altitudes.begin =", ri.m_altitudes.begin, "ri.m_altitudes.end =", ri.m_altitudes.end));
+
LockFeatureMwm(featureId);
return ri;
diff --git a/routing/pedestrian_model.cpp b/routing/pedestrian_model.cpp
index 678a4064d9..7947e0b999 100644
--- a/routing/pedestrian_model.cpp
+++ b/routing/pedestrian_model.cpp
@@ -642,6 +642,13 @@ IVehicleModel::RoadAvailability PedestrianModel::GetRoadAvailability(feature::Ty
return RoadAvailability::Unknown;
}
+// static
+PedestrianModel const & PedestrianModel::DefaultInstance()
+{
+ static PedestrianModel const instance;
+ return instance;
+}
+
PedestrianModelFactory::PedestrianModelFactory()
{
m_models[string()] = make_shared<PedestrianModel>(g_pedestrianLimitsDefault);
diff --git a/routing/pedestrian_model.hpp b/routing/pedestrian_model.hpp
index c00df62db8..db0b392451 100644
--- a/routing/pedestrian_model.hpp
+++ b/routing/pedestrian_model.hpp
@@ -17,6 +17,8 @@ public:
/// VehicleModel overrides:
bool IsOneWay(FeatureType const &) const override { return false; }
+ static PedestrianModel const & DefaultInstance();
+
protected:
RoadAvailability GetRoadAvailability(feature::TypesHolder const & types) const override;
diff --git a/routing/road_graph.hpp b/routing/road_graph.hpp
index b995a3e2d8..528f471131 100644
--- a/routing/road_graph.hpp
+++ b/routing/road_graph.hpp
@@ -4,6 +4,7 @@
#include "base/string_utils.hpp"
+#include "indexer/feature_altitude.hpp"
#include "indexer/feature_data.hpp"
#include "std/initializer_list.hpp"
@@ -106,6 +107,7 @@ public:
RoadInfo & operator=(RoadInfo const &) = default;
buffer_vector<m2::PointD, 32> m_points;
+ feature::Altitudes m_altitudes;
double m_speedKMPH;
bool m_bidirectional;
};
diff --git a/routing/routing.pro b/routing/routing.pro
index 0c9579602b..6d676f711c 100644
--- a/routing/routing.pro
+++ b/routing/routing.pro
@@ -49,6 +49,7 @@ SOURCES += \
turns_tts_text.cpp \
vehicle_model.cpp \
+
HEADERS += \
async_router.hpp \
base/astar_algorithm.hpp \
@@ -79,6 +80,7 @@ HEADERS += \
router.hpp \
router_delegate.hpp \
routing_algorithm.hpp \
+ routing_helpers.hpp \
routing_mapping.hpp \
routing_result_graph.hpp \
routing_session.hpp \
diff --git a/routing/routing_helpers.hpp b/routing/routing_helpers.hpp
new file mode 100644
index 0000000000..45f8fa7b3c
--- /dev/null
+++ b/routing/routing_helpers.hpp
@@ -0,0 +1,17 @@
+#pragma once
+
+#include "routing/bicycle_model.hpp"
+#include "routing/car_model.hpp"
+#include "routing/pedestrian_model.hpp"
+
+namespace routing
+{
+/// \returns true if a feature with |types| can be used for any kind of routing.
+template <class TList>
+bool IsRoad(TList const & types)
+{
+ return CarModel::Instance().HasRoadType(types)
+ || PedestrianModel::DefaultInstance().HasRoadType(types)
+ || BicycleModel::DefaultInstance().HasRoadType(types);
+}
+} // namespace rouing