Krita Source Code Documentation
Loading...
Searching...
No Matches
KoResource.h
Go to the documentation of this file.
1/* This file is part of the KDE project
2 SPDX-FileCopyrightText: 2003 Patrick Julien <freak@codepimps.org>
3 SPDX-FileCopyrightText: 2005 Boudewijn Rempt <boud@valdyas.org>
4
5 SPDX-License-Identifier: LGPL-2.1-or-later
6 */
7#ifndef KORESOURCE_H
8#define KORESOURCE_H
9
10#include <QImage>
11#include <QString>
12#include <QSharedPointer>
13#include <QDebug>
14
15#include "KoResourceSignature.h"
16
17#include "KisResourceTypes.h"
18#include <boost/operators.hpp>
19
20#include <kritaresources_export.h>
21
22class QDomDocument;
23class QDomElement;
24
25class KoResource;
27
30
32
34void overrideResourceVersion(KoResourceSP resource, int version);
35}
36
46class KRITARESOURCES_EXPORT KoResource : public boost::equality_comparable<KoResource>
47{
48public:
49
56 KoResource();
57 explicit KoResource(const QString &filename);
58 virtual ~KoResource();
59 KoResource(const KoResource &rhs);
60 KoResource &operator=(const KoResource &rhs) = delete;
61
62 virtual KoResourceSP clone() const = 0;
63
64
65
66public:
71 bool load(KisResourcesInterfaceSP resourcesInterface);
72 virtual bool loadFromDevice(QIODevice *dev, KisResourcesInterfaceSP resourcesInterface) = 0;
73
78 bool save();
79 virtual bool saveToDevice(QIODevice* dev) const;
80
87 QImage image() const;
88 void setImage(const QImage &image);
89
95 virtual void updateThumbnail();
96
103 virtual QImage thumbnail() const;
104
112 virtual QString thumbnailPath() const;
113
122 QString md5Sum(bool generateIfEmpty = true) const;
123
125 void setMD5Sum(const QString &md5sum);
126
128 QString filename() const;
129 void setFilename(const QString& filename);
130
132 virtual QString name() const;
133 void setName(const QString& name);
134
136 bool valid() const;
137 void setValid(bool valid);
138
140 bool active() const;
141 void setActive(bool active);
142
144 virtual QString defaultFileExtension() const;
145
147 bool permanent() const;
148 void setPermanent(bool permanent);
149
151 QString storageLocation() const;
152 void setStorageLocation(const QString &location);
153
155 void setDirty(bool value);
156
158 bool isDirty() const;
159
161 void addMetaData(QString key, QVariant value);
162
164 QMap<QString, QVariant> metadata() const;
165
167 int version() const;
168 void setVersion(int version);
169
171 int resourceId() const;
172 void setResourceId(int id);
173
175 virtual QPair<QString, QString> resourceType() const = 0;
176
181 KoResourceSignature signature() const;
182
194 virtual bool isEphemeral() const;
195
207 virtual bool isSerializable() const;
208
218 QList<KoResourceLoadResult> requiredResources(KisResourcesInterfaceSP globalResourcesInterface) const;
219
226 virtual QList<KoResourceLoadResult> linkedResources(KisResourcesInterfaceSP globalResourcesInterface) const;
227
236 virtual QList<KoResourceLoadResult> embeddedResources(KisResourcesInterfaceSP globalResourcesInterface) const;
237
244 QList<KoResourceLoadResult> takeSideLoadedResources(KisResourcesInterfaceSP globalResourcesInterface);
245
254 virtual QList<KoResourceLoadResult> sideLoadedResources(KisResourcesInterfaceSP globalResourcesInterface) const;
255
261 virtual void clearSideLoadedResources();
262
270 virtual QList<int> requiredCanvasResources() const;
271
272private:
273 struct Private;
274 Private* const d;
275};
276
277static inline bool operator==(const KoResource &resource1, const KoResource &resource2)
278{
279 return (resource1.md5Sum() == resource2.md5Sum());
280}
281
282static inline uint qHash(const KoResource &resource)
283{
284 return qHash(resource.md5Sum());
285}
286
288
289
290
291inline QDebug operator<<(QDebug dbg, const KoResourceSP res)
292{
293 if (!res) {
294 dbg.noquote() << "NULL Resource";
295 }
296 else {
297 dbg.nospace() << "[RESOURCE] Name: " << res->name()
298 << " Version: " << res->version()
299 << " Filename: " << res->filename()
300 << " MD5: " << res->md5Sum(false)
301 << " Type: " << res->resourceType()
302 << " Valid: " << res->valid()
303 << " Storage: " << res->storageLocation();
304 }
305 return dbg.space();
306}
307
308#endif // KORESOURCE_H_
309
float value(const T *src, size_t ch)
unsigned int uint
static uint qHash(const KoResource &resource)
Definition KoResource.h:282
static bool operator==(const KoResource &resource1, const KoResource &resource2)
Definition KoResource.h:277
QSharedPointer< KoResource > KoResourceSP
Definition KoResource.h:26
QSharedPointer< KisResourcesInterface > KisResourcesInterfaceSP
Definition KoResource.h:29
a provider-like interface class for accessing resource sources in Krita.
A simple wrapper object for the main information about the resource.
Q_DECLARE_METATYPE(KisPaintopLodLimitations)
void overrideResourceVersion(KoResourceSP resource, int version)
virtual QPair< QString, QString > resourceType() const =0
virtual QString name() const
virtual KoResourceSP clone() const =0
KoResource & operator=(const KoResource &rhs)=delete
Private *const d
Definition KoResource.h:274
QMap< QString, QVariant > metadata() const
get a map with all the metadata
QImage image() const
QString storageLocation() const
int version() const
Get the version of the resource.
bool active() const
bool valid() const
QString md5Sum(bool generateIfEmpty=true) const
virtual bool loadFromDevice(QIODevice *dev, KisResourcesInterfaceSP resourcesInterface)=0
QString filename() const
bool permanent() const
int resourceId() const