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

0001 /*
0002    SPDX-FileCopyrightText: 2006 Boudewijn Rempt (boud@valdyas.org)
0003    SPDX-FileCopyrightText: 2007, 2010 Thomas Zander <zander@kde.org>
0004    SPDX-FileCopyrightText: 2008 Carlos Licea <carlos.licea@kdemail.net>
0005    SPDX-FileCopyrightText: 2011 Jan Hambrecht <jaham@gmx.net>
0006 
0007    SPDX-License-Identifier: LGPL-2.0-or-later
0008  */
0009 #include "KoDocumentResourceManager.h"
0010 
0011 #include <QVariant>
0012 #include <kundo2stack.h>
0013 #include <FlakeDebug.h>
0014 
0015 #include "KoShape.h"
0016 #include "KoShapeController.h"
0017 #include "KoResourceManager_p.h"
0018 
0019 class Q_DECL_HIDDEN KoDocumentResourceManager::Private
0020 {
0021 public:
0022     KoResourceManager manager;
0023 };
0024 
0025 KoDocumentResourceManager::KoDocumentResourceManager(QObject *parent)
0026         : QObject(parent),
0027         d(new Private())
0028 {
0029     connect(&d->manager, &KoResourceManager::resourceChanged,
0030             this, &KoDocumentResourceManager::resourceChanged);
0031 }
0032 
0033 KoDocumentResourceManager::~KoDocumentResourceManager()
0034 {
0035     delete d;
0036 }
0037 
0038 void KoDocumentResourceManager::setResource(int key, const QVariant &value)
0039 {
0040     d->manager.setResource(key, value);
0041 }
0042 
0043 QVariant KoDocumentResourceManager::resource(int key) const
0044 {
0045     return d->manager.resource(key);
0046 }
0047 
0048 void KoDocumentResourceManager::setResource(int key, const KoColor &color)
0049 {
0050     QVariant v;
0051     v.setValue(color);
0052     setResource(key, v);
0053 }
0054 
0055 void KoDocumentResourceManager::setResource(int key, KoShape *shape)
0056 {
0057     QVariant v;
0058     v.setValue(shape);
0059     setResource(key, v);
0060 }
0061 
0062 void KoDocumentResourceManager::setResource(int key, const KoUnit &unit)
0063 {
0064     QVariant v;
0065     v.setValue(unit);
0066     setResource(key, v);
0067 }
0068 
0069 KoColor KoDocumentResourceManager::koColorResource(int key) const
0070 {
0071     return d->manager.koColorResource(key);
0072 }
0073 
0074 
0075 bool KoDocumentResourceManager::boolResource(int key) const
0076 {
0077     return d->manager.boolResource(key);
0078 }
0079 
0080 int KoDocumentResourceManager::intResource(int key) const
0081 {
0082     return d->manager.intResource(key);
0083 }
0084 
0085 QString KoDocumentResourceManager::stringResource(int key) const
0086 {
0087     return d->manager.stringResource(key);
0088 }
0089 
0090 QSizeF KoDocumentResourceManager::sizeResource(int key) const
0091 {
0092     return d->manager.sizeResource(key);
0093 }
0094 
0095 bool KoDocumentResourceManager::hasResource(int key) const
0096 {
0097     return d->manager.hasResource(key);
0098 }
0099 
0100 void KoDocumentResourceManager::clearResource(int key)
0101 {
0102     d->manager.clearResource(key);
0103 }
0104 
0105 KUndo2Stack *KoDocumentResourceManager::undoStack() const
0106 {
0107     if (!hasResource(UndoStack))
0108         return 0;
0109     return static_cast<KUndo2Stack*>(resource(UndoStack).value<void*>());
0110 }
0111 
0112 void KoDocumentResourceManager::setHandleRadius(int handleRadius)
0113 {
0114     // do not allow arbitrary small handles
0115     if (handleRadius < 5)
0116         handleRadius = 5;
0117     setResource(HandleRadius, QVariant(handleRadius));
0118 }
0119 
0120 int KoDocumentResourceManager::handleRadius() const
0121 {
0122     if (hasResource(HandleRadius))
0123         return intResource(HandleRadius);
0124     return 5; // default value (and is used just about everywhere)
0125 }
0126 void KoDocumentResourceManager::setGrabSensitivity(int grabSensitivity)
0127 {
0128     // do not allow arbitrary small grab sensitivity
0129     if (grabSensitivity < 5)
0130         grabSensitivity = 5;
0131     setResource(GrabSensitivity, QVariant(grabSensitivity));
0132 }
0133 
0134 int KoDocumentResourceManager::grabSensitivity() const
0135 {
0136     if (hasResource(GrabSensitivity))
0137         return intResource(GrabSensitivity);
0138     return 5; // default value (and is used just about everywhere)
0139 }
0140 
0141 void KoDocumentResourceManager::setUndoStack(KUndo2Stack *undoStack)
0142 {
0143     QVariant variant;
0144     variant.setValue<void*>(undoStack);
0145     setResource(UndoStack, variant);
0146 }
0147 
0148 qreal KoDocumentResourceManager::documentResolution() const
0149 {
0150     KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(hasResource(DocumentResolution), 72.0);
0151     return resource(DocumentResolution).toReal();
0152 }
0153 
0154 QRectF KoDocumentResourceManager::documentRectInPixels() const
0155 {
0156     KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(hasResource(DocumentRectInPixels), QRectF(0,0, 777, 666));
0157     return resource(DocumentRectInPixels).toRectF();
0158 }
0159 
0160 KoShapeController *KoDocumentResourceManager::globalShapeController() const
0161 {
0162     if (!hasResource(GlobalShapeController))
0163         return 0;
0164 
0165     return resource(GlobalShapeController).value<KoShapeController *>();
0166 }
0167 
0168 void KoDocumentResourceManager::setGlobalShapeController(KoShapeController *shapeController)
0169 {
0170     QVariant variant;
0171     variant.setValue<KoShapeController *>(shapeController);
0172     setResource(GlobalShapeController, variant);
0173 }