File indexing completed on 2024-05-12 16:02:13

0001 /* This file is part of the KDE project
0002  * SPDX-FileCopyrightText: 2007 C. Boemann <cbo@boemann.dk>
0003  * SPDX-FileCopyrightText: 2007 Thomas Zander <zander@kde.org>
0004  * SPDX-FileCopyrightText: 2007 Jan Hambrecht <jaham@gmx.net>
0005  * SPDX-FileCopyrightText: 2010 Boudewijn Rempt <boud@valdyas.org>
0006  * SPDX-FileCopyrightText: 2011 Arjen Hiemstra <ahiemstra@heimr.nl>
0007  *
0008  * SPDX-License-Identifier: LGPL-2.0-or-later
0009  */
0010 #ifndef KoZoomController_p_h
0011 #define KoZoomController_p_h
0012 
0013 #include <KoZoomController.h>
0014 
0015 #include <klocalizedstring.h>
0016 #include <WidgetsDebug.h>
0017 
0018 #include <KoZoomHandler.h>
0019 #include <KoCanvasBase.h>
0020 #include <KoCanvasController.h>
0021 
0022 class Q_DECL_HIDDEN KoZoomController::Private
0023 {
0024 public:
0025     Private(KoZoomController *p)
0026         : canvasController(0), zoomHandler(0), action(0), textMinX(1), textMaxX(600), fitMargin(0), parent(p)
0027     {
0028         action = new KoZoomAction(KoZoomMode::ZOOM_WIDTH | KoZoomMode::ZOOM_PAGE | KoZoomMode::ZOOM_HEIGHT, i18n("Zoom"), p);
0029     }
0030     ~Private()
0031     {
0032     }
0033 
0034     /// so we know when the canvasController changes size
0035     void setAvailableSize()
0036     {
0037         if(zoomHandler->zoomMode() == KoZoomMode::ZOOM_WIDTH)
0038             setZoom(KoZoomMode::ZOOM_WIDTH, -1);
0039         if(zoomHandler->zoomMode() == KoZoomMode::ZOOM_PAGE)
0040             setZoom(KoZoomMode::ZOOM_PAGE, -1);
0041     }
0042 
0043     /// when the canvas controller wants us to change zoom
0044     void requestZoomRelative(const qreal factor, const QPointF& stillPoint)
0045     {
0046         parent->setZoom(KoZoomMode::ZOOM_CONSTANT, factor * zoomHandler->zoom(), stillPoint);
0047     }
0048 
0049     void setZoom(KoZoomMode::Mode mode, qreal zoom)
0050     {
0051         parent->setZoom(mode, zoom);
0052     }
0053 
0054     void init(KoCanvasController *co,
0055               KoZoomHandler *zh,
0056               KisKActionCollection *actionCollection);
0057 
0058     KoCanvasController *canvasController;
0059     KoZoomHandler *zoomHandler;
0060     KoZoomAction *action;
0061     QSizeF pageSize;
0062     qreal textMinX;
0063     qreal textMaxX;
0064     QSizeF documentSize;
0065     int fitMargin;
0066     KoZoomController *parent;
0067 };
0068 
0069 #endif