From 7c7e426ff6da6a2980a7547be175ff9986a83940 Mon Sep 17 00:00:00 2001 From: Daria Volvenkova Date: Tue, 12 Dec 2017 18:02:07 +0300 Subject: [PATCH] Support non-sdf text in user mark. --- drape/color.hpp | 1 + drape_frontend/apply_feature_functors.cpp | 9 ++++----- drape_frontend/user_mark_shapes.cpp | 5 +++++ drape_frontend/visual_params.cpp | 5 +++++ drape_frontend/visual_params.hpp | 1 + 5 files changed, 16 insertions(+), 5 deletions(-) diff --git a/drape/color.hpp b/drape/color.hpp index df31e9d9bd..8d42914e6d 100644 --- a/drape/color.hpp +++ b/drape/color.hpp @@ -25,6 +25,7 @@ struct Color float GetAlphaF() const; bool operator==(Color const & other) const { return m_rgba == other.m_rgba; } + bool operator!=(Color const & other) const { return m_rgba != other.m_rgba; } bool operator< (Color const & other) const { return m_rgba < other.m_rgba; } Color operator*(float s) const { diff --git a/drape_frontend/apply_feature_functors.cpp b/drape_frontend/apply_feature_functors.cpp index fa55f4dfd2..a72e62562b 100644 --- a/drape_frontend/apply_feature_functors.cpp +++ b/drape_frontend/apply_feature_functors.cpp @@ -179,8 +179,8 @@ void CaptionDefProtoToFontDecl(CaptionDefProto const * capRule, dp::FontDecl & p if (capRule->stroke_color() != 0) params.m_outlineColor = ToDrapeColor(capRule->stroke_color()); - else if (vs < df::VisualParams::kHdpiScale) - params.m_isSdf = false; + else + params.m_isSdf = df::VisualParams::Instance().IsSdfPrefered(); } void ShieldRuleProtoToFontDecl(ShieldRuleProto const * shieldRule, dp::FontDecl & params) @@ -190,9 +190,8 @@ void ShieldRuleProtoToFontDecl(ShieldRuleProto const * shieldRule, dp::FontDecl params.m_size = static_cast(std::max(kMinVisibleFontSize, shieldRule->height() * vs)); if (shieldRule->text_stroke_color() != 0) params.m_outlineColor = ToDrapeColor(shieldRule->text_stroke_color()); - - if (vs < df::VisualParams::kHdpiScale) - params.m_isSdf = false; + else + params.m_isSdf = df::VisualParams::Instance().IsSdfPrefered(); } dp::Anchor GetAnchor(CaptionDefProto const * capRule) diff --git a/drape_frontend/user_mark_shapes.cpp b/drape_frontend/user_mark_shapes.cpp index 06eeb1eb64..55d37a0e59 100644 --- a/drape_frontend/user_mark_shapes.cpp +++ b/drape_frontend/user_mark_shapes.cpp @@ -234,6 +234,11 @@ void CacheUserMarks(TileKey const & tileKey, ref_ptr texture params.m_titleDecl.m_secondaryTextFont.m_size *= vs; params.m_titleDecl.m_primaryOffset *= vs; 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_secondaryTextFont.m_isSdf = + params.m_titleDecl.m_secondaryTextFont.m_outlineColor != dp::Color::Transparent() ? true : isSdf; params.m_depth = renderInfo.m_depth; params.m_depthLayer = renderInfo.m_depthLayer; diff --git a/drape_frontend/visual_params.cpp b/drape_frontend/visual_params.cpp index e7e44c0068..9f19e81729 100644 --- a/drape_frontend/visual_params.cpp +++ b/drape_frontend/visual_params.cpp @@ -58,6 +58,11 @@ uint32_t VisualParams::GetGlyphSdfScale() const return (m_visualScale <= 1.0) ? 3 : 4; } +bool VisualParams::IsSdfPrefered() const +{ + return m_visualScale >= kHdpiScale; +} + uint32_t VisualParams::GetGlyphBaseSize() const { return 22; diff --git a/drape_frontend/visual_params.hpp b/drape_frontend/visual_params.hpp index 034945745f..79b7a3a030 100644 --- a/drape_frontend/visual_params.hpp +++ b/drape_frontend/visual_params.hpp @@ -47,6 +47,7 @@ public: }; GlyphVisualParams const & GetGlyphVisualParams() const; + bool IsSdfPrefered() const; uint32_t GetGlyphSdfScale() const; uint32_t GetGlyphBaseSize() const; double GetFontScale() const;