Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvng <viktor.govako@gmail.com>2012-01-27 15:07:33 +0400
committerAlex Zolotarev <alex@maps.me>2015-09-23 01:32:31 +0300
commitb84bc9172fdb5ed1ada0820eda43c655d22bf842 (patch)
tree512dc696db4196285fdddc4eb74062142898a9a2 /indexer/feature_visibility.cpp
parentf87031f54b1e60a7310efb5c2608fad6b62c27c8 (diff)
Replace FeatureBase::GetTypesFn with more suitable feature::TypesHolder.
Diffstat (limited to 'indexer/feature_visibility.cpp')
-rw-r--r--indexer/feature_visibility.cpp39
1 files changed, 16 insertions, 23 deletions
diff --git a/indexer/feature_visibility.cpp b/indexer/feature_visibility.cpp
index d5ead6d4bd..1b840595b1 100644
--- a/indexer/feature_visibility.cpp
+++ b/indexer/feature_visibility.cpp
@@ -130,19 +130,16 @@ namespace
pair<int, bool> GetDrawRule(FeatureBase const & f, int level,
vector<drule::Key> & keys, string & names)
{
- feature::EGeomType const geoType = f.GetFeatureType();
-
- FeatureBase::GetTypesFn types;
- f.ForEachTypeRef(types);
+ feature::TypesHolder types(f);
ASSERT ( keys.empty(), () );
Classificator const & c = classif();
- DrawRuleGetter doRules(level, geoType, keys, names);
- for (size_t i = 0; i < types.m_size; ++i)
- (void)c.ProcessObjects(types.m_types[i], doRules);
+ DrawRuleGetter doRules(level, types.GetGeoType(), keys, names);
+ for (size_t i = 0; i < types.Size(); ++i)
+ (void)c.ProcessObjects(types[i], doRules);
- return make_pair(geoType, types.Has(c.GetCoastType()));
+ return make_pair(types.GetGeoType(), types.Has(c.GetCoastType()));
}
namespace
@@ -243,16 +240,15 @@ bool IsDrawableForIndex(FeatureBase const & f, int level)
{
Classificator const & c = classif();
- FeatureBase::GetTypesFn types;
- f.ForEachTypeRef(types);
+ feature::TypesHolder types(f);
- if (f.GetFeatureType() == feature::GEOM_AREA && !types.Has(c.GetCoastType()))
+ if (types.GetGeoType() == feature::GEOM_AREA && !types.Has(c.GetCoastType()))
if (!scales::IsGoodForLevel(level, f.GetLimitRect()))
return false;
IsDrawableChecker doCheck(level);
- for (size_t i = 0; i < types.m_size; ++i)
- if (c.ProcessObjects(types.m_types[i], doCheck))
+ for (size_t i = 0; i < types.Size(); ++i)
+ if (c.ProcessObjects(types[i], doCheck))
return true;
return false;
@@ -271,13 +267,13 @@ int MinDrawableScaleForFeature(FeatureBase const & f)
namespace
{
- bool IsDrawable(FeatureBase::GetTypesFn const & types, int level, EGeomType geomType)
+ bool IsDrawable(feature::TypesHolder const & types, int level)
{
Classificator const & c = classif();
- TextRulesChecker doCheck(level, geomType);
- for (size_t i = 0; i < types.m_size; ++i)
- if (c.ProcessObjects(types.m_types[i], doCheck))
+ TextRulesChecker doCheck(level, types.GetGeoType());
+ for (size_t i = 0; i < types.Size(); ++i)
+ if (c.ProcessObjects(types[i], doCheck))
return true;
return false;
@@ -286,16 +282,13 @@ namespace
pair<int, int> DrawableScaleRangeForText(FeatureBase const & f)
{
- FeatureBase::GetTypesFn types;
- f.ForEachTypeRef(types);
-
- feature::EGeomType const geomType = f.GetFeatureType();
+ feature::TypesHolder types(f);
int const upBound = scales::GetUpperScale();
int lowL = -1;
for (int level = 0; level <= upBound; ++level)
{
- if (IsDrawable(types, level, geomType))
+ if (IsDrawable(types, level))
{
lowL = level;
break;
@@ -308,7 +301,7 @@ pair<int, int> DrawableScaleRangeForText(FeatureBase const & f)
int highL = lowL;
for (int level = upBound; level > lowL; --level)
{
- if (IsDrawable(types, level, geomType))
+ if (IsDrawable(types, level))
{
highL = level;
break;