Krita Source Code Documentation
Loading...
Searching...
No Matches
KoCanvasController.h
Go to the documentation of this file.
1/* This file is part of the KDE project
2 * SPDX-FileCopyrightText: 2006, 2008 Thomas Zander <zander@kde.org>
3 * SPDX-FileCopyrightText: 2007-2010 Boudewijn Rempt <boud@valdyas.org>
4 * SPDX-FileCopyrightText: 2007-2008 C. Boemann <cbo@boemann.dk>
5 * SPDX-FileCopyrightText: 2006-2007 Jan Hambrecht <jaham@gmx.net>
6 * SPDX-FileCopyrightText: 2009 Thorsten Zachmann <zachmann@kde.org>
7 *
8 * SPDX-License-Identifier: LGPL-2.0-or-later
9 */
10
11#ifndef KOCANVASCONTROLLER_H
12#define KOCANVASCONTROLLER_H
13
14#include "kritaflake_export.h"
15#include <QObject>
16
17#include <QSize>
18#include <QPoint>
19#include <QPointF>
20#include <QPointer>
21
22#include <KoZoomState.h>
23
25class QRect;
26class QRectF;
27
28
29class KoShape;
30class KoCanvasBase;
33
60class KRITAFLAKE_EXPORT KoCanvasController
61{
62public:
63
64 // proxy QObject: use this to connect to slots and signals.
66
71 explicit KoCanvasController(KisKActionCollection* actionCollection);
72 virtual ~KoCanvasController();
73
74public:
75
83 virtual void setCanvas(KoCanvasBase *canvas) = 0;
84
89 virtual KoCanvasBase *canvas() const;
90
100 virtual void ensureVisibleDoc(const QRectF &docRect, bool smooth) = 0;
101
105 virtual void zoomIn(const KoViewTransformStillPoint &stillPoint) = 0;
106 virtual void zoomIn() = 0;
107
111 virtual void zoomOut(const KoViewTransformStillPoint &stillPoint) = 0;
112 virtual void zoomOut() = 0;
113
122 virtual void zoomTo(const QRect &rect) = 0;
123
124 virtual void setZoom(KoZoomMode::Mode mode, qreal zoom) = 0;
125
130 virtual void setPreferredCenter(const QPointF &viewPoint) = 0;
131
133 virtual QPointF preferredCenter() const = 0;
134
139 virtual void pan(const QPoint &distance) = 0;
140
144 virtual void panUp() = 0;
145
149 virtual void panDown() = 0;
150
154 virtual void panLeft() = 0;
155
159 virtual void panRight() = 0;
160
164 virtual QPoint scrollBarValue() const = 0;
165
170 virtual void setScrollBarValue(const QPoint &value) = 0;
171
175 virtual void resetScrollBars() = 0;
176
182
187 virtual QPointF currentCursorPosition() const = 0;
188
189 virtual KoZoomState zoomState() const = 0;
190
191protected:
192 void setDocumentOffset(const QPoint &offset);
193
194
195private:
196 class Private;
197 Private * const d;
198};
199
200
207class KRITAFLAKE_EXPORT KoCanvasControllerProxyObject : public QObject
208{
209 Q_OBJECT
210 Q_DISABLE_COPY(KoCanvasControllerProxyObject)
211public:
212 explicit KoCanvasControllerProxyObject(KoCanvasController *canvasController, QObject *parent = 0);
213
214public:
215
216 // Convenience methods to invoke the signals from subclasses
217
218 void emitCanvasRemoved(KoCanvasController *canvasController) { Q_EMIT canvasRemoved(canvasController); }
219 void emitCanvasSet(KoCanvasController *canvasController) { Q_EMIT canvasSet(canvasController); }
220 void emitCanvasOffsetChanged() { Q_EMIT canvasOffsetChanged(); }
221 void emitCanvasMousePositionChanged(const QPoint &position) { Q_EMIT canvasMousePositionChanged(position); }
222 void emitDocumentMousePositionChanged(const QPointF &position) { Q_EMIT documentMousePositionChanged(position); }
223 void emitSizeChanged(const QSize &size) { Q_EMIT sizeChanged(size); }
224 void emitMoveDocumentOffset(const QPointF &oldOffset, const QPointF &newOffset) { Q_EMIT moveDocumentOffset(oldOffset, newOffset); }
225 void emitEffectiveZoomChanged(qreal zoom) { Q_EMIT effectiveZoomChanged(zoom); }
226 void emitZoomStateChanged(const KoZoomState &zoomState) { Q_EMIT zoomStateChanged(zoomState); }
227 void emitDocumentRectInWidgetPixelsChanged(const QRectF &documentRectInWidgetPixels) { Q_EMIT documentRectInWidgetPixelsChanged(documentRectInWidgetPixels); }
228 void emitDocumentRotationChanged(qreal angle) { Q_EMIT documentRotationChanged(angle); }
229 void emitDocumentMirrorStatusChanged(bool mirrorX, bool mirrorY) { Q_EMIT documentMirrorStatusChanged(mirrorX, mirrorY); }
230 void emitCanvasStateChanged() { Q_EMIT canvasStateChanged(); }
231
232 // Convenience method to retrieve the canvas controller for who needs to use QPointer
233 KoCanvasController *canvasController() const { return m_canvasController; }
234
235Q_SIGNALS:
240 void canvasRemoved(KoCanvasController *canvasController);
241
246 void canvasSet(KoCanvasController *canvasController);
247
252
257 void canvasMousePositionChanged(const QPoint &position);
258
266 void documentMousePositionChanged(const QPointF &position);
267
272 void sizeChanged(const QSize &size);
273
280 void moveDocumentOffset(const QPointF &oldOffset, const QPointF &newOffset);
281
282 void effectiveZoomChanged(qreal zoom);
283
284 void zoomStateChanged(const KoZoomState &zoomState);
285
286 void documentRectInWidgetPixelsChanged(const QRectF &documentRectInWidgetPixels);
287
288 void documentRotationChanged(qreal angle);
289 void documentMirrorStatusChanged(bool mirrorX, bool mirrorY);
290
292
293private:
295};
296
297#endif
float value(const T *src, size_t ch)
qreal distance(const QPointF &p1, const QPointF &p2)
A container for a set of QAction objects.
void sizeChanged(const QSize &size)
void emitDocumentRectInWidgetPixelsChanged(const QRectF &documentRectInWidgetPixels)
void emitSizeChanged(const QSize &size)
KoCanvasController * m_canvasController
void documentRectInWidgetPixelsChanged(const QRectF &documentRectInWidgetPixels)
void documentRotationChanged(qreal angle)
void documentMirrorStatusChanged(bool mirrorX, bool mirrorY)
void canvasMousePositionChanged(const QPoint &position)
void moveDocumentOffset(const QPointF &oldOffset, const QPointF &newOffset)
void documentMousePositionChanged(const QPointF &position)
void zoomStateChanged(const KoZoomState &zoomState)
void emitMoveDocumentOffset(const QPointF &oldOffset, const QPointF &newOffset)
void canvasSet(KoCanvasController *canvasController)
void canvasRemoved(KoCanvasController *canvasController)
void emitZoomStateChanged(const KoZoomState &zoomState)
void effectiveZoomChanged(qreal zoom)
void emitCanvasRemoved(KoCanvasController *canvasController)
void emitDocumentMirrorStatusChanged(bool mirrorX, bool mirrorY)
void emitCanvasSet(KoCanvasController *canvasController)
void emitDocumentRotationChanged(qreal angle)
void emitDocumentMousePositionChanged(const QPointF &position)
void emitCanvasMousePositionChanged(const QPoint &position)
KoCanvasController * canvasController() const
virtual QPointF preferredCenter() const =0
Returns the currently set preferred center point in view coordinates (pixels)
virtual void zoomIn()=0
virtual void zoomTo(const QRect &rect)=0
zoom so that rect is exactly visible (as close as possible)
virtual void setCanvas(KoCanvasBase *canvas)=0
void setDocumentOffset(const QPoint &offset)
virtual void ensureVisibleDoc(const QRectF &docRect, bool smooth)=0
Scrolls the content of the canvas so that the given rect is visible.
virtual void setPreferredCenter(const QPointF &viewPoint)=0
QPointer< KoCanvasControllerProxyObject > proxyObject
virtual void panLeft()=0
virtual void panRight()=0
virtual void zoomIn(const KoViewTransformStillPoint &stillPoint)=0
zooms in keeping stillPoint not moved.
virtual void setScrollBarValue(const QPoint &value)=0
virtual void pan(const QPoint &distance)=0
virtual void resetScrollBars()=0
virtual KoZoomState zoomState() const =0
virtual void zoomOut()=0
virtual void panDown()=0
virtual void setZoom(KoZoomMode::Mode mode, qreal zoom)=0
virtual void panUp()=0
virtual void zoomOut(const KoViewTransformStillPoint &stillPoint)=0
zooms out keeping stillPoint not moved.
virtual QPoint scrollBarValue() const =0
KisKActionCollection * actionCollection() const
virtual QPointF currentCursorPosition() const =0