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:
authorMaksim Andrianov <maksimandrianov1@gmail.com>2018-12-03 16:28:11 +0300
committermpimenov <mpimenov@users.noreply.github.com>2018-12-21 13:32:21 +0300
commit2ca845ffd5d9bfdd2c28bb61f9d43805f0f4571b (patch)
treefaf96225ad2188025cc5fb1299880d27a24b9fc1 /generator/boost_helpers.hpp
parent6ca50d37b29fcdaeece5392c38add019321b4c4c (diff)
[generator] Added generation popularity src.
Diffstat (limited to 'generator/boost_helpers.hpp')
-rw-r--r--generator/boost_helpers.hpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/generator/boost_helpers.hpp b/generator/boost_helpers.hpp
new file mode 100644
index 0000000000..e116b8cb47
--- /dev/null
+++ b/generator/boost_helpers.hpp
@@ -0,0 +1,38 @@
+#pragma once
+
+#include "generator/feature_builder.hpp"
+
+#include <iterator>
+
+#include <boost/geometry.hpp>
+
+namespace generator
+{
+namespace boost_helpers
+{
+template <typename BoostPoint, typename BoostGeometry, typename FbGeometry>
+void FillBoostGeometry(BoostGeometry & geometry, FbGeometry const & fbGeometry)
+{
+ geometry.reserve(fbGeometry.size());
+ for (auto const & p : fbGeometry)
+ boost::geometry::append(geometry, BoostPoint{p.x, p.y});
+}
+
+template <typename BoostPolygon>
+void FillPolygon(BoostPolygon & polygon, FeatureBuilder1 const & fb)
+{
+ using BoostPoint = typename BoostPolygon::point_type;
+ auto const & fbGeometry = fb.GetGeometry();
+ CHECK(!fbGeometry.empty(), ());
+ auto it = std::begin(fbGeometry);
+ FillBoostGeometry<BoostPoint>(polygon.outer(), *it);
+ polygon.inners().resize(fbGeometry.size() - 1);
+ int i = 0;
+ ++it;
+ for (; it != std::end(fbGeometry); ++it)
+ FillBoostGeometry<BoostPoint>(polygon.inners()[i++], *it);
+
+ boost::geometry::correct(polygon);
+}
+} // namespace boost_helpers
+} // namespace generator