File indexing completed on 2024-05-19 04:28:58
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 #include "kis_image.h" 0009 #include "kis_pointer_utils.h" 0010 0011 KisImageViewConverter::KisImageViewConverter() 0012 : KisImageViewConverter(KisImageSP()) 0013 { 0014 } 0015 0016 KisImageViewConverter::KisImageViewConverter(const KisImageWSP image) 0017 : KisImageViewConverter(toQShared(new KisImageResolutionProxy(image))) 0018 { 0019 } 0020 0021 KisImageViewConverter::KisImageViewConverter(KisImageResolutionProxySP proxy) 0022 : m_proxy(proxy) 0023 { 0024 setZoom(0.1); // set the superclass to not hit the optimization of zoom=100% 0025 } 0026 0027 KisImageViewConverter::KisImageViewConverter(const KisImageViewConverter &rhs) 0028 : KisClonableViewConverter(rhs) 0029 , m_proxy(rhs.m_proxy) 0030 { 0031 } 0032 0033 KisImageViewConverter::~KisImageViewConverter() 0034 { 0035 } 0036 0037 KisClonableViewConverter *KisImageViewConverter::clone() const 0038 { 0039 return new KisImageViewConverter(*this); 0040 } 0041 0042 void KisImageViewConverter::setImage(KisImageWSP image) 0043 { 0044 m_proxy = m_proxy->createOrCloneDetached(image); 0045 } 0046 0047 // remember here; document is postscript points; view is krita pixels. 0048 0049 void KisImageViewConverter::zoom(qreal *zoomX, qreal *zoomY) const 0050 { 0051 Q_ASSERT(zoomX); 0052 Q_ASSERT(zoomY); 0053 *zoomX = effectiveXRes(); 0054 *zoomY = effectiveYRes(); 0055 } 0056 0057 /// convert from flake to krita units 0058 qreal KisImageViewConverter::documentToViewX(qreal documentX) const { 0059 return documentX * effectiveXRes(); 0060 } 0061 0062 /// convert from flake to krita units 0063 qreal KisImageViewConverter::documentToViewY(qreal documentY) const { 0064 return documentY * effectiveYRes(); 0065 } 0066 0067 /// convert from krita to flake units 0068 qreal KisImageViewConverter::viewToDocumentX(qreal viewX) const { 0069 return viewX / effectiveXRes(); 0070 } 0071 0072 /// convert from krita to flake units 0073 qreal KisImageViewConverter::viewToDocumentY(qreal viewY) const { 0074 return viewY / effectiveYRes(); 0075 } 0076 0077 qreal KisImageViewConverter::zoom() const 0078 { 0079 Q_ASSERT_X(0, "KisImageViewConverter::zoom()", 0080 "Not possible to return a single zoom. " 0081 "Don't use it. Sorry."); 0082 0083 return effectiveXRes(); 0084 } 0085 0086 qreal KisImageViewConverter::effectiveXRes() const 0087 { 0088 return m_proxy->xRes(); 0089 } 0090 0091 qreal KisImageViewConverter::effectiveYRes() const 0092 { 0093 return m_proxy->yRes(); 0094 }