summaryrefslogtreecommitdiffstats
path: root/karbon/tools/vgradienttool.h
diff options
context:
space:
mode:
Diffstat (limited to 'karbon/tools/vgradienttool.h')
-rw-r--r--karbon/tools/vgradienttool.h98
1 files changed, 98 insertions, 0 deletions
diff --git a/karbon/tools/vgradienttool.h b/karbon/tools/vgradienttool.h
new file mode 100644
index 00000000..7e78d510
--- /dev/null
+++ b/karbon/tools/vgradienttool.h
@@ -0,0 +1,98 @@
+/* This file is part of the KDE project
+ Copyright (C) 2001, 2002, 2003 The Karbon Developers
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+*/
+
+#ifndef __VGRADIENTTOOL_H__
+#define __VGRADIENTTOOL_H__
+
+#include <kdialogbase.h>
+
+#include "vtool.h"
+#include "vgradient.h"
+#include "KoRect.h"
+
+class VGradientTabWidget;
+
+class VGradientTool : public VTool
+{
+ Q_OBJECT
+
+public:
+ VGradientTool( KarbonView *view );
+ virtual ~VGradientTool();
+
+ virtual void activate();
+ virtual void deactivate();
+
+ virtual void setup(KActionCollection *collection);
+ virtual QString uiname() { return i18n( "Gradient Tool" ); }
+ virtual QString statusText();
+
+ virtual QString contextHelp();
+ virtual bool showDialog() const;
+
+ virtual void draw( VPainter* painter );
+
+protected:
+
+ virtual void draw();
+ virtual void mouseButtonRelease();
+ virtual void mouseButtonPress();
+ virtual void mouseDragRelease();
+ virtual void mouseDrag();
+ virtual void cancel();
+ virtual void setCursor() const;
+ virtual bool keyReleased( Qt::Key key );
+
+ /**
+ * Determines the actual gradient to be edited.
+ *
+ * @param gradient the found gradient
+ * @return true if gradient was found, else false
+ */
+ bool getGradient( VGradient &gradient );
+
+ bool getOpacity( double &opacity );
+
+protected slots:
+ void targetChanged();
+
+private:
+ enum { normal, moveOrigin, moveVector, moveCenter, createNew } m_state;
+
+ class VGradientOptionsWidget : public KDialogBase
+ {
+ public:
+ VGradientOptionsWidget( VGradient& gradient );
+ VGradientTabWidget *gradientWidget() { return m_gradientWidget; }
+ private:
+ VGradientTabWidget *m_gradientWidget;
+ };
+ VGradient m_gradient; /**< the actual gradient */
+ KoPoint m_current; /**< the current position when dragging */
+ KoPoint m_fixed; /**< the fixed point when only dragging one point of the gradient vector */
+ VGradientOptionsWidget* m_optionsWidget; /**< the options dialog, for editing gradients */
+ KoRect m_origin; /**< the handle of the gradient origin */
+ KoRect m_vector; /**< the handle of the gradient vector */
+ KoRect m_center; /**< the handle of the radial gradient focal point */
+ int m_handleSize; /**< the handle's size */
+ bool m_active; /**< holds active state of the tool, which is used for drawing of the gradient vector */
+};
+
+#endif
+