From d20d470a2f32b386e8ca506927a2158cea729185 Mon Sep 17 00:00:00 2001 From: rachytski Date: Mon, 19 Sep 2011 23:37:18 +0300 Subject: [PATCH] drawing multiline texts for non-bidi texts. closes #285 --- map/drawer_yg.cpp | 1 + yg/overlay_renderer.cpp | 4 +++- yg/overlay_renderer.hpp | 3 ++- yg/straight_text_element.cpp | 2 +- yg/text_element.cpp | 5 +++++ yg/text_element.hpp | 2 ++ 6 files changed, 14 insertions(+), 3 deletions(-) diff --git a/map/drawer_yg.cpp b/map/drawer_yg.cpp index 0301d667a7..94d172cb78 100644 --- a/map/drawer_yg.cpp +++ b/map/drawer_yg.cpp @@ -264,6 +264,7 @@ void DrawerYG::drawText(m2::PointD const & pt, di::DrawInfo const * pInfo, rule_ pos, pInfo->m_name, depth, + true, true); } diff --git a/yg/overlay_renderer.cpp b/yg/overlay_renderer.cpp index 22bdeb02b5..42e41143da 100644 --- a/yg/overlay_renderer.cpp +++ b/yg/overlay_renderer.cpp @@ -99,7 +99,8 @@ namespace yg yg::EPosition pos, string const & utf8Text, double depth, - bool log2vis) + bool log2vis, + bool doSplit) { if (!m_drawTexts) return; @@ -112,6 +113,7 @@ namespace yg params.m_position = pos; params.m_glyphCache = glyphCache(); params.m_logText = strings::MakeUniString(utf8Text); + params.m_doSplit = doSplit; shared_ptr oe(new StraightTextElement(params)); diff --git a/yg/overlay_renderer.hpp b/yg/overlay_renderer.hpp index b52ab40ae2..4041962102 100644 --- a/yg/overlay_renderer.hpp +++ b/yg/overlay_renderer.hpp @@ -44,7 +44,8 @@ namespace yg yg::EPosition pos, string const & utf8Text, double depth, - bool log2vis); + bool log2vis, + bool doSplit = false); /// drawing text on the path bool drawPathText(FontDesc const & fontDesc, diff --git a/yg/straight_text_element.cpp b/yg/straight_text_element.cpp index 4b9f30ab57..0f7c1f1613 100644 --- a/yg/straight_text_element.cpp +++ b/yg/straight_text_element.cpp @@ -71,7 +71,7 @@ namespace yg : TextElement(p) { buffer_vector res; - if (p.m_doSplit) + if ((p.m_doSplit) && (!isBidi())) { res.clear(); visSplit(visText(), res); diff --git a/yg/text_element.cpp b/yg/text_element.cpp index 776e6ab3d4..bf4531744b 100644 --- a/yg/text_element.cpp +++ b/yg/text_element.cpp @@ -39,6 +39,11 @@ namespace yg return m_fontDesc; } + bool TextElement::isBidi() const + { + return m_logText != m_visText; + } + void TextElement::drawTextImpl(GlyphLayout const & layout, gl::OverlayRenderer * screen, math::Matrix const & m, FontDesc const & fontDesc, double depth) const { m2::PointD pv = layout.pivot() * m; diff --git a/yg/text_element.hpp b/yg/text_element.hpp index 00f2afc876..fb395d00cd 100644 --- a/yg/text_element.hpp +++ b/yg/text_element.hpp @@ -36,6 +36,8 @@ namespace yg mutable vector m_boundRects; + bool isBidi() const; + public: struct Params : OverlayElement::Params