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

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_LIQUIFY_TRANSFORM_STRATEGY_H
0008 #define __KIS_LIQUIFY_TRANSFORM_STRATEGY_H
0009 
0010 #include <QObject>
0011 #include <QScopedPointer>
0012 
0013 #include "kis_transform_strategy_base.h"
0014 
0015 class QPointF;
0016 class QPainter;
0017 class KisCoordinatesConverter;
0018 class ToolTransformArgs;
0019 class TransformTransactionProperties;
0020 class QCursor;
0021 
0022 
0023 class KisLiquifyTransformStrategy : public KisTransformStrategyBase
0024 {
0025     Q_OBJECT
0026 public:
0027     KisLiquifyTransformStrategy(const KisCoordinatesConverter *converter,
0028                              ToolTransformArgs &currentArgs,
0029                              TransformTransactionProperties &transaction, const KoCanvasResourceProvider *manager);
0030     ~KisLiquifyTransformStrategy() override;
0031 
0032     void setTransformFunction(const QPointF &mousePos, bool perspectiveModifierActive, bool shiftModifierActive);
0033     void paint(QPainter &gc) override;
0034     QCursor getCurrentCursor() const override;
0035     QPainterPath getCursorOutline() const override;
0036 
0037     bool acceptsClicks() const override;
0038 
0039     void externalConfigChanged() override;
0040 
0041     bool beginPrimaryAction(KoPointerEvent *event) override;
0042     void continuePrimaryAction(KoPointerEvent *event) override;
0043     bool endPrimaryAction(KoPointerEvent *event) override;
0044     void hoverActionCommon(KoPointerEvent *event) override;
0045 
0046     void activateAlternateAction(KisTool::AlternateAction action) override;
0047     void deactivateAlternateAction(KisTool::AlternateAction action) override;
0048 
0049     bool beginAlternateAction(KoPointerEvent *event, KisTool::AlternateAction action) override;
0050     void continueAlternateAction(KoPointerEvent *event, KisTool::AlternateAction action) override;
0051     bool endAlternateAction(KoPointerEvent *event, KisTool::AlternateAction action) override;
0052 
0053 Q_SIGNALS:
0054     void requestCanvasUpdate();
0055     void requestUpdateOptionWidget();
0056     void requestCursorOutlineUpdate(const QPointF &imagePoint);
0057     void requestImageRecalculation();
0058 
0059 private:
0060     struct Private;
0061     const QScopedPointer<Private> m_d;
0062 };
0063 
0064 #endif /* __KIS_LIQUIFY_TRANSFORM_STRATEGY_H */