Krita Source Code Documentation
Loading...
Searching...
No Matches
KisEmbeddedTextureData.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2022 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
7
8#include <QFileInfo>
12
13
15{
16 return md5Base64.isEmpty() && md5sum.isEmpty() && fileName.isEmpty() && name.isEmpty();
17}
18
20{
22
23 data.md5Base64 = QByteArray::fromHex(pattern->md5Sum().toLatin1()).toBase64();
24 data.md5sum = pattern->md5Sum();
25 data.fileName = pattern->filename();
26 data.name = pattern->name();
27
28 return data;
29}
30
31
33{
34 auto resourceSourceAdapter = resourcesInterface->source<KoPattern>(ResourceType::Patterns);
35
36 QString effectiveMd5Sum = md5sum;
37
38 if (effectiveMd5Sum.isEmpty()) {
39 const QByteArray md5 = QByteArray::fromBase64(md5Base64.toLatin1());
40 effectiveMd5Sum = md5.toHex();
41 }
42
43 return resourceSourceAdapter.bestMatchLoadResult(effectiveMd5Sum, fileName, name);
44}
45
47{
48 QString effectiveMd5Sum = md5sum;
49
50 if (effectiveMd5Sum.isEmpty()) {
51 const QByteArray md5 = QByteArray::fromBase64(md5Base64.toLatin1());
52 effectiveMd5Sum = md5.toHex();
53 }
54
55 QString effectiveName = name;
56
57 if (effectiveName.isEmpty() || effectiveName != QFileInfo(effectiveName).fileName()) {
58 QFileInfo info(effectiveName);
59 effectiveName = info.completeBaseName();
60 }
61
63 // return a fail-link pattern
64 return KoResourceSignature(ResourceType::Patterns, effectiveMd5Sum, fileName, effectiveName);
65 }
66
67 const QByteArray ba = QByteArray::fromBase64(patternBase64.toLatin1());
68 return KoEmbeddedResource(KoResourceSignature(ResourceType::Patterns, effectiveMd5Sum, fileName, effectiveName), ba);
69}
70
71
73{
74 KoResourceLoadResult result = tryFetchPattern(resourcesInterface);
75
76 if (result.type() == KoResourceLoadResult::FailedLink && !patternBase64.isEmpty()) {
77 result = tryLoadEmbeddedPattern();
78 }
79
80 return result;
81}
82
84{
85 md5Base64 = setting->getString("Texture/Pattern/PatternMD5");
86 md5sum = setting->getString("Texture/Pattern/PatternMD5Sum");
87 fileName = QFileInfo(setting->getString("Texture/Pattern/PatternFileName")).fileName();
88 name = setting->getString("Texture/Pattern/Name");
89 patternBase64 = setting->getString("Texture/Pattern/Pattern");
90
91 return true;
92}
93
95{
96 setting->setProperty("Texture/Pattern/PatternMD5", md5Base64);
97 setting->setProperty("Texture/Pattern/PatternMD5Sum", md5sum);
98 setting->setProperty("Texture/Pattern/PatternFileName", fileName);
99 setting->setProperty("Texture/Pattern/Name", name);
100}
void write(KisPropertiesConfiguration *setting) const
KoResourceLoadResult loadLinkedPattern(KisResourcesInterfaceSP resourcesInterface) const
static KisEmbeddedTextureData fromPattern(KoPatternSP pattern)
KoResourceLoadResult tryFetchPattern(KisResourcesInterfaceSP resourcesInterface) const
KoResourceLoadResult tryLoadEmbeddedPattern() const
bool read(const KisPropertiesConfiguration *setting)
Write API docs here.
Definition KoPattern.h:21
A simple wrapper object for the main information about the resource.
#define KIS_SAFE_ASSERT_RECOVER(cond)
Definition kis_assert.h:126
const QString Patterns
QString getString(const QString &name, const QString &def=QString()) const
virtual void setProperty(const QString &name, const QVariant &value)