diff options
author | vng <viktor.govako@gmail.com> | 2013-11-14 14:31:06 +0400 |
---|---|---|
committer | Alex Zolotarev <alex@maps.me> | 2015-09-23 02:05:14 +0300 |
commit | 8befec18217d4c17437a296d2a9b4688e9b4ad46 (patch) | |
tree | c18cfb0704c408d138a32ee149bd5e016e7aa0be | |
parent | 3bebc936b81fc6e196012b0ef1f377973d2d44bb (diff) |
[generator] Treat place-island, place-islet as coastlines.
-rw-r--r-- | generator/feature_generator.cpp | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/generator/feature_generator.cpp b/generator/feature_generator.cpp index 2f7fb54a8d..9f627eed20 100644 --- a/generator/feature_generator.cpp +++ b/generator/feature_generator.cpp @@ -264,6 +264,20 @@ class MainFeaturesEmitter string m_srcCoastsFile; uint32_t m_coastType; + vector<uint32_t> m_islandTypes; + + // Treat islands as coastlines, because they don't have fill area draw style. + bool IsIsland(FeatureBuilder1 const & fb) const + { + if (!fb.IsGeometryClosed()) + return false; + + for (size_t i = 0; i < m_islandTypes.size(); ++i) + if (fb.HasType(m_islandTypes[i])) + return true; + + return false; + } template <class T1, class T2> class CombinedEmitter { @@ -281,7 +295,8 @@ class MainFeaturesEmitter public: MainFeaturesEmitter(GenerateInfo const & info) { - m_coastType = classif().GetCoastType(); + Classificator const & c = classif(); + m_coastType = c.GetCoastType(); m_srcCoastsFile = info.m_tmpDir + WORLD_COASTS_FILE_NAME + info.m_datFileSuffix; @@ -297,6 +312,14 @@ public: } else { + char const * arr[][2] = { + { "place", "island" }, + { "place", "islet" } + }; + + for (size_t i = 0; i < ARRAY_SIZE(arr); ++i) + m_islandTypes.push_back(c.GetTypeByPath(vector<string>(arr[i], arr[i] + 2))); + // 4-10 - level range for cells // 20000 - max points count per feature m_coasts.reset(new CoastlineFeaturesGenerator(m_coastType, 4, 10, 20000)); @@ -314,7 +337,7 @@ public: { if (m_coasts) { - if (fb.HasType(m_coastType)) + if (fb.HasType(m_coastType) || IsIsland(fb)) { CHECK ( fb.GetGeomType() != feature::GEOM_POINT, () ); |