File indexing completed on 2024-05-12 15:56:38

0001 /* This file is part of the KDE project
0002  *
0003  * SPDX-FileCopyrightText: 2010 Boudewijn Rempt <boud@valdyas.org>
0004  *
0005  * SPDX-License-Identifier: LGPL-2.0-or-later
0006  */
0007 
0008 #include "KoCanvasController.h"
0009 #include "KoToolManager.h"
0010 
0011 #include <QSize>
0012 #include <QPoint>
0013 
0014 class Q_DECL_HIDDEN KoCanvasController::Private
0015 {
0016 public:
0017     Private()
0018         : margin(0)
0019         , preferredCenterFractionX(0.5)
0020         , preferredCenterFractionY(0.5)
0021         , actionCollection(0)
0022     {
0023     }
0024 
0025     int margin;
0026     QSizeF documentSize;
0027     QPoint documentOffset;
0028     qreal preferredCenterFractionX;
0029     qreal preferredCenterFractionY;
0030     KisKActionCollection* actionCollection;
0031 };
0032 
0033 KoCanvasController::KoCanvasController(KisKActionCollection* actionCollection)
0034     : d(new Private())
0035 {
0036     proxyObject = new KoCanvasControllerProxyObject(this);
0037     d->actionCollection = actionCollection;
0038 }
0039 
0040 KoCanvasController::~KoCanvasController()
0041 {
0042     KoToolManager::instance()->removeCanvasController(this);
0043     delete d;
0044     delete proxyObject;
0045 }
0046 
0047 void KoCanvasController::setMargin(int margin)
0048 {
0049     d->margin = margin;
0050 }
0051 
0052 int KoCanvasController::margin() const
0053 {
0054     return d->margin;
0055 }
0056 
0057 KoCanvasBase* KoCanvasController::canvas() const
0058 {
0059     return 0;
0060 }
0061 
0062 void KoCanvasController::setDocumentSize(const QSizeF &sz)
0063 {
0064     d->documentSize = sz;
0065 }
0066 
0067 QSizeF KoCanvasController::documentSize() const
0068 {
0069     return d->documentSize;
0070 }
0071 
0072 void KoCanvasController::setPreferredCenterFractionX(qreal x)
0073 {
0074     d->preferredCenterFractionX = x;
0075 }
0076 
0077 qreal KoCanvasController::preferredCenterFractionX() const
0078 {
0079     return d->preferredCenterFractionX;
0080 }
0081 
0082 void KoCanvasController::setPreferredCenterFractionY(qreal y)
0083 {
0084     d->preferredCenterFractionY = y;
0085 }
0086 
0087 qreal KoCanvasController::preferredCenterFractionY() const
0088 {
0089     return d->preferredCenterFractionY;
0090 }
0091 
0092 void KoCanvasController::setDocumentOffset(QPoint &offset)
0093 {
0094     d->documentOffset = offset;
0095 }
0096 
0097 QPoint KoCanvasController::documentOffset() const
0098 {
0099     return d->documentOffset;
0100 }
0101 
0102 KoCanvasControllerProxyObject::KoCanvasControllerProxyObject(KoCanvasController *controller, QObject *parent)
0103     : QObject(parent)
0104     , m_canvasController(controller)
0105 {
0106 }
0107 
0108 void KoCanvasControllerProxyObject::updateDocumentSize(const QSize &newSize, bool recalculateCenter)
0109 {
0110     m_canvasController->updateDocumentSize(newSize, recalculateCenter);
0111 }
0112 
0113 KisKActionCollection* KoCanvasController::actionCollection() const
0114 {
0115     return d->actionCollection;
0116 }