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:
authorvng <viktor.govako@gmail.com>2015-07-28 17:06:39 +0300
committerAlex Zolotarev <alex@maps.me>2015-09-23 02:58:25 +0300
commite495039d778dbe6360b05f2b81cecc2efcb00bc3 (patch)
tree27e45af03e1b926ff0c68e6cfde6a61064ddc98a /generator
parentf911cf58e14bfe5585dd186e6524b90cb8e79c42 (diff)
VNG review fixes.
Diffstat (limited to 'generator')
-rw-r--r--generator/world_map_generator.hpp21
1 files changed, 12 insertions, 9 deletions
diff --git a/generator/world_map_generator.hpp b/generator/world_map_generator.hpp
index 740342400e..468adaa639 100644
--- a/generator/world_map_generator.hpp
+++ b/generator/world_map_generator.hpp
@@ -4,6 +4,7 @@
#include "generator/generate_info.hpp"
#include "geometry/tree4d.hpp"
+#include "geometry/region2d.hpp"
#include "indexer/scales.hpp"
@@ -16,9 +17,13 @@ namespace
class WaterBoundaryChecker
{
uint32_t m_boundaryType;
- deque<m2::RegionD> m_waterRegions;
- m4::Tree<size_t> m_tree;
+ struct RegionTraits
+ {
+ m2::RectD const & LimitRect(m2::RegionD const & r) const { return r.GetRect(); }
+ };
+ m4::Tree<m2::RegionD, RegionTraits> m_tree;
+
size_t m_totalFeatures = 0;
size_t m_totalBorders = 0;
size_t m_skippedBorders = 0;
@@ -55,16 +60,14 @@ public:
++total;
- vector<m2::PointD> points;
for (size_t i = 0; i < numGeometries; ++i)
{
uint64_t numPoints = 0;
file.Read(&numPoints, sizeof(numPoints));
- points.resize(numPoints);
+
+ vector<m2::PointD> points(numPoints);
file.Read(points.data(), sizeof(m2::PointD) * numPoints);
- m_waterRegions.push_back(m2::RegionD());
- m_waterRegions.back().Assign(points.begin(), points.end());
- m_tree.Add(m_waterRegions.size() - 1, m_waterRegions.back().GetRect());
+ m_tree.Add(m2::RegionD(move(points)));
}
}
LOG(LINFO, ("Load", total, "water geometries"));
@@ -94,10 +97,10 @@ public:
{
m2::PointD const & p = pts[i];
m2::RectD r(p.x - kExtension, p.y - kExtension, p.x + kExtension, p.y + kExtension);
- m_tree.ForEachInRect(r, [&](size_t index)
+ m_tree.ForEachInRect(r, [&](m2::RegionD const & rgn)
{
++m_selectedPolygons;
- hits[i] += m_waterRegions[index].Contains(p) ? 1 : 0;
+ hits[i] += rgn.Contains(p) ? 1 : 0;
});
}