Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_brush_option.cpp
Go to the documentation of this file.
1/* This file is part of the KDE project
2 * SPDX-FileCopyrightText: 2008 Boudewijn Rempt <boud@valdyas.org>
3 * SPDX-FileCopyrightText: 2008 Sven Langkamp <sven.langkamp@gmail.com>
4 *
5 * SPDX-License-Identifier: LGPL-2.0-or-later
6 */
7
8#include "kis_brush_option.h"
9
10#include <QDomDocument>
11#include <QDomElement>
12
15#include <kis_brush.h>
16
19#include <KoAbstractGradient.h>
21
23{
24 if (!m_brush) return;
25
26 QDomDocument d;
27 QDomElement e = d.createElement("Brush");
28 m_brush->toXML(d, e);
29 d.appendChild(e);
30 setting->setProperty("brush_definition", d.toString());
31}
32
34{
35 QDomElement element;
36
37 QString brushDefinition = setting->getString("brush_definition");
38
39 if (!brushDefinition.isEmpty()) {
40 QDomDocument d;
41 d.setContent(brushDefinition, false);
42 element = d.firstChildElement("Brush");
43 }
44
45 return element;
46}
47
49{
50 QDomElement element = getBrushXMLElement(setting);
51 if (!element.isNull()) {
52 m_brush = KisBrush::fromXML(element, resourcesInterface);
53 if (m_brush && m_brush->applyingGradient() && canvasResourcesInterface) {
54 KoAbstractGradientSP gradient = canvasResourcesInterface->resource(KoCanvasResource::CurrentGradient).value<KoAbstractGradientSP>()->cloneAndBakeVariableColors(canvasResourcesInterface);
55 m_brush->setGradient(gradient);
56 }
57 }
58}
59
61{
63 QDomElement element = getBrushXMLElement(settings);
64 if (element.isNull()) return resources;
65
66 KoResourceLoadResult result = KisBrush::fromXMLLoadResult(element, resourcesInterface);
67
68 KoResourceSP resource = result.resource();
69 if (!resource || !resource->isEphemeral()) {
70 resources << result;
71 }
72
73 return resources;
74}
75
77{
78 Q_UNUSED(settings);
79 Q_UNUSED(resourcesInterface);
80 return {};
81}
82
84{
85 QList<KoResourceSP> resources;
86
87 QDomElement element = getBrushXMLElement(settings);
88 if (element.isNull()) return ALPHAMASK;
89
90 KisBrushSP brush = KisBrush::fromXML(element, resourcesInterface);
91
92 return brush ? brush->brushApplication() : ALPHAMASK;
93}
94
95#ifdef HAVE_THREADED_TEXT_RENDERING_WORKAROUND
96
98
99bool KisBrushOptionProperties::isTextBrush(const KisPropertiesConfiguration *setting)
100{
101 static QString textBrushId = KisTextBrushFactory().id();
102
103 QDomElement element = getBrushXMLElement(setting);
104 QString brushType = element.attribute("type");
105
106 return brushType == textBrushId;
107}
108
109#endif /* HAVE_THREADED_TEXT_RENDERING_WORKAROUND */
110
115
enumBrushApplication brushApplication(const KisPropertiesConfiguration *settings, KisResourcesInterfaceSP resourcesInterface)
QList< KoResourceLoadResult > prepareEmbeddedResourcesImpl(const KisPropertiesConfiguration *settings, KisResourcesInterfaceSP resourcesInterface) const override
void readOptionSettingResourceImpl(const KisPropertiesConfiguration *setting, KisResourcesInterfaceSP resourcesInterface, KoCanvasResourcesInterfaceSP canvasResourcesInterface) override
void writeOptionSettingImpl(KisPropertiesConfiguration *setting) const override
QList< KoResourceLoadResult > prepareLinkedResourcesImpl(const KisPropertiesConfiguration *settings, KisResourcesInterfaceSP resourcesInterface) const override
void setBrush(KisBrushSP brush)
static KisBrushSP fromXML(const QDomElement &element, KisResourcesInterfaceSP resourcesInterface)
static KoResourceLoadResult fromXMLLoadResult(const QDomElement &element, KisResourcesInterfaceSP resourcesInterface)
QString id() const override
KoResourceSP resource() const noexcept
enumBrushApplication
Definition kis_brush.h:38
@ ALPHAMASK
Definition kis_brush.h:39
QDomElement getBrushXMLElement(const KisPropertiesConfiguration *setting)
QString getString(const QString &name, const QString &def=QString()) const
virtual void setProperty(const QString &name, const QVariant &value)