File indexing completed on 2025-02-23 04:09:01

0001 /*
0002  * SPDX-FileCopyrightText: 2014 Arjen Hiemstra <ahiemstra@heimr.nl>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-or-later
0005  *
0006  */
0007 
0008 #ifndef KISMIRRORAXIS_H
0009 #define KISMIRRORAXIS_H
0010 
0011 #include <QScopedPointer>
0012 
0013 #include "kis_canvas_decoration.h"
0014 
0015 class KisView;
0016 class KisCanvasResourceProvider;
0017 class KisMirrorAxisConfig;
0018 
0019 class KisMirrorAxis : public KisCanvasDecoration
0020 {
0021     Q_OBJECT
0022     Q_PROPERTY(float handleSize READ handleSize WRITE setHandleSize NOTIFY handleSizeChanged)
0023 
0024 public:
0025     KisMirrorAxis(KisCanvasResourceProvider* provider, QPointer<KisView> parent);
0026     ~KisMirrorAxis() override;
0027 
0028     float handleSize() const;
0029     void setHandleSize(float newSize);
0030     void setVisible(bool v) override;
0031 
0032     void setMirrorAxisConfig(const KisMirrorAxisConfig& config);
0033     const KisMirrorAxisConfig& mirrorAxisConfig() const;
0034 
0035 Q_SIGNALS:
0036     void handleSizeChanged();
0037     void sigConfigChanged();
0038 
0039 protected:
0040     void drawDecoration(QPainter& gc, const QRectF& updateArea, const KisCoordinatesConverter* converter, KisCanvas2* canvas) override;
0041     bool eventFilter(QObject* target, QEvent* event) override;
0042     void toggleMirrorActions();
0043 
0044 private:
0045     class Private;
0046     const QScopedPointer<Private> d;
0047 
0048 private Q_SLOTS:
0049     void mirrorModeChanged();
0050     void moveHorizontalAxisToCenter();
0051     void moveVerticalAxisToCenter();
0052 };
0053 
0054 #endif // KISMIRRORAXIS_H