summaryrefslogtreecommitdiffstats
path: root/krita/sdk/kis_canvas_controller.h
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-01-20 01:29:50 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-01-20 01:29:50 +0000
commit8362bf63dea22bbf6736609b0f49c152f975eb63 (patch)
tree0eea3928e39e50fae91d4e68b21b1e6cbae25604 /krita/sdk/kis_canvas_controller.h
downloadkoffice-8362bf63dea22bbf6736609b0f49c152f975eb63.tar.gz
koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.zip
Added old abandoned KDE3 version of koffice
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1077364 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'krita/sdk/kis_canvas_controller.h')
-rw-r--r--krita/sdk/kis_canvas_controller.h200
1 files changed, 200 insertions, 0 deletions
diff --git a/krita/sdk/kis_canvas_controller.h b/krita/sdk/kis_canvas_controller.h
new file mode 100644
index 00000000..99d43c38
--- /dev/null
+++ b/krita/sdk/kis_canvas_controller.h
@@ -0,0 +1,200 @@
+/*
+ * Copyright (c) 2003 Patrick Julien <[email protected]>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#ifndef KIS_CANVAS_CONTROLLER_H_
+#define KIS_CANVAS_CONTROLLER_H_
+
+#include <qglobal.h>
+#include <qpoint.h>
+#include <qrect.h>
+#include "kis_types.h"
+
+class QWidget;
+class KisTool;
+class KisRect;
+class KisPoint;
+class KisCanvas;
+class KisInputDevice;
+
+/**
+ * Interface for classes that implement a canvas; i.e., a widget where KisImages
+ * are painted onto. This is the "view" part of the model-view-controller paradigm;
+ * the naming is a confusing historical artefact.
+ */
+class KisCanvasController {
+public:
+ KisCanvasController() {};
+ virtual ~KisCanvasController() {};
+
+public:
+
+ /**
+ * @return the canvas object
+ */
+ virtual KisCanvas *kiscanvas() const = 0;
+
+
+ /**
+ * @return the value of the horizontal scrollbar.
+ */
+ virtual Q_INT32 horzValue() const = 0;
+
+ /**
+ * @return the value of the vertical scrollbar
+ */
+ virtual Q_INT32 vertValue() const = 0;
+
+ /**
+ * Sets the horizontal and vertical scrollbars to the specified values
+ *
+ * @param x the value the horizontal scrollbar is set to
+ * @param y the value the vertical scrollbar is set to
+ */
+ virtual void scrollTo(Q_INT32 x, Q_INT32 y) = 0;
+
+ /**
+ * Tell all of the canvas to repaint itself.
+ */
+ virtual void updateCanvas() = 0;
+
+
+ /**
+ * Tell the canvas to repaint the rectangle defined by x, y, w and h.
+ * The coordinates are image coordinates.
+ */
+ virtual void updateCanvas(Q_INT32 x, Q_INT32 y, Q_INT32 w, Q_INT32 h) = 0;
+
+ /**
+ * Tell the canvas repaint the specified rectangle. The coordinates
+ * are image coordinates, not view coordinates.
+ */
+ virtual void updateCanvas(const QRect& rc) = 0;
+
+ /**
+ * Increase the zoomlevel one step
+ */
+ virtual void zoomIn() = 0;
+
+ /**
+ * Increase the zoomlevel one step and make sure that x,y is the center point of the view.
+ *
+ * @param x The x coordinate of the visible point in image coordinates
+ * @param y the y coordinate of the visible point in image coordinates
+ */
+ virtual void zoomIn(Q_INT32 x, Q_INT32 y) = 0;
+
+ /**
+ * Decrease the zoomlevel one step
+ */
+ virtual void zoomOut() = 0;
+
+
+ /**
+ * Decrease the zoomlevel one step and make sure that x,y is the center point of the view.
+ *
+ * @param x the x coordinate of the visible point in image coordinates
+ * @param y the y coordinate of the visible point in image coordinates
+ */
+ virtual void zoomOut(Q_INT32 x, Q_INT32 y) = 0;
+
+ /**
+ * To centre the view on the given point with the given zoom factor.
+ *
+ * @param x the x coordinate of the center point in image coordinates
+ * @param y the y coordinate of the center point in image coordinates
+ * @param zf the zoomfactor
+ */
+ virtual void zoomAroundPoint(double x, double y, double zf) = 0;
+
+ /**
+ * Make the rect defined by x, y, w and h visible, zooming in or
+ * out as necessary. The view will be centered around the center point
+ * of the specified rect.
+ */
+ virtual void zoomTo(Q_INT32 x, Q_INT32 y, Q_INT32 w, Q_INT32 h) = 0;
+
+ /**
+ * Make the rect defined by x, y, w and h visible, zooming in or
+ * out as necessary. The view will be centered around the center point
+ * of the specified rect.
+ */
+ virtual void zoomTo(const QRect& r) = 0;
+
+ /**
+ * Make the rect defined by x, y, w and h visible, zooming in or
+ * out as necessary. The view will be centered around the center point
+ * of the specified rect.
+ */
+ virtual void zoomTo(const KisRect& r) = 0;
+
+ /**
+ * Conversion functions from view coordinates to image coordinates
+ *
+ * You can get the rectangle of the image that's visible using the
+ * viewToWindow() functions (KisCanvasController). E.g.
+ * viewToWindow(QRect(0, 0, canvasWidth, canvasHeight)).
+ *
+ * Here, the view is the canvas widget in the view widget, and the window
+ * is the window on the image.
+ */
+ virtual QPoint viewToWindow(const QPoint& pt) = 0;
+ virtual KisPoint viewToWindow(const KisPoint& pt) = 0;
+ virtual QRect viewToWindow(const QRect& rc) = 0;
+ virtual KisRect viewToWindow(const KisRect& rc) = 0;
+ virtual void viewToWindow(Q_INT32 *x, Q_INT32 *y) = 0;
+
+ /**
+ * Conversion functions from image coordinates to view coordinates
+ */
+ virtual QPoint windowToView(const QPoint& pt) = 0;
+ virtual KisPoint windowToView(const KisPoint& pt) = 0;
+ virtual QRect windowToView(const QRect& rc) = 0;
+ virtual KisRect windowToView(const KisRect& rc) = 0;
+ virtual void windowToView(Q_INT32 *x, Q_INT32 *y) = 0;
+
+ /**
+ * Set the cursor shown when the pointer is over the canvas widget to
+ * the specified cursor.
+ *
+ * @param cursor the new cursor
+ * @return the old cursor
+ */
+ virtual QCursor setCanvasCursor(const QCursor & cursor) = 0;
+
+ /**
+ * Set the active input device to the specified input device, This
+ * could be a mouse, a stylus, an eraser or any other pointing input
+ * device.
+ *
+ * @param inputDevice the new input device
+ */
+ virtual void setInputDevice(KisInputDevice inputDevice) = 0;
+
+ /**
+ * @return the current input device, such as a mouse or a stylus
+ */
+ virtual KisInputDevice currentInputDevice() const = 0;
+
+
+private:
+ KisCanvasController(const KisCanvasController&);
+ KisCanvasController& operator=(const KisCanvasController&);
+};
+
+#endif // KIS_CANVAS_CONTROLLER_H_
+