File indexing completed on 2024-05-12 15:56:54
0001 /* 0002 * SPDX-FileCopyrightText: 2006, 2008-2009 Thomas Zander <zander@kde.org> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 #include "KoViewConverter.h" 0007 0008 #include <QPointF> 0009 #include <QRectF> 0010 #include <QTransform> 0011 0012 KoViewConverter::KoViewConverter() 0013 : m_zoomLevel(1.0) 0014 { 0015 } 0016 0017 QPointF KoViewConverter::documentToView(const QPointF &documentPoint) const 0018 { 0019 if (qFuzzyCompare(m_zoomLevel, 1)) 0020 return documentPoint; 0021 return QPointF(documentToViewX(documentPoint.x()), documentToViewY(documentPoint.y())); 0022 } 0023 0024 QPointF KoViewConverter::viewToDocument(const QPointF &viewPoint) const 0025 { 0026 if (qFuzzyCompare(m_zoomLevel, 1)) 0027 return viewPoint; 0028 return QPointF(viewToDocumentX(viewPoint.x()), viewToDocumentY(viewPoint.y())); 0029 } 0030 0031 QRectF KoViewConverter::documentToView(const QRectF &documentRect) const 0032 { 0033 if (qFuzzyCompare(m_zoomLevel, 1)) 0034 return documentRect; 0035 return QRectF(documentToView(documentRect.topLeft()), documentToView(documentRect.size())); 0036 } 0037 0038 QRectF KoViewConverter::viewToDocument(const QRectF &viewRect) const 0039 { 0040 if (qFuzzyCompare(m_zoomLevel, 1)) 0041 return viewRect; 0042 return QRectF(viewToDocument(viewRect.topLeft()), viewToDocument(viewRect.size())); 0043 } 0044 0045 QSizeF KoViewConverter::documentToView(const QSizeF &documentSize) const 0046 { 0047 if (qFuzzyCompare(m_zoomLevel, 1)) 0048 return documentSize; 0049 return QSizeF(documentToViewX(documentSize.width()), documentToViewY(documentSize.height())); 0050 } 0051 0052 QSizeF KoViewConverter::viewToDocument(const QSizeF &viewSize) const 0053 { 0054 if (qFuzzyCompare(m_zoomLevel, 1)) 0055 return viewSize; 0056 return QSizeF(viewToDocumentX(viewSize.width()), viewToDocumentY(viewSize.height())); 0057 } 0058 0059 void KoViewConverter::zoom(qreal *zoomX, qreal *zoomY) const 0060 { 0061 *zoomX = m_zoomLevel; 0062 *zoomY = m_zoomLevel; 0063 } 0064 0065 qreal KoViewConverter::documentToViewX(qreal documentX) const 0066 { 0067 return documentX * m_zoomLevel; 0068 } 0069 0070 qreal KoViewConverter::documentToViewY(qreal documentY) const 0071 { 0072 return documentY * m_zoomLevel; 0073 } 0074 0075 qreal KoViewConverter::viewToDocumentX(qreal viewX) const 0076 { 0077 return viewX / m_zoomLevel; 0078 } 0079 0080 qreal KoViewConverter::viewToDocumentY(qreal viewY) const 0081 { 0082 return viewY / m_zoomLevel; 0083 } 0084 0085 0086 0087 void KoViewConverter::setZoom(qreal zoom) 0088 { 0089 if (qFuzzyCompare(zoom, qreal(0.0)) || qFuzzyCompare(zoom, qreal(1.0))) { 0090 zoom = 1; 0091 } 0092 m_zoomLevel = zoom; 0093 } 0094 0095 qreal KoViewConverter::zoom() const 0096 { 0097 return m_zoomLevel; 0098 } 0099 0100 QTransform KoViewConverter::documentToView() const 0101 { 0102 qreal zoomX, zoomY; 0103 zoom(&zoomX, &zoomY); 0104 return QTransform::fromScale(zoomX, zoomY); 0105 } 0106 0107 QTransform KoViewConverter::viewToDocument() const 0108 { 0109 qreal zoomX, zoomY; 0110 zoom(&zoomX, &zoomY); 0111 return QTransform::fromScale(1.0 / zoomX, 1.0 / zoomY); 0112 } 0113 0114 QTransform KoViewConverter::viewToWidget() const 0115 { 0116 return QTransform(); 0117 } 0118 0119 QTransform KoViewConverter::widgetToView() const 0120 { 0121 return QTransform(); 0122 }