File indexing completed on 2024-05-12 16:01:32

0001 /*
0002  *  SPDX-FileCopyrightText: 2007 Thomas Zander <zander@kde.org>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #include "kis_image_view_converter.h"
0008 
0009 #include <QTransform>
0010 
0011 
0012 KisImageViewConverter::KisImageViewConverter(const KisImageWSP image)
0013         : m_image(image)
0014 {
0015     Q_ASSERT(image);
0016     setZoom(0.1); // set the superclass to not hit the optimization of zoom=100%
0017 }
0018 
0019 KisClonableViewConverter *KisImageViewConverter::clone() const
0020 {
0021     return new KisImageViewConverter(m_image);
0022 }
0023 
0024 void KisImageViewConverter::setImage(KisImageWSP image)
0025 {
0026     m_image = image;
0027 }
0028 
0029 // remember here; document is postscript points;  view is krita pixels.
0030 
0031 void KisImageViewConverter::zoom(qreal *zoomX, qreal *zoomY) const
0032 {
0033     Q_ASSERT(zoomX);
0034     Q_ASSERT(zoomY);
0035     *zoomX = m_image->xRes();
0036     *zoomY = m_image->yRes();
0037 }
0038 
0039 /// convert from flake to krita units
0040 qreal KisImageViewConverter::documentToViewX(qreal documentX) const {
0041     return documentX * m_image->xRes();
0042 }
0043 
0044 /// convert from flake to krita units
0045 qreal KisImageViewConverter::documentToViewY(qreal documentY) const {
0046     return documentY * m_image->yRes();
0047 }
0048 
0049 /// convert from krita to flake units
0050 qreal KisImageViewConverter::viewToDocumentX(qreal viewX) const {
0051     return viewX / m_image->xRes();
0052 }
0053 
0054 /// convert from krita to flake units
0055 qreal KisImageViewConverter::viewToDocumentY(qreal viewY) const {
0056     return viewY / m_image->yRes();
0057 }
0058 
0059 qreal KisImageViewConverter::zoom() const
0060 {
0061     Q_ASSERT_X(0, "KisImageViewConverter::zoom()",
0062                "Not possible to return a single zoom. "
0063                "Don't use it. Sorry.");
0064 
0065     return m_image->xRes();
0066 }