Krita Source Code Documentation
Loading...
Searching...
No Matches
Canvas.cpp
Go to the documentation of this file.
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>
12#include <kis_zoom_manager.h>
13#include <View.h>
14
19
20Canvas::Canvas(KoCanvasBase *canvas, QObject *parent)
21 : QObject(parent)
22 , d(new Private)
23{
24 d->canvas = static_cast<KisCanvas2*>(canvas);
25}
26
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()->viewConverter()->zoom();
48}
49
51{
52 if (!d->canvas) return;
53 d->canvas->imageView()->canvasController()->setZoom(KoZoomMode::ZOOM_CONSTANT, value);
54}
55
56void Canvas::setPreferredCenter(const QPointF& imagePos)
57{
58 if (!d->canvas) return;
59
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
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
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
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"
float value(const T *src, size_t ch)
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
bool operator!=(const Canvas &other) const
Definition Canvas.cpp:38
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
KisDisplayColorConverter * displayColorConverter() const
Definition Canvas.cpp:131
~Canvas() override
Definition Canvas.cpp:27
bool wrapAroundMode() const
Definition Canvas.cpp:137
void setZoomLevel(qreal value)
setZoomLevel set the zoomlevel to the given value. 1.0 is 100%.
Definition Canvas.cpp:50
void setPreferredCenter(const QPointF &imagePos)
setPan Centers the image pixel at imagePos in the current view
Definition Canvas.cpp:56
bool operator==(const Canvas &other) const
Definition Canvas.cpp:33
Private *const d
Definition Canvas.h:125
Canvas(KoCanvasBase *canvas, QObject *parent=0)
Definition Canvas.cpp:20
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
KisDisplayColorConverter displayColorConverter
KisCoordinatesConverter * coordinatesConverter
QPointer< KisView > imageView() const
_Private::Traits< T >::Result documentToFlake(const T &obj) const
_Private::Traits< T >::Result flakeToDocument(const T &obj) const
_Private::Traits< T >::Result documentToImage(const T &obj) const
_Private::Traits< T >::Result imageToDocument(const T &obj) const
@ ZOOM_CONSTANT
zoom x %
Definition KoZoomMode.h:24
Definition View.h:25
KisCanvas2 * canvas
Definition Canvas.cpp:17