Krita Source Code Documentation
Loading...
Searching...
No Matches
KisSensorData.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2022 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#include "KisSensorData.h"
8
10
11#include <QDomDocument>
12#include <QDomElement>
13
15 : id(sensorId),
17{
18}
19
23
25{
26 Q_UNUSED(rect);
27 KIS_SAFE_ASSERT_RECOVER_NOOP(0 && "setBaseCurveRange is not implemented for standard Krita sensors");
28}
29
31{
32 return QRectF(0.0,0.0,1.0,1.0);
33}
34
35void KisSensorData::write(QDomDocument& doc, QDomElement &e) const
36{
37 e.setAttribute("id", id.id());
39 QDomElement curve_elt = doc.createElement("curve");
40 QDomText text = doc.createTextNode(curve);
41 curve_elt.appendChild(text);
42 e.appendChild(curve_elt);
43 }
44}
45
46void KisSensorData::read(const QDomElement& e)
47{
48 KIS_ASSERT(e.attribute("id", "") == id.id());
49 QDomElement curve_elt = e.firstChildElement("curve");
50 if (!curve_elt.isNull()) {
51 curve = curve_elt.text();
52 } else {
54 }
55}
56
58{
59 *this = KisSensorData(id);
60}
61
62KisSensorWithLengthData::KisSensorWithLengthData(const KoID &sensorId, const QLatin1String &lengthTag)
63 : KisSensorData(sensorId)
64 , m_lengthTag(lengthTag.isNull() ? QLatin1String("length") : lengthTag)
65{
66 if (sensorId == FadeId) {
67 isPeriodic = false;
68 length = 1000;
69 } else if (sensorId == DistanceId) {
70 isPeriodic = false;
71 length = 30;
72 } else if (sensorId == TimeId) {
73 isPeriodic = false;
74 length = 30;
75 } else {
76 qFatal("This sensor type \"%s\" has no length associated!", sensorId.id().toLatin1().data());
77 }
78}
79
80void KisSensorWithLengthData::write(QDomDocument &doc, QDomElement &e) const
81{
83 e.setAttribute("periodic", isPeriodic);
84 e.setAttribute(m_lengthTag, length);
85}
86
87void KisSensorWithLengthData::read(const QDomElement &e)
88{
89 reset();
91
92 if (e.hasAttribute("periodic")) {
93 isPeriodic = e.attribute("periodic").toInt();
94 }
95
96 if (e.hasAttribute(m_lengthTag)) {
97 length = e.attribute(m_lengthTag).toInt();
98 }
99}
100
105
110
111void KisDrawingAngleSensorData::write(QDomDocument &doc, QDomElement &e) const
112{
113 KisSensorData::write(doc, e);
114 e.setAttribute("fanCornersEnabled", fanCornersEnabled);
115 e.setAttribute("fanCornersStep", fanCornersStep);
116 e.setAttribute("angleOffset", angleOffset);
117 e.setAttribute("lockedAngleMode", lockedAngleMode);
118}
119
120void KisDrawingAngleSensorData::read(const QDomElement &e)
121{
122 reset();
124
125 if (e.hasAttribute("fanCornersEnabled")) {
126 fanCornersEnabled = e.attribute("fanCornersEnabled").toInt();
127 }
128 if (e.hasAttribute("fanCornersStep")) {
129 fanCornersStep = e.attribute("fanCornersStep").toInt();
130 }
131 if (e.hasAttribute("angleOffset")) {
132 angleOffset = e.attribute("angleOffset").toFloat();
133 }
134 if (e.hasAttribute("lockedAngleMode")) {
135 lockedAngleMode = e.attribute("lockedAngleMode").toInt();
136 }
137}
138
const KoID FadeId("fade", ki18nc("Context: dynamic sensors", "Fade"))
generate a number that increase every time you call it (e.g. per dab)
const KoID DistanceId("distance", ki18nc("Context: dynamic sensors", "Distance"))
generate a number that increase with distance
const KoID DrawingAngleId("drawingangle", ki18nc("Context: dynamic sensors", "Drawing angle"))
number depending on the angle
const KoID TimeId("time", ki18nc("Context: dynamic sensors", "Time"))
generate a number that increase with time
Definition KoID.h:30
QString id() const
Definition KoID.cpp:63
#define KIS_SAFE_ASSERT_RECOVER_NOOP(cond)
Definition kis_assert.h:130
#define KIS_ASSERT(cond)
Definition kis_assert.h:33
const QString DEFAULT_CURVE_STRING
void write(QDomDocument &doc, QDomElement &e) const override
void read(const QDomElement &e) override
virtual void write(QDomDocument &doc, QDomElement &e) const
KisSensorData(const KoID &sensorId)
virtual ~KisSensorData()
virtual void reset()
virtual QRectF baseCurveRange() const
virtual void setBaseCurveRange(const QRectF &rect)
virtual void read(const QDomElement &e)
void read(const QDomElement &e) override
KisSensorWithLengthData(const KoID &sensorId, const QLatin1String &lengthTag={})
QLatin1String m_lengthTag
void write(QDomDocument &doc, QDomElement &e) const override