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 }