diff --git a/drape_frontend/drape_engine.cpp b/drape_frontend/drape_engine.cpp index ff42fb83c5..14d8e0a7a5 100644 --- a/drape_frontend/drape_engine.cpp +++ b/drape_frontend/drape_engine.cpp @@ -16,8 +16,9 @@ DrapeEngine::DrapeEngine(dp::RefPointer contextfactory, d { GLFunctions::Init(); VisualParams::Init(vs, df::CalculateTileSize(m_viewport.GetWidth(), m_viewport.GetHeight())); + m_navigator.OnSize(m_viewport.GetX0(), m_viewport.GetY0(), + m_viewport.GetWidth(), m_viewport.GetHeight()); m_navigator.LoadState(); - m_navigator.OnSize(0, 0, m_viewport.GetWidth(), m_viewport.GetHeight()); m_textures.Reset(new dp::TextureManager()); dp::RefPointer textureHolder = m_textures.GetRefPointer(); @@ -52,7 +53,8 @@ void DrapeEngine::Resize(int w, int h) return; m_viewport.SetViewport(0, 0, w, h); - m_navigator.OnSize(0, 0, w, h); + m_navigator.OnSize(m_viewport.GetX0(), m_viewport.GetY0(), + m_viewport.GetWidth(), m_viewport.GetHeight()); m_threadCommutator->PostMessage(ThreadsCommutator::RenderThread, dp::MovePointer(new ResizeMessage(m_viewport))); } diff --git a/drape_frontend/frontend_renderer.cpp b/drape_frontend/frontend_renderer.cpp index 78471de95b..8d6535c0bb 100644 --- a/drape_frontend/frontend_renderer.cpp +++ b/drape_frontend/frontend_renderer.cpp @@ -116,7 +116,8 @@ void FrontendRenderer::AcceptMessage(dp::RefPointer message) { ResizeMessage * rszMsg = df::CastMessage(message); m_viewport = rszMsg->GetViewport(); - m_view.OnSize(0, 0, m_viewport.GetWidth(), m_viewport.GetHeight()); + m_view.OnSize(m_viewport.GetX0(), m_viewport.GetY0(), + m_viewport.GetWidth(), m_viewport.GetHeight()); RefreshProjection(); RefreshModelView(); ResolveTileKeys(); diff --git a/drape_frontend/viewport.cpp b/drape_frontend/viewport.cpp index 82fc5c5a08..e67ba1f262 100644 --- a/drape_frontend/viewport.cpp +++ b/drape_frontend/viewport.cpp @@ -19,30 +19,49 @@ void Viewport::SetViewport(uint32_t x0, uint32_t y0, uint32_t w, uint32_t h) m_size = m2::PointU(w, h); } +uint32_t Viewport::GetLogicX0() const +{ + return m_zero.x; +} + +uint32_t Viewport::GetLogicY0() const +{ + return m_zero.y; +} + +uint32_t Viewport::GetLogicWidth() const +{ + return m_size.x; +} + +uint32_t Viewport::GetLogicHeight() const +{ + return m_size.y; +} + uint32_t Viewport::GetX0() const { - return m_zero.x * m_pixelRatio; + return GetLogicX0() * m_pixelRatio; } uint32_t Viewport::GetY0() const { - return m_zero.y * m_pixelRatio; + return GetLogicY0() * m_pixelRatio; } uint32_t Viewport::GetWidth() const { - return m_size.x * m_pixelRatio; + return GetLogicWidth() * m_pixelRatio; } uint32_t Viewport::GetHeight() const { - return m_size.y * m_pixelRatio; + return GetLogicHeight() * m_pixelRatio; } void Viewport::Apply() const { - GLFunctions::glViewport(m_zero.x * m_pixelRatio, m_zero.y * m_pixelRatio, - m_size.x * m_pixelRatio, m_size.y * m_pixelRatio); + GLFunctions::glViewport(GetX0(), GetY0(), GetWidth(), GetHeight()); } } // namespace df diff --git a/drape_frontend/viewport.hpp b/drape_frontend/viewport.hpp index 5699afa1d9..3bef34e05d 100644 --- a/drape_frontend/viewport.hpp +++ b/drape_frontend/viewport.hpp @@ -18,12 +18,16 @@ public: ///@{ Device-independent pixels void SetViewport(uint32_t x0, uint32_t y0, uint32_t w, uint32_t h); + uint32_t GetLogicX0() const; + uint32_t GetLogicY0() const; + uint32_t GetLogicWidth() const; + uint32_t GetLogicHeight() const; + ///@} + uint32_t GetX0() const; uint32_t GetY0() const; uint32_t GetWidth() const; uint32_t GetHeight() const; - ///@} - // Apply viewport to graphics pipeline // with convert start poin and size to physical pixels void Apply() const;