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 #ifndef KIS_IMAGE_VIEW_CONVERTER_H 0008 #define KIS_IMAGE_VIEW_CONVERTER_H 0009 0010 #include <kritaui_export.h> 0011 0012 #include "kis_types.h" 0013 #include "KisClonableViewConverter.h" 0014 #include "KisImageResolutionProxy.h" 0015 0016 /** 0017 * ViewConverter to convert from flake-internal points to 0018 * krita-internal pixels and back. You can use this class wherever 0019 * the flake tools or shapes come in contact with the krita-image. 0020 * 0021 * For usage remember that the document here is the flake-points. And 0022 * the view is the krita-pixels. 0023 */ 0024 class KRITAUI_EXPORT KisImageViewConverter : public KisClonableViewConverter 0025 { 0026 public: 0027 /** 0028 * constructor 0029 * @param image the image this viewConverter works for. 0030 */ 0031 KisImageViewConverter(); 0032 KisImageViewConverter(const KisImageWSP image); 0033 KisImageViewConverter(KisImageResolutionProxySP proxy); 0034 KisImageViewConverter(const KisImageViewConverter &rhs); 0035 ~KisImageViewConverter(); 0036 0037 KisClonableViewConverter* clone() const override; 0038 0039 void setImage(KisImageWSP image); 0040 0041 /// reimplemented from superclass 0042 void zoom(qreal *zoomX, qreal *zoomY) const override; 0043 0044 qreal documentToViewX(qreal documentX) const override; 0045 qreal documentToViewY(qreal documentY) const override; 0046 qreal viewToDocumentX(qreal viewX) const override; 0047 qreal viewToDocumentY(qreal viewY) const override; 0048 0049 // This method shouldn't be used for image 0050 qreal zoom() const; 0051 0052 private: 0053 qreal effectiveXRes() const; 0054 qreal effectiveYRes() const; 0055 0056 private: 0057 KisImageResolutionProxySP m_proxy; 0058 }; 0059 0060 using KisImageViewConverterSP = QSharedPointer<KisImageViewConverter>; 0061 0062 #endif