From 0b1a87c04cb2425c12bb5cf5bb5a6eefc4d16381 Mon Sep 17 00:00:00 2001 From: Darafei Praliaskouski Date: Sat, 11 May 2013 19:42:35 +0300 Subject: [PATCH] [map] use feature_algo for center calculaiton --- map/feature_processor.cpp | 5 +++++ map/geometry_processors.hpp | 10 +++------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/map/feature_processor.cpp b/map/feature_processor.cpp index c3cd9a1500..ecad412201 100644 --- a/map/feature_processor.cpp +++ b/map/feature_processor.cpp @@ -4,6 +4,7 @@ #include "drawer.hpp" #include "../indexer/feature_impl.hpp" +#include "../indexer/feature_algo.hpp" namespace fwork @@ -98,6 +99,10 @@ namespace fwork functor_t fun(p); f.ForEachTriangleExRef(fun, m_zoom); + + if (fi.m_styler.m_hasPointStyles) + fun.SetCenter(feature::GetCenter(f, m_zoom)); + if (fun.IsExist()) { isExist = true; diff --git a/map/geometry_processors.hpp b/map/geometry_processors.hpp index cc7408d0e6..62b574c426 100644 --- a/map/geometry_processors.hpp +++ b/map/geometry_processors.hpp @@ -296,7 +296,6 @@ namespace gp /// Adapter for points filtering, before they will go for processing template class filter_screenpts_adapter : public TBase { - size_t m_count; m2::PointD m_prev, m_center; static bool equal_scr_pts(m2::PointD const & p1, m2::PointD const & p2) @@ -314,7 +313,7 @@ namespace gp typedef typename TBase::params params; filter_screenpts_adapter(params const & p) - : TBase(p), m_count(0), + : TBase(p), m_prev(numeric_limits::min(), numeric_limits::min()), m_center(0, 0) { } @@ -335,16 +334,13 @@ namespace gp m2::RectD r; for (int i = 0; i < 3; ++i) - { r.Add(arr[i]); - m_center += arr[i]; - } - ++m_count; if (!empty_scr_rect(r) && r.IsIntersect(this->m_rect)) TBase::operator()(arr[0], arr[1], arr[2]); } - m2::PointD GetCenter() const { return m_center / (3*m_count); } + m2::PointD GetCenter() const { return m_center; } + void SetCenter(m2::PointD const & p) { m_center = this->g2p(p); } }; }