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_
0009 #define KIS_ABR_BRUSH_
0010 
0011 #include <QImage>
0012 #include <QVector>
0013 
0014 #include <kis_scaling_size_brush.h>
0015 #include <kis_types.h>
0016 #include <kis_shared.h>
0017 
0018 #include "kritabrush_export.h"
0019 
0020 class KisQImagemask;
0021 class KisAbrBrushCollection;
0022 typedef KisSharedPtr<KisQImagemask> KisQImagemaskSP;
0023 
0024 class QString;
0025 class QIODevice;
0026 
0027 
0028 class BRUSH_EXPORT KisAbrBrush : public KisScalingSizeBrush
0029 {
0030 
0031 public:
0032 
0033     /// Construct brush to load filename later as brush
0034     KisAbrBrush(const QString& filename, KisAbrBrushCollection *parent);
0035     KisAbrBrush(const KisAbrBrush& rhs);
0036     KisAbrBrush(const KisAbrBrush& rhs, KisAbrBrushCollection *parent);
0037     KisAbrBrush &operator=(const KisAbrBrush &rhs) = delete;
0038     KoResourceSP clone() const override;
0039 
0040     bool isSerializable() const override;
0041     bool loadFromDevice(QIODevice *dev, KisResourcesInterfaceSP resourcesInterface) override;
0042     bool saveToDevice(QIODevice *dev) const override;
0043 
0044     QPair<QString, QString> resourceType() const override {
0045         return QPair<QString, QString>(ResourceType::Brushes, ResourceSubType::AbrBrushes);
0046     }
0047 
0048     /**
0049      * @return default file extension for saving the brush
0050      */
0051     QString defaultFileExtension() const override;
0052 
0053     QImage brushTipImage() const override;
0054 
0055     friend class KisAbrBrushCollection;
0056 
0057     void setBrushTipImage(const QImage& image) override;
0058 
0059     void toXML(QDomDocument& d, QDomElement& e) const override;
0060 
0061 private:
0062     KisAbrBrushCollection *m_parent;
0063 };
0064 
0065 typedef QSharedPointer<KisAbrBrush> KisAbrBrushSP;
0066 
0067 #endif // KIS_ABR_BRUSH_
0068