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