Krita Source Code Documentation
Loading...
Searching...
No Matches
KisMirrorAxisConfig.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2019 Anna Medonosova <anna.medonosova@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#include <kis_dom_utils.h>
8#include <QPointF>
9
10#include "KisMirrorAxisConfig.h"
11
12
13class Q_DECL_HIDDEN KisMirrorAxisConfig::Private
14{
15public:
17 : mirrorHorizontal(false)
18 , mirrorVertical(false)
19 , lockHorizontal(false)
20 , lockVertical(false)
21 , hideVerticalDecoration(false)
22 , hideHorizontalDecoration(false)
23 , handleSize(32.f)
24 , horizontalHandlePosition(64.f)
25 , verticalHandlePosition(64.f)
26 , axisPosition(QPointF(0.f,0.f))
27 {}
28
29 bool operator==(const Private& rhs) {
30 return mirrorHorizontal == rhs.mirrorHorizontal &&
31 mirrorVertical == rhs.mirrorVertical &&
32 lockHorizontal == rhs.lockHorizontal &&
33 lockVertical == rhs.lockVertical &&
34 hideHorizontalDecoration == rhs.hideHorizontalDecoration &&
35 hideVerticalDecoration == rhs.hideVerticalDecoration &&
36 handleSize == rhs.handleSize &&
37 horizontalHandlePosition == rhs.horizontalHandlePosition &&
38 verticalHandlePosition == rhs.verticalHandlePosition &&
39 axisPosition == rhs.axisPosition;
40 }
41
48
52
53 QPointF axisPosition;
54};
55
56
58 : QObject()
59 , d(new Private())
60{
61
62}
63
68
70 : QObject()
71 , d(new Private(*rhs.d))
72{
73
74}
75
77{
78 if (&rhs != this) {
79 *d = *rhs.d;
80 }
81
82 return *this;
83}
84
86{
88 KIS_ASSERT(rhs.d);
89
90 return *d == *rhs.d;
91}
92
94{
95 return d->mirrorHorizontal;
96}
97
99{
100 d->mirrorHorizontal = state;
101}
102
104{
105 return d->mirrorVertical;
106}
107
109{
110 d->mirrorVertical = state;
111}
112
114{
115 return d->lockHorizontal;
116}
117
119{
120 d->lockHorizontal = state;
121}
122
124{
125 return d->lockVertical;
126}
127
129{
130 d->lockVertical = state;
131}
132
134{
135 return d->hideVerticalDecoration;
136}
137
139{
140 d->hideVerticalDecoration = state;
141}
142
144{
145 return d->hideHorizontalDecoration;
146}
147
149{
150 d->hideHorizontalDecoration = state;
151}
152
154{
155 return d->handleSize;
156}
157
159{
160 d->handleSize = size;
161}
162
164{
165 return d->horizontalHandlePosition;
166}
167
169{
170 d->horizontalHandlePosition = position;
171}
172
174{
175 return d->verticalHandlePosition;
176}
177
179{
180 d->verticalHandlePosition = position;
181}
182
184{
185 return d->axisPosition;
186}
187
189{
190 d->axisPosition = position;
191}
192
193QDomElement KisMirrorAxisConfig::saveToXml(QDomDocument &doc, const QString &tag) const
194{
195 QDomElement mirrorAxisElement = doc.createElement(tag);
196 KisDomUtils::saveValue(&mirrorAxisElement, "mirrorHorizontal", d->mirrorHorizontal);
197 KisDomUtils::saveValue(&mirrorAxisElement, "mirrorVertical", d->mirrorVertical);
198 KisDomUtils::saveValue(&mirrorAxisElement, "lockHorizontal", d->lockHorizontal);
199 KisDomUtils::saveValue(&mirrorAxisElement, "lockVertical", d->lockVertical);
200
201 KisDomUtils::saveValue(&mirrorAxisElement, "hideHorizontalDecoration", d->hideHorizontalDecoration);
202 KisDomUtils::saveValue(&mirrorAxisElement, "hideVerticalDecoration", d->hideVerticalDecoration);
203
204 KisDomUtils::saveValue(&mirrorAxisElement, "handleSize", d->handleSize);
205
206 KisDomUtils::saveValue(&mirrorAxisElement, "horizontalHandlePosition", d->horizontalHandlePosition);
207 KisDomUtils::saveValue(&mirrorAxisElement, "verticalHandlePosition", d->verticalHandlePosition);
208
209 KisDomUtils::saveValue(&mirrorAxisElement, "axisPosition", d->axisPosition);
210
211 return mirrorAxisElement;
212}
213
214bool KisMirrorAxisConfig::loadFromXml(const QDomElement &parent)
215{
216 bool result = true;
217
218 result &= KisDomUtils::loadValue(parent, "mirrorHorizontal", &d->mirrorHorizontal);
219 result &= KisDomUtils::loadValue(parent, "mirrorVertical", &d->mirrorVertical);
220 result &= KisDomUtils::loadValue(parent, "lockHorizontal", &d->lockHorizontal);
221 result &= KisDomUtils::loadValue(parent, "lockVertical", &d->lockVertical);
222
223 result &= KisDomUtils::loadValue(parent, "hideHorizontalDecoration", &d->hideHorizontalDecoration);
224 result &= KisDomUtils::loadValue(parent, "hideVerticalDecoration", &d->hideVerticalDecoration);
225
226 result &= KisDomUtils::loadValue(parent, "handleSize", &d->handleSize);
227
228 result &= KisDomUtils::loadValue(parent, "horizontalHandlePosition", &d->horizontalHandlePosition);
229 result &= KisDomUtils::loadValue(parent, "verticalHandlePosition", &d->verticalHandlePosition);
230 result &= KisDomUtils::loadValue(parent, "axisPosition", &d->axisPosition);
231
232 return result;
233}
234
236{
237 KisMirrorAxisConfig defaultConfig;
238 return *this == defaultConfig;
239}
The KisMirrorAxisConfig class stores configuration for the KisMirrorAxis canvas decoration....
void setVerticalHandlePosition(float position)
void setLockVertical(bool state)
const QScopedPointer< Private > d
void setHandleSize(float size)
bool operator==(const Private &rhs)
KisMirrorAxisConfig & operator=(const KisMirrorAxisConfig &rhs)
QDomElement saveToXml(QDomDocument &doc, const QString &tag) const
saveToXml() function for KisKraSaver
void setHorizontalHandlePosition(float position)
bool loadFromXml(const QDomElement &parent)
loadFromXml() function for KisKraLoader
void setMirrorVertical(bool state)
void setLockHorizontal(bool state)
void setAxisPosition(QPointF position)
void setMirrorHorizontal(bool state)
void setHideHorizontalDecoration(bool state)
bool isDefault() const
Check whether the config object was changed, or is the class default.
void setHideVerticalDecoration(bool state)
#define KIS_ASSERT(cond)
Definition kis_assert.h:33
void saveValue(QDomElement *parent, const QString &tag, const QSize &size)
bool loadValue(const QDomElement &e, float *v)