Krita Source Code Documentation
Loading...
Searching...
No Matches
KoZoomStrategy.cpp
Go to the documentation of this file.
1/* This file is part of the KDE project
2 * SPDX-FileCopyrightText: 2006-2007 Thomas Zander <zander@kde.org>
3 * SPDX-FileCopyrightText: 2007 C. Boemann <cbo@boemann.dk>
4 *
5 * SPDX-License-Identifier: LGPL-2.0-or-later
6 */
7
8#include "KoZoomStrategy.h"
10#include "KoZoomTool.h"
11#include "KoCanvasBase.h"
12#include "KoCanvasController.h"
13#include "KoViewConverter.h"
15
16#include <FlakeDebug.h>
17
18#include <QTransform>
19
20KoZoomStrategy::KoZoomStrategy(KoZoomTool *tool, KoCanvasController *controller, const QPointF &clicked)
21 : KoShapeRubberSelectStrategy(tool, clicked, false),
22 m_controller(controller),
23 m_forceZoomOut(false)
24{
25}
26
27void KoZoomStrategy::finishInteraction(Qt::KeyboardModifiers modifiers)
28{
30
31 const QTransform documentToWidget =
34
35 const QRect pixelRect = documentToWidget.mapRect(d->selectedRect()).toRect();
36
37 bool m_zoomOut = m_forceZoomOut;
38 if (modifiers & Qt::ControlModifier) {
39 m_zoomOut = !m_zoomOut;
40 }
41
42 auto makeStillPoint = [&] () -> KoViewTransformStillPoint {
43 const QPointF center = pixelRect.center();
45 };
46
47 if (m_zoomOut) {
48 m_controller->zoomOut(makeStillPoint());
49 } else if (pixelRect.width() > 5 && pixelRect.height() > 5) {
50 m_controller->zoomTo(pixelRect);
51 } else {
52 m_controller->zoomIn(makeStillPoint());
53 }
54}
55
57{
59 d->tool->canvas()->updateCanvas(d->selectedRect().normalized() | d->tool->decorationsRect());
60}
61
66
71
virtual const KoViewConverter * viewConverter() const =0
virtual void zoomTo(const QRect &rect)=0
zoom so that rect is exactly visible (as close as possible)
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.
virtual KoCanvasBase * canvas() const
virtual QTransform viewToWidget() const
virtual KoViewTransformStillPoint makeWidgetStillPoint(const QPointF &viewPoint) const
Creates a still point that links the viewPoint of the widget to the corresponding point of the image.
virtual QPointF documentToView(const QPointF &documentPoint) const
KoZoomStrategy(KoZoomTool *tool, KoCanvasController *controller, const QPointF &clicked)
SelectionMode currentMode() const override
void finishInteraction(Qt::KeyboardModifiers modifiers) override
Execute the zoom.
void cancelInteraction() override
KoCanvasController * m_controller