Krita Source Code Documentation
Loading...
Searching...
No Matches
Canvas Class Reference

#include <Canvas.h>

+ Inheritance diagram for Canvas:

Public Types

enum  ZoomMode { ZOOM_CONSTANT = 0 , ZOOM_PAGE = 1 , ZOOM_WIDTH = 2 , ZOOM_HEIGHT = 16 }
 

Public Slots

bool levelOfDetailMode () const
 
bool mirror () const
 
void pan (const QPoint &offset)
 pan the current view in pixels.
 
QPointF preferredCenter () const
 
void resetRotation ()
 resetRotation reset the canvas rotation.
 
void resetZoom ()
 resetZoom set the zoomlevel to 100%
 
qreal rotation () const
 
void setLevelOfDetailMode (bool enable)
 setLevelOfDetailMode sets Instant Preview to
 
void setMirror (bool value)
 setMirror turn the canvas mirroring on or off depending on
 
void setPreferredCenter (const QPointF &imagePos)
 setPan Centers the image pixel at imagePos in the current view
 
void setRotation (qreal angle)
 setRotation set the rotation of the canvas to the given
 
void setWrapAroundMode (bool enable)
 setWrapAroundMode set wraparound mode to
 
void setZoomLevel (qreal value)
 setZoomLevel set the zoomlevel to the given value. 1.0 is 100%.
 
View * view () const
 
bool wrapAroundMode () const
 
qreal zoomLevel () const
 

Signals

void cursorPositionChanged (const QPoint &position)
 
void documentCursorPositionChanged (const QPointF &position)
 
void documentOffsetChanged (const QPointF &oldOffset, const QPointF &newOffset)
 
void documentRectInWidgetPixelsChanged (const QRectF &documentRectInWidgetPixels)
 
void effectiveZoomChanged (qreal effectiveZoom)
 
void mirrorChanged (bool mirrorX, bool mirrorY)
 
void offsetChanged ()
 
void removed ()
 
void rotationChanged (qreal angle)
 
void sizeChanged (const QSize &size)
 
void stateChanged ()
 
void zoomStateChanged (const ZoomMode zoomMode, qreal zoom, qreal minZoom, qreal maxZoom)
 

Public Member Functions

 Canvas (KoCanvasBase *canvas, QObject *parent=0)
 
bool operator!= (const Canvas &other) const
 
bool operator== (const Canvas &other) const
 
 ~Canvas () override
 

Private Slots

void emitZoomStateChanged (const KoZoomState &zoomState)
 

Private Member Functions

KisDisplayColorConverter * displayColorConverter () const
 

Private Attributes

Private *const d
 

Friends

class ManagedColor
 

Detailed Description

Canvas wraps the canvas inside a view on an image/document. It is responsible for the view parameters of the document: zoom, rotation, mirror, wraparound and instant preview.

Definition at line 23 of file Canvas.h.

Member Enumeration Documentation

◆ ZoomMode

Enumerator
ZOOM_CONSTANT 
ZOOM_PAGE 
ZOOM_WIDTH 
ZOOM_HEIGHT 

Definition at line 28 of file Canvas.h.

29 {
30 ZOOM_CONSTANT = 0, // zoom x %
31 ZOOM_PAGE = 1, // zoom to page
32 ZOOM_WIDTH = 2, // zoom to width
33 ZOOM_HEIGHT = 16, // zoom to height
34 };
@ ZOOM_CONSTANT
Definition Canvas.h:30
@ ZOOM_PAGE
Definition Canvas.h:31
@ ZOOM_WIDTH
Definition Canvas.h:32
@ ZOOM_HEIGHT
Definition Canvas.h:33

Constructor & Destructor Documentation

◆ Canvas()

Canvas::Canvas ( KoCanvasBase * canvas,
QObject * parent = 0 )
explicit

Definition at line 21 of file Canvas.cpp.

22 : QObject(parent)
23 , d(new Private)
24{
25 d->canvas = static_cast<KisCanvas2*>(canvas);
26
27 if (d->canvas) {
28 d->canvasControllerProxy = d->canvas->imageView()->canvasController()->proxyObject;
29
30 connect(d->canvasControllerProxy, SIGNAL(canvasRemoved(KoCanvasController*)), this, SIGNAL(removed()));
31 connect(d->canvasControllerProxy, SIGNAL(canvasOffsetChanged()), this, SIGNAL(offsetChanged()));
32 connect(d->canvasControllerProxy, SIGNAL(canvasMousePositionChanged(QPoint)), this, SIGNAL(cursorPositionChanged(QPoint)));
33 connect(d->canvasControllerProxy, SIGNAL(documentMousePositionChanged(QPointF)), this, SIGNAL(documentCursorPositionChanged(QPointF)));
34 connect(d->canvasControllerProxy, SIGNAL(sizeChanged(QSize)), this, SIGNAL(sizeChanged(QSize)));
35 connect(d->canvasControllerProxy, SIGNAL(moveDocumentOffset(QPointF, QPointF)), this, SIGNAL(documentOffsetChanged(QPointF, QPointF)));
36 connect(d->canvasControllerProxy, SIGNAL(effectiveZoomChanged(qreal)), this, SIGNAL(effectiveZoomChanged(qreal)));
39 connect(d->canvasControllerProxy, SIGNAL(documentRotationChanged(qreal)), this, SIGNAL(rotationChanged(qreal)));
40 connect(d->canvasControllerProxy, SIGNAL(documentMirrorStatusChanged(bool, bool)), this, SIGNAL(mirrorChanged(bool, bool)));
41 connect(d->canvasControllerProxy, SIGNAL(canvasStateChanged()), this, SIGNAL(stateChanged()));
42 }
43}
void stateChanged()
void zoomStateChanged(const ZoomMode zoomMode, qreal zoom, qreal minZoom, qreal maxZoom)
void removed()
void documentRectInWidgetPixelsChanged(const QRectF &documentRectInWidgetPixels)
void effectiveZoomChanged(qreal effectiveZoom)
void offsetChanged()
void documentCursorPositionChanged(const QPointF &position)
void sizeChanged(const QSize &size)
void documentOffsetChanged(const QPointF &oldOffset, const QPointF &newOffset)
Private *const d
Definition Canvas.h:221
void emitZoomStateChanged(const KoZoomState &zoomState)
Definition Canvas.cpp:179
void cursorPositionChanged(const QPoint &position)
void rotationChanged(qreal angle)
void mirrorChanged(bool mirrorX, bool mirrorY)
QPointer< KisView > imageView() const
KisCanvas2 * canvas
Definition Canvas.cpp:17
KoCanvasControllerProxyObject * canvasControllerProxy
Definition Canvas.cpp:18

References krita::Canvas::Private::canvas, krita::Canvas::Private::canvasControllerProxy, cursorPositionChanged(), d, documentCursorPositionChanged(), documentOffsetChanged(), documentRectInWidgetPixelsChanged(), effectiveZoomChanged(), emitZoomStateChanged(), KisCanvas2::imageView(), mirrorChanged(), offsetChanged(), removed(), rotationChanged(), sizeChanged(), stateChanged(), and zoomStateChanged().

◆ ~Canvas()

Canvas::~Canvas ( )
override

Definition at line 45 of file Canvas.cpp.

46{
47 delete d;
48}

References d.

Member Function Documentation

◆ cursorPositionChanged

void Canvas::cursorPositionChanged ( const QPoint & position)
signal

Emitted when the cursor is moved over the canvas widget.

Parameters
positionthe position in view coordinates (pixels).

◆ displayColorConverter()

KisDisplayColorConverter * Canvas::displayColorConverter ( ) const
private

Definition at line 149 of file Canvas.cpp.

150{
151 if (!d->canvas) return 0;
152 return d->canvas->displayColorConverter();
153}
KisDisplayColorConverter displayColorConverter

References krita::Canvas::Private::canvas, d, and KisCanvas2::displayColorConverter.

◆ documentCursorPositionChanged

void Canvas::documentCursorPositionChanged ( const QPointF & position)
signal

Emitted when the cursor is moved over the canvas widget.

Parameters
positionthe position in document coordinates.

Use cursorPositionChanged to get the position in view coordinates.

◆ documentOffsetChanged

void Canvas::documentOffsetChanged ( const QPointF & oldOffset,
const QPointF & newOffset )
signal

Emitted whenever the canvas is panned.

Parameters
pointthe new top-left point from which the document should be drawn.

◆ documentRectInWidgetPixelsChanged

void Canvas::documentRectInWidgetPixelsChanged ( const QRectF & documentRectInWidgetPixels)
signal

Emitted whenever the document's position or size within the viewport widget changes.

Parameters
documentRectInWidgetPixelsrect with position of documentOffset and size of document size * effective zoom.

◆ effectiveZoomChanged

void Canvas::effectiveZoomChanged ( qreal effectiveZoom)
signal

Emitted whenever the effective zoom level changes.

Parameters
effectiveZoomIn pixel size display mode, zoom * 1 / display scaling. In print size display mode, zoom * display DPI / image PPI.

◆ emitZoomStateChanged

void Canvas::emitZoomStateChanged ( const KoZoomState & zoomState)
privateslot

Definition at line 179 of file Canvas.cpp.

180{
181 emit zoomStateChanged((ZoomMode)zoomState.mode, zoomState.zoom, zoomState.minZoom, zoomState.maxZoom);
182}
ZoomMode
Definition Canvas.h:29
KoZoomMode::Mode mode
Definition KoZoomState.h:24
qreal maxZoom
Definition KoZoomState.h:27
qreal minZoom
Definition KoZoomState.h:26

References KoZoomState::maxZoom, KoZoomState::minZoom, KoZoomState::mode, KoZoomState::zoom, and zoomStateChanged().

◆ levelOfDetailMode

bool Canvas::levelOfDetailMode ( ) const
slot
Returns
true if the canvas is in Instant Preview mode, false if not. Only when OpenGL is enabled, is Instant Preview mode available.

Definition at line 167 of file Canvas.cpp.

168{
169 if (!d->canvas) return false;
170 return d->canvas->imageView()->canvasController()->levelOfDetailMode();
171}

References krita::Canvas::Private::canvas, d, and KisCanvas2::imageView().

◆ mirror

bool Canvas::mirror ( ) const
slot
Returns
return true if the canvas is mirrored, false otherwise.

Definition at line 130 of file Canvas.cpp.

131{
132 if (!d->canvas) return false;
133 return d->canvas->imageView()->canvasIsMirrored();
134}

References krita::Canvas::Private::canvas, d, and KisCanvas2::imageView().

◆ mirrorChanged

void Canvas::mirrorChanged ( bool mirrorX,
bool mirrorY )
signal

Emitted when mirrored status changes.

Parameters
mirrorXwhether the canvas's view is mirrored horizontally (reversed)
mirrorYwhether the canvas's view is mirrored vertically (inverted)

◆ offsetChanged

void Canvas::offsetChanged ( )
signal

Emitted when the canvas is panned. See documentOffsetChanged

◆ operator!=()

bool Canvas::operator!= ( const Canvas & other) const

Definition at line 56 of file Canvas.cpp.

57{
58 return !(operator==(other));
59}
bool operator==(const Canvas &other) const
Definition Canvas.cpp:51

References operator==().

◆ operator==()

bool Canvas::operator== ( const Canvas & other) const

Definition at line 51 of file Canvas.cpp.

52{
53 return (d->canvas == other.d->canvas);
54}

References krita::Canvas::Private::canvas, and d.

◆ pan

void Canvas::pan ( const QPoint & offset)
slot

pan the current view in pixels.

Definition at line 99 of file Canvas.cpp.

100{
101 d->canvas->imageView()->canvasController()->pan(offset);
102}

References krita::Canvas::Private::canvas, d, and KisCanvas2::imageView().

◆ preferredCenter

QPointF Canvas::preferredCenter ( ) const
slot
Returns
the position of the image pixel that is placed in the center of the current view

Definition at line 86 of file Canvas.cpp.

87{
88 if (!d->canvas) return QPointF();
89
90 QPointF flakePos = d->canvas->imageView()->canvasController()->preferredCenter();
91
93 QPointF docPos = coordConv->flakeToDocument(flakePos);
94 QPointF imagePos = coordConv->documentToImage(docPos);
95
96 return imagePos;
97}
KisCoordinatesConverter * coordinatesConverter
_Private::Traits< T >::Result flakeToDocument(const T &obj) const
_Private::Traits< T >::Result documentToImage(const T &obj) const

References krita::Canvas::Private::canvas, KisCanvas2::coordinatesConverter, d, KisCoordinatesConverter::documentToImage(), KisCoordinatesConverter::flakeToDocument(), and KisCanvas2::imageView().

◆ removed

void Canvas::removed ( )
signal

Emitted when the canvas is about to be removed.

◆ resetRotation

void Canvas::resetRotation ( )
slot

resetRotation reset the canvas rotation.

Definition at line 111 of file Canvas.cpp.

112{
113 if (!d->canvas) return;
114 d->canvas->imageView()->canvasController()->resetCanvasRotation();
115}

References krita::Canvas::Private::canvas, d, and KisCanvas2::imageView().

◆ resetZoom

void Canvas::resetZoom ( )
slot

resetZoom set the zoomlevel to 100%

Definition at line 104 of file Canvas.cpp.

105{
106 if (!d->canvas) return;
107 d->canvas->imageView()->zoomManager()->zoomTo100();
108}

References krita::Canvas::Private::canvas, d, and KisCanvas2::imageView().

◆ rotation

qreal Canvas::rotation ( ) const
slot
Returns
the rotation of the canvas in degrees.

Definition at line 117 of file Canvas.cpp.

118{
119 if (!d->canvas) return 0;
120 return d->canvas->imageView()->canvasController()->rotation();
121}

References krita::Canvas::Private::canvas, d, and KisCanvas2::imageView().

◆ rotationChanged

void Canvas::rotationChanged ( qreal angle)
signal

Emitted when rotation changes.

Parameters
anglethe angle in degrees

◆ setLevelOfDetailMode

void Canvas::setLevelOfDetailMode ( bool enable)
slot

setLevelOfDetailMode sets Instant Preview to

Parameters
enable

Definition at line 173 of file Canvas.cpp.

174{
175 if (!d->canvas) return;
176 return d->canvas->imageView()->canvasController()->slotToggleLevelOfDetailMode(enable);
177}

References krita::Canvas::Private::canvas, d, and KisCanvas2::imageView().

◆ setMirror

void Canvas::setMirror ( bool value)
slot

setMirror turn the canvas mirroring on or off depending on

Parameters
value

Definition at line 136 of file Canvas.cpp.

137{
138 if (!d->canvas) return;
139 d->canvas->imageView()->canvasController()->mirrorCanvas(value);
140}
float value(const T *src, size_t ch)

References krita::Canvas::Private::canvas, d, KisCanvas2::imageView(), and value().

◆ setPreferredCenter

void Canvas::setPreferredCenter ( const QPointF & imagePos)
slot

setPan Centers the image pixel at imagePos in the current view

Definition at line 74 of file Canvas.cpp.

75{
76 if (!d->canvas) return;
77
79
80 QPointF documentPos = coordConv->imageToDocument(imagePos);
81 QPointF flakePos = coordConv->documentToFlake(documentPos);
82
83 d->canvas->imageView()->canvasController()->setPreferredCenter(flakePos);
84}
_Private::Traits< T >::Result documentToFlake(const T &obj) const
_Private::Traits< T >::Result imageToDocument(const T &obj) const

References krita::Canvas::Private::canvas, KisCanvas2::coordinatesConverter, d, KisCoordinatesConverter::documentToFlake(), KisCoordinatesConverter::imageToDocument(), and KisCanvas2::imageView().

◆ setRotation

void Canvas::setRotation ( qreal angle)
slot

setRotation set the rotation of the canvas to the given

Parameters
anglein degrees.

Definition at line 123 of file Canvas.cpp.

124{
125 if (!d->canvas) return;
126 d->canvas->imageView()->canvasController()->rotateCanvas(angle - rotation());
127}
qreal rotation() const
Definition Canvas.cpp:117

References krita::Canvas::Private::canvas, d, KisCanvas2::imageView(), and rotation().

◆ setWrapAroundMode

void Canvas::setWrapAroundMode ( bool enable)
slot

setWrapAroundMode set wraparound mode to

Parameters
enable

Definition at line 161 of file Canvas.cpp.

162{
163 if (!d->canvas) return;
164 d->canvas->imageView()->canvasController()->slotToggleWrapAroundMode(enable);
165}

References krita::Canvas::Private::canvas, d, and KisCanvas2::imageView().

◆ setZoomLevel

void Canvas::setZoomLevel ( qreal value)
slot

setZoomLevel set the zoomlevel to the given value. 1.0 is 100%.

Definition at line 68 of file Canvas.cpp.

69{
70 if (!d->canvas) return;
71 d->canvas->imageView()->canvasController()->setZoom(KoZoomMode::ZOOM_CONSTANT, value);
72}
@ ZOOM_CONSTANT
zoom x %
Definition KoZoomMode.h:24

References krita::Canvas::Private::canvas, d, KisCanvas2::imageView(), value(), and KoZoomMode::ZOOM_CONSTANT.

◆ sizeChanged

void Canvas::sizeChanged ( const QSize & size)
signal

Emitted when the viewport size changes.

Parameters
sizethe size in widget pixels.

◆ stateChanged

void Canvas::stateChanged ( )
signal

Emitted when this canvas's zoom, rotation, mirror, offset, or viewport change.

◆ view

View * Canvas::view ( ) const
slot
Returns
the view that holds this canvas

Definition at line 142 of file Canvas.cpp.

143{
144 if (!d->canvas) return 0;
145 View *view = new View(d->canvas->imageView());
146 return view;
147}
View * view() const
Definition Canvas.cpp:142
Definition View.h:25

References krita::Canvas::Private::canvas, d, KisCanvas2::imageView(), and view().

◆ wrapAroundMode

bool Canvas::wrapAroundMode ( ) const
slot
Returns
true if the canvas is in wraparound mode, false if not. Only when OpenGL is enabled, is wraparound mode available.

Definition at line 155 of file Canvas.cpp.

156{
157 if (!d->canvas) return false;
158 return d->canvas->imageView()->canvasController()->wrapAroundMode();
159}

References krita::Canvas::Private::canvas, d, and KisCanvas2::imageView().

◆ zoomLevel

qreal Canvas::zoomLevel ( ) const
slot
Returns
the current zoomlevel. 1.0 is 100%.

Definition at line 62 of file Canvas.cpp.

63{
64 if (!d->canvas) return 1.0;
65 return d->canvas->imageView()->viewConverter()->zoom();
66}

References krita::Canvas::Private::canvas, d, and KisCanvas2::imageView().

◆ zoomStateChanged

void Canvas::zoomStateChanged ( const ZoomMode zoomMode,
qreal zoom,
qreal minZoom,
qreal maxZoom )
signal

Emitted whenever the zoom state changes.

Parameters
zoomModeZoomMode
zoomzoom level, 1.0 is 100%
minZoomthe minimum allowed zoom level
maxZoomthe maximum allowed zoom level

Friends And Related Symbol Documentation

◆ ManagedColor

friend class ManagedColor
friend

Definition at line 216 of file Canvas.h.

Member Data Documentation

◆ d

Private* const Canvas::d
private

Definition at line 221 of file Canvas.h.


The documentation for this class was generated from the following files: