File indexing completed on 2024-06-23 04:27:53
0001 /* 0002 * SPDX-FileCopyrightText: 2017 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef KISTEXTUREMASKINFO_H 0008 #define KISTEXTUREMASKINFO_H 0009 0010 0011 #include <kis_paint_device.h> 0012 #include <QSharedPointer> 0013 #include <QMutex> 0014 0015 0016 #include <boost/operators.hpp> 0017 0018 #include <KoPattern.h> 0019 0020 class KisTextureMaskInfo; 0021 class KisResourcesInterface; 0022 0023 class KisTextureMaskInfo : public boost::equality_comparable<KisTextureMaskInfo> 0024 { 0025 public: 0026 KisTextureMaskInfo(int levelOfDetail, bool preserveAlpha); 0027 KisTextureMaskInfo(const KisTextureMaskInfo &rhs); 0028 0029 ~KisTextureMaskInfo(); 0030 0031 friend bool operator==(const KisTextureMaskInfo &lhs, const KisTextureMaskInfo &rhs); 0032 0033 KisTextureMaskInfo& operator=(const KisTextureMaskInfo &rhs); 0034 0035 bool isValid() const; 0036 0037 int levelOfDetail() const; 0038 0039 bool hasMask() const; 0040 0041 KisPaintDeviceSP mask(); 0042 0043 QRect maskBounds() const; 0044 0045 bool fillProperties(const KisPropertiesConfiguration *setting, KisResourcesInterfaceSP resourcesInterface); 0046 0047 void recalculateMask(); 0048 0049 bool hasAlpha(); 0050 0051 private: 0052 int m_levelOfDetail = 0; 0053 bool m_preserveAlpha = false; 0054 0055 KoPatternSP m_pattern = 0; 0056 0057 qreal m_scale = 1.0; 0058 qreal m_brightness = 0.0; 0059 qreal m_contrast = 1.0; 0060 qreal m_neutralPoint = 0.5; 0061 bool m_invert = false; 0062 0063 int m_cutoffLeft = 0; 0064 int m_cutoffRight = 255; 0065 int m_cutoffPolicy = 0; 0066 0067 KisPaintDeviceSP m_mask; 0068 QRect m_maskBounds; 0069 0070 }; 0071 0072 typedef QSharedPointer<KisTextureMaskInfo> KisTextureMaskInfoSP; 0073 0074 struct KisTextureMaskInfoCache 0075 { 0076 static KisTextureMaskInfoCache *instance(); 0077 KisTextureMaskInfoSP fetchCachedTextureInfo(KisTextureMaskInfoSP info); 0078 0079 private: 0080 QMutex m_mutex; 0081 QSharedPointer<KisTextureMaskInfo> m_lodInfo; 0082 QSharedPointer<KisTextureMaskInfo> m_mainInfo; 0083 }; 0084 0085 #endif // KISTEXTUREMASKINFO_H