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

KDE's Doxygen guidelines are available online.