File indexing completed on 2024-06-23 04:28:30

0001 /*
0002  *  SPDX-FileCopyrightText: 2014 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #ifndef __KIS_TRANSFORM_STRATEGY_BASE_H
0008 #define __KIS_TRANSFORM_STRATEGY_BASE_H
0009 
0010 #include <QObject>
0011 #include <QScopedPointer>
0012 
0013 #include "kis_tool.h"
0014 
0015 
0016 class QImage;
0017 class QTransform;
0018 class QPainter;
0019 class QCursor;
0020 class KoPointerEvent;
0021 class QPainterPath;
0022 
0023 
0024 class KisTransformStrategyBase : public QObject
0025 {
0026 public:
0027     KisTransformStrategyBase();
0028     ~KisTransformStrategyBase() override;
0029 
0030     QImage originalImage() const;
0031     QTransform thumbToImageTransform() const;
0032 
0033     void setThumbnailImage(const QImage &image, QTransform thumbToImageTransform);
0034 
0035 public:
0036 
0037     virtual bool acceptsClicks() const;
0038 
0039     virtual void paint(QPainter &gc) = 0;
0040     virtual QCursor getCurrentCursor() const = 0;
0041     virtual QPainterPath getCursorOutline() const;
0042 
0043     virtual void externalConfigChanged() = 0;
0044 
0045     virtual void activatePrimaryAction();
0046     virtual void deactivatePrimaryAction();
0047 
0048     virtual void setDecorationThickness(int thickness);
0049     virtual int decorationThickness() const;
0050 
0051     virtual bool beginPrimaryAction(KoPointerEvent *event) = 0;
0052     virtual void continuePrimaryAction(KoPointerEvent *event) = 0;
0053     virtual bool endPrimaryAction(KoPointerEvent *event) = 0;
0054     virtual void hoverActionCommon(KoPointerEvent *event) = 0;
0055 
0056     virtual void activateAlternateAction(KisTool::AlternateAction action);
0057     virtual void deactivateAlternateAction(KisTool::AlternateAction action);
0058 
0059     virtual bool beginAlternateAction(KoPointerEvent *event, KisTool::AlternateAction action);
0060     virtual void continueAlternateAction(KoPointerEvent *event, KisTool::AlternateAction action);
0061     virtual bool endAlternateAction(KoPointerEvent *event, KisTool::AlternateAction action);
0062 
0063 private:
0064     struct Private;
0065     const QScopedPointer<Private> m_d;
0066 };
0067 
0068 #endif /* __KIS_TRANSFORM_STRATEGY_BASE_H */