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

0001 /* This file is part of the KDE project
0002 
0003    SPDX-FileCopyrightText: 2006, 2010 Thomas Zander <zander@kde.org>
0004    SPDX-FileCopyrightText: 2011 Jan Hambrecht <jaham@gmx.net>
0005 
0006    SPDX-License-Identifier: LGPL-2.0-or-later
0007 */
0008 
0009 #include <QTransform>
0010 #include <QPointer>
0011 
0012 #include "KoShapeControllerBase.h"
0013 #include "KoDocumentResourceManager.h"
0014 #include "KoShapeRegistry.h"
0015 #include "KoShapeFactoryBase.h"
0016 
0017 #include <kconfig.h>
0018 #include <kconfiggroup.h>
0019 #include <ksharedconfig.h>
0020 #include <kundo2command.h>
0021 
0022 class KoshapeControllerBasePrivate
0023 {
0024 public:
0025     KoshapeControllerBasePrivate()
0026         : resourceManager(new KoDocumentResourceManager())
0027     {
0028         KoShapeRegistry *registry = KoShapeRegistry::instance();
0029         foreach (const QString &id, registry->keys()) {
0030             KoShapeFactoryBase *shapeFactory = registry->value(id);
0031             shapeFactory->newDocumentResourceManager(resourceManager);
0032         }
0033         // read persistent application wide resources
0034         KSharedConfigPtr config =  KSharedConfig::openConfig();
0035         KConfigGroup miscGroup = config->group("Misc");
0036         const uint grabSensitivity = miscGroup.readEntry("GrabSensitivity", 10);
0037         resourceManager->setGrabSensitivity(grabSensitivity);
0038         const uint handleRadius = miscGroup.readEntry("HandleRadius", 5);
0039         resourceManager->setHandleRadius(handleRadius);
0040     }
0041 
0042     ~KoshapeControllerBasePrivate()
0043     {
0044         delete resourceManager;
0045     }
0046 
0047     QPointer<KoDocumentResourceManager> resourceManager;
0048 };
0049 
0050 KoShapeControllerBase::KoShapeControllerBase()
0051     : d(new KoshapeControllerBasePrivate())
0052 {
0053 }
0054 
0055 KoShapeControllerBase::~KoShapeControllerBase()
0056 {
0057     delete d;
0058 }
0059 
0060 KoShapeContainer* KoShapeControllerBase::createParentForShapes(const QList<KoShape*> shapes, KUndo2Command *parentCommand)
0061 {
0062     Q_UNUSED(parentCommand);
0063     Q_UNUSED(shapes);
0064 
0065     return 0;
0066 }
0067 
0068 KoDocumentResourceManager *KoShapeControllerBase::resourceManager() const
0069 {
0070     return d->resourceManager;
0071 }
0072 
0073 QRectF KoShapeControllerBase::documentRect() const
0074 {
0075     const qreal pxToPt = 72.0 / pixelsPerInch();
0076 
0077     QTransform t = QTransform::fromScale(pxToPt, pxToPt);
0078     return t.mapRect(documentRectInPixels());
0079 }