File indexing completed on 2024-05-12 15:56:08
0001 /* 0002 * SPDX-FileCopyrightText: 2010 Boudewijn Rempt <boud@valdyas.org> 0003 * SPDX-FileCopyrightText: 2010 Lukáš Tvrdý <lukast.dev@gmail.com> 0004 * SPDX-FileCopyrightText: 2007 Eric Lamarque <eric.lamarque@free.fr> 0005 * 0006 * SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 #ifndef KIS_ABR_BRUSH_COLLECTION_H 0009 #define KIS_ABR_BRUSH_COLLECTION_H 0010 0011 #include <QImage> 0012 #include <QVector> 0013 #include <QDataStream> 0014 #include <QString> 0015 #include <kis_debug.h> 0016 0017 #include <kis_scaling_size_brush.h> 0018 #include <kis_types.h> 0019 #include <kis_shared.h> 0020 #include <brushengine/kis_paint_information.h> 0021 #include <kis_abr_brush.h> 0022 0023 0024 class QString; 0025 class QIODevice; 0026 0027 0028 struct AbrInfo; 0029 0030 /** 0031 * load a collection of brushes from an abr file 0032 */ 0033 class BRUSH_EXPORT KisAbrBrushCollection 0034 { 0035 0036 protected: 0037 0038 public: 0039 0040 /// Construct brush to load filename later as brush 0041 KisAbrBrushCollection(const QString& filename); 0042 0043 ~KisAbrBrushCollection() {} 0044 0045 bool load(); 0046 0047 bool loadFromDevice(QIODevice *dev); 0048 0049 bool save(); 0050 0051 bool saveToDevice(QIODevice* dev) const; 0052 0053 bool isLoaded() const; 0054 0055 /** 0056 * @return a preview of the brush 0057 */ 0058 QImage image() const; 0059 0060 /** 0061 * @return default file extension for saving the brush 0062 */ 0063 QString defaultFileExtension() const; 0064 0065 QList<KisAbrBrushSP> brushes() const { 0066 return m_abrBrushes->values(); 0067 } 0068 0069 QSharedPointer<QMap<QString, KisAbrBrushSP>> brushesMap() const { 0070 return m_abrBrushes; 0071 } 0072 0073 KisAbrBrushSP brushByName(QString name) const { 0074 if (m_abrBrushes->contains(name)) { 0075 return m_abrBrushes.data()->operator[](name); 0076 } 0077 return KisAbrBrushSP(); 0078 } 0079 0080 QDateTime lastModified() const { 0081 return m_lastModified; 0082 } 0083 0084 QString filename() const { 0085 return m_filename; 0086 } 0087 0088 protected: 0089 KisAbrBrushCollection(const KisAbrBrushCollection& rhs); 0090 0091 void toXML(QDomDocument& d, QDomElement& e) const; 0092 0093 private: 0094 0095 qint32 abr_brush_load(QDataStream & abr, AbrInfo *abr_hdr, const QString filename, qint32 image_ID, qint32 id); 0096 qint32 abr_brush_load_v12(QDataStream & abr, AbrInfo *abr_hdr, const QString filename, qint32 image_ID, qint32 id); 0097 quint32 abr_brush_load_v6(QDataStream & abr, AbrInfo *abr_hdr, const QString filename, qint32 image_ID, qint32 id); 0098 0099 bool m_isLoaded; 0100 QDateTime m_lastModified; 0101 QString m_filename; 0102 QSharedPointer<QMap<QString, KisAbrBrushSP>> m_abrBrushes; 0103 }; 0104 0105 typedef QSharedPointer<KisAbrBrushCollection> KisAbrBrushCollectionSP; 0106 0107 #endif 0108