From 6789466033f6a606b0ab52386f374b2e15cc8f0a Mon Sep 17 00:00:00 2001 From: Keith Wansbrough Date: Wed, 11 Nov 2015 22:51:33 +0000 Subject: [PATCH] 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; };