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 #include "kis_abr_brush.h" 0009 #include "kis_abr_brush_collection.h" 0010 0011 #include <QDomElement> 0012 #include <QFile> 0013 #include <QImage> 0014 #include <QPoint> 0015 #include <QByteArray> 0016 #include <QBuffer> 0017 #include <QCryptographicHash> 0018 0019 #include <klocalizedstring.h> 0020 0021 #include <KoColor.h> 0022 0023 #include "kis_datamanager.h" 0024 #include "kis_paint_device.h" 0025 #include "kis_global.h" 0026 #include "kis_image.h" 0027 0028 #define DEFAULT_SPACING 0.25 0029 0030 KisAbrBrush::KisAbrBrush(const QString& filename, KisAbrBrushCollection *parent) 0031 : KisScalingSizeBrush(filename) 0032 , m_parent(parent) 0033 { 0034 setBrushType(INVALID); 0035 setSpacing(DEFAULT_SPACING); 0036 } 0037 0038 KisAbrBrush::KisAbrBrush(const KisAbrBrush& rhs) 0039 : KisScalingSizeBrush(rhs) 0040 , m_parent(0) 0041 { 0042 // Warning! The brush became detached from the parent collection! 0043 } 0044 0045 KisAbrBrush::KisAbrBrush(const KisAbrBrush& rhs, KisAbrBrushCollection *parent) 0046 : KisScalingSizeBrush(rhs) 0047 , m_parent(parent) 0048 { 0049 } 0050 0051 KoResourceSP KisAbrBrush::clone() const 0052 { 0053 return KoResourceSP(new KisAbrBrush(*this)); 0054 } 0055 0056 bool KisAbrBrush::isSerializable() const 0057 { 0058 return false; 0059 } 0060 0061 bool KisAbrBrush::loadFromDevice(QIODevice *dev, KisResourcesInterfaceSP resourcesInterface) 0062 { 0063 Q_UNUSED(dev); 0064 Q_UNUSED(resourcesInterface); 0065 return false; 0066 } 0067 0068 bool KisAbrBrush::saveToDevice(QIODevice *dev) const 0069 { 0070 Q_UNUSED(dev); 0071 return false; 0072 } 0073 0074 void KisAbrBrush::setBrushTipImage(const QImage& image) 0075 { 0076 setValid(true); 0077 setBrushType(MASK); 0078 0079 KisBrush::setBrushTipImage(image); 0080 } 0081 0082 void KisAbrBrush::toXML(QDomDocument& d, QDomElement& e) const 0083 { 0084 e.setAttribute("name", name()); // legacy 0085 predefinedBrushToXML("abr_brush", e); 0086 KisBrush::toXML(d, e); 0087 } 0088 0089 QString KisAbrBrush::defaultFileExtension() const 0090 { 0091 return QString(); 0092 } 0093 0094 QImage KisAbrBrush::brushTipImage() const 0095 { 0096 if (KisBrush::brushTipImage().isNull() && m_parent) { 0097 m_parent->load(); 0098 } 0099 return KisBrush::brushTipImage(); 0100 }