diff options
author | vng <viktor.govako@gmail.com> | 2012-09-20 17:44:28 +0400 |
---|---|---|
committer | Alex Zolotarev <alex@maps.me> | 2015-09-23 01:43:29 +0300 |
commit | cdc487b5cfcb4ed5fb066dafb643cc66d7cfbee8 (patch) | |
tree | 55690a524a7344444da689f9f0348902da138342 /indexer | |
parent | f54438b19ec294232eac95bdf20a16c94f62ba66 (diff) |
Do NOT filter types for area features (They combine all drawing rules).
Diffstat (limited to 'indexer')
-rw-r--r-- | indexer/feature_visibility.cpp | 23 | ||||
-rw-r--r-- | indexer/feature_visibility.hpp | 13 |
2 files changed, 14 insertions, 22 deletions
diff --git a/indexer/feature_visibility.cpp b/indexer/feature_visibility.cpp index db0c5cc953..78fad1f28a 100644 --- a/indexer/feature_visibility.cpp +++ b/indexer/feature_visibility.cpp @@ -259,32 +259,19 @@ namespace class CheckNonDrawableType { Classificator & m_c; - FeatureGeoType m_arr[3]; - size_t m_count; + FeatureGeoType m_type; public: CheckNonDrawableType(FeatureGeoType ft) - : m_c(classif()), m_count(0) + : m_c(classif()), m_type(ft) { - if (ft < FEATURE_TYPE_LINE_AREA) - m_arr[m_count++] = ft; - else - { - ASSERT_EQUAL ( ft, FEATURE_TYPE_LINE_AREA, () ); - m_arr[m_count++] = FEATURE_TYPE_LINE; - m_arr[m_count++] = FEATURE_TYPE_AREA; - } } bool operator() (uint32_t t) { - for (size_t i = 0; i < m_count; ++i) - { - IsDrawableLikeChecker doCheck(m_arr[i]); - if (m_c.ProcessObjects(t, doCheck)) - return false; - } - return true; + IsDrawableLikeChecker doCheck(m_type); + // return true if need to delete + return !m_c.ProcessObjects(t, doCheck); } }; } diff --git a/indexer/feature_visibility.hpp b/indexer/feature_visibility.hpp index 6f3fea925c..081a38ba43 100644 --- a/indexer/feature_visibility.hpp +++ b/indexer/feature_visibility.hpp @@ -15,19 +15,24 @@ namespace feature { class TypesHolder; - // Note! do not change this values. Should be equal with EGeomType. + /// @note do not change this values. Should be equal with EGeomType. + /// Used for checking visibility (by drawing style) for feature's geometry type + /// (for Area - check only area type, but can draw symbol or caption). enum FeatureGeoType { FEATURE_TYPE_POINT = 0, FEATURE_TYPE_LINE = 1, - FEATURE_TYPE_AREA = 2, - FEATURE_TYPE_LINE_AREA = 3 + FEATURE_TYPE_AREA = 2 }; bool IsDrawableAny(uint32_t type); - bool IsDrawableLike(vector<uint32_t> const & types, FeatureGeoType ft); bool IsDrawableForIndex(FeatureBase const & f, int level); + /// @name Be carefull with FEATURE_TYPE_AREA. + /// It's check only unique area styles, be it also can draw symbol or caption. + //@{ + bool IsDrawableLike(vector<uint32_t> const & types, FeatureGeoType ft); bool RemoveNoDrawableTypes(vector<uint32_t> & types, FeatureGeoType ft); + //@} int GetMinDrawableScale(FeatureBase const & f); |