From 5d9210b2725e7c871e9180e4a53479c863e91b22 Mon Sep 17 00:00:00 2001 From: ExMix Date: Tue, 28 Jan 2014 14:05:11 +0300 Subject: [PATCH] [drape] move ScalesProcessor to EngineContext. In reading and geometry processing functions need tileSize --- drape_frontend/engine_context.cpp | 8 +++++++- drape_frontend/engine_context.hpp | 7 ++++++- drape_frontend/read_manager.cpp | 12 +++++------- drape_frontend/read_manager.hpp | 6 +----- 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/drape_frontend/engine_context.cpp b/drape_frontend/engine_context.cpp index 1f387f8a22..88111684f8 100644 --- a/drape_frontend/engine_context.cpp +++ b/drape_frontend/engine_context.cpp @@ -5,11 +5,17 @@ namespace df { - EngineContext::EngineContext(RefPointer commutator) + EngineContext::EngineContext(RefPointer commutator, ScalesProcessor const & processor) : m_commutator(commutator) + , m_scalesProcessor(processor) { } + ScalesProcessor const & EngineContext::GetScalesProcessor() const + { + return m_scalesProcessor; + } + void EngineContext::BeginReadTile(TileKey const & key) { PostMessage(new TileReadStartMessage(key)); diff --git a/drape_frontend/engine_context.hpp b/drape_frontend/engine_context.hpp index 07820a4631..e37e0e3c80 100644 --- a/drape_frontend/engine_context.hpp +++ b/drape_frontend/engine_context.hpp @@ -4,6 +4,8 @@ #include "../drape/pointers.hpp" +#include "../map/scales_processor.hpp" + namespace df { class Message; @@ -13,7 +15,9 @@ namespace df class EngineContext { public: - EngineContext(RefPointer commutator); + EngineContext(RefPointer commutator, ScalesProcessor const & processor); + + ScalesProcessor const & GetScalesProcessor() const; void BeginReadTile(TileKey const & key); /// If you call this method, you may forget about shape. @@ -26,5 +30,6 @@ namespace df private: RefPointer m_commutator; + ScalesProcessor m_scalesProcessor; }; } diff --git a/drape_frontend/read_manager.cpp b/drape_frontend/read_manager.cpp index b6820cb348..1ff941672d 100644 --- a/drape_frontend/read_manager.cpp +++ b/drape_frontend/read_manager.cpp @@ -33,13 +33,10 @@ namespace df } } - ReadManager::ReadManager(double visualScale, int w, int h, - EngineContext & context, - model::FeaturesFetcher & model) + ReadManager::ReadManager(EngineContext & context, model::FeaturesFetcher & model) : m_context(context) , m_model(model) { - m_scalesProcessor.SetParams(visualScale, ScalesProcessor::CalculateTileSize(w, h)); m_pool.Reset(new threads::ThreadPool(ReadCount(), bind(&ReadManager::OnTaskFinished, this, _1))); } @@ -116,7 +113,7 @@ namespace df { out.clear(); - int const tileScale = m_scalesProcessor.GetTileScaleBase(screen); + int const tileScale = m_context.GetScalesProcessor().GetTileScaleBase(screen); // equal for x and y double const range = MercatorBounds::maxX - MercatorBounds::minX; double const rectSize = range / (1 << tileScale); @@ -145,8 +142,9 @@ namespace df bool ReadManager::MustDropAllTiles(ScreenBase const & screen) const { - const int oldScale = m_scalesProcessor.GetTileScaleBase(m_currentViewport); - const int newScale = m_scalesProcessor.GetTileScaleBase(screen); + ScalesProcessor const & sp = m_context.GetScalesProcessor(); + const int oldScale = sp.GetTileScaleBase(m_currentViewport); + const int newScale = sp.GetTileScaleBase(screen); return (oldScale != newScale) || !m_currentViewport.GlobalRect().IsIntersect(screen.GlobalRect()); } diff --git a/drape_frontend/read_manager.hpp b/drape_frontend/read_manager.hpp index ec7dcdbdde..93d0e15925 100644 --- a/drape_frontend/read_manager.hpp +++ b/drape_frontend/read_manager.hpp @@ -26,9 +26,7 @@ namespace df class ReadManager { public: - ReadManager(double visualScale, int w, int h, - EngineContext & context, - model::FeaturesFetcher & model); + ReadManager(EngineContext & context, model::FeaturesFetcher & model); void UpdateCoverage(ScreenBase const & screen, CoverageUpdateDescriptor & updateDescr); void Resize(m2::RectI const & rect); @@ -49,13 +47,11 @@ namespace df EngineContext & m_context; model::FeaturesFetcher & m_model; - ScalesProcessor m_scalesProcessor; MasterPointer m_pool; ScreenBase m_currentViewport; - struct LessByTileKey { bool operator ()(tileinfo_ptr const & l, tileinfo_ptr const & r) const