From a50698224d10d72d7e4f3f70a19cb16fc9a2909a Mon Sep 17 00:00:00 2001 From: Constantin Shalnev Date: Tue, 29 Sep 2015 14:32:23 +0300 Subject: Support text tag values addr:housename and addr:housenumber --- render/feature_styler.cpp | 43 ++++++++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 15 deletions(-) (limited to 'render') diff --git a/render/feature_styler.cpp b/render/feature_styler.cpp index a4dd66f138..368afb33bf 100644 --- a/render/feature_styler.cpp +++ b/render/feature_styler.cpp @@ -102,15 +102,9 @@ namespace di // m_primaryText.clear(); //} - string houseNumber; - if (ftypes::IsBuildingChecker::Instance()(f)) - { - houseNumber = f.GetHouseNumber(); - // Mark houses without names/numbers so user can select them by single tap. - if (houseNumber.empty() && m_primaryText.empty()) - houseNumber = "·"; - } - bool const hasName = !m_primaryText.empty() || !houseNumber.empty(); + bool const isBuilding = ftypes::IsBuildingChecker::Instance()(f); + + bool const hasName = !m_primaryText.empty() || isBuilding; m_refText = f.GetRoadNumber(); @@ -159,6 +153,8 @@ namespace di bool hasSecondaryText = false; + drule::text_type_t textType = drule::text_type_name; + for (size_t i = 0; i < count; ++i) { double depth = keys[i].m_priority; @@ -211,6 +207,8 @@ namespace di CaptionDefProto const * pCap0 = m_rules[i].m_rule->GetCaption(0); if (pCap0) { + textType = m_rules[i].m_rule->GetCaptionTextType(0); + if (!m_hasPathText && hasName && (m_geometryType == feature::GEOM_LINE)) { m_hasPathText = true; @@ -232,13 +230,28 @@ namespace di m_secondaryText.clear(); } - // Get or concat house number if feature has one. - if (!houseNumber.empty()) + if (isBuilding) { - if (m_primaryText.empty() || houseNumber.find(m_primaryText) != string::npos) - houseNumber.swap(m_primaryText); - else - m_primaryText = m_primaryText + " (" + houseNumber + ")"; + string houseNumber = f.GetHouseNumber(); + // Mark houses without names/numbers so user can select them by single tap. + if (houseNumber.empty() && m_primaryText.empty()) + houseNumber = "·"; + + if (textType == drule::text_type_housenumber) + { + m_primaryText = move(houseNumber); + } + else if (textType == drule::text_type_name) + { + // Get or concat house number if feature has one. + if (!houseNumber.empty()) + { + if (m_primaryText.empty() || houseNumber.find(m_primaryText) != string::npos) + m_primaryText = move(houseNumber); + else + m_primaryText = m_primaryText + " (" + houseNumber + ")"; + } + } } // placing a text on the path -- cgit v1.2.3