From f1e0cb8e87a2a6b7fecb818d324a16b7251ef717 Mon Sep 17 00:00:00 2001 From: Darafei Praliaskouski Date: Thu, 12 Sep 2013 20:23:20 +0300 Subject: [PATCH] [graphics] allow drawing circles --- graphics/circle_element.cpp | 3 ++- graphics/overlay_renderer.cpp | 21 +++++++++++++-------- graphics/overlay_renderer.hpp | 3 ++- map/drawer.cpp | 11 ++++++++++- 4 files changed, 27 insertions(+), 11 deletions(-) diff --git a/graphics/circle_element.cpp b/graphics/circle_element.cpp index c7421bb356..de77662e8e 100644 --- a/graphics/circle_element.cpp +++ b/graphics/circle_element.cpp @@ -58,10 +58,11 @@ namespace graphics pivot() * m, position()); + r->drawTexturedPolygon(m2::PointD(0.0, 0.0), 0.0, texRect.minX(), texRect.minY(), texRect.maxX(), texRect.maxY(), posPt.x, posPt.y, posPt.x + texRect.SizeX(), posPt.y + texRect.SizeY(), - graphics::maxDepth, + depth(), res->m_pipelineID); } diff --git a/graphics/overlay_renderer.cpp b/graphics/overlay_renderer.cpp index 09c9a6d0c4..228f4381e2 100644 --- a/graphics/overlay_renderer.cpp +++ b/graphics/overlay_renderer.cpp @@ -52,6 +52,18 @@ namespace graphics drawSymbol(params); } + void OverlayRenderer::drawCircle(CircleElement::Params & params) + { + shared_ptr oe(new CircleElement(params)); + + math::Matrix id = math::Identity(); + + if (!m_overlay.get()) + oe->draw(this, id); + else + m_overlay->processOverlayElement(oe); + } + void OverlayRenderer::drawCircle(m2::PointD const & pt, graphics::Circle::Info const & ci, EPosition pos, @@ -64,14 +76,7 @@ namespace graphics params.m_pivot = pt; params.m_ci = ci; - shared_ptr oe(new CircleElement(params)); - - math::Matrix id = math::Identity(); - - if (!m_overlay.get()) - oe->draw(this, id); - else - m_overlay->processOverlayElement(oe); + drawCircle(params); } void OverlayRenderer::drawText(FontDesc const & fontDesc, diff --git a/graphics/overlay_renderer.hpp b/graphics/overlay_renderer.hpp index 62f7493de5..6e3e6df76b 100644 --- a/graphics/overlay_renderer.hpp +++ b/graphics/overlay_renderer.hpp @@ -5,7 +5,7 @@ #include "text_renderer.hpp" #include "overlay.hpp" -#include "circle.hpp" +#include "circle_element.hpp" #include "straight_text_element.hpp" namespace graphics @@ -39,6 +39,7 @@ namespace graphics void drawSymbol(m2::PointD const & pt, string const & symbolName, EPosition pos, int depth); /// Drawing circle + void drawCircle(CircleElement::Params & params); void drawCircle(m2::PointD const & pt, Circle::Info const & ci, EPosition pos, diff --git a/map/drawer.cpp b/map/drawer.cpp index 2a39857eba..42fe4377a6 100644 --- a/map/drawer.cpp +++ b/map/drawer.cpp @@ -96,7 +96,16 @@ void Drawer::drawCircle(m2::PointD const & pt, graphics::Circle::Info ci; ConvertStyle(rule.m_rule->GetCircle(), m_visualScale, ci); - m_pScreen->drawCircle(pt, ci, pos, rule.m_depth); + graphics::CircleElement::Params params; + + params.m_depth = rule.m_depth; + params.m_position = pos; + params.m_pivot = pt; + params.m_ci = ci; + params.m_userInfo.m_mwmID = id.first; + params.m_userInfo.m_offset = id.second; + + m_pScreen->drawCircle(params); } void Drawer::drawSymbol(m2::PointD const & pt,