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

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     }
0039 
0040     ~KoshapeControllerBasePrivate()
0041     {
0042         delete resourceManager;
0043     }
0044 
0045     QPointer<KoDocumentResourceManager> resourceManager;
0046 };
0047 
0048 KoShapeControllerBase::KoShapeControllerBase()
0049     : d(new KoshapeControllerBasePrivate())
0050 {
0051 }
0052 
0053 KoShapeControllerBase::~KoShapeControllerBase()
0054 {
0055     delete d;
0056 }
0057 
0058 KoShapeContainer* KoShapeControllerBase::createParentForShapes(const QList<KoShape*> shapes, KUndo2Command *parentCommand)
0059 {
0060     Q_UNUSED(parentCommand);
0061     Q_UNUSED(shapes);
0062 
0063     return 0;
0064 }
0065 
0066 KoDocumentResourceManager *KoShapeControllerBase::resourceManager() const
0067 {
0068     return d->resourceManager;
0069 }
0070 
0071 QRectF KoShapeControllerBase::documentRect() const
0072 {
0073     const qreal pxToPt = 72.0 / pixelsPerInch();
0074 
0075     QTransform t = QTransform::fromScale(pxToPt, pxToPt);
0076     return t.mapRect(documentRectInPixels());
0077 }