1 #ifndef MAP_COMMON__I_MAP_ITEM_H 2 #define MAP_COMMON__I_MAP_ITEM_H 3 4 #include "IMapEvent.h" 5 #include <Painter/Painter.h> 6 7 enum 8 { 9 STATE_SHOWN, 10 STATE_SELECTED, 11 STATE_FOUND, 12 STATE_EDIT, 13 14 PERFORM_INIT, 15 PERFORM_UPDATE, 16 PERFORM_RELEASE, 17 PERFORM_SEARCH 18 }; 19 20 class IMapRender; 21 class IMapItem : public Pte<IMapItem>, public IMapEvent 22 { 23 public: 24 IMapItem(IMapRender* parent); ~IMapItem()25 virtual ~IMapItem() { Clear(); } 26 Render(Painter * w)27 virtual void Render(Painter* w) { Render((Draw*)w); } 28 virtual void Render(Draw* w) = 0; 29 Contains(const Point & p)30 virtual bool Contains(const Point& p) { return GetRect().Contains(p); } GetTopLeft()31 virtual Point GetTopLeft() { return GetRect().TopLeft(); } GetCenter()32 virtual Point GetCenter() { return GetRect().CenterPoint(); } 33 virtual Rect GetRect() = 0; Clear()34 virtual void Clear() {} 35 virtual Rect GetRenderRect(); 36 37 virtual void StatePerformed (dword state, const String& param = String()) {} StateChanged(dword state)38 virtual void StateChanged (dword state) {} 39 virtual void StateOff (dword state); 40 virtual void StateOn (dword state); 41 virtual bool IsState (dword state); 42 virtual void PerformState (dword state, const String& param = String()); 43 44 static void StatesPerformed(dword state, const String& param = String()); 45 static void StatesChanged (dword state); 46 static void StatesOff (dword state); 47 static void StatesOn (dword state); 48 static bool IsAnyState (dword state); 49 static void PerformStates (dword state, const String& param = String()); 50 51 public: IsShown()52 bool IsShown() { return IsState(STATE_SHOWN); } IsFound()53 bool IsFound() { return IsState(STATE_FOUND); } IsSelected()54 bool IsSelected() { return IsState(STATE_SELECTED); } 55 SetParent(Ptr<IMapRender> parent)56 void SetParent(Ptr<IMapRender> parent) { _parent = parent; } GetParent()57 IMapRender* GetParent() { return _parent; } 58 SetTopRender(Ptr<IMapRender> render)59 void SetTopRender(Ptr<IMapRender> render) { _topRender = render; } GetTopRender()60 IMapRender* GetTopRender() { return _topRender; } 61 62 virtual String GetItemType() = 0; 63 64 virtual double GetOpacity(); 65 virtual dword GetQuality(); 66 virtual Color GetClearColor(); 67 virtual dword GetRenderType(); 68 GetItems()69 virtual Vector<Ptr<IMapItem> >& GetItems() { return _globalItemList; } GetItems()70 const virtual Vector<Ptr<IMapItem> >& GetItems() const { return _globalItemList; } 71 72 protected: 73 static void RegisterInGlobalList(Ptr<IMapItem> item); 74 static void UnregisterFromGlobalList(Ptr<IMapItem> item); 75 76 private: 77 IMapRender* _topRender; 78 IMapRender* _parent; 79 80 Vector<dword> _states; 81 static Vector<Ptr<IMapItem> > _globalItemList; 82 }; 83 84 #endif 85