All Classes Functions Variables
DrawingObjectManager.h
1 #ifndef DRAWINGOBJECTMANAGER_H
2 #define DRAWINGOBJECTMANAGER_H
3 
4 #include <vector>
5 
7 class Canvas;
8 class DrawableObjectTypeAbstract;
10 class wxMouseEvent;
11 
13 {
14  public:
15  DrawingObjectManager(const Canvas & canvas, DrawingObjectFactoryAbstract & factory);
16  virtual ~DrawingObjectManager();
17  DrawingObjectAbstract * Add( int type, wxMouseEvent & event );
18  DrawingObjectAbstract * Contains( wxMouseEvent & e );
19  void Draw( wxDC & dc, const DrawingObjectAbstract * selected ) const;
20  void Delete( DrawingObjectAbstract * selected );
21  void Clear();
22 
23  protected:
24  const Canvas & GetCanvas() const;
25  virtual void DrawClient( wxDC & dc, const DrawingObjectAbstract * selected ) const = 0;
26  virtual void DeleteClient( DrawingObjectAbstract * selected ) = 0;
27 
28  std::vector<DrawingObjectAbstract *> m_objects;
29 
30  private:
31  void AddToDeleted(DrawingObjectAbstract * toDelete );
32 
33  const Canvas & m_canvas;
34  DrawingObjectFactoryAbstract & m_factory;
35  std::vector<DrawingObjectAbstract *> m_objectsToDelete;
36 };
37 
38 #endif // DRAWINGOBJECTMANAGER_H