10#include <QNativeGestureEvent>
12#include <klocalizedstring.h>
50 setDescription(i18n(
"The <i>Zoom Canvas</i> action zooms the canvas."));
52 QHash< QString, int > shortcuts;
91 QApplication::restoreOverrideCursor();
102 && (event->type() == QEvent::NativeGesture || event->type() == QEvent::TouchBegin
103 || event->type() == QEvent::TouchUpdate)
107 using Flags = KisCanvasNavigationActionStrategyNativeGesture::Flags;
110 flags.setFlag(Flag::PanEnabled);
111 flags.setFlag(Flag::ZoomEnabled);
112 flags.setFlag(Flag::ZoomDescrete,
115 if (event->type() == QEvent::NativeGesture) {
118 const QTouchEvent *tevent =
static_cast<const QTouchEvent*
>(event);
123 QApplication::restoreOverrideCursor();
154 pt = controller->mapFromGlobal(QCursor::pos());
222 QPointF diff = -(pos - startPos);
224 const int stepCont = 100;
225 const int stepDisc = 50;
232 const qreal logDistance = std::pow(2.0, qreal(cfg.
zoomHorizontal() ? -diff.x() : diff.y()) / qreal(stepCont));
235 if (cfg.
readEntry<
bool>(
"InvertMiddleClickZoom",
false)) {
260 qreal axisDiff = qreal(cfg.
zoomHorizontal() ? -diff.x() : diff.y());
263 const bool zoomIn = currentDiff > 0;
264 while (qAbs(currentDiff) > 1.0) {
KisCoordinatesConverter * coordinatesConverter
bool zoomHorizontal(bool defaultValue=false) const
T readEntry(const QString &name, const T &defaultValue=T())
KoViewTransformStillPoint makeWidgetStillPoint(const QPointF &viewPoint) const override
Creates a still point that links the viewPoint of the widget to the corresponding point of the image.
static QCursor zoomSmoothCursor()
static QCursor zoomDiscreteCursor()
qreal lastDiscreteZoomDistance
KoViewTransformStillPoint actionStillPoint
std::unique_ptr< KisCanvasNavigationActionStrategy > actionStrategy
Private(KisZoomAction *qq)
Zoom Canvas implementation of KisAbstractInputAction.
bool isShortcutRequired(int shortcut) const override
~KisZoomAction() override
void deactivate(int shortcut) override
bool supportsHiResInputEvents(int shortcut) const override
void cursorMovedAbsolute(const QPointF &startPos, const QPointF &pos) override
int priority() const override
void end(QEvent *event) override
@ FitToHeightShortcut
Zoom fit to height.
@ ZoomInShortcut
Zoom in by a fixed amount.
@ RelativeDiscreteZoomModeShortcut
Toggle discrete zoom mode relative to cursor.
@ ZoomOutFromCursorShortcut
Zoom out from cursor.
@ ZoomInToCursorShortcut
Zoom in to cursor.
@ ZoomOutShortcut
Zoom out by a fixed amount.
@ DiscreteZoomModeShortcut
Toggle discrete zoom mode.
@ FitToViewShortcut
Zoom fit to page.
@ ZoomModeShortcut
Toggle zoom mode.
@ Zoom100PctShortcut
Reset zoom to 100%.
@ RelativeZoomModeShortcut
Toggle zoom mode relative to cursor.
@ FitToWidthShortcut
Zoom fit to width.
void activate(int shortcut) override
void inputEvent(QEvent *event) override
KisInputActionGroup inputActionGroup(int shortcut) const override
void begin(int shortcut, QEvent *event=0) override
KoCanvasController * canvasController() const
virtual void zoomIn(const KoViewTransformStillPoint &stillPoint)=0
zooms in keeping stillPoint not moved.
virtual void zoomOut(const KoViewTransformStillPoint &stillPoint)=0
zooms out keeping stillPoint not moved.
void zoom(qreal *zoomX, qreal *zoomY) const override
@ ZOOM_WIDTH
zoom pagewidth
@ ZOOM_HEIGHT
zoom pageheight
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)