File indexing completed on 2025-02-23 04:09:02
0001 /* 0002 * SPDX-FileCopyrightText: 2019 Anna Medonosova <anna.medonosova@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include <kis_dom_utils.h> 0008 #include <QPointF> 0009 0010 #include "KisMirrorAxisConfig.h" 0011 0012 0013 class Q_DECL_HIDDEN KisMirrorAxisConfig::Private 0014 { 0015 public: 0016 Private() 0017 : mirrorHorizontal(false) 0018 , mirrorVertical(false) 0019 , lockHorizontal(false) 0020 , lockVertical(false) 0021 , hideVerticalDecoration(false) 0022 , hideHorizontalDecoration(false) 0023 , handleSize(32.f) 0024 , horizontalHandlePosition(64.f) 0025 , verticalHandlePosition(64.f) 0026 , axisPosition(QPointF(0.f,0.f)) 0027 {} 0028 0029 bool operator==(const Private& rhs) { 0030 return mirrorHorizontal == rhs.mirrorHorizontal && 0031 mirrorVertical == rhs.mirrorVertical && 0032 lockHorizontal == rhs.lockHorizontal && 0033 lockVertical == rhs.lockVertical && 0034 hideHorizontalDecoration == rhs.hideHorizontalDecoration && 0035 hideVerticalDecoration == rhs.hideVerticalDecoration && 0036 handleSize == rhs.handleSize && 0037 horizontalHandlePosition == rhs.horizontalHandlePosition && 0038 verticalHandlePosition == rhs.verticalHandlePosition && 0039 axisPosition == rhs.axisPosition; 0040 } 0041 0042 bool mirrorHorizontal; 0043 bool mirrorVertical; 0044 bool lockHorizontal; 0045 bool lockVertical; 0046 bool hideVerticalDecoration; 0047 bool hideHorizontalDecoration; 0048 0049 float handleSize; 0050 float horizontalHandlePosition; 0051 float verticalHandlePosition; 0052 0053 QPointF axisPosition; 0054 }; 0055 0056 0057 KisMirrorAxisConfig::KisMirrorAxisConfig() 0058 : QObject() 0059 , d(new Private()) 0060 { 0061 0062 } 0063 0064 KisMirrorAxisConfig::~KisMirrorAxisConfig() 0065 { 0066 0067 } 0068 0069 KisMirrorAxisConfig::KisMirrorAxisConfig(const KisMirrorAxisConfig &rhs) 0070 : QObject() 0071 , d(new Private(*rhs.d)) 0072 { 0073 0074 } 0075 0076 KisMirrorAxisConfig &KisMirrorAxisConfig::operator=(const KisMirrorAxisConfig &rhs) 0077 { 0078 if (&rhs != this) { 0079 *d = *rhs.d; 0080 } 0081 0082 return *this; 0083 } 0084 0085 bool KisMirrorAxisConfig::operator==(const KisMirrorAxisConfig &rhs) const 0086 { 0087 KIS_ASSERT(d); 0088 KIS_ASSERT(rhs.d); 0089 0090 return *d == *rhs.d; 0091 } 0092 0093 bool KisMirrorAxisConfig::mirrorHorizontal() const 0094 { 0095 return d->mirrorHorizontal; 0096 } 0097 0098 void KisMirrorAxisConfig::setMirrorHorizontal(bool state) 0099 { 0100 d->mirrorHorizontal = state; 0101 } 0102 0103 bool KisMirrorAxisConfig::mirrorVertical() const 0104 { 0105 return d->mirrorVertical; 0106 } 0107 0108 void KisMirrorAxisConfig::setMirrorVertical(bool state) 0109 { 0110 d->mirrorVertical = state; 0111 } 0112 0113 bool KisMirrorAxisConfig::lockHorizontal() const 0114 { 0115 return d->lockHorizontal; 0116 } 0117 0118 void KisMirrorAxisConfig::setLockHorizontal(bool state) 0119 { 0120 d->lockHorizontal = state; 0121 } 0122 0123 bool KisMirrorAxisConfig::lockVertical() const 0124 { 0125 return d->lockVertical; 0126 } 0127 0128 void KisMirrorAxisConfig::setLockVertical(bool state) 0129 { 0130 d->lockVertical = state; 0131 } 0132 0133 bool KisMirrorAxisConfig::hideVerticalDecoration() const 0134 { 0135 return d->hideVerticalDecoration; 0136 } 0137 0138 void KisMirrorAxisConfig::setHideVerticalDecoration(bool state) 0139 { 0140 d->hideVerticalDecoration = state; 0141 } 0142 0143 bool KisMirrorAxisConfig::hideHorizontalDecoration() const 0144 { 0145 return d->hideHorizontalDecoration; 0146 } 0147 0148 void KisMirrorAxisConfig::setHideHorizontalDecoration(bool state) 0149 { 0150 d->hideHorizontalDecoration = state; 0151 } 0152 0153 float KisMirrorAxisConfig::handleSize() const 0154 { 0155 return d->handleSize; 0156 } 0157 0158 void KisMirrorAxisConfig::setHandleSize(float size) 0159 { 0160 d->handleSize = size; 0161 } 0162 0163 float KisMirrorAxisConfig::horizontalHandlePosition() const 0164 { 0165 return d->horizontalHandlePosition; 0166 } 0167 0168 void KisMirrorAxisConfig::setHorizontalHandlePosition(float position) 0169 { 0170 d->horizontalHandlePosition = position; 0171 } 0172 0173 float KisMirrorAxisConfig::verticalHandlePosition() const 0174 { 0175 return d->verticalHandlePosition; 0176 } 0177 0178 void KisMirrorAxisConfig::setVerticalHandlePosition(float position) 0179 { 0180 d->verticalHandlePosition = position; 0181 } 0182 0183 QPointF KisMirrorAxisConfig::axisPosition() const 0184 { 0185 return d->axisPosition; 0186 } 0187 0188 void KisMirrorAxisConfig::setAxisPosition(QPointF position) 0189 { 0190 d->axisPosition = position; 0191 } 0192 0193 QDomElement KisMirrorAxisConfig::saveToXml(QDomDocument &doc, const QString &tag) const 0194 { 0195 QDomElement mirrorAxisElement = doc.createElement(tag); 0196 KisDomUtils::saveValue(&mirrorAxisElement, "mirrorHorizontal", d->mirrorHorizontal); 0197 KisDomUtils::saveValue(&mirrorAxisElement, "mirrorVertical", d->mirrorVertical); 0198 KisDomUtils::saveValue(&mirrorAxisElement, "lockHorizontal", d->lockHorizontal); 0199 KisDomUtils::saveValue(&mirrorAxisElement, "lockVertical", d->lockVertical); 0200 0201 KisDomUtils::saveValue(&mirrorAxisElement, "hideHorizontalDecoration", d->hideHorizontalDecoration); 0202 KisDomUtils::saveValue(&mirrorAxisElement, "hideVerticalDecoration", d->hideVerticalDecoration); 0203 0204 KisDomUtils::saveValue(&mirrorAxisElement, "handleSize", d->handleSize); 0205 0206 KisDomUtils::saveValue(&mirrorAxisElement, "horizontalHandlePosition", d->horizontalHandlePosition); 0207 KisDomUtils::saveValue(&mirrorAxisElement, "verticalHandlePosition", d->verticalHandlePosition); 0208 0209 KisDomUtils::saveValue(&mirrorAxisElement, "axisPosition", d->axisPosition); 0210 0211 return mirrorAxisElement; 0212 } 0213 0214 bool KisMirrorAxisConfig::loadFromXml(const QDomElement &parent) 0215 { 0216 bool result = true; 0217 0218 result &= KisDomUtils::loadValue(parent, "mirrorHorizontal", &d->mirrorHorizontal); 0219 result &= KisDomUtils::loadValue(parent, "mirrorVertical", &d->mirrorVertical); 0220 result &= KisDomUtils::loadValue(parent, "lockHorizontal", &d->lockHorizontal); 0221 result &= KisDomUtils::loadValue(parent, "lockVertical", &d->lockVertical); 0222 0223 result &= KisDomUtils::loadValue(parent, "hideHorizontalDecoration", &d->hideHorizontalDecoration); 0224 result &= KisDomUtils::loadValue(parent, "hideVerticalDecoration", &d->hideVerticalDecoration); 0225 0226 result &= KisDomUtils::loadValue(parent, "handleSize", &d->handleSize); 0227 0228 result &= KisDomUtils::loadValue(parent, "horizontalHandlePosition", &d->horizontalHandlePosition); 0229 result &= KisDomUtils::loadValue(parent, "verticalHandlePosition", &d->verticalHandlePosition); 0230 result &= KisDomUtils::loadValue(parent, "axisPosition", &d->axisPosition); 0231 0232 return result; 0233 } 0234 0235 bool KisMirrorAxisConfig::isDefault() const 0236 { 0237 KisMirrorAxisConfig defaultConfig; 0238 return *this == defaultConfig; 0239 }