Krita

Canvas.cpp
1/*
2 * SPDX-FileCopyrightText: 2016 Boudewijn Rempt <boud@valdyas.org>
3 *
4 * SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6#include "Canvas.h"
7#include <KoCanvasBase.h>
8#include <kis_canvas2.h>
9#include <KisView.h>
10#include <KoCanvasController.h>
11#include <kis_canvas_controller.h>
12#include <kis_zoom_manager.h>
13#include <QPointer>
14#include <View.h>
15
16struct Canvas::Private {
17 Private() {}
18 KisCanvas2 *canvas {0};
19};
20
21Canvas::Canvas(KoCanvasBase *canvas, QObject *parent)
22 : QObject(parent)
23 , d(new Private)
24{
25 d->canvas = static_cast<KisCanvas2*>(canvas);
26}
27
28Canvas::~Canvas()
29{
30 delete d;
31}
32
33
34bool Canvas::operator==(const Canvas &other) const
35{
36 return (d->canvas == other.d->canvas);
37}
38
39bool Canvas::operator!=(const Canvas &other) const
40{
41 return !(operator==(other));
42}
43
44
45qreal Canvas::zoomLevel() const
46{
47 if (!d->canvas) return 1.0;
48 return d->canvas->imageView()->zoomManager()->zoom();
49}
50
51void Canvas::setZoomLevel(qreal value)
52{
53 if (!d->canvas) return;
54 d->canvas->imageView()->zoomController()->setZoom(KoZoomMode::ZOOM_CONSTANT, value);
55}
56
58{
59 if (!d->canvas) return;
60
61 const KisCoordinatesConverter *coordConv = d->canvas->coordinatesConverter();
62
63 QPointF documentPos = coordConv->imageToDocument(imagePos);
64 QPointF flakePos = coordConv->documentToFlake(documentPos);
65
66 d->canvas->imageView()->canvasController()->setPreferredCenter(flakePos);
67}
68
70{
71 if (!d->canvas) return QPointF();
72
73 QPointF flakePos = d->canvas->imageView()->canvasController()->preferredCenter();
74
75 const KisCoordinatesConverter *coordConv = d->canvas->coordinatesConverter();
76 QPointF docPos = coordConv->flakeToDocument(flakePos);
77 QPointF imagePos = coordConv->documentToImage(docPos);
78
79 return imagePos;
80}
81
82void Canvas::pan(const QPoint& offset)
83{
84 d->canvas->imageView()->canvasController()->pan(offset);
85}
86
88{
89 if (!d->canvas) return;
90 d->canvas->imageView()->zoomManager()->zoomTo100();
91}
92
93
95{
96 if (!d->canvas) return;
97 d->canvas->imageView()->canvasController()->resetCanvasRotation();
98}
99
100qreal Canvas::rotation() const
101{
102 if (!d->canvas) return 0;
103 return d->canvas->imageView()->canvasController()->rotation();
104}
105
106void Canvas::setRotation(qreal angle)
107{
108 if (!d->canvas) return;
109 d->canvas->imageView()->canvasController()->rotateCanvas(angle - rotation());
110}
111
112
113bool Canvas::mirror() const
114{
115 if (!d->canvas) return false;
116 return d->canvas->imageView()->canvasIsMirrored();
117}
118
119void Canvas::setMirror(bool value)
120{
121 if (!d->canvas) return;
122 d->canvas->imageView()->canvasController()->mirrorCanvas(value);
123}
124
126{
127 if (!d->canvas) return 0;
128 View *view = new View(d->canvas->imageView());
129 return view;
130}
131
132KisDisplayColorConverter *Canvas::displayColorConverter() const
133{
134 if (!d->canvas) return 0;
135 return d->canvas->displayColorConverter();
136}
137
139{
140 if (!d->canvas) return false;
141 return d->canvas->imageView()->canvasController()->wrapAroundMode();
142}
143
145{
146 if (!d->canvas) return;
147 d->canvas->imageView()->canvasController()->slotToggleWrapAroundMode(enable);
148}
149
151{
152 if (!d->canvas) return false;
153 return d->canvas->imageView()->canvasController()->levelOfDetailMode();
154}
155
157{
158 if (!d->canvas) return;
159 return d->canvas->imageView()->canvasController()->slotToggleLevelOfDetailMode(enable);
160}
161
162#include "moc_Canvas.cpp"
Canvas wraps the canvas inside a view on an image/document.
Definition Canvas.h:23
bool mirror() const
Definition Canvas.cpp:113
void setMirror(bool value)
setMirror turn the canvas mirroring on or off depending on
Definition Canvas.cpp:119
qreal rotation() const
Definition Canvas.cpp:100
void setRotation(qreal angle)
setRotation set the rotation of the canvas to the given
Definition Canvas.cpp:106
View * view() const
Definition Canvas.cpp:125
QPointF preferredCenter() const
Definition Canvas.cpp:69
void setWrapAroundMode(bool enable)
setWrapAroundMode set wraparound mode to
Definition Canvas.cpp:144
bool levelOfDetailMode() const
Definition Canvas.cpp:150
void setLevelOfDetailMode(bool enable)
setLevelOfDetailMode sets Instant Preview to
Definition Canvas.cpp:156
void resetRotation()
resetRotation reset the canvas rotation.
Definition Canvas.cpp:94
qreal zoomLevel() const
Definition Canvas.cpp:45
bool wrapAroundMode() const
Definition Canvas.cpp:138
void setZoomLevel(qreal value)
setZoomLevel set the zoomlevel to the given value.
Definition Canvas.cpp:51
void setPreferredCenter(const QPointF &imagePos)
setPan Centers the image pixel at imagePos in the current view
Definition Canvas.cpp:57
void pan(const QPoint &offset)
pan the current view in pixels.
Definition Canvas.cpp:82
void resetZoom()
resetZoom set the zoomlevel to 100%
Definition Canvas.cpp:87
View represents one view on a document.
Definition View.h:25
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri Mar 28 2025 11:58:32 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.