diff --git a/drape_frontend/apply_feature_functors.cpp b/drape_frontend/apply_feature_functors.cpp index 85a1f6810d..2f4be97cf9 100644 --- a/drape_frontend/apply_feature_functors.cpp +++ b/drape_frontend/apply_feature_functors.cpp @@ -5,6 +5,8 @@ #include "area_shape.hpp" #include "line_shape.hpp" +#include "poi_symbol_shape.hpp" +#include "circle_shape.hpp" #include "../indexer/drawing_rules.hpp" #include "../indexer/drules_include.hpp" @@ -113,11 +115,22 @@ namespace df } else if (m_circleRule) { - // draw circle + CircleViewParams params; + params.m_depth = m_circleDepth; + params.m_color = ToDrapeColor(m_circleRule->color()); + params.m_radius = m_circleRule->radius(); + + CircleShape * shape = new CircleShape(m_centerPoint, params); + m_context.InsertShape(m_tileKey, MovePointer(shape)); } else if (m_symbolRule) { - // draw symbol + PoiSymbolViewParams params; + params.m_depth = m_symbolDepth; + params.m_symbolName = m_symbolRule->name(); + + PoiSymbolShape * shape = new PoiSymbolShape(m_centerPoint, params); + m_context.InsertShape(m_tileKey, MovePointer(shape)); } } @@ -144,10 +157,11 @@ namespace df if (areaRule) { - AreaShape * shape = new AreaShape(ToDrapeColor(areaRule->color()), depth); - for (size_t i = 0; i < m_triangles.size(); i += 3) - shape->AddTriangle(m_triangles[i], m_triangles[i + 1], m_triangles[i + 2]); + AreaViewParams params; + params.m_depth = depth; + params.m_color = ToDrapeColor(areaRule->color()); + AreaShape * shape = new AreaShape(m_triangles, params); m_context.InsertShape(m_tileKey, MovePointer(shape)); } else @@ -175,8 +189,9 @@ namespace df { LineViewParams params; Extract(pRule, params); + params.m_depth = depth; - m_context.InsertShape(m_tileKey, MovePointer(new LineShape(m_path, depth, params))); + m_context.InsertShape(m_tileKey, MovePointer(new LineShape(m_path, params))); } } } diff --git a/drape_frontend/rule_drawer.cpp b/drape_frontend/rule_drawer.cpp index f794a1514c..7e180bedee 100644 --- a/drape_frontend/rule_drawer.cpp +++ b/drape_frontend/rule_drawer.cpp @@ -64,5 +64,13 @@ namespace df s.ForEachRule(bind(&ApplyLineFeature::ProcessRule, &apply, _1)); //apply.Finish(); } + else + { + ASSERT(s.PointStyleExists(), ()); + ApplyPointFeature apply(m_context, m_tileKey); + f.ForEachPointRef(apply, m_tileKey.m_zoomLevel); + s.ForEachRule(bind(&ApplyPointFeature::ProcessRule, &apply, _1)); + apply.Finish(); + } } }