Krita Source Code Documentation
Loading...
Searching...
No Matches
KoViewConverter.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2006, 2008-2009 Thomas Zander <zander@kde.org>
3 *
4 * SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6#include "KoViewConverter.h"
8
9#include <QPointF>
10#include <QRectF>
11#include <QTransform>
12
14 : m_zoomLevel(1.0)
15{
16}
17
18QPointF KoViewConverter::documentToView(const QPointF &documentPoint) const
19{
21 return documentPoint;
22 return QPointF(documentToViewX(documentPoint.x()), documentToViewY(documentPoint.y()));
23}
24
25QPointF KoViewConverter::viewToDocument(const QPointF &viewPoint) const
26{
28 return viewPoint;
29 return QPointF(viewToDocumentX(viewPoint.x()), viewToDocumentY(viewPoint.y()));
30}
31
32QRectF KoViewConverter::documentToView(const QRectF &documentRect) const
33{
35 return documentRect;
36 return QRectF(documentToView(documentRect.topLeft()), documentToView(documentRect.size()));
37}
38
39QRectF KoViewConverter::viewToDocument(const QRectF &viewRect) const
40{
42 return viewRect;
43 return QRectF(viewToDocument(viewRect.topLeft()), viewToDocument(viewRect.size()));
44}
45
46QSizeF KoViewConverter::documentToView(const QSizeF &documentSize) const
47{
49 return documentSize;
50 return QSizeF(documentToViewX(documentSize.width()), documentToViewY(documentSize.height()));
51}
52
53QSizeF KoViewConverter::viewToDocument(const QSizeF &viewSize) const
54{
56 return viewSize;
57 return QSizeF(viewToDocumentX(viewSize.width()), viewToDocumentY(viewSize.height()));
58}
59
60void KoViewConverter::zoom(qreal *zoomX, qreal *zoomY) const
61{
62 *zoomX = m_zoomLevel;
63 *zoomY = m_zoomLevel;
64}
65
66qreal KoViewConverter::documentToViewX(qreal documentX) const
67{
68 return documentX * m_zoomLevel;
69}
70
71qreal KoViewConverter::documentToViewY(qreal documentY) const
72{
73 return documentY * m_zoomLevel;
74}
75
76qreal KoViewConverter::viewToDocumentX(qreal viewX) const
77{
78 return viewX / m_zoomLevel;
79}
80
81qreal KoViewConverter::viewToDocumentY(qreal viewY) const
82{
83 return viewY / m_zoomLevel;
84}
85
86
87
89{
90 if (qFuzzyCompare(zoom, qreal(0.0)) || qFuzzyCompare(zoom, qreal(1.0))) {
91 zoom = 1;
92 }
94}
95
97{
98 return m_zoomLevel;
99}
100
102{
103 return { viewToDocument(widgetToView().map(viewPoint)), viewPoint };
104}
105
107{
108 return {docPoint, viewToWidget().map(documentToView(docPoint))};
109}
110
112{
113 qreal zoomX, zoomY;
114 zoom(&zoomX, &zoomY);
115 return QTransform::fromScale(zoomX, zoomY);
116}
117
119{
120 qreal zoomX, zoomY;
121 zoom(&zoomX, &zoomY);
122 return QTransform::fromScale(1.0 / zoomX, 1.0 / zoomY);
123}
124
126{
127 return QTransform();
128}
129
131{
132 return QTransform();
133}
virtual void setZoom(qreal zoom)
QTransform documentToView() const
virtual qreal documentToViewY(qreal documentY) const
QTransform viewToDocument() const
virtual QTransform viewToWidget() const
virtual KoViewTransformStillPoint makeDocStillPoint(const QPointF &docPoint) const
Creates a still point that links the docPoint of the image (in document pixels!) to the corresponding...
virtual QTransform widgetToView() const
virtual qreal viewToDocumentY(qreal viewY) const
qreal zoom() const
virtual qreal documentToViewX(qreal documentX) const
virtual KoViewTransformStillPoint makeWidgetStillPoint(const QPointF &viewPoint) const
Creates a still point that links the viewPoint of the widget to the corresponding point of the image.
virtual qreal viewToDocumentX(qreal viewX) const
static bool qFuzzyCompare(half p1, half p2)