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