File indexing completed on 2024-05-12 15:58:14
0001 /* 0002 * SPDX-FileCopyrightText: 2010 Boudewijn Rempt <boud@valdyas.org> 0003 * SPDX-FileCopyrightText: 2010 Dmitry Kazakov <dimula73@gmail.com> 0004 * 0005 * SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 #ifndef KIS_DEFAULT_BOUNDS_H 0008 #define KIS_DEFAULT_BOUNDS_H 0009 0010 #include <QRect> 0011 #include "kis_types.h" 0012 #include "kis_default_bounds_base.h" 0013 0014 class KisDefaultBounds; 0015 class KisSelectionDefaultBounds; 0016 class KisSelectionEmptyBounds; 0017 class KisWrapAroundBoundsWrapper; 0018 typedef KisSharedPtr<KisDefaultBounds> KisDefaultBoundsSP; 0019 typedef KisSharedPtr<KisSelectionDefaultBounds> KisSelectionDefaultBoundsSP; 0020 typedef KisSharedPtr<KisSelectionEmptyBounds> KisSelectionEmptyBoundsSP; 0021 typedef KisSharedPtr<KisWrapAroundBoundsWrapper> KisWrapAroundBoundsWrapperSP; 0022 0023 class KRITAIMAGE_EXPORT KisDefaultBounds : public KisDefaultBoundsBase 0024 { 0025 public: 0026 KisDefaultBounds(); 0027 KisDefaultBounds(KisImageWSP image); 0028 ~KisDefaultBounds() override; 0029 0030 QRect bounds() const override; 0031 bool wrapAroundMode() const override; 0032 int currentLevelOfDetail() const override; 0033 int currentTime() const override; 0034 bool externalFrameActive() const override; 0035 void * sourceCookie() const override; 0036 0037 protected: 0038 friend class KisPaintDeviceTest; 0039 static const QRect infiniteRect; 0040 0041 private: 0042 Q_DISABLE_COPY(KisDefaultBounds) 0043 0044 struct Private; 0045 Private * const m_d; 0046 }; 0047 0048 class KRITAIMAGE_EXPORT KisSelectionDefaultBounds : public KisDefaultBoundsBase 0049 { 0050 public: 0051 KisSelectionDefaultBounds(KisPaintDeviceSP parentPaintDevice); 0052 ~KisSelectionDefaultBounds() override; 0053 0054 QRect bounds() const override; 0055 QRect imageBorderRect() const override; 0056 bool wrapAroundMode() const override; 0057 int currentLevelOfDetail() const override; 0058 int currentTime() const override; 0059 bool externalFrameActive() const override; 0060 void * sourceCookie() const override; 0061 0062 private: 0063 Q_DISABLE_COPY(KisSelectionDefaultBounds) 0064 0065 struct Private; 0066 Private * const m_d; 0067 }; 0068 0069 class KRITAIMAGE_EXPORT KisSelectionEmptyBounds : public KisDefaultBounds 0070 { 0071 public: 0072 KisSelectionEmptyBounds(KisImageWSP image); 0073 ~KisSelectionEmptyBounds() override; 0074 QRect bounds() const override; 0075 }; 0076 0077 /** 0078 * @brief The KisWrapAroundBoundsWrapper class 0079 * wrapper around a KisDefaultBoundsBaseSP to enable 0080 * wraparound. Used for patterns. 0081 */ 0082 class KRITAIMAGE_EXPORT KisWrapAroundBoundsWrapper : public KisDefaultBoundsBase 0083 { 0084 public: 0085 KisWrapAroundBoundsWrapper(KisDefaultBoundsBaseSP base, QRect bounds); 0086 ~KisWrapAroundBoundsWrapper() override; 0087 0088 QRect bounds() const override; 0089 bool wrapAroundMode() const override; 0090 int currentLevelOfDetail() const override; 0091 int currentTime() const override; 0092 bool externalFrameActive() const override; 0093 void * sourceCookie() const override; 0094 0095 protected: 0096 friend class KisPaintDeviceTest; 0097 0098 private: 0099 Q_DISABLE_COPY(KisWrapAroundBoundsWrapper) 0100 0101 struct Private; 0102 const QScopedPointer<Private> m_d; 0103 }; 0104 0105 #endif // KIS_DEFAULT_BOUNDS_H