Krita Source Code Documentation
Loading...
Searching...
No Matches
KoZoomHandler.cpp
Go to the documentation of this file.
1/* This file is part of the KDE project
2 SPDX-FileCopyrightText: 2001-2005 David Faure <faure@kde.org>
3 SPDX-FileCopyrightText: 2006 Thomas Zander <zander@kde.org>
4 SPDX-FileCopyrightText: 2010 KO GmbH <boud@valdyas.org>
5
6 SPDX-License-Identifier: LGPL-2.0-or-later
7*/
8
9#include "KoZoomHandler.h"
10#include <WidgetsDebug.h>
11#include <KoUnit.h> // for POINT_TO_INCH
12#include <QPointF>
13#include <QRectF>
14
17 , m_zoomMode(KoZoomMode::ZOOM_CONSTANT)
18 , m_resolutionX(0)
19 , m_resolutionY(0)
20 , m_zoomedResolutionX(0)
21 , m_zoomedResolutionY(0)
22 , m_zoomMarginSize(0)
23{
24 setZoom(1.0);
26 // Use 72 dpi as a placeholder. KisView will immediately update the
27 // screen resolution correctly after this, using the values initialized
28 // by KisZoomManager::updateScreenResolution().
29 setDpi(72, 72);
30}
31
35
36void KoZoomHandler::setDpi(int dpiX, int dpiY)
37{
38 setResolution(POINT_TO_INCH(static_cast<qreal>(dpiX)),
39 POINT_TO_INCH(static_cast<qreal>(dpiY)));
40}
41
42void KoZoomHandler::setResolution( qreal resolutionX, qreal resolutionY )
43{
44
47
49 m_resolutionX = 1;
51 m_resolutionY = 1;
52
55}
56
57void KoZoomHandler::setZoomedResolution( qreal zoomedResolutionX, qreal zoomedResolutionY )
58{
59 // zoom() doesn't matter, it's only used in setZoom() to calculated the zoomed resolutions
60 // Here we know them. The whole point of this method is to allow a different zoom factor
61 // for X and for Y, as can be useful for e.g. fullscreen kpresenter presentations.
64}
65
66void KoZoomHandler::setZoom( qreal zoom )
67{
68 if (qFuzzyCompare(zoom, qreal(1.0))) {
69 zoom = 1.0;
70 }
71
73 if( zoom == 1.0 ) {
76 } else {
79 }
80}
81
83{
84 m_zoomMarginSize = size;
85}
86
88{
89 return m_zoomMarginSize;
90}
91
92QPointF KoZoomHandler::documentToView( const QPointF &documentPoint ) const
93{
94 return QPointF( zoomItX( documentPoint.x() ),
95 zoomItY( documentPoint.y() ));
96}
97
98QPointF KoZoomHandler::viewToDocument( const QPointF &viewPoint ) const
99{
100 return QPointF( unzoomItX( viewPoint.x() ),
101 unzoomItY( viewPoint.y() ) );
102}
103
104QRectF KoZoomHandler::documentToView( const QRectF &documentRect ) const
105{
106 QRectF r (zoomItX( documentRect.x() ),
107 zoomItY( documentRect.y() ),
108 zoomItX( documentRect.width() ),
109 zoomItY( documentRect.height() ) );
110 return r;
111}
112
113QRectF KoZoomHandler::viewToDocument( const QRectF &viewRect ) const
114{
115 QRectF r ( unzoomItX( viewRect.x() ),
116 unzoomItY( viewRect.y()),
117 unzoomItX( viewRect.width() ),
118 unzoomItY( viewRect.height() ) );
119 return r;
120}
121
122QSizeF KoZoomHandler::documentToView( const QSizeF &documentSize ) const
123{
124 return QSizeF( zoomItX( documentSize.width() ),
125 zoomItY( documentSize.height() ) );
126}
127
128QSizeF KoZoomHandler::viewToDocument( const QSizeF &viewSize ) const
129{
130 return QSizeF( unzoomItX( viewSize.width() ),
131 unzoomItY( viewSize.height() ) );
132}
133
134qreal KoZoomHandler::documentToViewX( qreal documentX ) const
135{
136 return zoomItX( documentX );
137}
138
139qreal KoZoomHandler::documentToViewY( qreal documentY ) const
140{
141 return zoomItY( documentY );
142}
143
144qreal KoZoomHandler::viewToDocumentX( qreal viewX ) const
145{
146 return unzoomItX( viewX );
147}
148
149qreal KoZoomHandler::viewToDocumentY( qreal viewY ) const
150{
151 return unzoomItY( viewY );
152}
153
154void KoZoomHandler::zoom(qreal *zoomX, qreal *zoomY) const
155{
156 *zoomX = zoomItX(100.0) / 100.0;
157 *zoomY = zoomItY(100.0) / 100.0;
158}
constexpr qreal POINT_TO_INCH(qreal px)
Definition KoUnit.h:37
virtual void setZoom(qreal zoom)
QTransform documentToView() const
QTransform viewToDocument() const
qreal m_zoomedResolutionX
qreal viewToDocumentY(qreal viewY) const override
qreal zoomItX(qreal z) const
qreal unzoomItY(qreal y) const
qreal unzoomItX(qreal x) const
qreal documentToViewX(qreal documentX) const override
int zoomMarginSize() const
void setZoom(qreal zoom) override
void setZoomMode(KoZoomMode::Mode zoomMode)
qreal documentToViewY(qreal documentY) const override
void setZoomMarginSize(int size)
qreal resolutionX() const
qreal zoomedResolutionY() const
~KoZoomHandler() override
qreal zoom() const
qreal resolutionY() const
virtual void setZoomedResolution(qreal zoomedResolutionX, qreal zoomedResolutionY)
void setDpi(int dpiX, int dpiY)
qreal zoomedResolutionX() const
void setResolution(qreal resolutionX, qreal resolutionY)
qreal viewToDocumentX(qreal viewX) const override
qreal m_zoomedResolutionY
qreal zoomItY(qreal z) const
@ ZOOM_CONSTANT
zoom x %
Definition KoZoomMode.h:24
static bool qFuzzyCompare(half p1, half p2)