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 
0008 #ifndef KISMIRRORAXISCONFIG_H
0009 #define KISMIRRORAXISCONFIG_H
0010 
0011 #include <QScopedPointer>
0012 
0013 #include "kritaui_export.h"
0014 #include <boost/operators.hpp>
0015 
0016 class QDomElement;
0017 class QDomDocument;
0018 
0019 /**
0020  * @brief The KisMirrorAxisConfig class stores configuration for the KisMirrorAxis
0021  * canvas decoration. Contents are saved to/loaded from KRA documents.
0022  */
0023 
0024 class KRITAUI_EXPORT KisMirrorAxisConfig : public QObject, boost::equality_comparable<KisMirrorAxisConfig>
0025 {
0026     Q_OBJECT
0027 
0028 public:
0029     KisMirrorAxisConfig();
0030     ~KisMirrorAxisConfig();
0031 
0032     KisMirrorAxisConfig(const KisMirrorAxisConfig &rhs);
0033     KisMirrorAxisConfig& operator=(const KisMirrorAxisConfig& rhs);
0034     bool operator==(const KisMirrorAxisConfig& rhs) const;
0035 
0036     bool mirrorHorizontal() const;
0037     void setMirrorHorizontal(bool state);
0038 
0039     bool mirrorVertical() const;
0040     void setMirrorVertical(bool state);
0041 
0042     bool lockHorizontal() const;
0043     void setLockHorizontal(bool state);
0044 
0045     bool lockVertical() const;
0046     void setLockVertical(bool state);
0047 
0048     bool hideVerticalDecoration() const;
0049     void setHideVerticalDecoration(bool state);
0050 
0051     bool hideHorizontalDecoration() const;
0052     void setHideHorizontalDecoration(bool state);
0053 
0054     float handleSize() const;
0055     void setHandleSize(float size);
0056 
0057     float horizontalHandlePosition() const;
0058     void setHorizontalHandlePosition(float position);
0059 
0060     float verticalHandlePosition() const;
0061     void setVerticalHandlePosition(float position);
0062 
0063     QPointF axisPosition() const;
0064     void setAxisPosition(QPointF position);
0065 
0066     /**
0067      * @brief saveToXml() function for KisKraSaver
0068      * @param doc
0069      * @param tag
0070      * @return
0071      */
0072     QDomElement saveToXml(QDomDocument& doc, const QString &tag) const;
0073 
0074     /**
0075      * @brief loadFromXml() function for KisKraLoader
0076      * @param parent element
0077      * @return
0078      */
0079     bool loadFromXml(const QDomElement &parent);
0080 
0081     /**
0082      * @brief Check whether the config object was changed, or is the class default.
0083      * @return true, if the object is default; false, if the config was changed
0084      */
0085     bool isDefault() const;
0086 
0087 private:
0088     class Private;
0089     const QScopedPointer<Private> d;
0090 };
0091 
0092 #endif // KISMIRRORAXISCONFIG_H