Krita Source Code Documentation
Loading...
Searching...
No Matches
KisZoomAndRotateAction Class Reference

This class handles both rotation and zooming operation. This is separate from Zoom and Rotate operation applied individually because the order of transformation is different. More...

#include <kis_zoom_and_rotate_action.h>

+ Inheritance diagram for KisZoomAndRotateAction:

Classes

class  Private
 

Public Types

enum  Shortcut {
  PanAndZoomAndRotateMode , PanAndZoomAndDiscreteRotateMode , PanAndDiscreteZoomAndRotateMode , PanAndDiscreteZoomAndDiscreteRotateMode ,
  ZoomAndRotateMode , ZoomAndDiscreteRotateMode , DiscreteZoomAndRotateMode , DiscreteZoomAndDiscreteRotateMode
}
 

Public Member Functions

void activate (int shortcut) override
 
void begin (int shortcut, QEvent *event) override
 
void cursorMovedAbsolute (const QPointF &lastPos, const QPointF &pos) override
 
void deactivate (int shortcut) override
 
void end (QEvent *event) override
 
KisInputActionGroup inputActionGroup (int shortcut) const override
 
void inputEvent (QEvent *event) override
 
 KisZoomAndRotateAction ()
 
int priority () const override
 
 ~KisZoomAndRotateAction ()
 
- Public Member Functions inherited from KisAbstractInputAction
virtual bool canIgnoreModifiers () const
 
virtual QString description () const
 
virtual QString id () const
 
virtual bool isAvailable () const
 
virtual bool isShortcutRequired (int shortcut) const
 
 KisAbstractInputAction (const QString &id)
 
virtual QString name () const
 
virtual QHash< QString, int > shortcutIndexes () const
 
virtual bool supportsHiResInputEvents (int shortcut) const
 
virtual bool trySwitchShortcut (int oldShortcut, int newShortcut)
 
virtual ~KisAbstractInputAction ()
 

Private Attributes

const QScopedPointer< Private > d
 

Additional Inherited Members

- Public Attributes inherited from KisAbstractInputAction
QString description
 
QString id
 
QHash< QString, int > indexes
 
QPointF lastCursorPosition
 
QString name
 
QPointF startCursorPosition
 
- Static Public Attributes inherited from KisAbstractInputAction
static KisInputManager * inputManager
 
- Protected Member Functions inherited from KisAbstractInputAction
virtual void cursorMoved (const QPointF &lastPos, const QPointF &pos)
 
QPoint eventPos (const QEvent *event)
 
QPointF eventPosF (const QEvent *event)
 
KisInputManager * inputManager () const
 
void setDescription (const QString &description)
 
void setName (const QString &name)
 
void setShortcutIndexes (const QHash< QString, int > &indexes)
 

Detailed Description

This class handles both rotation and zooming operation. This is separate from Zoom and Rotate operation applied individually because the order of transformation is different.

Definition at line 19 of file kis_zoom_and_rotate_action.h.

Member Enumeration Documentation

◆ Shortcut

Enumerator
PanAndZoomAndRotateMode 
PanAndZoomAndDiscreteRotateMode 
PanAndDiscreteZoomAndRotateMode 
PanAndDiscreteZoomAndDiscreteRotateMode 
ZoomAndRotateMode 
ZoomAndDiscreteRotateMode 
DiscreteZoomAndRotateMode 
DiscreteZoomAndDiscreteRotateMode 

Definition at line 22 of file kis_zoom_and_rotate_action.h.

Constructor & Destructor Documentation

◆ KisZoomAndRotateAction()

KisZoomAndRotateAction::KisZoomAndRotateAction ( )

Definition at line 52 of file kis_zoom_and_rotate_action.cpp.

53 : KisAbstractInputAction ("Zoom and Rotate Canvas")
54 , d(new Private)
55{
56 setName(i18n("Zoom and Rotate Canvas"));
57 QHash<QString, int> shortcuts;
58 shortcuts.insert(i18n("Pan, Zoom, Rotate Mode"), PanAndZoomAndRotateMode);
59 shortcuts.insert(i18n("Pan, Zoom, Discrete Rotate Mode"), PanAndZoomAndDiscreteRotateMode);
60 shortcuts.insert(i18n("Pan, Discrete Zoom, Rotate Mode"), PanAndDiscreteZoomAndRotateMode);
61 shortcuts.insert(i18n("Pan, Discrete Zoom, Discrete Rotate Mode"), PanAndDiscreteZoomAndDiscreteRotateMode);
62 shortcuts.insert(i18n("Zoom, Rotate Mode"), ZoomAndRotateMode);
63 shortcuts.insert(i18n("Zoom, Discrete Rotate Mode"), ZoomAndDiscreteRotateMode);
64 shortcuts.insert(i18n("Discrete Zoom, Rotate Mode"), DiscreteZoomAndRotateMode);
65 shortcuts.insert(i18n("Discrete Zoom, Discrete Rotate Mode"), DiscreteZoomAndDiscreteRotateMode);
66 setShortcutIndexes(shortcuts);
67}
KisAbstractInputAction(const QString &id)
void setShortcutIndexes(const QHash< QString, int > &indexes)
void setName(const QString &name)
const QScopedPointer< Private > d

References DiscreteZoomAndDiscreteRotateMode, DiscreteZoomAndRotateMode, PanAndDiscreteZoomAndDiscreteRotateMode, PanAndDiscreteZoomAndRotateMode, PanAndZoomAndDiscreteRotateMode, PanAndZoomAndRotateMode, KisAbstractInputAction::setName(), KisAbstractInputAction::setShortcutIndexes(), ZoomAndDiscreteRotateMode, and ZoomAndRotateMode.

◆ ~KisZoomAndRotateAction()

KisZoomAndRotateAction::~KisZoomAndRotateAction ( )

Definition at line 69 of file kis_zoom_and_rotate_action.cpp.

70{
71}

Member Function Documentation

◆ activate()

void KisZoomAndRotateAction::activate ( int shortcut)
overridevirtual

The method is called when the action is yet to be started, that is, e.g. the user has pressed all the modifiers for the action but hasn't started painting yet. This method is a right place to show the user what is going to happen, e.g. change the cursor.

Reimplemented from KisAbstractInputAction.

Definition at line 78 of file kis_zoom_and_rotate_action.cpp.

79{
80 Q_UNUSED(shortcut);
81}

◆ begin()

void KisZoomAndRotateAction::begin ( int shortcut,
QEvent * event )
overridevirtual

Begin the action.

Parameters
shortcutThe index of the behaviour to trigger.
eventThe mouse event that has triggered this action. Is null for keyboard-activated actions.

Reimplemented from KisAbstractInputAction.

Definition at line 88 of file kis_zoom_and_rotate_action.cpp.

89{
90 if (!event) return;
91
92 if (event->type() == QEvent::NativeGesture || event->type() == QEvent::TouchBegin
93 || event->type() == QEvent::TouchUpdate) {
94
96 using Flags = KisCanvasNavigationActionStrategy::Flags;
97
98 Flags flags;
99 flags.setFlag(Flag::PanEnabled, d->hasPanAction(shortcut));
100 flags.setFlag(Flag::RotationEnabled);
101 flags.setFlag(Flag::RotationDescrete, d->rotationIsDiscrete(shortcut));
102 flags.setFlag(Flag::ZoomEnabled);
103 flags.setFlag(Flag::ZoomDescrete, d->zoomIsDiscrete(shortcut));
104
105 if (event->type() == QEvent::NativeGesture) {
106 d->actionStrategy.reset(new KisCanvasNavigationActionStrategyNativeGesture(flags, eventPosF(event), inputManager()->canvas()));
107 } else {
108 const QTouchEvent *tevent = static_cast<const QTouchEvent*>(event);
109 d->actionStrategy.reset(new KisCanvasNavigationActionStrategyTouch(flags, tevent, inputManager()->canvas()));
110 }
111 }
112}
static KisInputManager * inputManager
QPointF eventPosF(const QEvent *event)
KisCanvas2 * canvas

References Private::canvas, d, KisAbstractInputAction::eventPosF(), and KisAbstractInputAction::inputManager.

◆ cursorMovedAbsolute()

void KisZoomAndRotateAction::cursorMovedAbsolute ( const QPointF & lastPos,
const QPointF & pos )
overridevirtual

Reimplemented from KisAbstractInputAction.

Definition at line 120 of file kis_zoom_and_rotate_action.cpp.

121{
122}

◆ deactivate()

void KisZoomAndRotateAction::deactivate ( int shortcut)
overridevirtual

The method is called when the action is not a candidate for the starting anymore. The action should revert everything that was done in activate() method.

See also
activate()

Reimplemented from KisAbstractInputAction.

Definition at line 83 of file kis_zoom_and_rotate_action.cpp.

84{
85 Q_UNUSED(shortcut);
86}

◆ end()

void KisZoomAndRotateAction::end ( QEvent * event)
overridevirtual

End the action.

Parameters
eventThe mouse event that has finished this action. Is null for keyboard-activated actions.

Reimplemented from KisAbstractInputAction.

Definition at line 114 of file kis_zoom_and_rotate_action.cpp.

115{
116 d->actionStrategy.reset();
118}
virtual void end(QEvent *event)

References d, and KisAbstractInputAction::end().

◆ inputActionGroup()

KisInputActionGroup KisZoomAndRotateAction::inputActionGroup ( int shortcut) const
overridevirtual
Returns
the group of the action the specified shortcut belongs to

Reimplemented from KisAbstractInputAction.

Definition at line 134 of file kis_zoom_and_rotate_action.cpp.

135{
136 Q_UNUSED(shortcut);
138}
@ ViewTransformActionGroup

References ViewTransformActionGroup.

◆ inputEvent()

void KisZoomAndRotateAction::inputEvent ( QEvent * event)
overridevirtual

Process an input event.

By default handles MouseMove events and passes the data to a convenience cursorMoved() method

Parameters
eventAn event to process.

Reimplemented from KisAbstractInputAction.

Definition at line 125 of file kis_zoom_and_rotate_action.cpp.

126{
127 if (d->actionStrategy && d->actionStrategy->supportsEvent(event)) {
128 d->actionStrategy->inputEvent(event);
129 } else {
131 }
132}
virtual void inputEvent(QEvent *event)

References d, and KisAbstractInputAction::inputEvent().

◆ priority()

int KisZoomAndRotateAction::priority ( ) const
overridevirtual

The priority for this action.

Priority determines how "important" the action is and is used to resolve conflicts when multiple actions can be activated.

Reimplemented from KisAbstractInputAction.

Definition at line 73 of file kis_zoom_and_rotate_action.cpp.

74{
75 return 5;
76}

Member Data Documentation

◆ d

const QScopedPointer<Private> KisZoomAndRotateAction::d
private

Definition at line 48 of file kis_zoom_and_rotate_action.h.


The documentation for this class was generated from the following files: