Krita Source Code Documentation
Loading...
Searching...
No Matches
KoCanvasControllerWidget.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 KOCANVASCONTROLLERWIDGET_H
12#define KOCANVASCONTROLLERWIDGET_H
13
14#include "kritaui_export.h"
15
16#include <optional>
17#include <QAbstractScrollArea>
18#include <QPointer>
19#include "KoCanvasController.h"
20#include <KoZoomMode.h>
21
22class KoShape;
23class KoCanvasBase;
25class KisCanvasState;
27
31class KRITAUI_EXPORT KoCanvasControllerWidget : public QAbstractScrollArea, public KoCanvasController
32{
33 Q_OBJECT
34public:
35
41 explicit KoCanvasControllerWidget(KisKActionCollection * actionCollection, KoCanvasSupervisor *observerProvider, QWidget *parent = 0);
43
47 void scrollContentsBy(int dx, int dy) override;
48
50
54 virtual void activate();
55
56 void setCanvas(KoCanvasBase *canvas) override;
57
58 KoCanvasBase *canvas() const override;
59
66 virtual void changeCanvasWidget(QWidget *widget);
67
78
79 void zoomTo(const QRect &rect) override;
80
81 void setZoom(KoZoomMode::Mode mode, qreal zoom) override;
82 void setZoom(KoZoomMode::Mode mode, qreal zoom, qreal resolutionX, qreal resolutionY);
83
84 void setZoom(KoZoomMode::Mode mode, qreal zoom, const KoViewTransformStillPoint &stillPoint);
85 void setZoom(KoZoomMode::Mode mode, qreal zoom, qreal resolutionX, qreal resolutionY, const std::optional<KoViewTransformStillPoint> &docStillPoint);
86
87
88 void pan(const QPoint &distance) override;
89
90 virtual void panUp() override;
91 virtual void panDown() override;
92 virtual void panLeft() override;
93 virtual void panRight() override;
94
95 QPoint scrollBarValue() const override;
96
101 void setScrollBarValue(const QPoint &value) override;
102
103 virtual KisCanvasState canvasState() const = 0;
104
108 class Private;
110
111protected:
112 friend class KisZoomAndPanTest;
113
115 void paintEvent(QPaintEvent *event) override;
117 void resizeEvent(QResizeEvent *resizeEvent) override;
119 void dragEnterEvent(QDragEnterEvent *event) override;
121 void dropEvent(QDropEvent *event) override;
123 void dragMoveEvent(QDragMoveEvent *event) override;
125 void dragLeaveEvent(QDragLeaveEvent *event) override;
127 bool focusNextPrevChild(bool next) override;
129 bool viewportEvent(QEvent *event) override;
130
131 virtual void updateCanvasOffsetInternal(const QPointF &newOffset) = 0;
132 virtual void updateCanvasWidgetSizeInternal(const QSize &newSize) = 0;
133 virtual void updateCanvasZoomInternal(KoZoomMode::Mode mode, qreal zoom, qreal resolutionX, qreal resolutionY, const std::optional<KoViewTransformStillPoint> &docStillPoint) = 0;
134 virtual void zoomToInternal(const QRect &viewRect) = 0;
135
136 void emitSignals(const KisCanvasState &oldState, const KisCanvasState &newState);
137
138private:
139 Q_PRIVATE_SLOT(d, void activate())
140
141 Private * const d;
142};
143
144#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.
virtual void updateCanvasOffsetInternal(const QPointF &newOffset)=0
void setToolOptionWidgets(const QList< QPointer< QWidget > > &widgets)
virtual void zoomToInternal(const QRect &viewRect)=0
virtual void updateCanvasWidgetSizeInternal(const QSize &newSize)=0
virtual void updateCanvasZoomInternal(KoZoomMode::Mode mode, qreal zoom, qreal resolutionX, qreal resolutionY, const std::optional< KoViewTransformStillPoint > &docStillPoint)=0
KoCanvasBase * canvas() const override
virtual KisCanvasState canvasState() const =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
virtual void panLeft()=0
virtual void panRight()=0
virtual void setScrollBarValue(const QPoint &value)=0
virtual void pan(const QPoint &distance)=0
virtual void panDown()=0
virtual void setZoom(KoZoomMode::Mode mode, qreal zoom)=0
virtual void panUp()=0
virtual QPoint scrollBarValue() const =0