diff options
author | Roman Kuznetsov <r.kuznetsow@gmail.com> | 2018-04-07 11:11:12 +0300 |
---|---|---|
committer | Daria Volvenkova <d.volvenkova@corp.mail.ru> | 2018-04-09 14:28:51 +0300 |
commit | 9021750e6dd899758facf22140d56c2d706aacc1 (patch) | |
tree | f33c226dca33dd1185686a71244d1f662c3c05cf /drape_frontend/user_mark_shapes.cpp | |
parent | a55d0cada95ed622d27d0fb036362d0beac234a2 (diff) |
Added pricing badges
Diffstat (limited to 'drape_frontend/user_mark_shapes.cpp')
-rw-r--r-- | drape_frontend/user_mark_shapes.cpp | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/drape_frontend/user_mark_shapes.cpp b/drape_frontend/user_mark_shapes.cpp index 9b5abc04c4..431be2a796 100644 --- a/drape_frontend/user_mark_shapes.cpp +++ b/drape_frontend/user_mark_shapes.cpp @@ -93,14 +93,13 @@ struct UserPointVertex : public gpu::BaseVertex TColorAndAnimate m_colorAndAnimate; }; -std::string GetSymbolNameForZoomLevel(UserMarkRenderParams const & renderInfo, +std::string GetSymbolNameForZoomLevel(drape_ptr<UserPointMark::SymbolNameZoomInfo> const & symbolNames, TileKey const & tileKey) { - if (!renderInfo.m_symbolNames) + if (!symbolNames) return {}; - for (auto itName = renderInfo.m_symbolNames->rbegin(); itName != renderInfo.m_symbolNames->rend(); - ++itName) + for (auto itName = symbolNames->crbegin(); itName != symbolNames->crend(); ++itName) { if (itName->first <= tileKey.m_zoomLevel) return itName->second; @@ -170,7 +169,7 @@ void GeneratePoiSymbolShape(UserMarkRenderParams const & renderInfo, TileKey con ASSERT_LESS_OR_EQUAL(tileKey.m_zoomLevel, scales::UPPER_STYLE_SCALE, ()); size_t offsetIndex = 0; if (tileKey.m_zoomLevel > 0) - offsetIndex = static_cast<size_t>(min(tileKey.m_zoomLevel - 1, scales::UPPER_STYLE_SCALE)); + offsetIndex = static_cast<size_t>(std::min(tileKey.m_zoomLevel, scales::UPPER_STYLE_SCALE) - 1); symbolOffset = renderInfo.m_symbolOffsets->at(offsetIndex); params.m_offset = symbolOffset; } @@ -313,7 +312,7 @@ void CacheUserMarks(TileKey const & tileKey, ref_ptr<dp::TextureManager> texture m2::PointF symbolSize(0.0f, 0.0f); m2::PointF symbolOffset(0.0f, 0.0f); - auto const symbolName = GetSymbolNameForZoomLevel(renderInfo, tileKey); + auto const symbolName = GetSymbolNameForZoomLevel(renderInfo.m_symbolNames, tileKey); dp::Color color = dp::Color::White(); if (!renderInfo.m_color.empty()) @@ -387,6 +386,18 @@ void CacheUserMarks(TileKey const & tileKey, ref_ptr<dp::TextureManager> texture batcher); } + if (renderInfo.m_badgeNames != nullptr) + { + ASSERT(!renderInfo.m_hasSymbolPriority || renderInfo.m_symbolNames == nullptr, + ("Multiple POI shapes in an usermark are not supported yet")); + auto const badgeName = GetSymbolNameForZoomLevel(renderInfo.m_badgeNames, tileKey); + if (!badgeName.empty()) + { + GeneratePoiSymbolShape(renderInfo, tileKey, tileCenter, badgeName, textures, symbolOffset, + batcher); + } + } + renderInfo.m_justCreated = false; } |