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:
authorDaria Volvenkova <d.volvenkova@corp.mail.ru>2018-01-18 14:48:03 +0300
committerRoman Kuznetsov <r.kuznetsow@gmail.com>2018-01-18 15:44:15 +0300
commit6762ff38674c8f2f187d8219982d58a2170ef444 (patch)
tree9f2a87c45d73088bc3fb5e76b780e4ca9db48225 /drape_frontend
parent3a83cf6ffff91a78b409df2d8b663af28137a22b (diff)
New displaying of transfer titles.
Diffstat (limited to 'drape_frontend')
-rw-r--r--drape_frontend/apply_feature_functors.cpp2
-rw-r--r--drape_frontend/drape_engine.cpp1
-rw-r--r--drape_frontend/rule_drawer.cpp5
-rw-r--r--drape_frontend/text_shape.cpp8
-rw-r--r--drape_frontend/text_shape.hpp5
-rw-r--r--drape_frontend/user_mark_shapes.cpp22
-rw-r--r--drape_frontend/user_mark_shapes.hpp1
-rw-r--r--drape_frontend/user_marks_provider.hpp2
8 files changed, 36 insertions, 10 deletions
diff --git a/drape_frontend/apply_feature_functors.cpp b/drape_frontend/apply_feature_functors.cpp
index a72e62562b..98dc2929aa 100644
--- a/drape_frontend/apply_feature_functors.cpp
+++ b/drape_frontend/apply_feature_functors.cpp
@@ -604,6 +604,7 @@ void ApplyPointFeature::Finish(ref_ptr<dp::TextureManager> texMng)
textParams.m_specialPriority = specialModePriority;
textParams.m_startOverlayRank = hasPOI ? dp::OverlayRank1 : dp::OverlayRank0;
m_insertShape(make_unique_dp<TextShape>(m_centerPoint, textParams, m_tileKey, symbolSize,
+ m2::PointF(0.0f, 0.0f) /* symbolOffset */,
dp::Center /* symbolAnchor */, 0 /* textIndex */));
}
}
@@ -1190,6 +1191,7 @@ void ApplyLineFeatureAdditional::Finish(ref_ptr<dp::TextureManager> texMng,
m_insertShape(make_unique_dp<TextShape>(shieldPos, textParams, m_tileKey,
m2::PointF(0.0f, 0.0f) /* symbolSize */,
+ m2::PointF(0.0f, 0.0f) /* symbolOffset */,
dp::Center /* symbolAnchor */, textIndex));
if (IsColoredRoadShield(shield))
m_insertShape(make_unique_dp<ColoredSymbolShape>(shieldPos, symbolParams, m_tileKey, textIndex));
diff --git a/drape_frontend/drape_engine.cpp b/drape_frontend/drape_engine.cpp
index 0388493d8e..81ca0a183e 100644
--- a/drape_frontend/drape_engine.cpp
+++ b/drape_frontend/drape_engine.cpp
@@ -249,6 +249,7 @@ void DrapeEngine::UpdateUserMarksGroup(MarkGroupID groupId, UserMarksProvider *
renderInfo->m_symbolNames = mark->GetSymbolNames();
renderInfo->m_coloredSymbols = mark->GetColoredSymbols();
renderInfo->m_symbolSizes = mark->GetSymbolSizes();
+ renderInfo->m_symbolOffsets = mark->GetSymbolOffsets();
renderInfo->m_hasSymbolPriority = mark->HasSymbolPriority();
renderInfo->m_hasTitlePriority = mark->HasTitlePriority();
renderInfo->m_priority = mark->GetPriority();
diff --git a/drape_frontend/rule_drawer.cpp b/drape_frontend/rule_drawer.cpp
index eb1dea1dd3..d85396a90f 100644
--- a/drape_frontend/rule_drawer.cpp
+++ b/drape_frontend/rule_drawer.cpp
@@ -555,9 +555,10 @@ void RuleDrawer::DrawTileNet(TInsertShapeFn const & insertShape)
strings::to_string(key.m_zoomLevel);
tp.m_titleDecl.m_primaryTextFont = dp::FontDecl(dp::Color::Red(), 30);
- tp.m_titleDecl.m_primaryOffset = {0.f, 0.f};
+ tp.m_titleDecl.m_primaryOffset = {0.0f, 0.0f};
drape_ptr<TextShape> textShape = make_unique_dp<TextShape>(r.Center(), tp, key,
- m2::PointF(0.0, 0.0) /* symbolSize */,
+ m2::PointF(0.0f, 0.0f) /* symbolSize */,
+ m2::PointF(0.0f, 0.0f) /* symbolOffset */,
dp::Anchor::Center,
0 /* textIndex */);
textShape->DisableDisplacing();
diff --git a/drape_frontend/text_shape.cpp b/drape_frontend/text_shape.cpp
index f64b9bd1c5..906c617189 100644
--- a/drape_frontend/text_shape.cpp
+++ b/drape_frontend/text_shape.cpp
@@ -151,12 +151,13 @@ private:
TextShape::TextShape(m2::PointD const & basePoint, TextViewParams const & params,
TileKey const & tileKey,
- m2::PointF const & symbolSize, dp::Anchor symbolAnchor,
+ m2::PointF const & symbolSize, m2::PointF const & symbolOffset, dp::Anchor symbolAnchor,
uint32_t textIndex)
: m_basePoint(basePoint)
, m_params(params)
, m_tileCoords(tileKey.GetTileCoords())
, m_symbolAnchor(symbolAnchor)
+ , m_symbolOffset(symbolOffset)
, m_textIndex(textIndex)
{
m_symbolSizes.push_back(symbolSize);
@@ -164,12 +165,13 @@ TextShape::TextShape(m2::PointD const & basePoint, TextViewParams const & params
TextShape::TextShape(m2::PointD const & basePoint, TextViewParams const & params,
TileKey const & tileKey, std::vector<m2::PointF> const & symbolSizes,
- dp::Anchor symbolAnchor, uint32_t textIndex)
+ m2::PointF const & symbolOffset, dp::Anchor symbolAnchor, uint32_t textIndex)
: m_basePoint(basePoint)
, m_params(params)
, m_tileCoords(tileKey.GetTileCoords())
, m_symbolSizes(symbolSizes)
, m_symbolAnchor(symbolAnchor)
+ , m_symbolOffset(symbolOffset)
, m_textIndex(textIndex)
{
ASSERT_GREATER(m_symbolSizes.size(), 0, ());
@@ -260,6 +262,8 @@ void TextShape::Draw(ref_ptr<dp::Batcher> batcher, ref_ptr<dp::TextureManager> t
CalculateTextOffsets(titleDecl, primaryLayout.GetPixelSize(),
secondaryLayout != nullptr ? secondaryLayout->GetPixelSize() : m2::PointF(0.0f, 0.0f),
primaryOffset, secondaryOffset);
+ primaryOffset += glsl::vec2(m_symbolOffset.x, m_symbolOffset.y);
+ secondaryOffset += glsl::vec2(m_symbolOffset.x, m_symbolOffset.y);
if (primaryLayout.GetGlyphCount() > 0)
{
diff --git a/drape_frontend/text_shape.hpp b/drape_frontend/text_shape.hpp
index f6244c9cab..47ae779137 100644
--- a/drape_frontend/text_shape.hpp
+++ b/drape_frontend/text_shape.hpp
@@ -18,12 +18,12 @@ class TextShape : public MapShape
{
public:
TextShape(m2::PointD const & basePoint, TextViewParams const & params,
- TileKey const & tileKey, m2::PointF const & symbolSize,
+ TileKey const & tileKey, m2::PointF const & symbolSize, m2::PointF const & symbolOffset,
dp::Anchor symbolAnchor, uint32_t textIndex);
TextShape(m2::PointD const & basePoint, TextViewParams const & params,
TileKey const & tileKey, std::vector<m2::PointF> const & symbolSizes,
- dp::Anchor symbolAnchor, uint32_t textIndex);
+ m2::PointF const & symbolOffset, dp::Anchor symbolAnchor, uint32_t textIndex);
void Draw(ref_ptr<dp::Batcher> batcher, ref_ptr<dp::TextureManager> textures) const override;
MapShapeType GetType() const override { return MapShapeType::OverlayType; }
@@ -50,6 +50,7 @@ private:
m2::PointI m_tileCoords;
std::vector<m2::PointF> m_symbolSizes;
dp::Anchor m_symbolAnchor;
+ m2::PointF m_symbolOffset;
uint32_t m_textIndex;
bool m_disableDisplacing = false;
diff --git a/drape_frontend/user_mark_shapes.cpp b/drape_frontend/user_mark_shapes.cpp
index ea232ddba3..f7bcd56165 100644
--- a/drape_frontend/user_mark_shapes.cpp
+++ b/drape_frontend/user_mark_shapes.cpp
@@ -15,6 +15,7 @@
#include "drape/batcher.hpp"
#include "indexer/feature_decl.hpp"
+#include "indexer/scales.hpp"
#include "geometry/clipping.hpp"
#include "geometry/mercator.hpp"
@@ -119,7 +120,8 @@ void CacheUserMarks(TileKey const & tileKey, ref_ptr<dp::TextureManager> texture
m2::PointD const tileCenter = tileKey.GetGlobalRect().Center();
depthLayer = renderInfo.m_depthLayer;
- m2::PointF symbolSize;
+ m2::PointF symbolSize(0.0f, 0.0f);
+ m2::PointF symbolOffset(0.0f, 0.0f);
std::string symbolName;
if (renderInfo.m_symbolNames != nullptr)
{
@@ -178,7 +180,18 @@ void CacheUserMarks(TileKey const & tileKey, ref_ptr<dp::TextureManager> texture
params.m_specialDisplacement = SpecialDisplacement::UserMark;
params.m_specialPriority = renderInfo.m_priority;
params.m_symbolName = symbolName;
+ params.m_anchor = renderInfo.m_anchor;
params.m_startOverlayRank = renderInfo.m_coloredSymbols != nullptr ? dp::OverlayRank1 : dp::OverlayRank0;
+ if (renderInfo.m_symbolOffsets != nullptr)
+ {
+ ASSERT_GREATER(tileKey.m_zoomLevel, 0, ());
+ 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));
+ symbolOffset = renderInfo.m_symbolOffsets->at(offsetIndex);
+ params.m_offset = symbolOffset;
+ }
PoiSymbolShape(renderInfo.m_pivot, params, tileKey,
kStartUserMarkOverlayIndex + renderInfo.m_index).Draw(&batcher, textures);
}
@@ -263,13 +276,14 @@ void CacheUserMarks(TileKey const & tileKey, ref_ptr<dp::TextureManager> texture
if (renderInfo.m_symbolSizes != nullptr)
{
- TextShape(renderInfo.m_pivot, params, tileKey,
- *renderInfo.m_symbolSizes.get(), renderInfo.m_anchor, overlayIndex).Draw(&batcher, textures);
+ TextShape(renderInfo.m_pivot, params, tileKey, *renderInfo.m_symbolSizes.get(),
+ m2::PointF(0.0f, 0.0f) /* symbolOffset */, renderInfo.m_anchor,
+ overlayIndex).Draw(&batcher, textures);
}
else
{
TextShape(renderInfo.m_pivot, params, tileKey,
- symbolSize, renderInfo.m_anchor, overlayIndex).Draw(&batcher, textures);
+ symbolSize, symbolOffset, renderInfo.m_anchor, overlayIndex).Draw(&batcher, textures);
}
}
}
diff --git a/drape_frontend/user_mark_shapes.hpp b/drape_frontend/user_mark_shapes.hpp
index 99ebc73e80..f649dc5400 100644
--- a/drape_frontend/user_mark_shapes.hpp
+++ b/drape_frontend/user_mark_shapes.hpp
@@ -24,6 +24,7 @@ struct UserMarkRenderParams
drape_ptr<UserPointMark::SymbolNameZoomInfo> m_symbolNames;
drape_ptr<UserPointMark::TitlesInfo> m_titleDecl;
drape_ptr<UserPointMark::SymbolSizes> m_symbolSizes;
+ drape_ptr<UserPointMark::SymbolOffsets> m_symbolOffsets;
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 a31329c260..3ee85681ca 100644
--- a/drape_frontend/user_marks_provider.hpp
+++ b/drape_frontend/user_marks_provider.hpp
@@ -43,6 +43,7 @@ public:
using SymbolNameZoomInfo = std::map<int, std::string>;
using TitlesInfo = std::vector<dp::TitleDecl>;
using SymbolSizes = std::vector<m2::PointF>;
+ using SymbolOffsets = std::vector<m2::PointF>;
UserPointMark();
virtual ~UserPointMark() {}
@@ -62,6 +63,7 @@ public:
virtual drape_ptr<SymbolNameZoomInfo> GetSymbolNames() const = 0;
virtual drape_ptr<ColoredSymbolZoomInfo> GetColoredSymbols() const = 0;
virtual drape_ptr<SymbolSizes> GetSymbolSizes() const = 0;
+ virtual drape_ptr<SymbolOffsets> GetSymbolOffsets() const = 0;
virtual uint16_t GetPriority() const = 0;
virtual uint32_t GetIndex() const = 0;
virtual bool HasSymbolPriority() const = 0;