Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_svg_brush.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2010 Cyrille Berger <cberger@cberger.net>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#include "kis_svg_brush.h"
8
9#include <QDomElement>
10#include <QFileInfo>
11#include <QPainter>
12#include <QImageReader>
13#include <QSvgRenderer>
14
15KisSvgBrush::KisSvgBrush(const QString& filename)
16 : KisScalingSizeBrush(filename)
17{
19 setSpacing(0.25);
20}
21
24 , m_svg(rhs.m_svg)
25{
26}
27
29{
30 return KoResourceSP(new KisSvgBrush(*this));
31}
32
33bool KisSvgBrush::loadFromDevice(QIODevice *dev, KisResourcesInterfaceSP resourcesInterface)
34{
35 Q_UNUSED(resourcesInterface);
36
37 m_svg = dev->readAll();
38
39 QSvgRenderer renderer(m_svg);
40
41 QRect box = renderer.viewBox();
42 if (box.isEmpty()) return false;
43
44 QImage image_(1000, (1000 * box.height()) / box.width(), QImage::Format_ARGB32);
45 {
46 QPainter p(&image_);
47 p.fillRect(0, 0, image_.width(), image_.height(), Qt::white);
48 renderer.render(&p);
49 }
50
51 QVector<QRgb> table;
52 for (int i = 0; i < 256; ++i) table.push_back(qRgb(i, i, i));
53 image_ = image_.convertToFormat(QImage::Format_Indexed8, table);
54
55 setBrushTipImage(image_);
56
57 setValid(true);
58
60
63
64 QFileInfo fi(filename());
65 setName(fi.completeBaseName());
66
67 return !brushTipImage().isNull() && valid();
68}
69
70bool KisSvgBrush::saveToDevice(QIODevice *dev) const
71{
72 return dev->write(m_svg.constData(), m_svg.size()) == m_svg.size();
73}
74
76{
77 return QString(".svg");
78}
79
80void KisSvgBrush::toXML(QDomDocument& d, QDomElement& e) const
81{
82 predefinedBrushToXML("svg_brush", e);
84}
const Params2D p
virtual void setSpacing(double spacing)
qint32 width() const
virtual QImage brushTipImage() const
brushImage the image the brush tip can paint with. Not all brush types have a single image.
virtual void setBrushType(enumBrushType type)
void predefinedBrushToXML(const QString &type, QDomElement &e) const
Private *const d
Definition kis_brush.h:387
virtual void toXML(QDomDocument &, QDomElement &) const
virtual void setBrushTipImage(const QImage &image)
void setWidth(qint32 width)
qint32 height() const
void setHeight(qint32 height)
bool saveToDevice(QIODevice *dev) const override
QString defaultFileExtension() const override
KoResourceSP clone() const override
void toXML(QDomDocument &d, QDomElement &e) const override
QByteArray m_svg
KisSvgBrush(const QString &filename)
Construct brush to load filename later as brush.
bool loadFromDevice(QIODevice *dev, KisResourcesInterfaceSP resourcesInterface) override
@ MASK
Definition kis_brush.h:32
@ INVALID
Definition kis_brush.h:31
QSharedPointer< KoResource > KoResourceSP
void setValid(bool valid)
void setName(const QString &name)
QString filename