Krita Source Code Documentation
Loading...
Searching...
No Matches
KisRequiredResourcesOperators.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2020 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
8
9#include <QApplication>
10#include <QBuffer>
11#include <QThread>
14#include <KisMimeDatabase.h>
15
16
18{
19 return !resourcesInterface.dynamicCast<KisLocalStrokeResources>().isNull();
20}
21
23{
24 KIS_SAFE_ASSERT_RECOVER_RETURN(QThread::currentThread() == qApp->thread());
25}
26
31
33{
34 switch (loadedResource.type()) {
36 KIS_SAFE_ASSERT_RECOVER(loadedResource.resource())
37 {
38 // XXX: remove once KoResourceLoadResult takes std::monostate
39 qWarning() << "Attempt to retrieve a resource that is null";
40 return;
41 }
42 *resources << loadedResource.resource();
43 break;
51 const KoEmbeddedResource embeddedResource = loadedResource.embeddedResource();
52 const KoResourceSignature sig = embeddedResource.signature();
53
55
56 if (!loader) {
57 qWarning() << "createLocalResourcesSnapshot: Could not create a loader for resource" << sig;
58 return;
59 }
60
61 QByteArray ba = embeddedResource.data();
62 QBuffer buf(&ba);
63 buf.open(QBuffer::ReadOnly);
64
65 KoResourceSP resource = loader->load(sig.filename, buf, resourcesInterface);
66
67 if (resource) {
68 resource->setMD5Sum(sig.md5sum);
69 resource->setVersion(0);
70 resource->setDirty(false);
71
72 *resources << resource;
73 } else {
74 qWarning() << "createLocalResourcesSnapshot: Could not import embedded resource" << sig;
75 }
76 break;
77 }
79 qWarning() << "createLocalResourcesSnapshot: failed to load a linked resource:" << loadedResource.signature();
80 break;
81 }
82}
a KisResourcesInterface-like resources storage for preloaded resources
static QString mimeTypeForFile(const QString &file, bool checkExistingFiles=true)
Find the mimetype for the given filename. The filename must include a suffix.
The KisResourceLoader class is an abstract interface class that must be implemented by actual resourc...
bool load(KoResourceSP resource, QIODevice &dev, KisResourcesInterfaceSP resourcesInterface)
static KisResourceLoaderRegistry * instance()
KisResourceLoaderBase * loader(const QString &resourceType, const QString &mimetype) const
const KoResourceSignature & signature() const
QByteArray data() const
KoResourceSP resource() const noexcept
KoEmbeddedResource embeddedResource() const noexcept
KoResourceSignature signature() const
A simple wrapper object for the main information about the resource.
#define KIS_SAFE_ASSERT_RECOVER(cond)
Definition kis_assert.h:126
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128
KisResourcesInterfaceSP KRITARESOURCES_EXPORT createLocalResourcesStorage(const QList< KoResourceSP > &resources)
bool KRITARESOURCES_EXPORT isLocalResourcesStorage(KisResourcesInterfaceSP resourcesInterface)
void KRITARESOURCES_EXPORT addResourceOrWarnIfNotLoaded(KoResourceLoadResult loadedResource, QList< KoResourceSP > *resources, KisResourcesInterfaceSP resourcesInterface)