krita
kis_tool.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef KIS_TOOL_H_
00021 #define KIS_TOOL_H_
00022
00023 #include <qobject.h>
00024 #include <qstring.h>
00025
00026 #include <ksharedptr.h>
00027 #include <kaction.h>
00028
00029 #include "kis_shared_ptr_vector.h"
00030 #include "kis_canvas_observer.h"
00031
00032 class QCursor;
00033 class QEvent;
00034 class QKeyEvent;
00035 class QRect;
00036 class QWidget;
00037 class KActionCollection;
00038 class KRadioAction;
00039 class KDialog;
00040 class KisBrush;
00041 class KisGradient;
00042 class KisPattern;
00043 class KisButtonPressEvent;
00044 class KisButtonReleaseEvent;
00045 class KisDoubleClickEvent;
00046 class KisMoveEvent;
00047 class KisCanvasPainter;
00048
00049 enum enumToolType {
00050 TOOL_SHAPE = 0,
00051 TOOL_FREEHAND = 1,
00052 TOOL_TRANSFORM = 2,
00053 TOOL_FILL = 3,
00054 TOOL_VIEW = 4,
00055 TOOL_SELECT = 5
00056
00057 };
00058
00059 const Q_UINT8 NUMBER_OF_TOOLTYPES = 6;
00060
00061 class KisTool : public QObject, public KisCanvasObserver, public KShared {
00062 Q_OBJECT
00063
00064 public:
00065 KisTool(const QString & name);
00066 virtual ~KisTool();
00067
00068 public:
00069
00070 virtual void paint(KisCanvasPainter& gc) = 0;
00071 virtual void paint(KisCanvasPainter& gc, const QRect& rc) = 0;
00072
00082 virtual void setup(KActionCollection *collection) = 0;
00083
00084 virtual void enter(QEvent *e) = 0;
00085 virtual void leave(QEvent *e) = 0;
00086 virtual void buttonPress(KisButtonPressEvent *e) = 0;
00087 virtual void move(KisMoveEvent *e) = 0;
00088 virtual void buttonRelease(KisButtonReleaseEvent *e) = 0;
00089 virtual void doubleClick(KisDoubleClickEvent *e) = 0;
00090 virtual void keyPress(QKeyEvent *e) = 0;
00091 virtual void keyRelease(QKeyEvent *e) = 0;
00092
00093 virtual QCursor cursor() = 0;
00094 virtual void setCursor(const QCursor& cursor) = 0;
00099 virtual QWidget* createOptionWidget(QWidget* parent);
00103 virtual QWidget* optionWidget();
00104 KRadioAction *action() const { return m_action; }
00105
00110 virtual bool wantsAutoScroll() const { return true; }
00111
00112
00113 virtual Q_UINT32 priority() { return 0; }
00114 virtual enumToolType toolType() { return TOOL_FREEHAND; }
00115 virtual QString icon() { return m_action->icon(); }
00116 virtual QString quickHelp() const { return ""; }
00117
00118 public slots:
00122 virtual void activate() = 0;
00123
00128 virtual void deactivate() = 0;
00129
00130 private:
00131 KisTool(const KisTool&);
00132 KisTool& operator=(const KisTool&);
00133
00134 protected:
00135 KRadioAction *m_action;
00136 bool m_ownAction;
00137
00138 private:
00139 class KisToolPrivate;
00140 KisToolPrivate * d;
00141
00142 };
00143
00144 #endif // KIS_TOOL_H_
00145
|