diff options
author | Daria Volvenkova <d.volvenkova@corp.mail.ru> | 2017-11-24 03:57:09 +0300 |
---|---|---|
committer | Roman Kuznetsov <r.kuznetsow@gmail.com> | 2017-11-28 16:47:49 +0300 |
commit | 1966d21f914b1655840459ac9a501494e0ce0563 (patch) | |
tree | adc0e793fd3264c145bb164b134e3f383a6b2332 /drape_frontend | |
parent | 6482843cb0afec52d8cfd057b21788b6008666cc (diff) |
New transit mark implementation.
Diffstat (limited to 'drape_frontend')
-rw-r--r-- | drape_frontend/apply_feature_functors.cpp | 7 | ||||
-rw-r--r-- | drape_frontend/colored_symbol_shape.cpp | 5 | ||||
-rw-r--r-- | drape_frontend/drape_engine.cpp | 3 | ||||
-rw-r--r-- | drape_frontend/poi_symbol_shape.cpp | 1 | ||||
-rwxr-xr-x | drape_frontend/render_group.cpp | 2 | ||||
-rw-r--r-- | drape_frontend/route_renderer.cpp | 1 | ||||
-rw-r--r-- | drape_frontend/route_renderer.hpp | 1 | ||||
-rw-r--r-- | drape_frontend/rule_drawer.cpp | 1 | ||||
-rw-r--r-- | drape_frontend/shaders/shader_index.txt | 2 | ||||
-rw-r--r-- | drape_frontend/shape_view_params.hpp | 2 | ||||
-rw-r--r-- | drape_frontend/text_shape.cpp | 17 | ||||
-rw-r--r-- | drape_frontend/text_shape.hpp | 3 | ||||
-rw-r--r-- | drape_frontend/user_mark_shapes.cpp | 148 | ||||
-rw-r--r-- | drape_frontend/user_mark_shapes.hpp | 7 | ||||
-rw-r--r-- | drape_frontend/user_marks_provider.hpp | 13 |
15 files changed, 146 insertions, 67 deletions
diff --git a/drape_frontend/apply_feature_functors.cpp b/drape_frontend/apply_feature_functors.cpp index 13b1c95244..fa55f4dfd2 100644 --- a/drape_frontend/apply_feature_functors.cpp +++ b/drape_frontend/apply_feature_functors.cpp @@ -603,8 +603,8 @@ void ApplyPointFeature::Finish(ref_ptr<dp::TextureManager> texMng) textParams.m_specialDisplacement = specialDisplacementMode ? SpecialDisplacement::SpecialMode : SpecialDisplacement::None; textParams.m_specialPriority = specialModePriority; - m_insertShape(make_unique_dp<TextShape>(m_centerPoint, textParams, m_tileKey, - hasPOI, symbolSize, + textParams.m_startOverlayRank = hasPOI ? dp::OverlayRank1 : dp::OverlayRank0; + m_insertShape(make_unique_dp<TextShape>(m_centerPoint, textParams, m_tileKey, symbolSize, dp::Center /* symbolAnchor */, 0 /* textIndex */)); } } @@ -989,6 +989,7 @@ void ApplyLineFeatureAdditional::GetRoadShieldsViewParams(ref_ptr<dp::TextureMan textParams.m_titleDecl.m_primaryOptional = false; textParams.m_titleDecl.m_secondaryOptional = false; textParams.m_extendingSize = 0; + textParams.m_startOverlayRank = dp::OverlayRank1; TextLayout textLayout; textLayout.Init(strings::MakeUniString(roadNumber), font.m_size, font.m_isSdf, texMng); @@ -1188,7 +1189,7 @@ void ApplyLineFeatureAdditional::Finish(ref_ptr<dp::TextureManager> texMng, if (!CheckShieldsNearby(shieldPos, shieldPixelSize, scaledMinDistance, generatedShieldRects)) continue; - m_insertShape(make_unique_dp<TextShape>(shieldPos, textParams, m_tileKey, true /* hasPOI */, + m_insertShape(make_unique_dp<TextShape>(shieldPos, textParams, m_tileKey, m2::PointF(0.0f, 0.0f) /* symbolSize */, dp::Center /* symbolAnchor */, textIndex)); if (IsColoredRoadShield(shield)) diff --git a/drape_frontend/colored_symbol_shape.cpp b/drape_frontend/colored_symbol_shape.cpp index 82b2453099..7ba174faef 100644 --- a/drape_frontend/colored_symbol_shape.cpp +++ b/drape_frontend/colored_symbol_shape.cpp @@ -235,6 +235,8 @@ void ColoredSymbolShape::Draw(ref_ptr<dp::Batcher> batcher, make_unique_dp<dp::SquareHandle>(overlayId, m_params.m_anchor, m_point, pixelSize, m_params.m_offset, GetOverlayPriority(), true /* isBound */, debugName, true /* isBillboard */) : nullptr; + if (m_needOverlay && m_params.m_specialDisplacement == SpecialDisplacement::UserMark) + handle->SetUserMarkOverlay(true); auto state = CreateGLState(gpu::COLORED_SYMBOL_PROGRAM, m_params.m_depthLayer); state.SetProgram3dIndex(gpu::COLORED_SYMBOL_BILLBOARD_PROGRAM); @@ -252,6 +254,9 @@ uint64_t ColoredSymbolShape::GetOverlayPriority() const if (m_params.m_specialDisplacement == SpecialDisplacement::SpecialMode) return dp::CalculateSpecialModePriority(m_params.m_specialPriority); + if (m_params.m_specialDisplacement == SpecialDisplacement::UserMark) + return dp::CalculateUserMarkPriority(m_params.m_minVisibleScale, m_params.m_specialPriority); + return dp::CalculateOverlayPriority(m_params.m_minVisibleScale, m_params.m_rank, m_params.m_depth); } } // namespace df diff --git a/drape_frontend/drape_engine.cpp b/drape_frontend/drape_engine.cpp index e0b4d183a2..c2c311fa06 100644 --- a/drape_frontend/drape_engine.cpp +++ b/drape_frontend/drape_engine.cpp @@ -239,9 +239,10 @@ void DrapeEngine::UpdateUserMarksGroup(MarkGroupID groupId, UserMarksProvider * renderInfo->m_isVisible = mark->IsVisible(); renderInfo->m_pivot = mark->GetPivot(); renderInfo->m_pixelOffset = mark->GetPixelOffset(); - renderInfo->m_symbolName = mark->GetSymbolName(); renderInfo->m_titleDecl = mark->GetTitleDecl(); renderInfo->m_symbolSizes = mark->GetSymbolSizes(); + renderInfo->m_symbolNames = mark->GetSymbolNames(); + renderInfo->m_coloredSymbols = mark->GetColoredSymbols(); renderInfo->m_hasSymbolPriority = mark->HasSymbolPriority(); renderInfo->m_hasTitlePriority = mark->HasTitlePriority(); renderInfo->m_priority = mark->GetPriority(); diff --git a/drape_frontend/poi_symbol_shape.cpp b/drape_frontend/poi_symbol_shape.cpp index 792babdf29..fb4ec6ea79 100644 --- a/drape_frontend/poi_symbol_shape.cpp +++ b/drape_frontend/poi_symbol_shape.cpp @@ -157,6 +157,7 @@ drape_ptr<dp::OverlayHandle> PoiSymbolShape::CreateOverlayHandle(m2::PointF cons handle->SetExtendingSize(m_params.m_extendingSize); if (m_params.m_specialDisplacement == SpecialDisplacement::UserMark) handle->SetUserMarkOverlay(true); + handle->SetOverlayRank(m_params.m_startOverlayRank); return handle; } diff --git a/drape_frontend/render_group.cpp b/drape_frontend/render_group.cpp index 5f807984c7..64e16d9931 100755 --- a/drape_frontend/render_group.cpp +++ b/drape_frontend/render_group.cpp @@ -101,7 +101,7 @@ void RenderGroup::Render(ScreenBase const & screen) int const programIndex = m_state.GetProgramIndex(); int const program3dIndex = m_state.GetProgram3dIndex(); - if (IsOverlay()) + if (IsOverlay() || GetDepthLayer(m_state) == RenderState::TransitMarkLayer) { if (programIndex == gpu::COLORED_SYMBOL_PROGRAM || programIndex == gpu::COLORED_SYMBOL_BILLBOARD_PROGRAM) diff --git a/drape_frontend/route_renderer.cpp b/drape_frontend/route_renderer.cpp index 8f1e86e219..38880f61b8 100644 --- a/drape_frontend/route_renderer.cpp +++ b/drape_frontend/route_renderer.cpp @@ -29,7 +29,6 @@ std::string const kRouteArrowsMaskBicycle = "RouteArrowsMaskBicycle"; std::string const kRouteMaskPedestrian = "RouteMaskPedestrian"; // TODO(@darina) Use separate colors. -std::string const kGateColor = "Route"; std::string const kTransitOutlineColor = "RouteMarkPrimaryTextOutline"; namespace diff --git a/drape_frontend/route_renderer.hpp b/drape_frontend/route_renderer.hpp index f197e92a3d..bf49fd1707 100644 --- a/drape_frontend/route_renderer.hpp +++ b/drape_frontend/route_renderer.hpp @@ -22,7 +22,6 @@ extern std::string const kRouteColor; extern std::string const kRouteOutlineColor; extern std::string const kRoutePedestrian; extern std::string const kRouteBicycle; -extern std::string const kGateColor; extern std::string const kTransitOutlineColor; class RouteRenderer final diff --git a/drape_frontend/rule_drawer.cpp b/drape_frontend/rule_drawer.cpp index c81caa07d6..eb1dea1dd3 100644 --- a/drape_frontend/rule_drawer.cpp +++ b/drape_frontend/rule_drawer.cpp @@ -557,7 +557,6 @@ void RuleDrawer::DrawTileNet(TInsertShapeFn const & insertShape) tp.m_titleDecl.m_primaryTextFont = dp::FontDecl(dp::Color::Red(), 30); tp.m_titleDecl.m_primaryOffset = {0.f, 0.f}; drape_ptr<TextShape> textShape = make_unique_dp<TextShape>(r.Center(), tp, key, - false /* hasPOI */, m2::PointF(0.0, 0.0) /* symbolSize */, dp::Anchor::Center, 0 /* textIndex */); diff --git a/drape_frontend/shaders/shader_index.txt b/drape_frontend/shaders/shader_index.txt index f6de9a5d5b..2541fb8f58 100644 --- a/drape_frontend/shaders/shader_index.txt +++ b/drape_frontend/shaders/shader_index.txt @@ -1,6 +1,6 @@ +COLORED_SYMBOL_PROGRAM colored_symbol.vsh.glsl colored_symbol.fsh.glsl TEXTURING_PROGRAM texturing.vsh.glsl texturing.fsh.glsl MASKED_TEXTURING_PROGRAM masked_texturing.vsh.glsl masked_texturing.fsh.glsl -COLORED_SYMBOL_PROGRAM colored_symbol.vsh.glsl colored_symbol.fsh.glsl TEXT_OUTLINED_PROGRAM text_outlined.vsh.glsl text.fsh.glsl TEXT_PROGRAM text.vsh.glsl text.fsh.glsl TEXT_FIXED_PROGRAM text.vsh.glsl text_fixed.fsh.glsl diff --git a/drape_frontend/shape_view_params.hpp b/drape_frontend/shape_view_params.hpp index 8e8418e1d9..904d24017e 100644 --- a/drape_frontend/shape_view_params.hpp +++ b/drape_frontend/shape_view_params.hpp @@ -17,6 +17,7 @@ namespace df { double const kShapeCoordScalar = 1000; int constexpr kBuildingOutlineSize = 16; +uint32_t constexpr kStartUserMarkOverlayIndex = 1000; struct CommonViewParams { @@ -38,6 +39,7 @@ struct CommonOverlayViewParams : public CommonViewParams { SpecialDisplacement m_specialDisplacement = SpecialDisplacement::None; uint16_t m_specialPriority = std::numeric_limits<uint16_t>::max(); + int m_startOverlayRank = 0; }; struct PoiSymbolViewParams : CommonOverlayViewParams diff --git a/drape_frontend/text_shape.cpp b/drape_frontend/text_shape.cpp index cf23901959..b71cb633d8 100644 --- a/drape_frontend/text_shape.cpp +++ b/drape_frontend/text_shape.cpp @@ -110,13 +110,12 @@ private: } // namespace TextShape::TextShape(m2::PointD const & basePoint, TextViewParams const & params, - TileKey const & tileKey, bool hasPOI, + TileKey const & tileKey, m2::PointF const & symbolSize, dp::Anchor symbolAnchor, uint32_t textIndex) : m_basePoint(basePoint) , m_params(params) , m_tileCoords(tileKey.GetTileCoords()) - , m_hasPOI(hasPOI) , m_symbolSize(symbolSize) , m_symbolAnchor(symbolAnchor) , m_textIndex(textIndex) @@ -298,8 +297,10 @@ void TextShape::DrawSubStringPlain(StraightTextLayout const & layout, dp::FontDe std::move(dynamicBuffer), true); handle->SetPivotZ(m_params.m_posZ); - handle->SetOverlayRank(m_hasPOI ? (isPrimary ? dp::OverlayRank1 : dp::OverlayRank2) - : (isPrimary ? dp::OverlayRank0 : dp::OverlayRank1)); + + ASSERT_LESS(m_params.m_startOverlayRank + 1, dp::OverlayRanksCount, ()); + handle->SetOverlayRank(isPrimary ? m_params.m_startOverlayRank : m_params.m_startOverlayRank + 1); + handle->SetExtendingSize(m_params.m_extendingSize); if (m_params.m_specialDisplacement == SpecialDisplacement::UserMark) handle->SetUserMarkOverlay(true); @@ -349,9 +350,13 @@ void TextShape::DrawSubStringOutlined(StraightTextLayout const & layout, dp::Fon std::move(dynamicBuffer), true); handle->SetPivotZ(m_params.m_posZ); - handle->SetOverlayRank(m_hasPOI ? (isPrimary ? dp::OverlayRank1 : dp::OverlayRank2) - : (isPrimary ? dp::OverlayRank0 : dp::OverlayRank1)); + + ASSERT_LESS(m_params.m_startOverlayRank + 1, dp::OverlayRanksCount, ()); + handle->SetOverlayRank(isPrimary ? m_params.m_startOverlayRank : m_params.m_startOverlayRank + 1); + handle->SetExtendingSize(m_params.m_extendingSize); + if (m_params.m_specialDisplacement == SpecialDisplacement::UserMark) + handle->SetUserMarkOverlay(true); dp::AttributeProvider provider(2, static_cast<uint32_t>(staticBuffer.size())); provider.InitStream(0, gpu::TextOutlinedStaticVertex::GetBindingInfo(), make_ref(staticBuffer.data())); diff --git a/drape_frontend/text_shape.hpp b/drape_frontend/text_shape.hpp index f520dcd783..89c4b5da54 100644 --- a/drape_frontend/text_shape.hpp +++ b/drape_frontend/text_shape.hpp @@ -16,7 +16,7 @@ class TextShape : public MapShape { public: TextShape(m2::PointD const & basePoint, TextViewParams const & params, - TileKey const & tileKey, bool hasPOI, m2::PointF const & symbolSize, + TileKey const & tileKey, m2::PointF const & symbolSize, dp::Anchor symbolAnchor, uint32_t textIndex); void Draw(ref_ptr<dp::Batcher> batcher, ref_ptr<dp::TextureManager> textures) const override; @@ -42,7 +42,6 @@ private: m2::PointD m_basePoint; TextViewParams m_params; m2::PointI m_tileCoords; - bool m_hasPOI; m2::PointF m_symbolSize; dp::Anchor m_symbolAnchor; uint32_t m_textIndex; diff --git a/drape_frontend/user_mark_shapes.cpp b/drape_frontend/user_mark_shapes.cpp index d593e2f76a..2c3a28b373 100644 --- a/drape_frontend/user_mark_shapes.cpp +++ b/drape_frontend/user_mark_shapes.cpp @@ -1,5 +1,6 @@ #include "drape_frontend/user_mark_shapes.hpp" +#include "drape_frontend/colored_symbol_shape.hpp" #include "drape_frontend/line_shape.hpp" #include "drape_frontend/map_shape.hpp" #include "drape_frontend/poi_symbol_shape.hpp" @@ -117,24 +118,67 @@ void CacheUserMarks(TileKey const & tileKey, ref_ptr<dp::TextureManager> texture m2::PointD const tileCenter = tileKey.GetGlobalRect().Center(); depthLayer = renderInfo.m_depthLayer; + m2::PointF symbolSize; + std::string symbolName; + if (renderInfo.m_symbolNames != nullptr) + { + for (auto itName = renderInfo.m_symbolNames->rbegin(); itName != renderInfo.m_symbolNames->rend(); ++itName) + { + if (itName->first <= tileKey.m_zoomLevel) + { + symbolName = itName->second; + break; + } + } + } + if (renderInfo.m_hasSymbolPriority) { - PoiSymbolViewParams params(renderInfo.m_featureId); - params.m_tileCenter = tileCenter; - params.m_depth = renderInfo.m_depth; - params.m_depthLayer = renderInfo.m_depthLayer; - params.m_minVisibleScale = renderInfo.m_minZoom; - params.m_specialDisplacement = SpecialDisplacement::UserMark; - params.m_specialPriority = renderInfo.m_priority; - params.m_symbolName = renderInfo.m_symbolName; - PoiSymbolShape(renderInfo.m_pivot, params, tileKey, - 0 /* textIndex */).Draw(&batcher, textures); + if (renderInfo.m_coloredSymbols != nullptr) + { + for (auto itSym = renderInfo.m_coloredSymbols->rbegin(); itSym != renderInfo.m_coloredSymbols->rend(); ++itSym) + { + if (itSym->first <= tileKey.m_zoomLevel) + { + ColoredSymbolViewParams params = itSym->second; + if (params.m_shape == ColoredSymbolViewParams::Shape::Circle) + symbolSize = m2::PointF(params.m_radiusInPixels, params.m_radiusInPixels); + else + symbolSize = params.m_sizeInPixels; + + params.m_featureID = renderInfo.m_featureId; + params.m_tileCenter = tileCenter; + params.m_depth = renderInfo.m_depth; + params.m_depthLayer = renderInfo.m_depthLayer; + params.m_minVisibleScale = renderInfo.m_minZoom; + params.m_specialDisplacement = SpecialDisplacement::UserMark; + params.m_specialPriority = renderInfo.m_priority; + ColoredSymbolShape(renderInfo.m_pivot, params, tileKey, + kStartUserMarkOverlayIndex).Draw(&batcher, textures); + break; + } + } + } + if (renderInfo.m_symbolNames != nullptr) + { + PoiSymbolViewParams params(renderInfo.m_featureId); + params.m_tileCenter = tileCenter; + params.m_depth = renderInfo.m_depth; + params.m_depthLayer = renderInfo.m_depthLayer; + params.m_minVisibleScale = renderInfo.m_minZoom; + params.m_specialDisplacement = SpecialDisplacement::UserMark; + params.m_specialPriority = renderInfo.m_priority; + params.m_symbolName = symbolName; + params.m_startOverlayRank = renderInfo.m_coloredSymbols != nullptr ? dp::OverlayRank1 : dp::OverlayRank0; + PoiSymbolShape(renderInfo.m_pivot, params, tileKey, + kStartUserMarkOverlayIndex).Draw(&batcher, textures); + } } - else if (!renderInfo.m_symbolName.empty()) + else if (renderInfo.m_symbolNames != nullptr) { buffer.reserve(vertexCount); - textures->GetSymbolRegion(renderInfo.m_symbolName, region); + textures->GetSymbolRegion(symbolName, region); m2::RectF const & texRect = region.GetTexRect(); m2::PointF const pxSize = region.GetPixelSize(); dp::Anchor const anchor = renderInfo.m_anchor; @@ -157,42 +201,58 @@ void CacheUserMarks(TileKey const & tileKey, ref_ptr<dp::TextureManager> texture buffer.emplace_back(pos, right + up + offset, glsl::ToVec2(texRect.RightBottom()), runAnim); } - if (renderInfo.m_titleDecl != nullptr && !renderInfo.m_titleDecl->m_primaryText.empty()) + if (renderInfo.m_symbolSizes != nullptr) { - TextViewParams params; - params.m_featureID = renderInfo.m_featureId; - params.m_tileCenter = tileCenter; - params.m_titleDecl = *renderInfo.m_titleDecl; - - // Here we use visual scale to adapt texts sizes and offsets - // to different screen resolutions and DPI. - params.m_titleDecl.m_primaryTextFont.m_size *= vs; - params.m_titleDecl.m_secondaryTextFont.m_size *= vs; - params.m_titleDecl.m_primaryOffset *= vs; - params.m_titleDecl.m_secondaryOffset *= vs; - - params.m_depth = renderInfo.m_depth; - params.m_depthLayer = renderInfo.m_depthLayer; - params.m_minVisibleScale = renderInfo.m_minZoom; - if (renderInfo.m_hasTitlePriority) - { - params.m_specialDisplacement = SpecialDisplacement::UserMark; - params.m_specialPriority = renderInfo.m_priority; - } + symbolSize = renderInfo.m_symbolSizes->at(static_cast<size_t>(tileKey.m_zoomLevel - 1)) * vs; + } + else + { + textures->GetSymbolRegion(symbolName, region); + symbolSize.x = max(region.GetPixelSize().x, symbolSize.x); + symbolSize.y = max(region.GetPixelSize().y, symbolSize.y); + } - m2::PointF symbolSize; - if (renderInfo.m_symbolSizes != nullptr) - { - symbolSize = renderInfo.m_symbolSizes->at(static_cast<size_t>(tileKey.m_zoomLevel)) * vs; - } - else + if (renderInfo.m_titleDecl != nullptr) + { + for (auto const & titleDecl : *renderInfo.m_titleDecl) { - textures->GetSymbolRegion(renderInfo.m_symbolName, region); - symbolSize = region.GetPixelSize(); - } + if (titleDecl.m_primaryText.empty()) + continue; + + TextViewParams params; + params.m_featureID = renderInfo.m_featureId; + params.m_tileCenter = tileCenter; + params.m_titleDecl = titleDecl; + + // Here we use visual scale to adapt texts sizes and offsets + // to different screen resolutions and DPI. + params.m_titleDecl.m_primaryTextFont.m_size *= vs; + params.m_titleDecl.m_secondaryTextFont.m_size *= vs; + params.m_titleDecl.m_primaryOffset *= vs; + params.m_titleDecl.m_secondaryOffset *= vs; + + params.m_depth = renderInfo.m_depth; + params.m_depthLayer = renderInfo.m_depthLayer; + params.m_minVisibleScale = renderInfo.m_minZoom; - TextShape(renderInfo.m_pivot, params, tileKey, renderInfo.m_hasSymbolPriority /* hasPOI */, - symbolSize, renderInfo.m_anchor, 0 /* textIndex */).Draw(&batcher, textures); + uint32_t overlayIndex = 0; + if (renderInfo.m_hasTitlePriority) + { + params.m_specialDisplacement = SpecialDisplacement::UserMark; + params.m_specialPriority = renderInfo.m_priority; + overlayIndex = kStartUserMarkOverlayIndex; + + params.m_startOverlayRank = dp::OverlayRank0; + if (renderInfo.m_symbolNames != nullptr) + params.m_startOverlayRank++; + if (renderInfo.m_coloredSymbols != nullptr) + params.m_startOverlayRank++; + ASSERT_LESS(params.m_startOverlayRank, dp::OverlayRanksCount, ()); + } + + TextShape(renderInfo.m_pivot, params, tileKey, + symbolSize, renderInfo.m_anchor, overlayIndex).Draw(&batcher, textures); + } } renderInfo.m_justCreated = false; diff --git a/drape_frontend/user_mark_shapes.hpp b/drape_frontend/user_mark_shapes.hpp index a35e72ab9d..1686065234 100644 --- a/drape_frontend/user_mark_shapes.hpp +++ b/drape_frontend/user_mark_shapes.hpp @@ -18,10 +18,11 @@ struct UserMarkRenderParams int m_minZoom = 1; m2::PointD m_pivot = m2::PointD(0.0, 0.0); m2::PointD m_pixelOffset = m2::PointD(0.0, 0.0); - std::string m_symbolName; dp::Anchor m_anchor = dp::Center; - drape_ptr<std::vector<m2::PointF>> m_symbolSizes; - drape_ptr<dp::TitleDecl> m_titleDecl; + drape_ptr<UserPointMark::SymbolSizesZoomInfo> m_symbolSizes; + drape_ptr<UserPointMark::ColoredSymbolZoomInfo> m_coloredSymbols; + drape_ptr<UserPointMark::SymbolNameZoomInfo> m_symbolNames; + drape_ptr<UserPointMark::TitlesInfo> m_titleDecl; bool m_hasSymbolPriority = false; bool m_hasTitlePriority = false; uint16_t m_priority = 0; diff --git a/drape_frontend/user_marks_provider.hpp b/drape_frontend/user_marks_provider.hpp index df14bf0a7a..8685c764c2 100644 --- a/drape_frontend/user_marks_provider.hpp +++ b/drape_frontend/user_marks_provider.hpp @@ -1,6 +1,7 @@ #pragma once #include "drape_frontend/render_state.hpp" +#include "drape_frontend/shape_view_params.hpp" #include "drape/drape_global.hpp" #include "drape/pointers.hpp" @@ -38,6 +39,11 @@ struct MarkIDCollection class UserPointMark { public: + using ColoredSymbolZoomInfo = std::map<int, df::ColoredSymbolViewParams>; + using SymbolNameZoomInfo = std::map<int, std::string>; + using SymbolSizesZoomInfo = std::vector<m2::PointF>; + using TitlesInfo = std::vector<dp::TitleDecl>; + UserPointMark(); virtual ~UserPointMark() {} @@ -48,13 +54,14 @@ public: virtual m2::PointD const & GetPivot() const = 0; virtual m2::PointD GetPixelOffset() const = 0; - virtual std::string GetSymbolName() const = 0; virtual dp::Anchor GetAnchor() const = 0; virtual float GetDepth() const = 0; virtual RenderState::DepthLayer GetDepthLayer() const = 0; virtual bool IsVisible() const = 0; - virtual drape_ptr<dp::TitleDecl> GetTitleDecl() const = 0; - virtual drape_ptr<std::vector<m2::PointF>> GetSymbolSizes() const = 0; + virtual drape_ptr<TitlesInfo> GetTitleDecl() const = 0; + virtual drape_ptr<SymbolSizesZoomInfo> GetSymbolSizes() const = 0; + virtual drape_ptr<SymbolNameZoomInfo> GetSymbolNames() const = 0; + virtual drape_ptr<ColoredSymbolZoomInfo> GetColoredSymbols() const = 0; virtual uint16_t GetPriority() const = 0; virtual bool HasSymbolPriority() const = 0; virtual bool HasTitlePriority() const = 0; |