File indexing completed on 2024-05-26 04:34:45

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_SIMPLIFIED_ACTION_POLICY_STRATEGY_H
0008 #define __KIS_SIMPLIFIED_ACTION_POLICY_STRATEGY_H
0009 
0010 #include <QScopedPointer>
0011 
0012 #include "kis_transform_strategy_base.h"
0013 
0014 
0015 class KoPointerEvent;
0016 class KisCoordinatesConverter;
0017 class KoSnapGuide;
0018 
0019 class KisSimplifiedActionPolicyStrategy : public KisTransformStrategyBase
0020 {
0021 public:
0022     KisSimplifiedActionPolicyStrategy(const KisCoordinatesConverter *_converter, KoSnapGuide *snapGuide = 0);
0023     ~KisSimplifiedActionPolicyStrategy() override;
0024 
0025     void activatePrimaryAction() override;
0026 
0027     bool beginPrimaryAction(KoPointerEvent *event) override;
0028     void continuePrimaryAction(KoPointerEvent *event) override;
0029     bool endPrimaryAction(KoPointerEvent *event) override;
0030     void hoverActionCommon(KoPointerEvent *event) override;
0031 
0032     virtual QPointF handleSnapPoint(const QPointF &imagePos);
0033 
0034     void activateAlternateAction(KisTool::AlternateAction action) override;
0035     void deactivateAlternateAction(KisTool::AlternateAction action) override;
0036 
0037     bool beginAlternateAction(KoPointerEvent *event, KisTool::AlternateAction action) override;
0038     void continueAlternateAction(KoPointerEvent *event, KisTool::AlternateAction action) override;
0039     bool endAlternateAction(KoPointerEvent *event, KisTool::AlternateAction action) override;
0040 
0041 private:
0042     QPointF snapDocPoint(const QPointF &point, Qt::KeyboardModifiers modifiers) const;
0043 
0044 protected:
0045 
0046     virtual void setTransformFunction(const QPointF &mousePos, bool perspectiveModifierActive, bool shiftModifierActive, bool altModifierActive) = 0;
0047     virtual bool shiftModifierIsUsed() const;
0048 
0049     virtual bool beginPrimaryAction(const QPointF &pt) = 0;
0050     virtual void continuePrimaryAction(const QPointF &pt, bool shiftModifierActive, bool altModifierActive) = 0;
0051     virtual bool endPrimaryAction() = 0;
0052     virtual void hoverActionCommon(const QPointF &pt);
0053 
0054 private:
0055     struct Private;
0056     const QScopedPointer<Private> m_d;
0057 };
0058 
0059 #endif /* __KIS_SIMPLIFIED_ACTION_POLICY_STRATEGY_H */