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:
authorAnatoliy Tomilov <tomilovanatoliy@gmail.com>2020-08-03 11:41:38 +0300
committerTatiana Yan <tatiana.kondakova@gmail.com>2020-08-05 12:32:22 +0300
commitb6cf7ee414950b836355d66c6f96d051566c1365 (patch)
tree9919a0bdd4d5a25e9c2374d218171531925c613c /drape_frontend
parentb3a1b933678370c7b1b387211052aaed9ebd8ad8 (diff)
[drape] [Booking] Make visited Booking searchmarks ethereal MAPSME-14324
Diffstat (limited to 'drape_frontend')
-rw-r--r--drape_frontend/apply_feature_functors.cpp6
-rw-r--r--drape_frontend/drape_engine.cpp1
-rw-r--r--drape_frontend/poi_symbol_shape.cpp16
-rw-r--r--drape_frontend/shape_view_params.hpp2
-rw-r--r--drape_frontend/user_mark_shapes.cpp119
-rw-r--r--drape_frontend/user_mark_shapes.hpp1
-rw-r--r--drape_frontend/user_marks_provider.hpp2
7 files changed, 80 insertions, 67 deletions
diff --git a/drape_frontend/apply_feature_functors.cpp b/drape_frontend/apply_feature_functors.cpp
index 4b0ab2279b..910126205e 100644
--- a/drape_frontend/apply_feature_functors.cpp
+++ b/drape_frontend/apply_feature_functors.cpp
@@ -52,6 +52,7 @@ double const kMinVisibleFontSize = 8.0;
std::string const kStarSymbol = "★";
std::string const kPriceSymbol = "$";
+df::ColorConstant const kPoiDeletedMaskColor = "PoiDeletedMask";
df::ColorConstant const kPoiHotelTextOutlineColor = "PoiHotelTextOutline";
df::ColorConstant const kRoadShieldBlackTextColor = "RoadShieldBlackText";
df::ColorConstant const kRoadShieldWhiteTextColor = "RoadShieldWhiteText";
@@ -592,7 +593,8 @@ void ApplyPointFeature::Finish(ref_ptr<dp::TextureManager> texMng)
params.m_posZ = m_posZ;
params.m_hasArea = m_hasArea;
params.m_prioritized = m_createdByEditor;
- params.m_obsoleteInEditor = m_obsoleteInEditor;
+ if (m_obsoleteInEditor)
+ params.m_maskColor = kPoiDeletedMaskColor;
params.m_specialDisplacement = specialDisplacementMode ? SpecialDisplacement::SpecialMode
: SpecialDisplacement::None;
params.m_specialPriority = specialModePriority;
@@ -1123,7 +1125,7 @@ void ApplyLineFeatureAdditional::GetRoadShieldsViewParams(ref_ptr<dp::TextureMan
poiParams.m_posZ = 0.0f;
poiParams.m_hasArea = false;
poiParams.m_prioritized = false;
- poiParams.m_obsoleteInEditor = false;
+ poiParams.m_maskColor.clear();
poiParams.m_anchor = anchor;
poiParams.m_offset = GetShieldOffset(anchor, 0.5, 0.5);
diff --git a/drape_frontend/drape_engine.cpp b/drape_frontend/drape_engine.cpp
index eee38244ed..4f86266291 100644
--- a/drape_frontend/drape_engine.cpp
+++ b/drape_frontend/drape_engine.cpp
@@ -948,6 +948,7 @@ drape_ptr<UserMarkRenderParams> DrapeEngine::GenerateMarkRenderInfo(UserPointMar
renderInfo->m_featureId = mark->GetFeatureID();
renderInfo->m_hasCreationAnimation = mark->HasCreationAnimation();
renderInfo->m_isMarkAboveText = mark->IsMarkAboveText();
+ renderInfo->m_symbolOpacity = mark->GetSymbolOpacity();
return renderInfo;
}
diff --git a/drape_frontend/poi_symbol_shape.cpp b/drape_frontend/poi_symbol_shape.cpp
index 33d74326f0..e40d299980 100644
--- a/drape_frontend/poi_symbol_shape.cpp
+++ b/drape_frontend/poi_symbol_shape.cpp
@@ -14,8 +14,6 @@
namespace
{
-df::ColorConstant const kPoiDeletedMaskColor = "PoiDeletedMask";
-
using SV = gpu::SolidTexturingVertex;
using MV = gpu::MaskedTexturingVertex;
@@ -187,17 +185,17 @@ void PoiSymbolShape::Draw(ref_ptr<dp::GraphicsContext> context, ref_ptr<dp::Batc
glsl::vec4 const position = glsl::vec4(pt, m_params.m_depth, -m_params.m_posZ);
m2::PointF const pixelSize = region.GetPixelSize();
- if (m_params.m_obsoleteInEditor)
+ if (m_params.m_maskColor.empty())
{
- dp::TextureManager::ColorRegion maskColorRegion;
- textures->GetColorRegion(df::GetColorConstant(kPoiDeletedMaskColor), maskColorRegion);
- Batch<MV>(context, batcher, CreateOverlayHandle(pixelSize), position, m_params,
- region, maskColorRegion);
+ Batch<SV>(context, batcher, CreateOverlayHandle(pixelSize), position, m_params, region,
+ dp::TextureManager::ColorRegion());
}
else
{
- Batch<SV>(context, batcher, CreateOverlayHandle(pixelSize), position, m_params,
- region, dp::TextureManager::ColorRegion());
+ dp::TextureManager::ColorRegion maskColorRegion;
+ textures->GetColorRegion(df::GetColorConstant(m_params.m_maskColor), maskColorRegion);
+ Batch<MV>(context, batcher, CreateOverlayHandle(pixelSize), position, m_params, region,
+ maskColorRegion);
}
}
diff --git a/drape_frontend/shape_view_params.hpp b/drape_frontend/shape_view_params.hpp
index df75814ca6..b1e57e97ee 100644
--- a/drape_frontend/shape_view_params.hpp
+++ b/drape_frontend/shape_view_params.hpp
@@ -56,7 +56,7 @@ struct PoiSymbolViewParams : CommonOverlayViewParams
float m_posZ = 0.0f;
bool m_hasArea = false;
bool m_prioritized = false;
- bool m_obsoleteInEditor = false;
+ std::string m_maskColor;
dp::Anchor m_anchor = dp::Center;
m2::PointF m_offset = m2::PointF(0.0f, 0.0f);
diff --git a/drape_frontend/user_mark_shapes.cpp b/drape_frontend/user_mark_shapes.cpp
index b44994bac8..8b6076ac2b 100644
--- a/drape_frontend/user_mark_shapes.cpp
+++ b/drape_frontend/user_mark_shapes.cpp
@@ -81,13 +81,18 @@ TextLayout MakePrimaryTextLayout(dp::TitleDecl const & titleDecl,
struct UserPointVertex : public gpu::BaseVertex
{
+ using TNormalAndAnimateOrZ = glsl::vec3;
using TTexCoord = glsl::vec4;
- using TColorAndAnimate = glsl::vec4;
+ using TColor = glsl::vec4;
+ using TAnimateOrZ = float;
UserPointVertex() = default;
- UserPointVertex(TPosition const & pos, TNormal const & normal, TTexCoord const & texCoord,
- TColorAndAnimate const & colorAndAnimate)
- : m_position(pos), m_normal(normal), m_texCoord(texCoord), m_colorAndAnimate(colorAndAnimate)
+ UserPointVertex(TPosition const & pos, TNormalAndAnimateOrZ const & normalAndAnimateOrZ,
+ TTexCoord const & texCoord, TColor const & color)
+ : m_position(pos)
+ , m_normalAndAnimateOrZ(normalAndAnimateOrZ)
+ , m_texCoord(texCoord)
+ , m_color(color)
{}
static dp::BindingInfo GetBinding()
@@ -95,18 +100,18 @@ struct UserPointVertex : public gpu::BaseVertex
dp::BindingInfo info(4);
uint8_t offset = 0;
offset += dp::FillDecl<TPosition, UserPointVertex>(0, "a_position", info, offset);
- offset += dp::FillDecl<TNormal, UserPointVertex>(1, "a_normal", info, offset);
+ offset += dp::FillDecl<TNormalAndAnimateOrZ, UserPointVertex>(1, "a_normalAndAnimateOrZ", info,
+ offset);
offset += dp::FillDecl<TTexCoord, UserPointVertex>(2, "a_texCoords", info, offset);
- offset += dp::FillDecl<TColorAndAnimate, UserPointVertex>(3, "a_colorAndAnimateOrZ", info,
- offset);
+ offset += dp::FillDecl<TColor, UserPointVertex>(3, "a_color", info, offset);
return info;
}
TPosition m_position;
- TNormal m_normal;
+ TNormalAndAnimateOrZ m_normalAndAnimateOrZ;
TTexCoord m_texCoord;
- TColorAndAnimate m_colorAndAnimate;
+ TColor m_color;
};
std::string GetSymbolNameForZoomLevel(ref_ptr<UserPointMark::SymbolNameZoomInfo> symbolNames, TileKey const & tileKey)
@@ -229,29 +234,6 @@ void GeneratePoiSymbolShape(ref_ptr<dp::GraphicsContext> context, ref_ptr<dp::Te
m2::PointF const & symbolOffset, dp::Batcher & batcher)
{
PoiSymbolViewParams params(renderInfo.m_featureId);
- params.m_offset = symbolOffset;
-
- if (renderInfo.m_badgeInfo != nullptr && renderInfo.m_badgeInfo->m_badgeTitleIndex)
- {
- size_t const badgeTitleIndex = *renderInfo.m_badgeInfo->m_badgeTitleIndex;
- CHECK_LESS(badgeTitleIndex, renderInfo.m_titleDecl->size(), ());
-
- dp::TitleDecl const & titleDecl = (*renderInfo.m_titleDecl)[badgeTitleIndex];
- TextLayout textLayout = MakePrimaryTextLayout(titleDecl, textures);
- float const textWidth = textLayout.GetPixelLength();
-
- dp::TextureManager::SymbolRegion region;
- textures->GetSymbolRegion(symbolName, region);
- float const pixelHalfWidth = 0.5f * region.GetPixelSize().x;
-
- float constexpr kBadgeSpecialMarginsAdjustmentMultplier = 4.0f;
- float const badgeSpecialMarginsAdjustment =
- kBadgeSpecialMarginsAdjustmentMultplier * titleDecl.m_primaryOffset.x;
-
- params.m_pixelWidth = 3.0f * pixelHalfWidth + textWidth + badgeSpecialMarginsAdjustment;
- params.m_offset.x += 0.5f * (pixelHalfWidth + textWidth + badgeSpecialMarginsAdjustment);
- }
-
params.m_tileCenter = tileCenter;
params.m_depthTestEnabled = renderInfo.m_depthTestEnabled;
params.m_depth = renderInfo.m_depth;
@@ -261,6 +243,32 @@ void GeneratePoiSymbolShape(ref_ptr<dp::GraphicsContext> context, ref_ptr<dp::Te
params.m_specialPriority = renderInfo.m_priority;
params.m_symbolName = symbolName;
params.m_anchor = renderInfo.m_anchor;
+ params.m_offset = symbolOffset;
+
+ if (renderInfo.m_badgeInfo)
+ {
+ params.m_maskColor = renderInfo.m_badgeInfo->m_maskColor;
+ if (renderInfo.m_badgeInfo->m_badgeTitleIndex)
+ {
+ size_t const badgeTitleIndex = *renderInfo.m_badgeInfo->m_badgeTitleIndex;
+ CHECK_LESS(badgeTitleIndex, renderInfo.m_titleDecl->size(), ());
+
+ dp::TitleDecl const & titleDecl = (*renderInfo.m_titleDecl)[badgeTitleIndex];
+ TextLayout textLayout = MakePrimaryTextLayout(titleDecl, textures);
+ float const textWidth = textLayout.GetPixelLength();
+
+ dp::TextureManager::SymbolRegion region;
+ textures->GetSymbolRegion(symbolName, region);
+ float const pixelHalfWidth = 0.5f * region.GetPixelSize().x;
+
+ float constexpr kBadgeSpecialMarginsAdjustmentMultplier = 4.0f;
+ float const badgeSpecialMarginsAdjustment =
+ kBadgeSpecialMarginsAdjustmentMultplier * titleDecl.m_primaryOffset.x;
+
+ params.m_pixelWidth = 3.0f * pixelHalfWidth + textWidth + badgeSpecialMarginsAdjustment;
+ params.m_offset.x += 0.5f * (pixelHalfWidth + textWidth + badgeSpecialMarginsAdjustment);
+ }
+ }
bool const hasColoredOverlay = renderInfo.m_coloredSymbols != nullptr && renderInfo.m_coloredSymbols->m_needOverlay;
params.m_startOverlayRank = hasColoredOverlay ? dp::OverlayRank1 : dp::OverlayRank0;
@@ -298,9 +306,9 @@ void GenerateTextShapes(ref_ptr<dp::GraphicsContext> context, ref_ptr<dp::Textur
params.m_titleDecl.m_secondaryOffset *= vs;
bool const isSdf = df::VisualParams::Instance().IsSdfPrefered();
params.m_titleDecl.m_primaryTextFont.m_isSdf =
- params.m_titleDecl.m_primaryTextFont.m_outlineColor != dp::Color::Transparent() ? true : isSdf;
+ params.m_titleDecl.m_primaryTextFont.m_outlineColor != dp::Color::Transparent() || isSdf;
params.m_titleDecl.m_secondaryTextFont.m_isSdf =
- params.m_titleDecl.m_secondaryTextFont.m_outlineColor != dp::Color::Transparent() ? true : isSdf;
+ params.m_titleDecl.m_secondaryTextFont.m_outlineColor != dp::Color::Transparent() || isSdf;
params.m_depthTestEnabled = renderInfo.m_depthTestEnabled;
params.m_depth = renderInfo.m_depth;
@@ -456,27 +464,28 @@ void CacheUserMarks(ref_ptr<dp::GraphicsContext> context, TileKey const & tileKe
if (!renderInfo.m_color.empty())
color = df::GetColorConstant(renderInfo.m_color);
- glsl::vec4 colorAndAnimate(color.GetRedF(), color.GetGreenF(), color.GetBlueF(),
- runAnim ? 1.0f : -1.0f);
- if (renderInfo.m_customDepth)
- colorAndAnimate.w = 0.0f;
-
- buffer.emplace_back(pos, left + down + offset,
- glsl::ToVec4(m2::PointD(texRect.LeftTop()),
- m2::PointD(bgTexRect.LeftTop())),
- colorAndAnimate);
- buffer.emplace_back(pos, left + up + offset,
- glsl::ToVec4(m2::PointD(texRect.LeftBottom()),
- m2::PointD(bgTexRect.LeftBottom())),
- colorAndAnimate);
- buffer.emplace_back(pos, right + down + offset,
- glsl::ToVec4(m2::PointD(texRect.RightTop()),
- m2::PointD(bgTexRect.RightTop())),
- colorAndAnimate);
- buffer.emplace_back(pos, right + up + offset,
- glsl::ToVec4(m2::PointD(texRect.RightBottom()),
- m2::PointD(bgTexRect.RightBottom())),
- colorAndAnimate);
+ glsl::vec4 maskColor(color.GetRedF(), color.GetGreenF(), color.GetBlueF(),
+ renderInfo.m_symbolOpacity);
+ float animateOrZ = 0.0f;
+ if (!renderInfo.m_customDepth)
+ animateOrZ = runAnim ? 1.0f : -1.0f;
+
+ buffer.emplace_back(
+ pos, glsl::vec3(left + down + offset, animateOrZ),
+ glsl::ToVec4(m2::PointD(texRect.LeftTop()), m2::PointD(bgTexRect.LeftTop())),
+ maskColor);
+ buffer.emplace_back(
+ pos, glsl::vec3(left + up + offset, animateOrZ),
+ glsl::ToVec4(m2::PointD(texRect.LeftBottom()), m2::PointD(bgTexRect.LeftBottom())),
+ maskColor);
+ buffer.emplace_back(
+ pos, glsl::vec3(right + down + offset, animateOrZ),
+ glsl::ToVec4(m2::PointD(texRect.RightTop()), m2::PointD(bgTexRect.RightTop())),
+ maskColor);
+ buffer.emplace_back(
+ pos, glsl::vec3(right + up + offset, animateOrZ),
+ glsl::ToVec4(m2::PointD(texRect.RightBottom()), m2::PointD(bgTexRect.RightBottom())),
+ maskColor);
gpu::Program program;
gpu::Program program3d;
diff --git a/drape_frontend/user_mark_shapes.hpp b/drape_frontend/user_mark_shapes.hpp
index 9f76244190..b90e9c0664 100644
--- a/drape_frontend/user_mark_shapes.hpp
+++ b/drape_frontend/user_mark_shapes.hpp
@@ -42,6 +42,7 @@ struct UserMarkRenderParams
bool m_isVisible = true;
FeatureID m_featureId;
bool m_isMarkAboveText = false;
+ float m_symbolOpacity = 1.0f;
};
struct LineLayer
diff --git a/drape_frontend/user_marks_provider.hpp b/drape_frontend/user_marks_provider.hpp
index b0a0170217..c5b7c16dbc 100644
--- a/drape_frontend/user_marks_provider.hpp
+++ b/drape_frontend/user_marks_provider.hpp
@@ -53,6 +53,7 @@ public:
{
SymbolNameZoomInfo m_zoomInfo;
std::optional<size_t> m_badgeTitleIndex;
+ std::string m_maskColor;
};
static float constexpr kInvalidDepth = dp::kMinDepth - 1.0;
@@ -90,6 +91,7 @@ public:
virtual bool HasCreationAnimation() const = 0;
virtual df::ColorConstant GetColorConstant() const = 0;
virtual bool IsMarkAboveText() const = 0;
+ virtual float GetSymbolOpacity() const = 0;
private:
kml::MarkId m_id;