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>2013-11-14 14:31:06 +0400
committerAlex Zolotarev <alex@maps.me>2015-09-23 02:05:14 +0300
commit8befec18217d4c17437a296d2a9b4688e9b4ad46 (patch)
treec18cfb0704c408d138a32ee149bd5e016e7aa0be /generator/feature_generator.cpp
parent3bebc936b81fc6e196012b0ef1f377973d2d44bb (diff)
[generator] Treat place-island, place-islet as coastlines.
Diffstat (limited to 'generator/feature_generator.cpp')
-rw-r--r--generator/feature_generator.cpp27
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, () );