]>
Commit | Line | Data |
---|---|---|
7d018471 JB |
1 | --- krita-5.1.5/plugins/metadata/common/KisExiv2IODevice.h.orig 2023-01-05 12:21:21.000000000 +0100 |
2 | +++ krita-5.1.5/plugins/metadata/common/KisExiv2IODevice.h 2023-07-28 20:55:52.067163352 +0200 | |
3 | @@ -18,21 +18,37 @@ | |
4 | class KRITAEXIFCOMMON_EXPORT KisExiv2IODevice : public Exiv2::BasicIo | |
5 | { | |
6 | public: | |
7 | +#if EXIV2_TEST_VERSION (0,28,0) | |
8 | + using ptr_type = Exiv2::BasicIo::UniquePtr; | |
9 | +#else | |
10 | using ptr_type = Exiv2::BasicIo::AutoPtr; | |
11 | +#endif | |
12 | ||
13 | KisExiv2IODevice(QString path); | |
14 | ~KisExiv2IODevice() override; | |
15 | ||
16 | int open() override; | |
17 | int close() override; | |
18 | +#if EXIV2_TEST_VERSION (0,28,0) | |
19 | + size_t write(const Exiv2::byte *data, size_t wcount) override; | |
20 | + size_t write(Exiv2::BasicIo &src) override; | |
21 | + Exiv2::DataBuf read(size_t rcount) override; | |
22 | + size_t read(Exiv2::byte *buf, size_t rcount) override; | |
23 | + size_t tell() const override; | |
24 | + const std::string& path() const noexcept override; | |
25 | + void populateFakeData() override {} | |
26 | +#else | |
27 | long write(const Exiv2::byte *data, long wcount) override; | |
28 | long write(Exiv2::BasicIo &src) override; | |
29 | - int putb(Exiv2::byte data) override; | |
30 | Exiv2::DataBuf read(long rcount) override; | |
31 | long read(Exiv2::byte *buf, long rcount) override; | |
32 | + long tell() const override; | |
33 | + std::string path() const override; | |
34 | +#endif | |
35 | + int putb(Exiv2::byte data) override; | |
36 | int getb() override; | |
37 | void transfer(BasicIo &src) override; | |
38 | -#if defined(_MSC_VER) | |
39 | +#if defined(_MSC_VER) || EXIV2_TEST_VERSION (0,28,0) | |
40 | int seek(int64_t offset, Position pos) override; | |
41 | #else | |
42 | int seek(long offset, Position pos) override; | |
43 | @@ -40,12 +56,10 @@ public: | |
44 | ||
45 | Exiv2::byte *mmap(bool isWriteable = false) override; | |
46 | int munmap() override; | |
47 | - long tell() const override; | |
48 | size_t size() const override; | |
49 | bool isopen() const override; | |
50 | int error() const override; | |
51 | bool eof() const override; | |
52 | - std::string path() const override; | |
53 | ||
54 | private: | |
55 | bool open(QFile::OpenMode mode); | |
56 | --- krita-5.1.5/plugins/metadata/common/KisExiv2IODevice.cpp.orig 2023-01-05 12:21:21.000000000 +0100 | |
57 | +++ krita-5.1.5/plugins/metadata/common/KisExiv2IODevice.cpp 2023-07-28 14:04:49.160142867 +0200 | |
58 | @@ -39,7 +39,11 @@ int KisExiv2IODevice::close() | |
59 | return 0; | |
60 | } | |
61 | ||
62 | +#if EXIV2_TEST_VERSION (0,28,0) | |
63 | +size_t KisExiv2IODevice::write(const Exiv2::byte *data, size_t wcount) | |
64 | +#else | |
65 | long KisExiv2IODevice::write(const Exiv2::byte *data, long wcount) | |
66 | +#endif | |
67 | { | |
68 | if (!m_file.isWritable()) { | |
69 | qWarning() << "KisExiv2IODevice: File not open for writing."; | |
70 | @@ -53,7 +57,11 @@ long KisExiv2IODevice::write(const Exiv2 | |
71 | return 0; | |
72 | } | |
73 | ||
74 | +#if EXIV2_TEST_VERSION (0,28,0) | |
75 | +size_t KisExiv2IODevice::write(Exiv2::BasicIo &src) | |
76 | +#else | |
77 | long KisExiv2IODevice::write(Exiv2::BasicIo &src) | |
78 | +#endif | |
79 | { | |
80 | if (static_cast<BasicIo *>(this) == &src) { | |
81 | return 0; | |
82 | @@ -66,8 +74,13 @@ long KisExiv2IODevice::write(Exiv2::Basi | |
83 | return 0; | |
84 | } | |
85 | Exiv2::byte buffer[4096]; | |
86 | +#if EXIV2_TEST_VERSION (0,28,0) | |
87 | long readCount = 0; | |
88 | long totalWriteCount = 0; | |
89 | +#else | |
90 | + size_t readCount = 0; | |
91 | + size_t totalWriteCount = 0; | |
92 | +#endif | |
93 | while ((readCount = src.read(buffer, sizeof(buffer))) != 0) { | |
94 | totalWriteCount += write(buffer, readCount); | |
95 | } | |
96 | @@ -88,15 +101,23 @@ int KisExiv2IODevice::putb(Exiv2::byte d | |
97 | } | |
98 | } | |
99 | ||
100 | +#if EXIV2_TEST_VERSION (0,28,0) | |
101 | +Exiv2::DataBuf KisExiv2IODevice::read(size_t rcount) | |
102 | +#else | |
103 | Exiv2::DataBuf KisExiv2IODevice::read(long rcount) | |
104 | +#endif | |
105 | { | |
106 | Exiv2::DataBuf buf(rcount); | |
107 | - const long readCount = read(buf.pData_, buf.size_); | |
108 | - buf.size_ = readCount; | |
109 | + const long readCount = read(buf.data(), buf.size()); | |
110 | + buf.resize(readCount); | |
111 | return buf; | |
112 | } | |
113 | ||
114 | +#if EXIV2_TEST_VERSION (0,28,0) | |
115 | +size_t KisExiv2IODevice::read(Exiv2::byte *buf, size_t rcount) | |
116 | +#else | |
117 | long KisExiv2IODevice::read(Exiv2::byte *buf, long rcount) | |
118 | +#endif | |
119 | { | |
120 | const qint64 bytesRead = m_file.read(reinterpret_cast<char *>(buf), rcount); | |
121 | if (bytesRead > 0) { | |
122 | @@ -154,7 +175,7 @@ void KisExiv2IODevice::transfer(Exiv2::B | |
123 | } | |
124 | } | |
125 | ||
126 | -#if defined(_MSC_VER) | |
127 | +#if defined(_MSC_VER) || EXIV2_TEST_VERSION (0,28,0) | |
128 | int KisExiv2IODevice::seek(int64_t offset, Exiv2::BasicIo::Position position) | |
129 | #else | |
130 | int KisExiv2IODevice::seek(long offset, Exiv2::BasicIo::Position position) | |
131 | @@ -202,7 +223,11 @@ int KisExiv2IODevice::munmap() | |
132 | return 0; | |
133 | } | |
134 | ||
135 | +#if EXIV2_TEST_VERSION (0,28,0) | |
136 | +size_t KisExiv2IODevice::tell() const | |
137 | +#else | |
138 | long KisExiv2IODevice::tell() const | |
139 | +#endif | |
140 | { | |
141 | return m_file.pos(); | |
142 | } | |
143 | @@ -231,10 +256,18 @@ bool KisExiv2IODevice::eof() const | |
144 | return m_file.atEnd(); | |
145 | } | |
146 | ||
147 | +#if EXIV2_TEST_VERSION (0,28,0) | |
148 | +const std::string& KisExiv2IODevice::path() const noexcept | |
149 | +{ | |
150 | + static std::string buf = filePathQString().toStdString(); | |
151 | + return buf; | |
152 | +} | |
153 | +#else | |
154 | std::string KisExiv2IODevice::path() const | |
155 | { | |
156 | return filePathQString().toStdString(); | |
157 | } | |
158 | +#endif | |
159 | ||
160 | bool KisExiv2IODevice::open(QFile::OpenMode mode) | |
161 | { | |
162 | --- krita-5.1.5/plugins/metadata/common/kis_exiv2_common.h.orig 2023-01-05 12:21:21.000000000 +0100 | |
163 | +++ krita-5.1.5/plugins/metadata/common/kis_exiv2_common.h 2023-07-28 14:52:02.672742163 +0200 | |
164 | @@ -19,7 +19,11 @@ | |
165 | ||
166 | // Convert an exiv value to a KisMetaData value | |
167 | inline KisMetaData::Value | |
168 | +#if EXIV2_TEST_VERSION (0,28,0) | |
169 | +exivValueToKMDValue(const Exiv2::Value::UniquePtr value, | |
170 | +#else | |
171 | exivValueToKMDValue(const Exiv2::Value::AutoPtr value, | |
172 | +#endif | |
173 | bool forceSeq, | |
174 | KisMetaData::Value::ValueType arrayType = KisMetaData::Value::UnorderedArray) | |
175 | { | |
176 | @@ -42,11 +46,11 @@ exivValueToKMDValue(const Exiv2::Value:: | |
177 | case Exiv2::signedShort: | |
178 | case Exiv2::signedLong: { | |
179 | if (value->count() == 1 && !forceSeq) { | |
180 | - return KisMetaData::Value((int)value->toLong()); | |
181 | + return KisMetaData::Value((int)value->toInt64()); | |
182 | } else { | |
183 | QList<KisMetaData::Value> array; | |
184 | for (int i = 0; i < value->count(); i++) | |
185 | - array.push_back(KisMetaData::Value((int)value->toLong(i))); | |
186 | + array.push_back(KisMetaData::Value((int)value->toInt64(i))); | |
187 | return KisMetaData::Value(array, arrayType); | |
188 | } | |
189 | } | |
190 | --- krita-5.1.5/plugins/metadata/exif/kis_exif_io.cpp.orig 2023-01-05 12:21:21.000000000 +0100 | |
191 | +++ krita-5.1.5/plugins/metadata/exif/kis_exif_io.cpp 2023-07-28 19:47:39.556883236 +0200 | |
192 | @@ -31,7 +31,11 @@ | |
193 | // ---- Exception conversion functions ---- // | |
194 | ||
195 | // convert ExifVersion and FlashpixVersion to a KisMetaData value | |
196 | +#if EXIV2_TEST_VERSION (0,28,0) | |
197 | +KisMetaData::Value exifVersionToKMDValue(const Exiv2::Value::UniquePtr value) | |
198 | +#else | |
199 | KisMetaData::Value exifVersionToKMDValue(const Exiv2::Value::AutoPtr value) | |
200 | +#endif | |
201 | { | |
202 | const Exiv2::DataValue *dvalue = dynamic_cast<const Exiv2::DataValue *>(&*value); | |
203 | if (dvalue) { | |
204 | @@ -55,13 +59,17 @@ Exiv2::Value *kmdValueToExifVersion(cons | |
205 | } | |
206 | ||
207 | // Convert an exif array of integer string to a KisMetaData array of integer | |
208 | +#if EXIV2_TEST_VERSION (0,28,0) | |
209 | +KisMetaData::Value exifArrayToKMDIntOrderedArray(const Exiv2::Value::UniquePtr value) | |
210 | +#else | |
211 | KisMetaData::Value exifArrayToKMDIntOrderedArray(const Exiv2::Value::AutoPtr value) | |
212 | +#endif | |
213 | { | |
214 | QList<KisMetaData::Value> v; | |
215 | const Exiv2::DataValue *dvalue = dynamic_cast<const Exiv2::DataValue *>(&*value); | |
216 | if (dvalue) { | |
217 | for (long i = 0; i < dvalue->count(); i++) { | |
218 | - v.push_back({(int)dvalue->toLong(i)}); | |
219 | + v.push_back({(int)dvalue->toInt64(i)}); | |
220 | } | |
221 | } else { | |
222 | Q_ASSERT(value->typeId() == Exiv2::asciiString); | |
223 | @@ -81,7 +89,11 @@ Exiv2::Value *kmdIntOrderedArrayToExifAr | |
224 | return new Exiv2::DataValue(v.data(), static_cast<long>(v.size())); | |
225 | } | |
226 | ||
227 | +#if EXIV2_TEST_VERSION (0,28,0) | |
228 | +QDateTime exivValueToDateTime(const Exiv2::Value::UniquePtr value) | |
229 | +#else | |
230 | QDateTime exivValueToDateTime(const Exiv2::Value::AutoPtr value) | |
231 | +#endif | |
232 | { | |
233 | return QDateTime::fromString(value->toString().c_str(), Qt::ISODate); | |
234 | } | |
235 | @@ -115,7 +127,11 @@ Exiv2::ByteOrder invertByteOrder(Exiv2:: | |
236 | return Exiv2::invalidByteOrder; | |
237 | } | |
238 | ||
239 | +#if EXIV2_TEST_VERSION (0,28,0) | |
240 | +KisMetaData::Value exifOECFToKMDOECFStructure(const Exiv2::Value::UniquePtr value, Exiv2::ByteOrder order) | |
241 | +#else | |
242 | KisMetaData::Value exifOECFToKMDOECFStructure(const Exiv2::Value::AutoPtr value, Exiv2::ByteOrder order) | |
243 | +#endif | |
244 | { | |
245 | QMap<QString, KisMetaData::Value> oecfStructure; | |
246 | const Exiv2::DataValue *dvalue = dynamic_cast<const Exiv2::DataValue *>(&*value); | |
247 | @@ -202,7 +218,11 @@ Exiv2::Value *kmdOECFStructureToExifOECF | |
248 | return new Exiv2::DataValue((const Exiv2::byte *)array.data(), array.size()); | |
249 | } | |
250 | ||
251 | +#if EXIV2_TEST_VERSION (0,28,0) | |
252 | +KisMetaData::Value deviceSettingDescriptionExifToKMD(const Exiv2::Value::UniquePtr value) | |
253 | +#else | |
254 | KisMetaData::Value deviceSettingDescriptionExifToKMD(const Exiv2::Value::AutoPtr value) | |
255 | +#endif | |
256 | { | |
257 | QMap<QString, KisMetaData::Value> deviceSettingStructure; | |
258 | QByteArray array; | |
259 | @@ -258,7 +278,11 @@ Exiv2::Value *deviceSettingDescriptionKM | |
260 | return new Exiv2::DataValue((const Exiv2::byte *)array.data(), array.size()); | |
261 | } | |
262 | ||
263 | +#if EXIV2_TEST_VERSION (0,28,0) | |
264 | +KisMetaData::Value cfaPatternExifToKMD(const Exiv2::Value::UniquePtr value, Exiv2::ByteOrder order) | |
265 | +#else | |
266 | KisMetaData::Value cfaPatternExifToKMD(const Exiv2::Value::AutoPtr value, Exiv2::ByteOrder order) | |
267 | +#endif | |
268 | { | |
269 | QMap<QString, KisMetaData::Value> cfaPatternStructure; | |
270 | const Exiv2::DataValue *dvalue = dynamic_cast<const Exiv2::DataValue *>(&*value); | |
271 | @@ -310,9 +334,13 @@ Exiv2::Value *cfaPatternKMDToExif(const | |
272 | ||
273 | // Read and write Flash // | |
274 | ||
275 | +#if EXIV2_TEST_VERSION (0,28,0) | |
276 | +KisMetaData::Value flashExifToKMD(const Exiv2::Value::UniquePtr value) | |
277 | +#else | |
278 | KisMetaData::Value flashExifToKMD(const Exiv2::Value::AutoPtr value) | |
279 | +#endif | |
280 | { | |
281 | - const uint16_t v = static_cast<uint16_t>(value->toLong()); | |
282 | + const uint16_t v = static_cast<uint16_t>(value->toInt64()); | |
283 | QMap<QString, KisMetaData::Value> flashStructure; | |
284 | bool fired = (v & 0x01); // bit 1 is whether flash was fired or not | |
285 | flashStructure["Fired"] = QVariant(fired); | |
286 | @@ -465,7 +493,11 @@ bool KisExifIO::saveTo(KisMetaData::Stor | |
287 | << exivKey; // << " of KMD value" << entry.value(); | |
288 | } | |
289 | } | |
290 | +#if EXIV2_TEST_VERSION(0, 28, 0) | |
291 | + } catch (Exiv2::Error &e) { | |
292 | +#else | |
293 | } catch (Exiv2::AnyError &e) { | |
294 | +#endif | |
295 | dbgMetaData << "exiv error " << e.what(); | |
296 | } | |
297 | } | |
298 | --- krita-5.1.5/plugins/metadata/iptc/kis_iptc_io.cpp.orig 2023-01-05 12:21:21.000000000 +0100 | |
299 | +++ krita-5.1.5/plugins/metadata/iptc/kis_iptc_io.cpp 2023-07-28 19:50:08.597734785 +0200 | |
300 | @@ -110,7 +110,11 @@ bool KisIptcIO::saveTo(KisMetaData::Stor | |
301 | if (v && v->typeId() != Exiv2::invalidTypeId) { | |
302 | iptcData.add(iptcKey, v); | |
303 | } | |
304 | +#if EXIV2_TEST_VERSION(0, 28, 0) | |
305 | + } catch (Exiv2::Error &e) { | |
306 | +#else | |
307 | } catch (Exiv2::AnyError &e) { | |
308 | +#endif | |
309 | dbgMetaData << "exiv error " << e.what(); | |
310 | } | |
311 | } | |
312 | @@ -128,7 +132,7 @@ bool KisIptcIO::saveTo(KisMetaData::Stor | |
313 | header.append(photoshopBimId_); | |
314 | header.append(photoshopIptc_); | |
315 | header.append(QByteArray(2, 0)); | |
316 | - qint32 size = rawData.size_; | |
317 | + qint32 size = rawData.size(); | |
318 | QByteArray sizeArray(4, 0); | |
319 | sizeArray[0] = (char)((size & 0xff000000) >> 24); | |
320 | sizeArray[1] = (char)((size & 0x00ff0000) >> 16); | |
321 | @@ -138,7 +142,7 @@ bool KisIptcIO::saveTo(KisMetaData::Stor | |
322 | ioDevice->write(header); | |
323 | } | |
324 | ||
325 | - ioDevice->write((const char *)rawData.pData_, rawData.size_); | |
326 | + ioDevice->write((const char *)rawData.c_data(), rawData.size()); | |
327 | ioDevice->close(); | |
328 | return true; | |
329 | } | |
330 | --- krita-5.1.5/plugins/metadata/xmp/kis_xmp_io.cpp.orig 2023-01-05 12:21:21.000000000 +0100 | |
331 | +++ krita-5.1.5/plugins/metadata/xmp/kis_xmp_io.cpp 2023-07-28 19:54:26.435874618 +0200 | |
332 | @@ -248,7 +248,7 @@ bool KisXMPIO::loadFrom(KisMetaData::Sto | |
333 | Q_ASSERT(schema); | |
334 | } | |
335 | } | |
336 | - const Exiv2::Value::AutoPtr value = it->getValue(); | |
337 | + const auto value = it->getValue(); | |
338 | ||
339 | QString structName; | |
340 | int arrayIndex = -1; | |
341 | --- krita-5.1.5/plugins/impex/jpeg/kis_jpeg_converter.cc.orig 2023-01-05 12:21:21.000000000 +0100 | |
342 | +++ krita-5.1.5/plugins/impex/jpeg/kis_jpeg_converter.cc 2023-07-28 20:13:37.792433757 +0200 | |
343 | @@ -20,6 +20,8 @@ extern "C" { | |
344 | } | |
345 | ||
346 | #include <exiv2/jpgimage.hpp> | |
347 | +#include <exiv2/photoshop.hpp> | |
348 | +#include <exiv2/version.hpp> | |
349 | ||
350 | #include <QFile> | |
351 | #include <QBuffer> | |
352 | @@ -375,8 +377,13 @@ KisImportExportErrorCode KisJPEGConverte | |
353 | uint32_t sizeIptc = 0; | |
354 | uint32_t sizeHdr = 0; | |
355 | // Find actual Iptc data within the APP13 segment | |
356 | - if (!Exiv2::Photoshop::locateIptcIrb((Exiv2::byte*)(marker->data + 14), | |
357 | - marker->data_length - 14, &record, &sizeHdr, &sizeIptc)) { | |
358 | + if (!Exiv2::Photoshop::locateIptcIrb((Exiv2::byte*)(marker->data + 14), marker->data_length - 14, &record, | |
359 | +#if EXIV2_TEST_VERSION (0,28,0) | |
360 | + sizeHdr, sizeIptc | |
361 | +#else | |
362 | + &sizeHdr, &sizeIptc | |
363 | +#endif | |
364 | + )) { | |
365 | if (sizeIptc) { | |
366 | // Decode the IPTC data | |
367 | QByteArray byteArray((const char*)(record + sizeHdr), sizeIptc); | |
368 | --- krita-5.1.5/plugins/impex/tiff/kis_tiff_export.cc.orig 2023-01-05 12:21:21.000000000 +0100 | |
369 | +++ krita-5.1.5/plugins/impex/tiff/kis_tiff_export.cc 2023-07-28 21:48:56.995242908 +0200 | |
370 | @@ -206,7 +206,11 @@ KisImportExportErrorCode KisTIFFExport:: | |
371 | try { | |
372 | KisExiv2IODevice::ptr_type basicIoDevice(new KisExiv2IODevice(filename())); | |
373 | ||
374 | +#if EXIV2_TEST_VERSION (0,28,0) | |
375 | + std::unique_ptr<Exiv2::Image> img(Exiv2::ImageFactory::open(std::move(basicIoDevice))); | |
376 | +#else | |
377 | const std::unique_ptr<Exiv2::Image> img(Exiv2::ImageFactory::open(basicIoDevice).release()); | |
378 | +#endif | |
379 | ||
380 | img->readMetadata(); | |
381 | ||
382 | @@ -241,8 +245,12 @@ KisImportExportErrorCode KisTIFFExport:: | |
383 | } | |
384 | // Write metadata | |
385 | img->writeMetadata(); | |
386 | +#if EXIV2_TEST_VERSION (0,28,0) | |
387 | + } catch (Exiv2::Error &e) { | |
388 | +#else | |
389 | } catch (Exiv2::AnyError &e) { | |
390 | - errFile << "Failed injecting TIFF metadata:" << e.code() | |
391 | +#endif | |
392 | + errFile << "Failed injecting TIFF metadata:" << static_cast<int>(e.code()) | |
393 | << e.what(); | |
394 | } | |
395 | } | |
396 | --- krita-5.1.5/plugins/impex/tiff/kis_tiff_import.cc.orig 2023-01-05 12:21:21.000000000 +0100 | |
397 | +++ krita-5.1.5/plugins/impex/tiff/kis_tiff_import.cc 2023-07-28 21:50:11.042330662 +0200 | |
398 | @@ -1840,7 +1840,11 @@ KisTIFFImport::convert(KisDocument *docu | |
399 | try { | |
400 | KisExiv2IODevice::ptr_type basicIoDevice(new KisExiv2IODevice(filename())); | |
401 | ||
402 | +#if EXIV2_TEST_VERSION (0,28,0) | |
403 | + std::unique_ptr<Exiv2::Image> readImg(Exiv2::ImageFactory::open(std::move(basicIoDevice))); | |
404 | +#else | |
405 | const std::unique_ptr<Exiv2::Image> readImg(Exiv2::ImageFactory::open(basicIoDevice).release()); | |
406 | +#endif | |
407 | ||
408 | readImg->readMetadata(); | |
409 | ||
410 | @@ -1908,8 +1912,12 @@ KisTIFFImport::convert(KisDocument *docu | |
411 | ||
412 | // Inject the data as any other IOBackend | |
413 | io->loadFrom(layer->metaData(), &ioDevice); | |
414 | +#if EXIV2_TEST_VERSION (0,28,0) | |
415 | + } catch (Exiv2::Error &e) { | |
416 | +#else | |
417 | } catch (Exiv2::AnyError &e) { | |
418 | - errFile << "Failed metadata import:" << e.code() << e.what(); | |
419 | +#endif | |
420 | + errFile << "Failed metadata import:" << static_cast<int>(e.code()) << e.what(); | |
421 | } | |
422 | } | |
423 |