00001 #ifndef TOOL_H 00002 #define TOOL_H 00003 00004 #include <QRectF> 00005 00006 class QMouseEvent; 00007 class QPainter; 00008 00009 class Canvas; 00010 00011 class Tool 00012 { 00013 public: 00014 Tool( Canvas * canvas ) 00015 : m_canvas ( canvas ) 00016 , m_buttonPressed( false ) 00017 {} 00018 virtual ~Tool() {} 00019 00020 virtual void mouseMoveEvent(QMouseEvent *e); 00021 virtual void mousePressEvent(QMouseEvent *e); 00022 virtual void mouseReleaseEvent(QMouseEvent *e) = 0; 00023 00024 virtual void paint( QPainter & p ) = 0; 00025 00026 protected: 00027 Canvas * m_canvas; 00028 bool m_buttonPressed; 00029 QRectF m_rect; 00030 }; 00031 00032 class CreateTool : public Tool 00033 { 00034 public: 00035 CreateTool( Canvas * canvas ); 00036 virtual ~CreateTool(); 00037 00038 virtual void mouseReleaseEvent(QMouseEvent *e); 00039 00040 virtual void paint( QPainter & p ); 00041 00042 protected: 00043 }; 00044 00045 class SelectTool : public Tool 00046 { 00047 public: 00048 SelectTool( Canvas * canvas ); 00049 virtual ~SelectTool(); 00050 00051 virtual void mouseReleaseEvent(QMouseEvent *e); 00052 00053 virtual void paint( QPainter & p ); 00054 00055 protected: 00056 }; 00057 00058 class RemoveTool : public Tool 00059 { 00060 public: 00061 RemoveTool( Canvas * canvas ); 00062 virtual ~RemoveTool(); 00063 00064 virtual void mouseReleaseEvent(QMouseEvent *e); 00065 00066 virtual void paint( QPainter & p ); 00067 00068 protected: 00069 }; 00070 00071 #endif /* TOOL_H */