22#include <pointerevent.h>
25#include "layercamera.h"
27#include "strokeinterpolator.h"
28#include "viewmanager.h"
29#include "scribblearea.h"
36void HandTool::loadSettings()
38 mDeltaFactor = mEditor->preference()->isOn(SETTING::INVERT_DRAG_ZOOM_DIRECTION) ? -1 : 1;
39 connect(mEditor->preference(), &PreferenceManager::optionChanged,
this, &HandTool::updateSettings);
42void HandTool::updateSettings(
const SETTING setting)
46 case SETTING::INVERT_DRAG_ZOOM_DIRECTION:
48 mDeltaFactor = mEditor->preference()->isOn(SETTING::INVERT_DRAG_ZOOM_DIRECTION) ? -1 : 1;
63 mLastPixel =
event->viewportPos();
64 mStartPoint =
event->canvasPos();
67 mScribbleArea->updateToolCursor();
77 transformView(
event->modifiers(),
event->viewportPos(),
event->buttons());
78 mLastPixel =
event->viewportPos();
85 mScribbleArea->updateToolCursor();
88void HandTool::pointerDoubleClickEvent(
PointerEvent* event)
92 mEditor->view()->resetView();
106 QPointF d = viewMgr->mapScreenToCanvas(pos) - viewMgr->mapScreenToCanvas(mLastPixel);
107 QPointF offset = viewMgr->translation() + d;
108 viewMgr->translate(offset);
113 QVector2D startV(mLastPixel - centralPixel);
116 qreal angleOffset =
static_cast<qreal
>(std::atan2(curV.y(), curV.x()) - std::atan2(startV.y(), startV.x()));
117 angleOffset = qRadiansToDegrees(angleOffset);
119 const float delta = viewMgr->isFlipHorizontal() == !viewMgr->isFlipVertical()
120 ?
static_cast<float>(angleOffset * -1) :
static_cast<float>(angleOffset);
121 viewMgr->rotateRelative(delta);
125 const float delta = (
static_cast<float>(pos.
y() - mLastPixel.
y())) / 100.f;
126 const qreal scaleValue = viewMgr->scaling() * (1 + (delta * mDeltaFactor));
127 viewMgr->scaleAtOffset(scaleValue, mStartPoint);
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
virtual bool event(QEvent *e)
typedef KeyboardModifiers