10#include <QNativeGestureEvent>
11#include <klocalizedstring.h>
46 setDescription(i18n(
"The <i>Rotate Canvas</i> action rotates the canvas."));
48 QHash<QString, int> shortcuts;
79 QApplication::restoreOverrideCursor();
91 && (event->type() == QEvent::NativeGesture || event->type() == QEvent::TouchBegin
92 || event->type() == QEvent::TouchUpdate)
96 using Flags = KisCanvasNavigationActionStrategyNativeGesture::Flags;
99 flags.setFlag(Flag::PanEnabled);
100 flags.setFlag(Flag::RotationEnabled);
103 if (event->type() == QEvent::NativeGesture) {
106 const QTouchEvent *tevent =
static_cast<const QTouchEvent*
>(event);
111 QApplication::restoreOverrideCursor();
173 const QPointF startPoint = startPos - centerPoint;
174 const QPointF newPoint = pos - centerPoint;
176 const qreal oldAngle = atan2(startPoint.y(), startPoint.x());
177 const qreal newAngle = atan2(newPoint.y(), newPoint.x());
179 qreal newRotation = (180 /
M_PI) * (newAngle - oldAngle);
qreal rotationAngle() const
canvas rotation in degrees
KisCoordinatesConverter * coordinatesConverter
void resetCanvasRotation()
void rotateCanvasLeft15()
void beginCanvasRotation()
void rotateCanvasRight15()
void rotateCanvas(qreal angle, const std::optional< KoViewTransformStillPoint > &stillPoint, bool isNativeGesture=false)
_Private::Traits< T >::Result flakeToWidget(const T &obj) const
QPointF flakeCenterPoint() const
static QCursor rotateCanvasDiscreteCursor()
static QCursor rotateCanvasSmoothCursor()
std::unique_ptr< KisCanvasNavigationActionStrategy > actionStrategy
KisInputActionGroup inputActionGroup(int shortcut) const override
void deactivate(int shortcut) override
void inputEvent(QEvent *event) override
~KisRotateCanvasAction() override
int priority() const override
@ RotateLeftShortcut
Rotate left by a fixed amount.
@ RotateResetShortcut
Reset the rotation to 0.
@ DiscreteRotateModeShortcut
Toggle Discrete Rotate mode.
@ RotateRightShortcut
Rotate right by a fixed amount.
@ RotateModeShortcut
Toggle Rotate mode.
bool supportsHiResInputEvents(int shortcut) const override
void cursorMovedAbsolute(const QPointF &startPos, const QPointF &pos) override
void activate(int shortcut) override
void end(QEvent *event) override
void begin(int shortcut, QEvent *event) override
KoCanvasController * canvasController() const
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
constexpr qreal DISCRETE_ANGLE_STEP