File indexing completed on 2024-05-19 04:24:48

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::setGrabSensitivity(int grabSensitivity)
0113 {
0114     // do not allow arbitrary small grab sensitivity
0115     if (grabSensitivity < 5)
0116         grabSensitivity = 5;
0117     setResource(GrabSensitivity, QVariant(grabSensitivity));
0118 }
0119 
0120 int KoDocumentResourceManager::grabSensitivity() const
0121 {
0122     if (hasResource(GrabSensitivity))
0123         return intResource(GrabSensitivity);
0124     return 5; // default value (and is used just about everywhere)
0125 }
0126 
0127 void KoDocumentResourceManager::setUndoStack(KUndo2Stack *undoStack)
0128 {
0129     QVariant variant;
0130     variant.setValue<void*>(undoStack);
0131     setResource(UndoStack, variant);
0132 }
0133 
0134 qreal KoDocumentResourceManager::documentResolution() const
0135 {
0136     KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(hasResource(DocumentResolution), 72.0);
0137     return resource(DocumentResolution).toReal();
0138 }
0139 
0140 QRectF KoDocumentResourceManager::documentRectInPixels() const
0141 {
0142     KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(hasResource(DocumentRectInPixels), QRectF(0,0, 777, 666));
0143     return resource(DocumentRectInPixels).toRectF();
0144 }
0145 
0146 KoShapeController *KoDocumentResourceManager::globalShapeController() const
0147 {
0148     if (!hasResource(GlobalShapeController))
0149         return 0;
0150 
0151     return resource(GlobalShapeController).value<KoShapeController *>();
0152 }
0153 
0154 void KoDocumentResourceManager::setGlobalShapeController(KoShapeController *shapeController)
0155 {
0156     QVariant variant;
0157     variant.setValue<KoShapeController *>(shapeController);
0158     setResource(GlobalShapeController, variant);
0159 }