From 23ac0a8cf774c3103227719031506b67508b074d Mon Sep 17 00:00:00 2001 From: Keith Wansbrough Date: Mon, 19 Oct 2015 21:44:37 +0100 Subject: [PATCH 01/13] Introduce StyledPoint between Bookmark and ICustomDrawable. Has "style" parameter. --- map/bookmark.hpp | 11 ++++++----- map/map.pro | 2 ++ map/styled_point.cpp | 9 +++++++++ map/styled_point.hpp | 40 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 57 insertions(+), 5 deletions(-) create mode 100644 map/styled_point.cpp create mode 100644 map/styled_point.hpp diff --git a/map/bookmark.hpp b/map/bookmark.hpp index 1ef6bce631..e631d1705c 100644 --- a/map/bookmark.hpp +++ b/map/bookmark.hpp @@ -2,6 +2,7 @@ #include "map/user_mark.hpp" #include "map/user_mark_container.hpp" +#include "map/styled_point.hpp" #include "coding/reader.hpp" @@ -65,14 +66,14 @@ private: time_t m_timeStamp; }; -class Bookmark : public ICustomDrawable +class Bookmark : public StyledPoint { BookmarkData m_data; double m_animScaleFactor; public: Bookmark(m2::PointD const & ptOrg, UserMarkContainer * container) - : ICustomDrawable(ptOrg, container) + : StyledPoint(ptOrg, container) , m_animScaleFactor(1.0) { } @@ -80,13 +81,13 @@ public: Bookmark(BookmarkData const & data, m2::PointD const & ptOrg, UserMarkContainer * container) - : ICustomDrawable(ptOrg, container) + : StyledPoint(data.GetType(), ptOrg, container) , m_data(data) , m_animScaleFactor(1.0) { } - void SetData(BookmarkData const & data) { m_data = data; } + void SetData(BookmarkData const & data) { m_data = data; SetStyle(m_data.GetType()); } BookmarkData const & GetData() const { return m_data; } virtual Type GetMarkType() const override { return UserMark::Type::BOOKMARK; } @@ -96,7 +97,7 @@ public: void SetName(string const & name) { m_data.SetName(name); } /// @return Now its a bookmark color - name of icon file string const & GetType() const { return m_data.GetType(); } - void SetType(string const & type) { m_data.SetType(type); } + void SetType(string const & type) { m_data.SetType(type); SetStyle(type); } m2::RectD GetViewport() const { return m2::RectD(GetOrg(), GetOrg()); } string const & GetDescription() const { return m_data.GetDescription(); } diff --git a/map/map.pro b/map/map.pro index 152972ef17..175f9ca338 100644 --- a/map/map.pro +++ b/map/map.pro @@ -20,6 +20,7 @@ HEADERS += \ benchmark_engine.hpp \ ruler.hpp \ bookmark.hpp \ + styled_point.hpp \ geourl_process.hpp \ country_status_display.hpp \ rotate_screen_task.hpp \ @@ -53,6 +54,7 @@ SOURCES += \ address_finder.cpp \ geourl_process.cpp \ bookmark.cpp \ + styled_point.cpp \ country_status_display.cpp \ rotate_screen_task.cpp \ compass_arrow.cpp \ diff --git a/map/styled_point.cpp b/map/styled_point.cpp new file mode 100644 index 0000000000..776b2eb7b6 --- /dev/null +++ b/map/styled_point.cpp @@ -0,0 +1,9 @@ +#include "map/styled_point.hpp" + +#include "base/stl_add.hpp" +#include "base/string_utils.hpp" + +#include "std/fstream.hpp" +#include "std/algorithm.hpp" +#include "std/auto_ptr.hpp" + diff --git a/map/styled_point.hpp b/map/styled_point.hpp new file mode 100644 index 0000000000..4fae354f18 --- /dev/null +++ b/map/styled_point.hpp @@ -0,0 +1,40 @@ +#pragma once + +#include "map/user_mark.hpp" +#include "map/user_mark_container.hpp" + +#include "search/result.hpp" + +#include "indexer/feature.hpp" + +#include "geometry/point2d.hpp" + +#include "std/string.hpp" +#include "std/unique_ptr.hpp" +#include "std/utility.hpp" + + +class StyledPoint : public ICustomDrawable +{ +public: + StyledPoint(m2::PointD const & ptOrg, UserMarkContainer * container) + : ICustomDrawable(ptOrg, container) + { + } + + StyledPoint(string const & style, m2::PointD const & ptOrg, UserMarkContainer * container) + : ICustomDrawable(ptOrg, container) + , m_style(style) + { + } + + virtual graphics::DisplayList * GetDisplayList(UserMarkDLCache * cache) const = 0; + virtual double GetAnimScaleFactor() const = 0; + virtual m2::PointD const & GetPixelOffset() const = 0; + + string const & GetStyle() const { return m_style; } + void SetStyle(const string & style) { m_style = style; } + +private: + string m_style; ///< Point style (name of icon). +}; From 94df024da8fd687bdedb9f56def7a2c683e371fe Mon Sep 17 00:00:00 2001 From: Keith Wansbrough Date: Mon, 19 Oct 2015 22:54:24 +0100 Subject: [PATCH 02/13] Move style rendering up into StyledPoint. --- map/bookmark.cpp | 32 ++----------------------------- map/bookmark.hpp | 3 --- map/styled_point.cpp | 45 ++++++++++++++++++++++++++++++++++++++++++++ map/styled_point.hpp | 16 +++++++++++++--- 4 files changed, 60 insertions(+), 36 deletions(-) diff --git a/map/bookmark.cpp b/map/bookmark.cpp index e1ce232e75..a17c134be9 100644 --- a/map/bookmark.cpp +++ b/map/bookmark.cpp @@ -31,22 +31,6 @@ unique_ptr Bookmark::Copy() const return unique_ptr(new UserMarkCopy(this, false)); } -graphics::DisplayList * Bookmark::GetDisplayList(UserMarkDLCache * cache) const -{ - return cache->FindUserMark(UserMarkDLCache::Key(GetType(), graphics::EPosAbove, GetContainer()->GetDepth())); -} - -double Bookmark::GetAnimScaleFactor() const -{ - return m_animScaleFactor; -} - -m2::PointD const & Bookmark::GetPixelOffset() const -{ - static m2::PointD s_offset(0.0, 3.0); - return s_offset; -} - shared_ptr Bookmark::CreateAnimTask(Framework & fm) { m_animScaleFactor = 0.0; @@ -211,12 +195,6 @@ namespace LINE }; - static char const * s_arrSupportedColors[] = - { - "placemark-red", "placemark-blue", "placemark-purple", "placemark-yellow", - "placemark-pink", "placemark-brown", "placemark-green", "placemark-orange" - }; - class KMLParser { // Fixes icons which are not supported by MapsWithMe @@ -224,13 +202,7 @@ namespace { // Remove leading '#' symbol string const result = s.substr(1); - for (size_t i = 0; i < ARRAY_SIZE(s_arrSupportedColors); ++i) - if (result == s_arrSupportedColors[i]) - return result; - - // Not recognized symbols are replaced with default one - LOG(LWARNING, ("Icon", result, "for bookmark", m_name, "is not supported")); - return s_arrSupportedColors[0]; + return style::GetSupportedStyle(result, m_name); } BookmarkCategory & m_category; @@ -565,7 +537,7 @@ namespace string BookmarkCategory::GetDefaultType() { - return s_arrSupportedColors[0]; + return style::GetDefaultStyle(); } namespace diff --git a/map/bookmark.hpp b/map/bookmark.hpp index e631d1705c..8641700cf5 100644 --- a/map/bookmark.hpp +++ b/map/bookmark.hpp @@ -112,9 +112,6 @@ public: unique_ptr Copy() const override; - virtual graphics::DisplayList * GetDisplayList(UserMarkDLCache * cache) const override; - virtual double GetAnimScaleFactor() const override; - virtual m2::PointD const & GetPixelOffset() const override; shared_ptr CreateAnimTask(Framework & fm); }; diff --git a/map/styled_point.cpp b/map/styled_point.cpp index 776b2eb7b6..63c4f41368 100644 --- a/map/styled_point.cpp +++ b/map/styled_point.cpp @@ -7,3 +7,48 @@ #include "std/algorithm.hpp" #include "std/auto_ptr.hpp" + +graphics::DisplayList * StyledPoint::GetDisplayList(UserMarkDLCache * cache) const +{ + return cache->FindUserMark(UserMarkDLCache::Key(GetStyle(), graphics::EPosAbove, GetContainer()->GetDepth())); +} + +double StyledPoint::GetAnimScaleFactor() const +{ + return 1.0; +} + +m2::PointD const & StyledPoint::GetPixelOffset() const +{ + static m2::PointD s_offset(0.0, 3.0); + return s_offset; +} + +static char const * s_arrSupportedColors[] = +{ + "placemark-red", "placemark-blue", "placemark-purple", "placemark-yellow", + "placemark-pink", "placemark-brown", "placemark-green", "placemark-orange" +}; + +namespace style +{ + string GetSupportedStyle(string const & s, string const & context) + { + if (s.empty()) + return s_arrSupportedColors[0]; + + for (size_t i = 0; i < ARRAY_SIZE(s_arrSupportedColors); ++i) + if (s == s_arrSupportedColors[i]) + return s; + + // Not recognized symbols are replaced with default one + LOG(LWARNING, ("Icon", s, "for point", context, "is not supported")); + return s_arrSupportedColors[0]; + } + + string GetDefaultStyle() + { + return s_arrSupportedColors[0]; + } + +} // namespace style diff --git a/map/styled_point.hpp b/map/styled_point.hpp index 4fae354f18..9769252290 100644 --- a/map/styled_point.hpp +++ b/map/styled_point.hpp @@ -14,11 +14,20 @@ #include "std/utility.hpp" +namespace style +{ + // Fixes icons which are not supported by MapsWithMe + string GetSupportedStyle(string const & s, string const & context); + string GetDefaultStyle(); +} // namespace style + + class StyledPoint : public ICustomDrawable { public: StyledPoint(m2::PointD const & ptOrg, UserMarkContainer * container) : ICustomDrawable(ptOrg, container) + , m_style(style::GetDefaultStyle()) { } @@ -28,9 +37,9 @@ public: { } - virtual graphics::DisplayList * GetDisplayList(UserMarkDLCache * cache) const = 0; - virtual double GetAnimScaleFactor() const = 0; - virtual m2::PointD const & GetPixelOffset() const = 0; + virtual graphics::DisplayList * GetDisplayList(UserMarkDLCache * cache) const override; + virtual double GetAnimScaleFactor() const override; + virtual m2::PointD const & GetPixelOffset() const override; string const & GetStyle() const { return m_style; } void SetStyle(const string & style) { m_style = style; } @@ -38,3 +47,4 @@ public: private: string m_style; ///< Point style (name of icon). }; + From 89121cdf360939413aa5ec79f246928e3b3d065f Mon Sep 17 00:00:00 2001 From: Keith Wansbrough Date: Wed, 21 Oct 2015 19:04:20 +0100 Subject: [PATCH 03/13] Move ApiMarkPoint and ApiUserMarkContainer to separate files. --- map/api_mark_container.cpp | 29 ++++++++++++++++++++++ map/api_mark_container.hpp | 18 ++++++++++++++ map/api_mark_point.hpp | 48 +++++++++++++++++++++++++++++++++++++ map/framework.hpp | 2 ++ map/map.pro | 3 +++ map/mwm_url.hpp | 2 +- map/user_mark.hpp | 44 ---------------------------------- map/user_mark_container.cpp | 21 ---------------- map/user_mark_container.hpp | 13 ---------- 9 files changed, 101 insertions(+), 79 deletions(-) create mode 100644 map/api_mark_container.cpp create mode 100644 map/api_mark_container.hpp create mode 100644 map/api_mark_point.hpp diff --git a/map/api_mark_container.cpp b/map/api_mark_container.cpp new file mode 100644 index 0000000000..952aa0d13a --- /dev/null +++ b/map/api_mark_container.cpp @@ -0,0 +1,29 @@ +#include "api_mark_container.hpp" +#include "api_mark_point.hpp" + +#include "framework.hpp" + +//////////////////////////////////////////////////////////////////////// + + +ApiUserMarkContainer::ApiUserMarkContainer(double layerDepth, Framework & framework) + : UserMarkContainer(layerDepth, framework) +{ +} + +string ApiUserMarkContainer::GetTypeName() const +{ + return "api-result"; +} + +string ApiUserMarkContainer::GetActiveTypeName() const +{ + return "search-result-active"; +} + +UserMark * ApiUserMarkContainer::AllocateUserMark(const m2::PointD & ptOrg) +{ + return new ApiMarkPoint(ptOrg, this); +} + + diff --git a/map/api_mark_container.hpp b/map/api_mark_container.hpp new file mode 100644 index 0000000000..62dfd4ee33 --- /dev/null +++ b/map/api_mark_container.hpp @@ -0,0 +1,18 @@ +#pragma once + +#include "user_mark_container.hpp" +#include "api_mark_point.hpp" + +class ApiUserMarkContainer : public UserMarkContainer +{ +public: + ApiUserMarkContainer(double layerDepth, Framework & framework); + + virtual Type GetType() const { return API_MARK; } + + virtual string GetActiveTypeName() const; +protected: + virtual string GetTypeName() const; + virtual UserMark * AllocateUserMark(m2::PointD const & ptOrg); +}; + diff --git a/map/api_mark_point.hpp b/map/api_mark_point.hpp new file mode 100644 index 0000000000..491c0ac7cb --- /dev/null +++ b/map/api_mark_point.hpp @@ -0,0 +1,48 @@ +#pragma once + +#include "map/user_mark.hpp" + +class ApiMarkPoint : public UserMark +{ +public: + ApiMarkPoint(m2::PointD const & ptOrg, UserMarkContainer * container) + : UserMark(ptOrg, container) + { + } + + ApiMarkPoint(string const & name, + string const & id, + m2::PointD const & ptOrg, + UserMarkContainer * container) + : UserMark(ptOrg, container) + , m_name(name) + , m_id(id) + { + } + + UserMark::Type GetMarkType() const override { return UserMark::Type::API; } + + string const & GetName() const { return m_name; } + void SetName(string const & name) { m_name = name; } + + string const & GetID() const { return m_id; } + void SetID(string const & id) { m_id = id; } + + unique_ptr Copy() const override + { + return unique_ptr( + new UserMarkCopy(new ApiMarkPoint(m_name, m_id, m_ptOrg, m_container))); + } + + virtual void FillLogEvent(TEventContainer & details) const override + { + UserMark::FillLogEvent(details); + details["markType"] = "API"; + details["name"] = GetName(); + } + +private: + string m_name; + string m_id; +}; + diff --git a/map/framework.hpp b/map/framework.hpp index 0a5a7414c4..a7eada2e7c 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -8,6 +8,8 @@ #include "map/bookmark.hpp" #include "map/bookmark_manager.hpp" +#include "map/api_mark_point.hpp" +#include "map/api_mark_container.hpp" #include "map/pin_click_manager.hpp" #include "map/mwm_url.hpp" diff --git a/map/map.pro b/map/map.pro index 175f9ca338..641b3c74e5 100644 --- a/map/map.pro +++ b/map/map.pro @@ -36,6 +36,8 @@ HEADERS += \ user_mark_container.hpp \ user_mark.hpp \ user_mark_dl_cache.hpp \ + api_mark_container.hpp \ + api_mark_point.hpp \ anim_phase_chain.hpp \ pin_click_manager.hpp \ country_tree.hpp \ @@ -69,6 +71,7 @@ SOURCES += \ alfa_animation_task.cpp \ user_mark_container.cpp \ user_mark_dl_cache.cpp \ + api_mark_container.cpp \ anim_phase_chain.cpp \ pin_click_manager.cpp \ country_tree.cpp \ diff --git a/map/mwm_url.hpp b/map/mwm_url.hpp index 53b9f085c3..a15b43ca23 100644 --- a/map/mwm_url.hpp +++ b/map/mwm_url.hpp @@ -1,6 +1,6 @@ #pragma once -#include "user_mark_container.hpp" +#include "api_mark_container.hpp" #include "geometry/rect2d.hpp" diff --git a/map/user_mark.hpp b/map/user_mark.hpp index d3e667fb64..73420bc00d 100644 --- a/map/user_mark.hpp +++ b/map/user_mark.hpp @@ -92,50 +92,6 @@ private: bool m_needDestroy; }; -class ApiMarkPoint : public UserMark -{ -public: - ApiMarkPoint(m2::PointD const & ptOrg, UserMarkContainer * container) - : UserMark(ptOrg, container) - { - } - - ApiMarkPoint(string const & name, - string const & id, - m2::PointD const & ptOrg, - UserMarkContainer * container) - : UserMark(ptOrg, container) - , m_name(name) - , m_id(id) - { - } - - UserMark::Type GetMarkType() const override { return UserMark::Type::API; } - - string const & GetName() const { return m_name; } - void SetName(string const & name) { m_name = name; } - - string const & GetID() const { return m_id; } - void SetID(string const & id) { m_id = id; } - - unique_ptr Copy() const override - { - return unique_ptr( - new UserMarkCopy(new ApiMarkPoint(m_name, m_id, m_ptOrg, m_container))); - } - - virtual void FillLogEvent(TEventContainer & details) const override - { - UserMark::FillLogEvent(details); - details["markType"] = "API"; - details["name"] = GetName(); - } - -private: - string m_name; - string m_id; -}; - class DebugMarkPoint : public UserMark { public: diff --git a/map/user_mark_container.cpp b/map/user_mark_container.cpp index df240531bf..4b53eaff8f 100644 --- a/map/user_mark_container.cpp +++ b/map/user_mark_container.cpp @@ -267,27 +267,6 @@ UserMark * SearchUserMarkContainer::AllocateUserMark(const m2::PointD & ptOrg) return new SearchMarkPoint(ptOrg, this); } -ApiUserMarkContainer::ApiUserMarkContainer(double layerDepth, Framework & framework) - : UserMarkContainer(layerDepth, framework) -{ -} - -string ApiUserMarkContainer::GetTypeName() const -{ - return "api-result"; -} - -string ApiUserMarkContainer::GetActiveTypeName() const -{ - return "search-result-active"; -} - -UserMark * ApiUserMarkContainer::AllocateUserMark(const m2::PointD & ptOrg) -{ - return new ApiMarkPoint(ptOrg, this); -} - - DebugUserMarkContainer::DebugUserMarkContainer(double layerDepth, Framework & framework) : UserMarkContainer(layerDepth, framework) { diff --git a/map/user_mark_container.hpp b/map/user_mark_container.hpp index 4ca9549e4e..8d442828f4 100644 --- a/map/user_mark_container.hpp +++ b/map/user_mark_container.hpp @@ -133,19 +133,6 @@ protected: virtual UserMark * AllocateUserMark(m2::PointD const & ptOrg); }; -class ApiUserMarkContainer : public UserMarkContainer -{ -public: - ApiUserMarkContainer(double layerDepth, Framework & framework); - - virtual Type GetType() const { return API_MARK; } - - virtual string GetActiveTypeName() const; -protected: - virtual string GetTypeName() const; - virtual UserMark * AllocateUserMark(m2::PointD const & ptOrg); -}; - class DebugUserMarkContainer : public UserMarkContainer { public: From f9f5807b5edcbb498a8e9b4810c4548f00e90a2d Mon Sep 17 00:00:00 2001 From: Keith Wansbrough Date: Wed, 21 Oct 2015 21:39:21 +0100 Subject: [PATCH 04/13] Make ApiMarkPoint a StyledPoint. --- map/api_mark_point.hpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/map/api_mark_point.hpp b/map/api_mark_point.hpp index 491c0ac7cb..eeb3583af0 100644 --- a/map/api_mark_point.hpp +++ b/map/api_mark_point.hpp @@ -1,20 +1,22 @@ #pragma once #include "map/user_mark.hpp" +#include "map/styled_point.hpp" -class ApiMarkPoint : public UserMark +class ApiMarkPoint : public StyledPoint { public: ApiMarkPoint(m2::PointD const & ptOrg, UserMarkContainer * container) - : UserMark(ptOrg, container) + : StyledPoint(ptOrg, container) { } ApiMarkPoint(string const & name, string const & id, + string const & style, m2::PointD const & ptOrg, UserMarkContainer * container) - : UserMark(ptOrg, container) + : StyledPoint(style, ptOrg, container) , m_name(name) , m_id(id) { @@ -31,7 +33,7 @@ public: unique_ptr Copy() const override { return unique_ptr( - new UserMarkCopy(new ApiMarkPoint(m_name, m_id, m_ptOrg, m_container))); + new UserMarkCopy(new ApiMarkPoint(m_name, m_id, GetStyle(), m_ptOrg, m_container))); } virtual void FillLogEvent(TEventContainer & details) const override From 7b6e7d3f36011d4cfe3f9e222b2eaf9f77d5dd94 Mon Sep 17 00:00:00 2001 From: Keith Wansbrough Date: Wed, 21 Oct 2015 21:58:30 +0100 Subject: [PATCH 05/13] Parse URL s= parameter as style. --- map/mwm_url.cpp | 8 ++++++++ map/mwm_url.hpp | 1 + 2 files changed, 9 insertions(+) diff --git a/map/mwm_url.cpp b/map/mwm_url.cpp index 5156e35842..9b71960adf 100644 --- a/map/mwm_url.cpp +++ b/map/mwm_url.cpp @@ -70,6 +70,7 @@ bool ParsedMapApi::Parse(Uri const & uri) ApiMarkPoint * mark = static_cast(m_controller->CreateUserMark(glPoint)); mark->SetName(p.m_name); mark->SetID(p.m_id); + mark->SetStyle(style::GetSupportedStyle(p.m_style, p.m_name)); } return true; @@ -134,6 +135,13 @@ void ParsedMapApi::AddKeyValue(string key, string const & value, vector Date: Wed, 4 Nov 2015 19:35:25 +0000 Subject: [PATCH 06/13] Apply markups. - If style is empty string, render using previous unstyled point (violet circle). Otherwise use a placemark icon. Ensure offset is correct. - Default mark cache key is now returned by GetDefaultKey(). - GetSupportedStyle now takes a default to apply for unrecognized styles. For bookmarks it's the default placemark; for URLs it's the original (unstyled) point. - Remove unnecessary comment line, and unused includes. --- map/api_mark_container.cpp | 4 ---- map/bookmark.cpp | 2 +- map/mwm_url.cpp | 2 +- map/styled_point.cpp | 28 +++++++++++++++------------- map/styled_point.hpp | 7 ++++--- map/user_mark_container.cpp | 7 +++++++ map/user_mark_container.hpp | 2 ++ 7 files changed, 30 insertions(+), 22 deletions(-) diff --git a/map/api_mark_container.cpp b/map/api_mark_container.cpp index 952aa0d13a..1997704fa8 100644 --- a/map/api_mark_container.cpp +++ b/map/api_mark_container.cpp @@ -3,8 +3,6 @@ #include "framework.hpp" -//////////////////////////////////////////////////////////////////////// - ApiUserMarkContainer::ApiUserMarkContainer(double layerDepth, Framework & framework) : UserMarkContainer(layerDepth, framework) @@ -25,5 +23,3 @@ UserMark * ApiUserMarkContainer::AllocateUserMark(const m2::PointD & ptOrg) { return new ApiMarkPoint(ptOrg, this); } - - diff --git a/map/bookmark.cpp b/map/bookmark.cpp index a17c134be9..34e00eea9b 100644 --- a/map/bookmark.cpp +++ b/map/bookmark.cpp @@ -202,7 +202,7 @@ namespace { // Remove leading '#' symbol string const result = s.substr(1); - return style::GetSupportedStyle(result, m_name); + return style::GetSupportedStyle(result, m_name, style::GetDefaultStyle()); } BookmarkCategory & m_category; diff --git a/map/mwm_url.cpp b/map/mwm_url.cpp index 9b71960adf..8b2bc68f57 100644 --- a/map/mwm_url.cpp +++ b/map/mwm_url.cpp @@ -70,7 +70,7 @@ bool ParsedMapApi::Parse(Uri const & uri) ApiMarkPoint * mark = static_cast(m_controller->CreateUserMark(glPoint)); mark->SetName(p.m_name); mark->SetID(p.m_id); - mark->SetStyle(style::GetSupportedStyle(p.m_style, p.m_name)); + mark->SetStyle(style::GetSupportedStyle(p.m_style, p.m_name, "")); } return true; diff --git a/map/styled_point.cpp b/map/styled_point.cpp index 63c4f41368..cde0d69820 100644 --- a/map/styled_point.cpp +++ b/map/styled_point.cpp @@ -1,27 +1,29 @@ #include "map/styled_point.hpp" -#include "base/stl_add.hpp" -#include "base/string_utils.hpp" - -#include "std/fstream.hpp" -#include "std/algorithm.hpp" -#include "std/auto_ptr.hpp" - graphics::DisplayList * StyledPoint::GetDisplayList(UserMarkDLCache * cache) const { - return cache->FindUserMark(UserMarkDLCache::Key(GetStyle(), graphics::EPosAbove, GetContainer()->GetDepth())); + UserMarkDLCache::Key key = GetStyle().empty() ? GetContainer()->GetDefaultKey() + : UserMarkDLCache::Key(GetStyle(), + graphics::EPosAbove, + GetContainer()->GetDepth()); + return cache->FindUserMark(key); } double StyledPoint::GetAnimScaleFactor() const { + // Matches the behaviour for non-custom drawables. The only caller + // of ::DrawUserMark is UserMarkContainer::Draw and it always passes + // this value. return 1.0; } m2::PointD const & StyledPoint::GetPixelOffset() const { - static m2::PointD s_offset(0.0, 3.0); - return s_offset; + static m2::PointD const s_centre(0.0, 0.0); + static m2::PointD const s_offset(0.0, 3.0); + + return GetStyle().empty() ? s_centre : s_offset; } static char const * s_arrSupportedColors[] = @@ -32,10 +34,10 @@ static char const * s_arrSupportedColors[] = namespace style { - string GetSupportedStyle(string const & s, string const & context) + string GetSupportedStyle(string const & s, string const & context, string const & fallback) { if (s.empty()) - return s_arrSupportedColors[0]; + return fallback; for (size_t i = 0; i < ARRAY_SIZE(s_arrSupportedColors); ++i) if (s == s_arrSupportedColors[i]) @@ -43,7 +45,7 @@ namespace style // Not recognized symbols are replaced with default one LOG(LWARNING, ("Icon", s, "for point", context, "is not supported")); - return s_arrSupportedColors[0]; + return fallback; } string GetDefaultStyle() diff --git a/map/styled_point.hpp b/map/styled_point.hpp index 9769252290..76d4ef6126 100644 --- a/map/styled_point.hpp +++ b/map/styled_point.hpp @@ -16,8 +16,9 @@ namespace style { - // Fixes icons which are not supported by MapsWithMe - string GetSupportedStyle(string const & s, string const & context); + // Fixes icons which are not supported by MapsWithMe. + string GetSupportedStyle(string const & s, string const & context, string const & fallback); + // Default icon. string GetDefaultStyle(); } // namespace style @@ -45,6 +46,6 @@ public: void SetStyle(const string & style) { m_style = style; } private: - string m_style; ///< Point style (name of icon). + string m_style; ///< Point style (name of icon), or empty string for plain circle. }; diff --git a/map/user_mark_container.cpp b/map/user_mark_container.cpp index 4b53eaff8f..64aba64637 100644 --- a/map/user_mark_container.cpp +++ b/map/user_mark_container.cpp @@ -177,6 +177,13 @@ namespace static unique_ptr s_myPosition; } +UserMarkDLCache::Key UserMarkContainer::GetDefaultKey() const +{ + return UserMarkDLCache::Key(GetTypeName(), + graphics::EPosCenter, + GetDepth()); +} + void UserMarkContainer::InitStaticMarks(UserMarkContainer * container) { if (s_selectionUserMark == NULL) diff --git a/map/user_mark_container.hpp b/map/user_mark_container.hpp index 8d442828f4..79b11aff09 100644 --- a/map/user_mark_container.hpp +++ b/map/user_mark_container.hpp @@ -84,6 +84,8 @@ public: double GetDepth() const { return m_layerDepth; } + virtual UserMarkDLCache::Key GetDefaultKey() const; + static void InitStaticMarks(UserMarkContainer * container); static PoiMarkPoint * UserMarkForPoi(); static MyPositionMarkPoint * UserMarkForMyPostion(); From 9b478278872e6867b206672e07db411718bf18fe Mon Sep 17 00:00:00 2001 From: Keith Wansbrough Date: Thu, 5 Nov 2015 21:26:54 +0000 Subject: [PATCH 07/13] Formatting and style markups. --- map/bookmark.hpp | 15 +++++++++++++-- map/framework.hpp | 4 ++-- map/styled_point.cpp | 9 +++++---- map/user_mark_container.cpp | 4 +--- 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/map/bookmark.hpp b/map/bookmark.hpp index 8641700cf5..8577711cbd 100644 --- a/map/bookmark.hpp +++ b/map/bookmark.hpp @@ -87,7 +87,12 @@ public: { } - void SetData(BookmarkData const & data) { m_data = data; SetStyle(m_data.GetType()); } + void SetData(BookmarkData const & data) + { + m_data = data; + SetStyle(m_data.GetType()); + } + BookmarkData const & GetData() const { return m_data; } virtual Type GetMarkType() const override { return UserMark::Type::BOOKMARK; } @@ -97,7 +102,13 @@ public: void SetName(string const & name) { m_data.SetName(name); } /// @return Now its a bookmark color - name of icon file string const & GetType() const { return m_data.GetType(); } - void SetType(string const & type) { m_data.SetType(type); SetStyle(type); } + + void SetType(string const & type) + { + m_data.SetType(type); + SetStyle(type); + } + m2::RectD GetViewport() const { return m2::RectD(GetOrg(), GetOrg()); } string const & GetDescription() const { return m_data.GetDescription(); } diff --git a/map/framework.hpp b/map/framework.hpp index a7eada2e7c..d729cf27e3 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -6,10 +6,10 @@ #include "map/navigator.hpp" #include "map/animator.hpp" +#include "map/api_mark_container.hpp" +#include "map/api_mark_point.hpp" #include "map/bookmark.hpp" #include "map/bookmark_manager.hpp" -#include "map/api_mark_point.hpp" -#include "map/api_mark_container.hpp" #include "map/pin_click_manager.hpp" #include "map/mwm_url.hpp" diff --git a/map/styled_point.cpp b/map/styled_point.cpp index cde0d69820..33d6b5fa6d 100644 --- a/map/styled_point.cpp +++ b/map/styled_point.cpp @@ -3,10 +3,11 @@ graphics::DisplayList * StyledPoint::GetDisplayList(UserMarkDLCache * cache) const { - UserMarkDLCache::Key key = GetStyle().empty() ? GetContainer()->GetDefaultKey() - : UserMarkDLCache::Key(GetStyle(), - graphics::EPosAbove, - GetContainer()->GetDepth()); + UserMarkContainer const * container = GetContainer(); + UserMarkDLCache::Key const key = GetStyle().empty() ? container->GetDefaultKey() + : UserMarkDLCache::Key(GetStyle(), + graphics::EPosAbove, + container->GetDepth()); return cache->FindUserMark(key); } diff --git a/map/user_mark_container.cpp b/map/user_mark_container.cpp index 64aba64637..f3527132d1 100644 --- a/map/user_mark_container.cpp +++ b/map/user_mark_container.cpp @@ -179,9 +179,7 @@ namespace UserMarkDLCache::Key UserMarkContainer::GetDefaultKey() const { - return UserMarkDLCache::Key(GetTypeName(), - graphics::EPosCenter, - GetDepth()); + return UserMarkDLCache::Key(GetTypeName(), graphics::EPosCenter, GetDepth()); } void UserMarkContainer::InitStaticMarks(UserMarkContainer * container) From 1117b9d17d924a7c95bb8062bb2d78df007b6b34 Mon Sep 17 00:00:00 2001 From: Keith Wansbrough Date: Sat, 7 Nov 2015 12:01:27 +0000 Subject: [PATCH 08/13] Format changed lines with clang-format-3.6 --style=file. --- map/api_mark_container.cpp | 11 ++------- map/api_mark_container.hpp | 2 +- map/api_mark_point.hpp | 16 ++++--------- map/bookmark.hpp | 11 +++------ map/styled_point.cpp | 48 +++++++++++++++++--------------------- map/styled_point.hpp | 17 +++++--------- 6 files changed, 38 insertions(+), 67 deletions(-) diff --git a/map/api_mark_container.cpp b/map/api_mark_container.cpp index 1997704fa8..e248048230 100644 --- a/map/api_mark_container.cpp +++ b/map/api_mark_container.cpp @@ -3,21 +3,14 @@ #include "framework.hpp" - ApiUserMarkContainer::ApiUserMarkContainer(double layerDepth, Framework & framework) : UserMarkContainer(layerDepth, framework) { } -string ApiUserMarkContainer::GetTypeName() const -{ - return "api-result"; -} +string ApiUserMarkContainer::GetTypeName() const { return "api-result"; } -string ApiUserMarkContainer::GetActiveTypeName() const -{ - return "search-result-active"; -} +string ApiUserMarkContainer::GetActiveTypeName() const { return "search-result-active"; } UserMark * ApiUserMarkContainer::AllocateUserMark(const m2::PointD & ptOrg) { diff --git a/map/api_mark_container.hpp b/map/api_mark_container.hpp index 62dfd4ee33..77dd23a3c6 100644 --- a/map/api_mark_container.hpp +++ b/map/api_mark_container.hpp @@ -11,8 +11,8 @@ public: virtual Type GetType() const { return API_MARK; } virtual string GetActiveTypeName() const; + protected: virtual string GetTypeName() const; virtual UserMark * AllocateUserMark(m2::PointD const & ptOrg); }; - diff --git a/map/api_mark_point.hpp b/map/api_mark_point.hpp index eeb3583af0..40ca403d6c 100644 --- a/map/api_mark_point.hpp +++ b/map/api_mark_point.hpp @@ -11,14 +11,9 @@ public: { } - ApiMarkPoint(string const & name, - string const & id, - string const & style, - m2::PointD const & ptOrg, - UserMarkContainer * container) - : StyledPoint(style, ptOrg, container) - , m_name(name) - , m_id(id) + ApiMarkPoint(string const & name, string const & id, string const & style, + m2::PointD const & ptOrg, UserMarkContainer * container) + : StyledPoint(style, ptOrg, container), m_name(name), m_id(id) { } @@ -27,8 +22,8 @@ public: string const & GetName() const { return m_name; } void SetName(string const & name) { m_name = name; } - string const & GetID() const { return m_id; } - void SetID(string const & id) { m_id = id; } + string const & GetID() const { return m_id; } + void SetID(string const & id) { m_id = id; } unique_ptr Copy() const override { @@ -47,4 +42,3 @@ private: string m_name; string m_id; }; - diff --git a/map/bookmark.hpp b/map/bookmark.hpp index 8577711cbd..a91f0a4bb9 100644 --- a/map/bookmark.hpp +++ b/map/bookmark.hpp @@ -73,17 +73,12 @@ class Bookmark : public StyledPoint public: Bookmark(m2::PointD const & ptOrg, UserMarkContainer * container) - : StyledPoint(ptOrg, container) - , m_animScaleFactor(1.0) + : StyledPoint(ptOrg, container), m_animScaleFactor(1.0) { } - Bookmark(BookmarkData const & data, - m2::PointD const & ptOrg, - UserMarkContainer * container) - : StyledPoint(data.GetType(), ptOrg, container) - , m_data(data) - , m_animScaleFactor(1.0) + Bookmark(BookmarkData const & data, m2::PointD const & ptOrg, UserMarkContainer * container) + : StyledPoint(data.GetType(), ptOrg, container), m_data(data), m_animScaleFactor(1.0) { } diff --git a/map/styled_point.cpp b/map/styled_point.cpp index 33d6b5fa6d..2f09b8a8b2 100644 --- a/map/styled_point.cpp +++ b/map/styled_point.cpp @@ -1,13 +1,12 @@ #include "map/styled_point.hpp" - graphics::DisplayList * StyledPoint::GetDisplayList(UserMarkDLCache * cache) const { UserMarkContainer const * container = GetContainer(); - UserMarkDLCache::Key const key = GetStyle().empty() ? container->GetDefaultKey() - : UserMarkDLCache::Key(GetStyle(), - graphics::EPosAbove, - container->GetDepth()); + UserMarkDLCache::Key const key = + GetStyle().empty() + ? container->GetDefaultKey() + : UserMarkDLCache::Key(GetStyle(), graphics::EPosAbove, container->GetDepth()); return cache->FindUserMark(key); } @@ -27,31 +26,26 @@ m2::PointD const & StyledPoint::GetPixelOffset() const return GetStyle().empty() ? s_centre : s_offset; } -static char const * s_arrSupportedColors[] = -{ - "placemark-red", "placemark-blue", "placemark-purple", "placemark-yellow", - "placemark-pink", "placemark-brown", "placemark-green", "placemark-orange" -}; +static char const * s_arrSupportedColors[] = { + "placemark-red", "placemark-blue", "placemark-purple", "placemark-yellow", + "placemark-pink", "placemark-brown", "placemark-green", "placemark-orange"}; namespace style { - string GetSupportedStyle(string const & s, string const & context, string const & fallback) - { - if (s.empty()) - return fallback; - - for (size_t i = 0; i < ARRAY_SIZE(s_arrSupportedColors); ++i) - if (s == s_arrSupportedColors[i]) - return s; - - // Not recognized symbols are replaced with default one - LOG(LWARNING, ("Icon", s, "for point", context, "is not supported")); +string GetSupportedStyle(string const & s, string const & context, string const & fallback) +{ + if (s.empty()) return fallback; - } - string GetDefaultStyle() - { - return s_arrSupportedColors[0]; - } + for (size_t i = 0; i < ARRAY_SIZE(s_arrSupportedColors); ++i) + if (s == s_arrSupportedColors[i]) + return s; -} // namespace style + // Not recognized symbols are replaced with default one + LOG(LWARNING, ("Icon", s, "for point", context, "is not supported")); + return fallback; +} + +string GetDefaultStyle() { return s_arrSupportedColors[0]; } + +} // namespace style diff --git a/map/styled_point.hpp b/map/styled_point.hpp index 76d4ef6126..8e1cf75e9c 100644 --- a/map/styled_point.hpp +++ b/map/styled_point.hpp @@ -13,28 +13,24 @@ #include "std/unique_ptr.hpp" #include "std/utility.hpp" - namespace style { - // Fixes icons which are not supported by MapsWithMe. - string GetSupportedStyle(string const & s, string const & context, string const & fallback); - // Default icon. - string GetDefaultStyle(); +// Fixes icons which are not supported by MapsWithMe. +string GetSupportedStyle(string const & s, string const & context, string const & fallback); +// Default icon. +string GetDefaultStyle(); } // namespace style - class StyledPoint : public ICustomDrawable { public: StyledPoint(m2::PointD const & ptOrg, UserMarkContainer * container) - : ICustomDrawable(ptOrg, container) - , m_style(style::GetDefaultStyle()) + : ICustomDrawable(ptOrg, container), m_style(style::GetDefaultStyle()) { } StyledPoint(string const & style, m2::PointD const & ptOrg, UserMarkContainer * container) - : ICustomDrawable(ptOrg, container) - , m_style(style) + : ICustomDrawable(ptOrg, container), m_style(style) { } @@ -48,4 +44,3 @@ public: private: string m_style; ///< Point style (name of icon), or empty string for plain circle. }; - From 792b52df4707e9ca6dc3d8ac00d108cc8ff47d5b Mon Sep 17 00:00:00 2001 From: Keith Wansbrough Date: Sat, 7 Nov 2015 12:35:41 +0000 Subject: [PATCH 09/13] Improve style to match project standards. --- map/api_mark_container.cpp | 6 +-- map/api_mark_container.hpp | 15 +++--- map/api_mark_point.hpp | 10 ++-- map/bookmark.cpp | 73 +++++++++++++------------- map/bookmark.hpp | 4 +- map/map.pro | 100 ++++++++++++++++++------------------ map/styled_point.cpp | 13 +++-- map/styled_point.hpp | 7 +-- map/user_mark_container.cpp | 20 ++++---- 9 files changed, 128 insertions(+), 120 deletions(-) diff --git a/map/api_mark_container.cpp b/map/api_mark_container.cpp index e248048230..f9c6d2530a 100644 --- a/map/api_mark_container.cpp +++ b/map/api_mark_container.cpp @@ -1,7 +1,7 @@ -#include "api_mark_container.hpp" -#include "api_mark_point.hpp" +#include "map/api_mark_container.hpp" +#include "map/api_mark_point.hpp" -#include "framework.hpp" +#include "map/framework.hpp" ApiUserMarkContainer::ApiUserMarkContainer(double layerDepth, Framework & framework) : UserMarkContainer(layerDepth, framework) diff --git a/map/api_mark_container.hpp b/map/api_mark_container.hpp index 77dd23a3c6..7984b7b6df 100644 --- a/map/api_mark_container.hpp +++ b/map/api_mark_container.hpp @@ -1,18 +1,19 @@ #pragma once -#include "user_mark_container.hpp" -#include "api_mark_point.hpp" +#include "map/api_mark_point.hpp" +#include "map/user_mark_container.hpp" class ApiUserMarkContainer : public UserMarkContainer { public: ApiUserMarkContainer(double layerDepth, Framework & framework); - virtual Type GetType() const { return API_MARK; } - - virtual string GetActiveTypeName() const; + // UserMarkContainer overrides: + Type GetType() const override { return API_MARK; } + string GetActiveTypeName() const override; protected: - virtual string GetTypeName() const; - virtual UserMark * AllocateUserMark(m2::PointD const & ptOrg); + // UserMarkContainer overrides: + string GetTypeName() const override; + UserMark * AllocateUserMark(m2::PointD const & ptOrg) override; }; diff --git a/map/api_mark_point.hpp b/map/api_mark_point.hpp index 40ca403d6c..0597ec2056 100644 --- a/map/api_mark_point.hpp +++ b/map/api_mark_point.hpp @@ -17,21 +17,21 @@ public: { } - UserMark::Type GetMarkType() const override { return UserMark::Type::API; } - string const & GetName() const { return m_name; } void SetName(string const & name) { m_name = name; } string const & GetID() const { return m_id; } void SetID(string const & id) { m_id = id; } + // UserMark overrides: + UserMark::Type GetMarkType() const override { return UserMark::Type::API; } + unique_ptr Copy() const override { - return unique_ptr( - new UserMarkCopy(new ApiMarkPoint(m_name, m_id, GetStyle(), m_ptOrg, m_container))); + return make_unique(new ApiMarkPoint(m_name, m_id, GetStyle(), m_ptOrg, m_container)); } - virtual void FillLogEvent(TEventContainer & details) const override + void FillLogEvent(TEventContainer & details) const override { UserMark::FillLogEvent(details); details["markType"] = "API"; diff --git a/map/bookmark.cpp b/map/bookmark.cpp index 34e00eea9b..e6d1718639 100644 --- a/map/bookmark.cpp +++ b/map/bookmark.cpp @@ -123,7 +123,7 @@ void BookmarkCategory::DeleteBookmark(size_t index) size_t animIndex = 0; for (; animIndex < m_anims.size(); ++animIndex) { - anim_node_t const & anim = m_anims[animIndex]; + TAnimNode const & anim = m_anims[animIndex]; if (anim.first == markForDelete) { anim.second->Cancel(); @@ -167,14 +167,14 @@ size_t BookmarkCategory::FindBookmark(Bookmark const * bookmark) const namespace { - string const PLACEMARK = "Placemark"; - string const STYLE = "Style"; - string const DOCUMENT = "Document"; - string const STYLE_MAP = "StyleMap"; - string const STYLE_URL = "styleUrl"; - string const PAIR = "Pair"; + string const kPlacemark = "Placemark"; + string const kStyle = "Style"; + string const kDocument = "Document"; + string const kStyleMap = "StyleMap"; + string const kStyleUrl = "styleUrl"; + string const kPair = "Pair"; - graphics::Color const DEFAULT_TRACK_COLOR = graphics::Color::fromARGB(0xFF33CCFF); + graphics::Color const kDefaultTrackColor = graphics::Color::fromARGB(0xFF33CCFF); string PointToString(m2::PointD const & org) { @@ -190,17 +190,18 @@ namespace enum GeometryType { - UNKNOWN, - POINT, - LINE + GEOMETRY_TYPE_UNKNOWN, + GEOMETRY_TYPE_POINT, + GEOMETRY_TYPE_LINE }; class KMLParser { - // Fixes icons which are not supported by MapsWithMe + // Fixes icons which are not supported by MapsWithMe. string GetSupportedBMType(string const & s) const { - // Remove leading '#' symbol + // Remove leading '#' symbol. + ASSERT(!s.empty(), ()); string const result = s.substr(1); return style::GetSupportedStyle(result, m_name, style::GetDefaultStyle()); } @@ -235,13 +236,13 @@ namespace m_scale = -1.0; m_timeStamp = my::INVALID_TIME_STAMP; - m_trackColor = DEFAULT_TRACK_COLOR; + m_trackColor = kDefaultTrackColor; m_styleId.clear(); m_mapStyleId.clear(); m_styleUrlKey.clear(); m_points.Clear(); - m_geometryType = UNKNOWN; + m_geometryType = GEOMETRY_TYPE_UNKNOWN; } bool ParsePoint(string const & s, char const * delim, m2::PointD & pt) @@ -270,7 +271,7 @@ namespace void SetOrigin(string const & s) { - m_geometryType = POINT; + m_geometryType = GEOMETRY_TYPE_POINT; m2::PointD pt; if (ParsePoint(s, ", \n\r\t", pt)) @@ -279,7 +280,7 @@ namespace void ParseLineCoordinates(string const & s, char const * blockSeparator, char const * coordSeparator) { - m_geometryType = LINE; + m_geometryType = GEOMETRY_TYPE_LINE; strings::SimpleTokenizer cortegeIter(s, blockSeparator); while (cortegeIter) @@ -293,7 +294,7 @@ namespace bool MakeValid() { - if (POINT == m_geometryType) + if (GEOMETRY_TYPE_POINT == m_geometryType) { if (MercatorBounds::ValidX(m_org.x) && MercatorBounds::ValidY(m_org.y)) { @@ -309,7 +310,7 @@ namespace } return false; } - else if (LINE == m_geometryType) + else if (GEOMETRY_TYPE_LINE == m_geometryType) { return m_points.GetSize() > 1; } @@ -331,7 +332,7 @@ namespace return false; // Remove leading '#' symbol - map::const_iterator it = m_styleUrl2Color.find(styleUrl.substr(1)); + auto it = m_styleUrl2Color.find(styleUrl.substr(1)); if (it != m_styleUrl2Color.end()) { color = it->second; @@ -357,9 +358,9 @@ namespace string attrInLowerCase = attr; strings::AsciiToLower(attrInLowerCase); - if (IsValidAttribute(STYLE, value, attrInLowerCase)) + if (IsValidAttribute(kStyle, value, attrInLowerCase)) m_styleId = value; - else if (IsValidAttribute(STYLE_MAP, value, attrInLowerCase)) + else if (IsValidAttribute(kStyleMap, value, attrInLowerCase)) m_mapStyleId = value; } @@ -378,13 +379,13 @@ namespace { ASSERT_EQUAL(m_tags.back(), tag, ()); - if (tag == PLACEMARK) + if (tag == kPlacemark) { if (MakeValid()) { - if (POINT == m_geometryType) + if (GEOMETRY_TYPE_POINT == m_geometryType) m_category.AddBookmark(m_org, BookmarkData(m_name, m_type, m_description, m_scale, m_timeStamp)); - else if (LINE == m_geometryType) + else if (GEOMETRY_TYPE_LINE == m_geometryType) { Track track(m_points); track.SetName(m_name); @@ -398,14 +399,14 @@ namespace } Reset(); } - else if (tag == STYLE) + else if (tag == kStyle) { - if (GetTagFromEnd(1) == DOCUMENT) + if (GetTagFromEnd(1) == kDocument) { if (!m_styleId.empty()) { m_styleUrl2Color[m_styleId] = m_trackColor; - m_trackColor = DEFAULT_TRACK_COLOR; + m_trackColor = kDefaultTrackColor; } } } @@ -424,14 +425,14 @@ namespace string const & prevTag = m_tags[count - 2]; string const ppTag = count > 3 ? m_tags[count - 3] : string(); - if (prevTag == DOCUMENT) + if (prevTag == kDocument) { if (currTag == "name") m_category.SetName(value); else if (currTag == "visibility") m_category.SetVisible(value == "0" ? false : true); } - else if (prevTag == PLACEMARK) + else if (prevTag == kPlacemark) { if (currTag == "name") m_name = value; @@ -456,16 +457,16 @@ namespace { ParseColor(value); } - else if (ppTag == STYLE_MAP && prevTag == PAIR && currTag == STYLE_URL && m_styleUrlKey == "normal") + else if (ppTag == kStyleMap && prevTag == kPair && currTag == kStyleUrl && m_styleUrlKey == "normal") { if (!m_mapStyleId.empty()) m_mapStyle2Style[m_mapStyleId] = value; } - else if (ppTag == STYLE_MAP && prevTag == PAIR && currTag == "key") + else if (ppTag == kStyleMap && prevTag == kPair && currTag == "key") { m_styleUrlKey = value; } - else if (ppTag == PLACEMARK) + else if (ppTag == kPlacemark) { if (prevTag == "Point") { @@ -499,7 +500,7 @@ namespace LOG(LWARNING, ("Invalid timestamp in Placemark:", value)); } } - else if (currTag == STYLE_URL) + else if (currTag == kStyleUrl) { GetColorForStyle(value, m_trackColor); } @@ -824,10 +825,10 @@ string BookmarkCategory::GenerateUniqueFileName(const string & path, string name void BookmarkCategory::ReleaseAnimations() { - vector tempAnims; + vector tempAnims; for (size_t i = 0; i < m_anims.size(); ++i) { - anim_node_t const & anim = m_anims[i]; + TAnimNode const & anim = m_anims[i]; if (!anim.second->IsEnded() && !anim.second->IsCancelled()) { diff --git a/map/bookmark.hpp b/map/bookmark.hpp index a91f0a4bb9..440aadd0b2 100644 --- a/map/bookmark.hpp +++ b/map/bookmark.hpp @@ -203,8 +203,8 @@ private: private: bool m_blockAnimation; - typedef pair > anim_node_t; - vector m_anims; + using TAnimNode = pair >; + vector m_anims; }; /// diff --git a/map/map.pro b/map/map.pro index 641b3c74e5..dabcea1103 100644 --- a/map/map.pro +++ b/map/map.pro @@ -11,72 +11,72 @@ INCLUDEPATH *= $$ROOT_DIR/3party/protobuf/src $$ROOT_DIR/3party/expat/lib $$ROOT include($$ROOT_DIR/common.pri) HEADERS += \ - framework.hpp \ - feature_vec_model.hpp \ - navigator.hpp \ - information_display.hpp \ - location_state.hpp \ - benchmark_provider.hpp \ - benchmark_engine.hpp \ - ruler.hpp \ - bookmark.hpp \ - styled_point.hpp \ - geourl_process.hpp \ - country_status_display.hpp \ - rotate_screen_task.hpp \ - compass_arrow.hpp \ - animator.hpp \ - move_screen_task.hpp \ - change_viewport_task.hpp \ - mwm_url.hpp \ - bookmark_manager.hpp \ - ge0_parser.hpp \ - track.hpp \ + active_maps_layout.hpp \ alfa_animation_task.hpp \ - user_mark_container.hpp \ - user_mark.hpp \ - user_mark_dl_cache.hpp \ + anim_phase_chain.hpp \ + animator.hpp \ api_mark_container.hpp \ api_mark_point.hpp \ - anim_phase_chain.hpp \ - pin_click_manager.hpp \ + benchmark_engine.hpp \ + benchmark_provider.hpp \ + bookmark.hpp \ + bookmark_manager.hpp \ + change_viewport_task.hpp \ + compass_arrow.hpp \ + country_status_display.hpp \ country_tree.hpp \ - active_maps_layout.hpp \ + feature_vec_model.hpp \ + framework.hpp \ + ge0_parser.hpp \ + geourl_process.hpp \ + information_display.hpp \ + location_state.hpp \ + move_screen_task.hpp \ + mwm_url.hpp \ + navigator.hpp \ navigator_utils.hpp \ + pin_click_manager.hpp \ + rotate_screen_task.hpp \ + ruler.hpp \ + styled_point.hpp \ + track.hpp \ + user_mark.hpp \ + user_mark_container.hpp \ + user_mark_dl_cache.hpp \ SOURCES += \ + ../api/src/c/api-client.c \ + active_maps_layout.cpp \ + address_finder.cpp \ + alfa_animation_task.cpp \ + anim_phase_chain.cpp \ + animator.cpp \ + api_mark_container.cpp \ + benchmark_engine.cpp \ + benchmark_provider.cpp \ + bookmark.cpp \ + bookmark_manager.cpp \ + change_viewport_task.cpp \ + compass_arrow.cpp \ + country_status_display.cpp \ + country_tree.cpp \ feature_vec_model.cpp \ framework.cpp \ - navigator.cpp \ + ge0_parser.cpp \ + geourl_process.cpp \ information_display.cpp \ location_state.cpp \ - benchmark_provider.cpp \ - benchmark_engine.cpp \ - ruler.cpp \ - address_finder.cpp \ - geourl_process.cpp \ - bookmark.cpp \ - styled_point.cpp \ - country_status_display.cpp \ - rotate_screen_task.cpp \ - compass_arrow.cpp \ - animator.cpp \ move_screen_task.cpp \ - change_viewport_task.cpp \ mwm_url.cpp \ - bookmark_manager.cpp \ - ge0_parser.cpp \ - ../api/src/c/api-client.c \ + navigator.cpp \ + navigator_utils.cpp \ + pin_click_manager.cpp \ + rotate_screen_task.cpp \ + ruler.cpp \ + styled_point.cpp \ track.cpp \ - alfa_animation_task.cpp \ user_mark_container.cpp \ user_mark_dl_cache.cpp \ - api_mark_container.cpp \ - anim_phase_chain.cpp \ - pin_click_manager.cpp \ - country_tree.cpp \ - active_maps_layout.cpp \ - navigator_utils.cpp \ !iphone*:!tizen*:!android* { HEADERS += qgl_render_context.hpp diff --git a/map/styled_point.cpp b/map/styled_point.cpp index 2f09b8a8b2..3c594ff84a 100644 --- a/map/styled_point.cpp +++ b/map/styled_point.cpp @@ -26,9 +26,12 @@ m2::PointD const & StyledPoint::GetPixelOffset() const return GetStyle().empty() ? s_centre : s_offset; } -static char const * s_arrSupportedColors[] = { +namespace +{ + char const * kSupportedColors[] = { "placemark-red", "placemark-blue", "placemark-purple", "placemark-yellow", "placemark-pink", "placemark-brown", "placemark-green", "placemark-orange"}; +} namespace style { @@ -37,15 +40,17 @@ string GetSupportedStyle(string const & s, string const & context, string const if (s.empty()) return fallback; - for (size_t i = 0; i < ARRAY_SIZE(s_arrSupportedColors); ++i) - if (s == s_arrSupportedColors[i]) + for (size_t i = 0; i < ARRAY_SIZE(kSupportedColors); ++i) + { + if (s == kSupportedColors[i]) return s; + } // Not recognized symbols are replaced with default one LOG(LWARNING, ("Icon", s, "for point", context, "is not supported")); return fallback; } -string GetDefaultStyle() { return s_arrSupportedColors[0]; } +string GetDefaultStyle() { return kSupportedColors[0]; } } // namespace style diff --git a/map/styled_point.hpp b/map/styled_point.hpp index 8e1cf75e9c..0a02f49555 100644 --- a/map/styled_point.hpp +++ b/map/styled_point.hpp @@ -34,9 +34,10 @@ public: { } - virtual graphics::DisplayList * GetDisplayList(UserMarkDLCache * cache) const override; - virtual double GetAnimScaleFactor() const override; - virtual m2::PointD const & GetPixelOffset() const override; + // ICustomDrawable overrides: + graphics::DisplayList * GetDisplayList(UserMarkDLCache * cache) const override; + double GetAnimScaleFactor() const override; + m2::PointD const & GetPixelOffset() const override; string const & GetStyle() const { return m_style; } void SetStyle(const string & style) { m_style = style; } diff --git a/map/user_mark_container.cpp b/map/user_mark_container.cpp index f3527132d1..170a4fd7ea 100644 --- a/map/user_mark_container.cpp +++ b/map/user_mark_container.cpp @@ -173,8 +173,8 @@ void UserMarkContainer::Clear(size_t skipCount/* = 0*/) namespace { - static unique_ptr s_selectionUserMark; - static unique_ptr s_myPosition; + unique_ptr g_selectionUserMark; + unique_ptr g_myPosition; } UserMarkDLCache::Key UserMarkContainer::GetDefaultKey() const @@ -184,23 +184,23 @@ UserMarkDLCache::Key UserMarkContainer::GetDefaultKey() const void UserMarkContainer::InitStaticMarks(UserMarkContainer * container) { - if (s_selectionUserMark == NULL) - s_selectionUserMark.reset(new PoiMarkPoint(container)); + if (g_selectionUserMark == NULL) + g_selectionUserMark.reset(new PoiMarkPoint(container)); - if (s_myPosition == NULL) - s_myPosition.reset(new MyPositionMarkPoint(container)); + if (g_myPosition == NULL) + g_myPosition.reset(new MyPositionMarkPoint(container)); } PoiMarkPoint * UserMarkContainer::UserMarkForPoi() { - ASSERT(s_selectionUserMark != NULL, ()); - return s_selectionUserMark.get(); + ASSERT(g_selectionUserMark != NULL, ()); + return g_selectionUserMark.get(); } MyPositionMarkPoint * UserMarkContainer::UserMarkForMyPostion() { - ASSERT(s_myPosition != NULL, ()); - return s_myPosition.get(); + ASSERT(g_myPosition != NULL, ()); + return g_myPosition.get(); } UserMark * UserMarkContainer::CreateUserMark(m2::PointD const & ptOrg) From 0487d3bb548b9dd9e2834f718916455717ea4647 Mon Sep 17 00:00:00 2001 From: Keith Wansbrough Date: Sat, 7 Nov 2015 12:50:19 +0000 Subject: [PATCH 10/13] Format changed lines with clang-format-3.6 --style=file. --- map/api_mark_point.hpp | 3 ++- map/bookmark.cpp | 20 ++++++++++---------- map/bookmark.hpp | 2 +- map/styled_point.cpp | 6 +++--- map/user_mark_container.cpp | 4 ++-- 5 files changed, 18 insertions(+), 17 deletions(-) diff --git a/map/api_mark_point.hpp b/map/api_mark_point.hpp index 0597ec2056..b955303e53 100644 --- a/map/api_mark_point.hpp +++ b/map/api_mark_point.hpp @@ -28,7 +28,8 @@ public: unique_ptr Copy() const override { - return make_unique(new ApiMarkPoint(m_name, m_id, GetStyle(), m_ptOrg, m_container)); + return make_unique( + new ApiMarkPoint(m_name, m_id, GetStyle(), m_ptOrg, m_container)); } void FillLogEvent(TEventContainer & details) const override diff --git a/map/bookmark.cpp b/map/bookmark.cpp index e6d1718639..ca2395f4c9 100644 --- a/map/bookmark.cpp +++ b/map/bookmark.cpp @@ -166,15 +166,14 @@ size_t BookmarkCategory::FindBookmark(Bookmark const * bookmark) const namespace { +string const kPlacemark = "Placemark"; +string const kStyle = "Style"; +string const kDocument = "Document"; +string const kStyleMap = "StyleMap"; +string const kStyleUrl = "styleUrl"; +string const kPair = "Pair"; - string const kPlacemark = "Placemark"; - string const kStyle = "Style"; - string const kDocument = "Document"; - string const kStyleMap = "StyleMap"; - string const kStyleUrl = "styleUrl"; - string const kPair = "Pair"; - - graphics::Color const kDefaultTrackColor = graphics::Color::fromARGB(0xFF33CCFF); +graphics::Color const kDefaultTrackColor = graphics::Color::fromARGB(0xFF33CCFF); string PointToString(m2::PointD const & org) { @@ -293,7 +292,7 @@ namespace } bool MakeValid() - { + { if (GEOMETRY_TYPE_POINT == m_geometryType) { if (MercatorBounds::ValidX(m_org.x) && MercatorBounds::ValidY(m_org.y)) @@ -457,7 +456,8 @@ namespace { ParseColor(value); } - else if (ppTag == kStyleMap && prevTag == kPair && currTag == kStyleUrl && m_styleUrlKey == "normal") + else if (ppTag == kStyleMap && prevTag == kPair && currTag == kStyleUrl && + m_styleUrlKey == "normal") { if (!m_mapStyleId.empty()) m_mapStyle2Style[m_mapStyleId] = value; diff --git a/map/bookmark.hpp b/map/bookmark.hpp index 440aadd0b2..74d8315d3e 100644 --- a/map/bookmark.hpp +++ b/map/bookmark.hpp @@ -203,7 +203,7 @@ private: private: bool m_blockAnimation; - using TAnimNode = pair >; + using TAnimNode = pair>; vector m_anims; }; diff --git a/map/styled_point.cpp b/map/styled_point.cpp index 3c594ff84a..6b32e43cd6 100644 --- a/map/styled_point.cpp +++ b/map/styled_point.cpp @@ -28,9 +28,9 @@ m2::PointD const & StyledPoint::GetPixelOffset() const namespace { - char const * kSupportedColors[] = { - "placemark-red", "placemark-blue", "placemark-purple", "placemark-yellow", - "placemark-pink", "placemark-brown", "placemark-green", "placemark-orange"}; +char const * kSupportedColors[] = {"placemark-red", "placemark-blue", "placemark-purple", + "placemark-yellow", "placemark-pink", "placemark-brown", + "placemark-green", "placemark-orange"}; } namespace style diff --git a/map/user_mark_container.cpp b/map/user_mark_container.cpp index 170a4fd7ea..fac33745d5 100644 --- a/map/user_mark_container.cpp +++ b/map/user_mark_container.cpp @@ -173,8 +173,8 @@ void UserMarkContainer::Clear(size_t skipCount/* = 0*/) namespace { - unique_ptr g_selectionUserMark; - unique_ptr g_myPosition; +unique_ptr g_selectionUserMark; +unique_ptr g_myPosition; } UserMarkDLCache::Key UserMarkContainer::GetDefaultKey() const From 2f306b8f783675327d454478803e9d4ad5ee1b54 Mon Sep 17 00:00:00 2001 From: Keith Wansbrough Date: Wed, 11 Nov 2015 22:31:02 +0000 Subject: [PATCH 11/13] Simple formatting/style markups. --- map/api_mark_container.cpp | 2 +- map/styled_point.cpp | 15 +++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/map/api_mark_container.cpp b/map/api_mark_container.cpp index f9c6d2530a..a1de15a524 100644 --- a/map/api_mark_container.cpp +++ b/map/api_mark_container.cpp @@ -1,6 +1,6 @@ #include "map/api_mark_container.hpp" -#include "map/api_mark_point.hpp" +#include "map/api_mark_point.hpp" #include "map/framework.hpp" ApiUserMarkContainer::ApiUserMarkContainer(double layerDepth, Framework & framework) diff --git a/map/styled_point.cpp b/map/styled_point.cpp index 6b32e43cd6..971512c335 100644 --- a/map/styled_point.cpp +++ b/map/styled_point.cpp @@ -1,5 +1,12 @@ #include "map/styled_point.hpp" +namespace +{ +char const * kSupportedColors[] = {"placemark-red", "placemark-blue", "placemark-purple", + "placemark-yellow", "placemark-pink", "placemark-brown", + "placemark-green", "placemark-orange"}; +} + graphics::DisplayList * StyledPoint::GetDisplayList(UserMarkDLCache * cache) const { UserMarkContainer const * container = GetContainer(); @@ -26,13 +33,6 @@ m2::PointD const & StyledPoint::GetPixelOffset() const return GetStyle().empty() ? s_centre : s_offset; } -namespace -{ -char const * kSupportedColors[] = {"placemark-red", "placemark-blue", "placemark-purple", - "placemark-yellow", "placemark-pink", "placemark-brown", - "placemark-green", "placemark-orange"}; -} - namespace style { string GetSupportedStyle(string const & s, string const & context, string const & fallback) @@ -52,5 +52,4 @@ string GetSupportedStyle(string const & s, string const & context, string const } string GetDefaultStyle() { return kSupportedColors[0]; } - } // namespace style From 6789466033f6a606b0ab52386f374b2e15cc8f0a Mon Sep 17 00:00:00 2001 From: Keith Wansbrough Date: Wed, 11 Nov 2015 22:51:33 +0000 Subject: [PATCH 12/13] Make style virtual, implemented in subclasses. This simplifies both StyledPoint and Bookmark. --- map/api_mark_point.hpp | 8 +++++++- map/bookmark.hpp | 17 ++++++----------- map/styled_point.hpp | 14 +++----------- 3 files changed, 16 insertions(+), 23 deletions(-) diff --git a/map/api_mark_point.hpp b/map/api_mark_point.hpp index b955303e53..c4dbb65be9 100644 --- a/map/api_mark_point.hpp +++ b/map/api_mark_point.hpp @@ -13,7 +13,7 @@ public: ApiMarkPoint(string const & name, string const & id, string const & style, m2::PointD const & ptOrg, UserMarkContainer * container) - : StyledPoint(style, ptOrg, container), m_name(name), m_id(id) + : StyledPoint(ptOrg, container), m_name(name), m_id(id), m_style(style) { } @@ -23,6 +23,11 @@ public: string const & GetID() const { return m_id; } void SetID(string const & id) { m_id = id; } + void SetStyle(string const & style) { m_style = style; } + + // StyledPoint overrides: + string const & GetStyle() const override { return m_style; } + // UserMark overrides: UserMark::Type GetMarkType() const override { return UserMark::Type::API; } @@ -42,4 +47,5 @@ public: private: string m_name; string m_id; + string m_style; }; diff --git a/map/bookmark.hpp b/map/bookmark.hpp index 74d8315d3e..3ae735059e 100644 --- a/map/bookmark.hpp +++ b/map/bookmark.hpp @@ -78,15 +78,11 @@ public: } Bookmark(BookmarkData const & data, m2::PointD const & ptOrg, UserMarkContainer * container) - : StyledPoint(data.GetType(), ptOrg, container), m_data(data), m_animScaleFactor(1.0) + : StyledPoint(ptOrg, container), m_data(data), m_animScaleFactor(1.0) { } - void SetData(BookmarkData const & data) - { - m_data = data; - SetStyle(m_data.GetType()); - } + void SetData(BookmarkData const & data) { m_data = data; } BookmarkData const & GetData() const { return m_data; } @@ -98,11 +94,7 @@ public: /// @return Now its a bookmark color - name of icon file string const & GetType() const { return m_data.GetType(); } - void SetType(string const & type) - { - m_data.SetType(type); - SetStyle(type); - } + void SetType(string const & type) { m_data.SetType(type); } m2::RectD GetViewport() const { return m2::RectD(GetOrg(), GetOrg()); } @@ -119,6 +111,9 @@ public: unique_ptr Copy() const override; shared_ptr CreateAnimTask(Framework & fm); + + // StyledPoint overrides: + string const & GetStyle() const override { return m_data.GetType(); } }; class BookmarkCategory : public UserMarkContainer diff --git a/map/styled_point.hpp b/map/styled_point.hpp index 0a02f49555..6a11daccc5 100644 --- a/map/styled_point.hpp +++ b/map/styled_point.hpp @@ -25,12 +25,7 @@ class StyledPoint : public ICustomDrawable { public: StyledPoint(m2::PointD const & ptOrg, UserMarkContainer * container) - : ICustomDrawable(ptOrg, container), m_style(style::GetDefaultStyle()) - { - } - - StyledPoint(string const & style, m2::PointD const & ptOrg, UserMarkContainer * container) - : ICustomDrawable(ptOrg, container), m_style(style) + : ICustomDrawable(ptOrg, container) { } @@ -39,9 +34,6 @@ public: double GetAnimScaleFactor() const override; m2::PointD const & GetPixelOffset() const override; - string const & GetStyle() const { return m_style; } - void SetStyle(const string & style) { m_style = style; } - -private: - string m_style; ///< Point style (name of icon), or empty string for plain circle. + /// @return name of icon, or empty string for plain circle. + virtual string const & GetStyle() const = 0; }; From 0cafa12a77bc2142cd8969c1261067c8d83ada61 Mon Sep 17 00:00:00 2001 From: Keith Wansbrough Date: Thu, 12 Nov 2015 17:55:30 +0000 Subject: [PATCH 13/13] Move StyledPoint into style namespace. --- map/api_mark_point.hpp | 2 +- map/bookmark.hpp | 2 +- map/styled_point.cpp | 4 ++-- map/styled_point.hpp | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/map/api_mark_point.hpp b/map/api_mark_point.hpp index c4dbb65be9..45ad891270 100644 --- a/map/api_mark_point.hpp +++ b/map/api_mark_point.hpp @@ -3,7 +3,7 @@ #include "map/user_mark.hpp" #include "map/styled_point.hpp" -class ApiMarkPoint : public StyledPoint +class ApiMarkPoint : public style::StyledPoint { public: ApiMarkPoint(m2::PointD const & ptOrg, UserMarkContainer * container) diff --git a/map/bookmark.hpp b/map/bookmark.hpp index 3ae735059e..e5e08afb21 100644 --- a/map/bookmark.hpp +++ b/map/bookmark.hpp @@ -66,7 +66,7 @@ private: time_t m_timeStamp; }; -class Bookmark : public StyledPoint +class Bookmark : public style::StyledPoint { BookmarkData m_data; double m_animScaleFactor; diff --git a/map/styled_point.cpp b/map/styled_point.cpp index 971512c335..f5fbecdb6f 100644 --- a/map/styled_point.cpp +++ b/map/styled_point.cpp @@ -7,6 +7,8 @@ char const * kSupportedColors[] = {"placemark-red", "placemark-blue", "place "placemark-green", "placemark-orange"}; } +namespace style +{ graphics::DisplayList * StyledPoint::GetDisplayList(UserMarkDLCache * cache) const { UserMarkContainer const * container = GetContainer(); @@ -33,8 +35,6 @@ m2::PointD const & StyledPoint::GetPixelOffset() const return GetStyle().empty() ? s_centre : s_offset; } -namespace style -{ string GetSupportedStyle(string const & s, string const & context, string const & fallback) { if (s.empty()) diff --git a/map/styled_point.hpp b/map/styled_point.hpp index 6a11daccc5..684a14ea0a 100644 --- a/map/styled_point.hpp +++ b/map/styled_point.hpp @@ -19,7 +19,6 @@ namespace style string GetSupportedStyle(string const & s, string const & context, string const & fallback); // Default icon. string GetDefaultStyle(); -} // namespace style class StyledPoint : public ICustomDrawable { @@ -37,3 +36,4 @@ public: /// @return name of icon, or empty string for plain circle. virtual string const & GetStyle() const = 0; }; +} // namespace style