diff options
author | Daria Volvenkova <d.volvenkova@corp.mail.ru> | 2016-09-05 13:17:07 +0300 |
---|---|---|
committer | Daria Volvenkova <d.volvenkova@corp.mail.ru> | 2016-09-26 17:26:00 +0300 |
commit | 24834ce40c571ef6021991350bc0863279f71497 (patch) | |
tree | 96d0d4c8f9b8f36aa50f76442eef29a2cae4813c /map | |
parent | 12be223279b3e84da9d58e0143793f854d5761e3 (diff) |
Positioning in visible viewport.
Diffstat (limited to 'map')
-rw-r--r-- | map/framework.cpp | 15 | ||||
-rw-r--r-- | map/framework.hpp | 3 |
2 files changed, 17 insertions, 1 deletions
diff --git a/map/framework.cpp b/map/framework.cpp index 665f39ac8f..e4686e70af 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -948,6 +948,11 @@ m2::PointD Framework::GetPixelCenter() const : m_currentModelView.PixelRect().Center(); } +m2::PointD Framework::GetVisiblePixelCenter() const +{ + return m_visibleViewport.Center(); +} + m2::PointD const & Framework::GetViewportCenter() const { return m_currentModelView.GetOrg(); @@ -968,6 +973,14 @@ m2::RectD Framework::GetCurrentViewport() const return m_currentModelView.ClipRect(); } +void Framework::SetVisibleViewport(m2::RectD const & rect) +{ + if (m_drapeEngine == nullptr) + return; + m_visibleViewport = rect; + m_drapeEngine->SetVisibleViewport(rect); +} + void Framework::ShowRect(m2::RectD const & rect, int maxScale) { CallDrapeFunction(bind(&df::DrapeEngine::SetModelViewRect, _1, rect, true, maxScale, true)); @@ -1016,7 +1029,7 @@ void Framework::Scale(Framework::EScaleMode mode, m2::PointD const & pxPoint, bo void Framework::Scale(double factor, bool isAnim) { - Scale(factor, GetPixelCenter(), isAnim); + Scale(factor, GetVisiblePixelCenter(), isAnim); } void Framework::Scale(double factor, m2::PointD const & pxPoint, bool isAnim) diff --git a/map/framework.hpp b/map/framework.hpp index 7d0e78fc19..7c5e46a9c6 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -134,6 +134,7 @@ protected: search::QuerySaver m_searchQuerySaver; ScreenBase m_currentModelView; + m2::RectD m_visibleViewport; using TViewportChanged = df::DrapeEngine::TModelViewListenerFn; TViewportChanged m_viewportChanged; @@ -531,12 +532,14 @@ public: void ShowAll(); m2::PointD GetPixelCenter() const; + m2::PointD GetVisiblePixelCenter() const; m2::PointD const & GetViewportCenter() const; void SetViewportCenter(m2::PointD const & pt); void SetViewportCenter(m2::PointD const & pt, int zoomLevel); m2::RectD GetCurrentViewport() const; + void SetVisibleViewport(m2::RectD const & rect); /// - Check minimal visible scale according to downloaded countries. void ShowRect(m2::RectD const & rect, int maxScale = -1); |