Krita Source Code Documentation
Loading...
Searching...
No Matches
KisTextBrushFactory Class Reference

#include <kis_text_brush_factory.h>

+ Inheritance diagram for KisTextBrushFactory:

Public Member Functions

KoResourceLoadResult createBrush (const KisBrushModel::BrushData &data, KisResourcesInterfaceSP resourcesInterface) override
 
KoResourceLoadResult createBrush (const QDomElement &brushDefinition, KisResourcesInterfaceSP resourcesInterface) override
 
std::optional< KisBrushModel::BrushDatacreateBrushModel (const QDomElement &element, KisResourcesInterfaceSP resourcesInterface) override
 
QString id () const override
 
 KisTextBrushFactory ()
 
void toXML (QDomDocument &doc, QDomElement &element, const KisBrushModel::BrushData &model) override
 
 ~KisTextBrushFactory () override
 
- Public Member Functions inherited from KisBrushFactory
 KisBrushFactory ()
 
virtual QString name () const
 
virtual ~KisBrushFactory ()
 

Detailed Description

A brush factory can create a new brush instance based on a properties object that contains a serialized representation of the object.

Definition at line 19 of file kis_text_brush_factory.h.

Constructor & Destructor Documentation

◆ KisTextBrushFactory()

KisTextBrushFactory::KisTextBrushFactory ( )
inline

Definition at line 24 of file kis_text_brush_factory.h.

24{}

◆ ~KisTextBrushFactory()

KisTextBrushFactory::~KisTextBrushFactory ( )
inlineoverride

Definition at line 25 of file kis_text_brush_factory.h.

25{}

Member Function Documentation

◆ createBrush() [1/2]

KoResourceLoadResult KisTextBrushFactory::createBrush ( const KisBrushModel::BrushData & data,
KisResourcesInterfaceSP resourcesInterface )
overridevirtual

Implements KisBrushFactory.

Definition at line 27 of file kis_text_brush_factory.cpp.

28{
29 Q_UNUSED(resourcesInterface);
30
32
33 QFont font;
34 font.fromString(data.textBrush.font);
35
36 brush->setText(data.textBrush.text);
37 brush->setFont(font);
38 brush->setPipeMode(data.textBrush.usePipeMode);
39 brush->setSpacing(data.common.spacing);
40 brush->updateBrush();
41
42 return brush;
43}
QSharedPointer< KisTextBrush > KisTextBrushSP

References KisBrushModel::BrushData::common, KisBrushModel::TextBrushData::font, KisBrushModel::CommonData::spacing, KisBrushModel::TextBrushData::text, KisBrushModel::BrushData::textBrush, and KisBrushModel::TextBrushData::usePipeMode.

◆ createBrush() [2/2]

KoResourceLoadResult KisTextBrushFactory::createBrush ( const QDomElement & brushDefinition,
KisResourcesInterfaceSP resourcesInterface )
overridevirtual

Create a new brush from the given data or return an existing KisBrush object. If this call leads to the creation of a resource, it should be added to the resource provider, too.

Implements KisBrushFactory.

Definition at line 14 of file kis_text_brush_factory.cpp.

15{
16 std::optional<KisBrushModel::BrushData> data =
17 createBrushModel(brushDefinition, resourcesInterface);
18
19 if (data) {
20 return createBrush(*data, resourcesInterface);
21 }
22
23 // fallback, should never reach!
25}
std::optional< KisBrushModel::BrushData > createBrushModel(const QDomElement &element, KisResourcesInterfaceSP resourcesInterface) override
KoResourceLoadResult createBrush(const QDomElement &brushDefinition, KisResourcesInterfaceSP resourcesInterface) override
A simple wrapper object for the main information about the resource.
const QString Brushes

References ResourceType::Brushes, createBrush(), and createBrushModel().

◆ createBrushModel()

std::optional< KisBrushModel::BrushData > KisTextBrushFactory::createBrushModel ( const QDomElement & element,
KisResourcesInterfaceSP resourcesInterface )
overridevirtual

Implements KisBrushFactory.

Definition at line 46 of file kis_text_brush_factory.cpp.

47{
48 Q_UNUSED(resourcesInterface);
49
51
53
54 brush.common.spacing = KisDomUtils::toDouble(element.attribute("spacing", "1.0"));
55
56 // TODO: these options are not yet present in the file format for the text brush!
57 //brush.common.angle = KisDomUtils::toDouble(brushDefinition.attribute("angle", "0.0"));
58 //brush.common.useAutoSpacing = KisDomUtils::toInt(brushDefinition.attribute("useAutoSpacing", "0"));
59 //brush.common.autoSpacingCoeff = KisDomUtils::toDouble(brushDefinition.attribute("autoSpacingCoeff", "1.0"));
60
61 brush.textBrush.text = element.attribute("text", "The quick brown fox ate your text");
62 brush.textBrush.font = element.attribute("font");
63 brush.textBrush.usePipeMode = element.attribute("pipe", "false") == "true";
64
65 // TODO: how to get the size of the brush without its creation? lazy evaluation?
66 // brush.textBrush.baseSize = {66, 77};
67
68 brush.textBrush.scale = 1.0;
69
70 return {brush};
71}
double toDouble(const QString &str, bool *ok=nullptr)

References KisBrushModel::BrushData::common, KisBrushModel::TextBrushData::font, KisBrushModel::TextBrushData::scale, KisBrushModel::CommonData::spacing, KisBrushModel::TextBrushData::text, KisBrushModel::Text, KisBrushModel::BrushData::textBrush, KisDomUtils::toDouble(), KisBrushModel::BrushData::type, and KisBrushModel::TextBrushData::usePipeMode.

◆ id()

QString KisTextBrushFactory::id ( ) const
inlineoverridevirtual

Implements KisBrushFactory.

Definition at line 27 of file kis_text_brush_factory.h.

27 {
28 return "kis_text_brush";
29 }

◆ toXML()

void KisTextBrushFactory::toXML ( QDomDocument & doc,
QDomElement & element,
const KisBrushModel::BrushData & model )
overridevirtual

Implements KisBrushFactory.

Definition at line 73 of file kis_text_brush_factory.cpp.

74{
75 Q_UNUSED(doc);
76
77 e.setAttribute("type", id());
78 e.setAttribute("BrushVersion", "2");
79
80 e.setAttribute("spacing", KisDomUtils::toString(model.common.spacing));
81 e.setAttribute("text", model.textBrush.text);
82 e.setAttribute("font", model.textBrush.font);
83 e.setAttribute("pipe", model.textBrush.usePipeMode ? "true" : "false");
84 // TODO: scale is not saved
85}
QString toString(const QString &value)

References KisBrushModel::BrushData::common, KisBrushModel::TextBrushData::font, KisBrushModel::CommonData::spacing, KisBrushModel::TextBrushData::text, KisBrushModel::BrushData::textBrush, KisDomUtils::toString(), and KisBrushModel::TextBrushData::usePipeMode.


The documentation for this class was generated from the following files: