From 5360d2a054b1ea7be406a67fe050dcbe422381e2 Mon Sep 17 00:00:00 2001 From: Leon Marz Date: Fri, 22 Mar 2024 11:08:31 +0100 Subject: [PATCH] community/krita: upgrade to 5.2.2 --- community/krita/0001-fftw-use-pkgconfig.patch | 29 + community/krita/10-jxl.patch | 23 + community/krita/32.patch | 26 - community/krita/APKBUILD | 20 +- community/krita/exiv2-0.28.patch | 568 ------------------ 5 files changed, 62 insertions(+), 604 deletions(-) create mode 100644 community/krita/0001-fftw-use-pkgconfig.patch delete mode 100644 community/krita/32.patch delete mode 100644 community/krita/exiv2-0.28.patch diff --git a/community/krita/0001-fftw-use-pkgconfig.patch b/community/krita/0001-fftw-use-pkgconfig.patch new file mode 100644 index 00000000000..2b0cea4b51f --- /dev/null +++ b/community/krita/0001-fftw-use-pkgconfig.patch @@ -0,0 +1,29 @@ +From 61f2c01a0d93b97e1c9eaad85b7e5137fc4f88cf Mon Sep 17 00:00:00 2001 +From: Leon Marz +Date: Fri, 22 Mar 2024 10:52:13 +0100 +Subject: [PATCH] fftw use pkgconfig + +--- + cmake/modules/FindFFTW3.cmake | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/cmake/modules/FindFFTW3.cmake b/cmake/modules/FindFFTW3.cmake +index afb20c4..61c6c48 100644 +--- a/cmake/modules/FindFFTW3.cmake ++++ b/cmake/modules/FindFFTW3.cmake +@@ -74,9 +74,9 @@ foreach(_dir ${CMAKE_PREFIX_PATH}) + endforeach() + mark_as_advanced(PKG_FFTW_CONFIG_DIR) + +-find_package(FFTW3 QUIET NO_MODULE +- HINTS ${PKG_FFTW_CONFIG_DIR} /usr/lib/cmake/fftw3 /usr/local/lib/cmake/fftw3 +-) ++# find_package(FFTW3 QUIET NO_MODULE ++# HINTS ${PKG_FFTW_CONFIG_DIR} /usr/lib/cmake/fftw3 /usr/local/lib/cmake/fftw3 ++# ) + mark_as_advanced(FFTW3_DIR) + + # if we found the FFTW3 CMake package then we can start +-- +2.44.0 + diff --git a/community/krita/10-jxl.patch b/community/krita/10-jxl.patch index 109a029351e..83caf604bf7 100644 --- a/community/krita/10-jxl.patch +++ b/community/krita/10-jxl.patch @@ -68,3 +68,26 @@ index 573bae41247..f5b989b3b70 100644 JXL_COLOR_PROFILE_TARGET_DATA, reinterpret_cast(iccProfile.data()), static_cast(iccProfile.size()))) { +@@ -657,7 +666,9 @@ JPEGXLImport::convert(KisDocument *document, QIODevice *io, KisPropertiesConfigu + if (!d.m_info.uses_original_profile) { + if (JXL_DEC_SUCCESS + != JxlDecoderGetICCProfileSize(dec.get(), ++#if JPEGXL_NUMERIC_VERSION < JPEGXL_COMPUTE_NUMERIC_VERSION(0,9,0) + nullptr, ++#endif + JXL_COLOR_PROFILE_TARGET_ORIGINAL, + &iccTargetSize)) { + errFile << "ICC profile size retrieval failed"; +@@ -667,7 +678,9 @@ JPEGXLImport::convert(KisDocument *document, QIODevice *io, KisPropertiesConfigu + iccTargetProfile.resize(static_cast(iccTargetSize)); + if (JXL_DEC_SUCCESS + != JxlDecoderGetColorAsICCProfile(dec.get(), ++#if JPEGXL_NUMERIC_VERSION < JPEGXL_COMPUTE_NUMERIC_VERSION(0,9,0) + nullptr, ++#endif + JXL_COLOR_PROFILE_TARGET_ORIGINAL, + reinterpret_cast(iccTargetProfile.data()), + static_cast(iccTargetProfile.size()))) { +-- +GitLab + diff --git a/community/krita/32.patch b/community/krita/32.patch deleted file mode 100644 index e77b5ace06f..00000000000 --- a/community/krita/32.patch +++ /dev/null @@ -1,26 +0,0 @@ -diff --git a/plugins/metadata/common/KisExiv2IODevice.cpp b/plugins/metadata/common/KisExiv2IODevice.cpp -index bf5cdc2..99cb8b0 100644 ---- a/plugins/metadata/common/KisExiv2IODevice.cpp -+++ b/plugins/metadata/common/KisExiv2IODevice.cpp -@@ -178,7 +178,7 @@ void KisExiv2IODevice::transfer(Exiv2::BasicIo &src) - #if defined(_MSC_VER) - int KisExiv2IODevice::seek(int64_t offset, Exiv2::BasicIo::Position position) - #else --int KisExiv2IODevice::seek(long offset, Exiv2::BasicIo::Position position) -+int KisExiv2IODevice::seek(int64_t offset, Exiv2::BasicIo::Position position) - #endif - { - qint64 pos = 0; -diff --git a/plugins/metadata/common/KisExiv2IODevice.h b/plugins/metadata/common/KisExiv2IODevice.h -index 27f5f8d..0f8f565 100644 ---- a/plugins/metadata/common/KisExiv2IODevice.h -+++ b/plugins/metadata/common/KisExiv2IODevice.h -@@ -47,7 +47,7 @@ public: - #if defined(_MSC_VER) - int seek(int64_t offset, Position pos) override; - #else -- int seek(long offset, Position pos) override; -+ int seek(int64_t offset, Position pos) override; - #endif - - Exiv2::byte *mmap(bool isWriteable = false) override; diff --git a/community/krita/APKBUILD b/community/krita/APKBUILD index e8c26b39a04..d6ceb3431c6 100644 --- a/community/krita/APKBUILD +++ b/community/krita/APKBUILD @@ -1,8 +1,8 @@ # Contributor: Bart Ribbers # Maintainer: Bart Ribbers pkgname=krita -pkgver=5.1.5 -pkgrel=11 +pkgver=5.2.2 +pkgrel=0 # armhf blocked by build failures # s390x: nobody is using an art tool there arch="all !s390x !armhf" @@ -18,6 +18,7 @@ makedepends=" fftw-dev giflib-dev gsl-dev + immer karchive5-dev kcompletion5-dev kconfig5-dev @@ -30,12 +31,14 @@ makedepends=" krita-kseexpr-dev kwidgetsaddons5-dev kwindowsystem5-dev + lager lcms2-dev libheif-dev libjpeg-turbo-dev libjxl-dev libmypaint-dev libraw-dev + libunibreak-dev libxi-dev opencolorio-dev openexr-dev @@ -52,12 +55,11 @@ makedepends=" tiff-dev xcb-util-dev zlib-dev + zug " checkdepends="xvfb-run" source="https://download.kde.org/stable/krita/$pkgver/krita-$pkgver.tar.xz - $pkgname-tiff-heap-crash.patch::https://invent.kde.org/graphics/krita/-/commit/bbee5eff34e7a17c4a1c7b59abe4823ccff7f58c.diff - exiv2-0.28.patch - 32.patch + 0001-fftw-use-pkgconfig.patch 10-jxl.patch " subpackages="$pkgname-dev $pkgname-lang $pkgname-python" @@ -96,9 +98,7 @@ python() { } sha512sums=" -b745eb9f51bb08df0948d6b97b85aee6a74b496df3e8423fb9107d79551daadb21960b4bb5c438348f662c67d0ec5b2fa6da18cfa5feb418659881cddd24d8f1 krita-5.1.5.tar.xz -642aaa3192114d39add74955da7747ca77d543858382dc0824c0be73696c0b7736dbadd0ca9ca8ef321a712df57b1ee39999c4ae741cb6459b43312e7cb146bb krita-tiff-heap-crash.patch -a145d9402e372f8453509eb711546418bf5578713d8bb8a42bb24497441781b4fbdc661511f72041d006687c42b465066ce072e303b6aed053aead2020ef106e exiv2-0.28.patch -c14bf4876e1bc0e757ed5c9231b1875c26d495462ce74b34e7dee958bc482b86754c1636b9b2cdf31fcc81484ade08988b8c8c4aa9ef83af66a5a03a4c237e44 32.patch -59be9a7f6f8424c27fad0cdb437effbb2ffd4b031e7e9006e63c9622652978bc042b110263060c97793543a39e068bb7246e9acfac90089e1928934e9a412f63 10-jxl.patch +d2e55d9a6c7be79f5b6661a1bd605cdf1ce20ec78cdaab1ba19a4acca5397afa0c0e8bc1cbf60120993b156aef65ed35fde2de756841342d18221c82ea81a1eb krita-5.2.2.tar.xz +246d632e1afa28fbb1ef0abe1a62433694465e2f3918f8d110a7ad6ff99b27d94a7d91dbf061eccd6ecfa72d8dbff87c1b2696effcb482045aaf3f89169e9a0e 0001-fftw-use-pkgconfig.patch +b4932c1d9c6136203d8cff92a7ed65089cf5b6bd3f80ccf093d524d39fd3ddac408793fb7ae3287ce78d5574c34440bc849a5a90b618c39638854ea6f5fd3205 10-jxl.patch " diff --git a/community/krita/exiv2-0.28.patch b/community/krita/exiv2-0.28.patch deleted file mode 100644 index bb3e6cd54df..00000000000 --- a/community/krita/exiv2-0.28.patch +++ /dev/null @@ -1,568 +0,0 @@ -Patch-Source: https://gitlab.archlinux.org/archlinux/packaging/packages/krita/-/blob/acd9a818660e86b14a66fceac295c2bab318c671/exiv2-0.28.patch --- -diff --git a/plugins/impex/jpeg/kis_jpeg_converter.cc b/plugins/impex/jpeg/kis_jpeg_converter.cc -index 3364ae6eda..476151e123 100644 ---- a/plugins/impex/jpeg/kis_jpeg_converter.cc -+++ b/plugins/impex/jpeg/kis_jpeg_converter.cc -@@ -20,6 +20,10 @@ extern "C" { - } - - #include -+#include -+#if EXIV2_TEST_VERSION(0,28,0) -+#include -+#endif - - #include - #include -@@ -376,7 +380,11 @@ KisImportExportErrorCode KisJPEGConverter::decode(QIODevice *io) - uint32_t sizeHdr = 0; - // Find actual Iptc data within the APP13 segment - if (!Exiv2::Photoshop::locateIptcIrb((Exiv2::byte*)(marker->data + 14), -+#if EXIV2_TEST_VERSION(0,28,0) -+ marker->data_length - 14, &record, sizeHdr, sizeIptc)) { -+#else - marker->data_length - 14, &record, &sizeHdr, &sizeIptc)) { -+#endif - if (sizeIptc) { - // Decode the IPTC data - QByteArray byteArray((const char*)(record + sizeHdr), sizeIptc); -diff --git a/plugins/impex/tiff/kis_tiff_export.cc b/plugins/impex/tiff/kis_tiff_export.cc -index 8c8f71d7c0..69cbda6303 100644 ---- a/plugins/impex/tiff/kis_tiff_export.cc -+++ b/plugins/impex/tiff/kis_tiff_export.cc -@@ -206,7 +206,11 @@ KisImportExportErrorCode KisTIFFExport::convert(KisDocument *document, QIODevice - try { - KisExiv2IODevice::ptr_type basicIoDevice(new KisExiv2IODevice(filename())); - -+#if EXIV2_TEST_VERSION(0,28,0) -+ const std::unique_ptr img = Exiv2::ImageFactory::open(std::move(basicIoDevice)); -+#else - const std::unique_ptr img(Exiv2::ImageFactory::open(basicIoDevice).release()); -+#endif - - img->readMetadata(); - -@@ -241,9 +245,14 @@ KisImportExportErrorCode KisTIFFExport::convert(KisDocument *document, QIODevice - } - // Write metadata - img->writeMetadata(); -+#if EXIV2_TEST_VERSION(0,28,0) -+ } catch (Exiv2::Error &e) { -+ errFile << "Failed injecting TIFF metadata:" << Exiv2::Error(e.code()).what(); -+#else - } catch (Exiv2::AnyError &e) { - errFile << "Failed injecting TIFF metadata:" << e.code() - << e.what(); -+#endif - } - } - return ImportExportCodes::OK; -diff --git a/plugins/impex/tiff/kis_tiff_import.cc b/plugins/impex/tiff/kis_tiff_import.cc -index e6d408e923..5be62bbbf5 100644 ---- a/plugins/impex/tiff/kis_tiff_import.cc -+++ b/plugins/impex/tiff/kis_tiff_import.cc -@@ -1842,7 +1842,11 @@ KisTIFFImport::convert(KisDocument *document, - try { - KisExiv2IODevice::ptr_type basicIoDevice(new KisExiv2IODevice(filename())); - -+#if EXIV2_TEST_VERSION(0,28,0) -+ const std::unique_ptr readImg = Exiv2::ImageFactory::open(std::move(basicIoDevice)); -+#else - const std::unique_ptr readImg(Exiv2::ImageFactory::open(basicIoDevice).release()); -+#endif - - readImg->readMetadata(); - -@@ -1910,8 +1914,13 @@ KisTIFFImport::convert(KisDocument *document, - - // Inject the data as any other IOBackend - io->loadFrom(layer->metaData(), &ioDevice); -+#if EXIV2_TEST_VERSION(0,28,0) -+ } catch (Exiv2::Error &e) { -+ errFile << "Failed metadata import:" << Exiv2::Error(e.code()).what(); -+#else - } catch (Exiv2::AnyError &e) { - errFile << "Failed metadata import:" << e.code() << e.what(); -+#endif - } - } - -diff --git a/plugins/metadata/common/KisExiv2IODevice.cpp b/plugins/metadata/common/KisExiv2IODevice.cpp -index c62e2d15ae..bf5cdc2bd6 100644 ---- a/plugins/metadata/common/KisExiv2IODevice.cpp -+++ b/plugins/metadata/common/KisExiv2IODevice.cpp -@@ -39,7 +39,11 @@ int KisExiv2IODevice::close() - return 0; - } - -+#if EXIV2_TEST_VERSION(0,28,0) -+size_t KisExiv2IODevice::write(const Exiv2::byte *data, size_t wcount) -+#else - long KisExiv2IODevice::write(const Exiv2::byte *data, long wcount) -+#endif - { - if (!m_file.isWritable()) { - qWarning() << "KisExiv2IODevice: File not open for writing."; -@@ -53,7 +57,11 @@ long KisExiv2IODevice::write(const Exiv2::byte *data, long wcount) - return 0; - } - -+#if EXIV2_TEST_VERSION(0,28,0) -+size_t KisExiv2IODevice::write(Exiv2::BasicIo &src) -+#else - long KisExiv2IODevice::write(Exiv2::BasicIo &src) -+#endif - { - if (static_cast(this) == &src) { - return 0; -@@ -88,15 +96,28 @@ int KisExiv2IODevice::putb(Exiv2::byte data) - } - } - -+#if EXIV2_TEST_VERSION(0,28,0) -+Exiv2::DataBuf KisExiv2IODevice::read(size_t rcount) -+#else - Exiv2::DataBuf KisExiv2IODevice::read(long rcount) -+#endif - { - Exiv2::DataBuf buf(rcount); -+#if EXIV2_TEST_VERSION(0,28,0) -+ const size_t readCount = read(buf.data(), buf.size()); -+ buf.resize(readCount); -+#else - const long readCount = read(buf.pData_, buf.size_); - buf.size_ = readCount; -+#endif - return buf; - } - -+#if EXIV2_TEST_VERSION(0,28,0) -+size_t KisExiv2IODevice::read(Exiv2::byte *buf, size_t rcount) -+#else - long KisExiv2IODevice::read(Exiv2::byte *buf, long rcount) -+#endif - { - const qint64 bytesRead = m_file.read(reinterpret_cast(buf), rcount); - if (bytesRead > 0) { -@@ -202,7 +223,18 @@ int KisExiv2IODevice::munmap() - return 0; - } - -+#if EXIV2_TEST_VERSION(0,28,0) -+void KisExiv2IODevice::populateFakeData() -+{ -+ return; -+} -+#endif -+ -+#if EXIV2_TEST_VERSION(0,28,0) -+size_t KisExiv2IODevice::tell() const -+#else - long KisExiv2IODevice::tell() const -+#endif - { - return m_file.pos(); - } -@@ -231,7 +263,11 @@ bool KisExiv2IODevice::eof() const - return m_file.atEnd(); - } - -+#if EXIV2_TEST_VERSION(0,28,0) -+const std::string& KisExiv2IODevice::path() const noexcept -+#else - std::string KisExiv2IODevice::path() const -+#endif - { - return filePathQString().toStdString(); - } -diff --git a/plugins/metadata/common/KisExiv2IODevice.h b/plugins/metadata/common/KisExiv2IODevice.h -index d90831e832..27f5f8d5fc 100644 ---- a/plugins/metadata/common/KisExiv2IODevice.h -+++ b/plugins/metadata/common/KisExiv2IODevice.h -@@ -18,18 +18,30 @@ - class KRITAEXIFCOMMON_EXPORT KisExiv2IODevice : public Exiv2::BasicIo - { - public: -+#if EXIV2_TEST_VERSION(0,28,0) -+ using ptr_type = Exiv2::BasicIo::UniquePtr; -+#else - using ptr_type = Exiv2::BasicIo::AutoPtr; -+#endif - - KisExiv2IODevice(QString path); - ~KisExiv2IODevice() override; - - int open() override; - int close() override; -+#if EXIV2_TEST_VERSION(0,28,0) -+ size_t write(const Exiv2::byte *data, size_t wcount) override; -+ size_t write(Exiv2::BasicIo &src) override; -+ int putb(Exiv2::byte data) override; -+ Exiv2::DataBuf read(size_t rcount) override; -+ size_t read(Exiv2::byte *buf, size_t rcount) override; -+#else - long write(const Exiv2::byte *data, long wcount) override; - long write(Exiv2::BasicIo &src) override; - int putb(Exiv2::byte data) override; - Exiv2::DataBuf read(long rcount) override; - long read(Exiv2::byte *buf, long rcount) override; -+#endif - int getb() override; - void transfer(BasicIo &src) override; - #if defined(_MSC_VER) -@@ -39,13 +51,24 @@ public: - #endif - - Exiv2::byte *mmap(bool isWriteable = false) override; -+#if EXIV2_TEST_VERSION(0,28,0) -+ void populateFakeData() override; -+#endif - int munmap() override; -+#if EXIV2_TEST_VERSION(0,28,0) -+ size_t tell() const override; -+#else - long tell() const override; -+#endif - size_t size() const override; - bool isopen() const override; - int error() const override; - bool eof() const override; -+#if EXIV2_TEST_VERSION(0,28,0) -+ const std::string& path() const noexcept override; -+#else - std::string path() const override; -+#endif - - private: - bool open(QFile::OpenMode mode); -diff --git a/plugins/metadata/common/kis_exiv2_common.h b/plugins/metadata/common/kis_exiv2_common.h -index 3ab34bb63b..ef67355558 100644 ---- a/plugins/metadata/common/kis_exiv2_common.h -+++ b/plugins/metadata/common/kis_exiv2_common.h -@@ -19,7 +19,11 @@ - - // Convert an exiv value to a KisMetaData value - inline KisMetaData::Value -+#if EXIV2_TEST_VERSION(0,28,0) -+exivValueToKMDValue(const Exiv2::Value::UniquePtr value, -+#else - exivValueToKMDValue(const Exiv2::Value::AutoPtr value, -+#endif - bool forceSeq, - KisMetaData::Value::ValueType arrayType = KisMetaData::Value::UnorderedArray) - { -@@ -42,11 +46,20 @@ exivValueToKMDValue(const Exiv2::Value::AutoPtr value, - case Exiv2::signedShort: - case Exiv2::signedLong: { - if (value->count() == 1 && !forceSeq) { -+#if EXIV2_TEST_VERSION(0,28,0) -+ return KisMetaData::Value((int)value->toUint32()); -+#else - return KisMetaData::Value((int)value->toLong()); -+#endif - } else { - QList array; -+#if EXIV2_TEST_VERSION(0,28,0) -+ for (size_t i = 0; i < value->count(); i++) -+ array.push_back(KisMetaData::Value((int)value->toUint32(i))); -+#else - for (int i = 0; i < value->count(); i++) - array.push_back(KisMetaData::Value((int)value->toLong(i))); -+#endif - return KisMetaData::Value(array, arrayType); - } - } -@@ -63,7 +76,11 @@ exivValueToKMDValue(const Exiv2::Value::AutoPtr value, - return {KisMetaData::Rational(value->toRational().first, value->toRational().second)}; - } else { - QList array; -+#if EXIV2_TEST_VERSION(0,28,0) -+ for (size_t i = 0; i < value->count(); i++) { -+#else - for (long i = 0; i < value->count(); i++) { -+#endif - array.push_back(KisMetaData::Rational(value->toRational(i).first, value->toRational(i).second)); - } - return KisMetaData::Value(array, arrayType); -@@ -77,7 +94,11 @@ exivValueToKMDValue(const Exiv2::Value::AutoPtr value, - return KisMetaData::Value(KisMetaData::Rational(value->toRational().first, value->toRational().second)); - } else { - QList array; -+#if EXIV2_TEST_VERSION(0,28,0) -+ for (size_t i = 0; i < value->count(); i++) { -+#else - for (long i = 0; i < value->count(); i++) { -+#endif - array.push_back(KisMetaData::Rational(value->toRational(i).first, value->toRational(i).second)); - } - return KisMetaData::Value(array, arrayType); -diff --git a/plugins/metadata/exif/kis_exif_io.cpp b/plugins/metadata/exif/kis_exif_io.cpp -index 44697121d9..6afdf75bf2 100644 ---- a/plugins/metadata/exif/kis_exif_io.cpp -+++ b/plugins/metadata/exif/kis_exif_io.cpp -@@ -31,7 +31,11 @@ - // ---- Exception conversion functions ---- // - - // convert ExifVersion and FlashpixVersion to a KisMetaData value -+#if EXIV2_TEST_VERSION(0,28,0) -+KisMetaData::Value exifVersionToKMDValue(const Exiv2::Value::UniquePtr value) -+#else - KisMetaData::Value exifVersionToKMDValue(const Exiv2::Value::AutoPtr value) -+#endif - { - const Exiv2::DataValue *dvalue = dynamic_cast(&*value); - if (dvalue) { -@@ -55,13 +59,22 @@ Exiv2::Value *kmdValueToExifVersion(const KisMetaData::Value &value) - } - - // Convert an exif array of integer string to a KisMetaData array of integer -+#if EXIV2_TEST_VERSION(0,28,0) -+KisMetaData::Value exifArrayToKMDIntOrderedArray(const Exiv2::Value::UniquePtr value) -+#else - KisMetaData::Value exifArrayToKMDIntOrderedArray(const Exiv2::Value::AutoPtr value) -+#endif - { - QList v; - const Exiv2::DataValue *dvalue = dynamic_cast(&*value); - if (dvalue) { -+#if EXIV2_TEST_VERSION(0,28,0) -+ for (size_t i = 0; i < dvalue->count(); i++) { -+ v.push_back({(int)dvalue->toUint32(i)}); -+#else - for (long i = 0; i < dvalue->count(); i++) { - v.push_back({(int)dvalue->toLong(i)}); -+#endif - } - } else { - Q_ASSERT(value->typeId() == Exiv2::asciiString); -@@ -81,7 +94,11 @@ Exiv2::Value *kmdIntOrderedArrayToExifArray(const KisMetaData::Value &value) - return new Exiv2::DataValue(v.data(), static_cast(v.size())); - } - -+#if EXIV2_TEST_VERSION(0,28,0) -+QDateTime exivValueToDateTime(const Exiv2::Value::UniquePtr value) -+#else - QDateTime exivValueToDateTime(const Exiv2::Value::AutoPtr value) -+#endif - { - return QDateTime::fromString(value->toString().c_str(), Qt::ISODate); - } -@@ -115,7 +132,11 @@ Exiv2::ByteOrder invertByteOrder(Exiv2::ByteOrder order) - return Exiv2::invalidByteOrder; - } - -+#if EXIV2_TEST_VERSION(0,28,0) -+KisMetaData::Value exifOECFToKMDOECFStructure(const Exiv2::Value::UniquePtr value, Exiv2::ByteOrder order) -+#else - KisMetaData::Value exifOECFToKMDOECFStructure(const Exiv2::Value::AutoPtr value, Exiv2::ByteOrder order) -+#endif - { - QMap oecfStructure; - const Exiv2::DataValue *dvalue = dynamic_cast(&*value); -@@ -123,22 +144,39 @@ KisMetaData::Value exifOECFToKMDOECFStructure(const Exiv2::Value::AutoPtr value, - QByteArray array(dvalue->count(), 0); - - dvalue->copy((Exiv2::byte *)array.data()); -+#if EXIV2_TEST_VERSION(0,28,0) -+ size_t columns = fixEndianess((reinterpret_cast(array.data()))[0], order); -+ size_t rows = fixEndianess((reinterpret_cast(array.data()))[1], order); -+#else - int columns = fixEndianess((reinterpret_cast(array.data()))[0], order); - int rows = fixEndianess((reinterpret_cast(array.data()))[1], order); -+#endif - - if ((columns * rows + 4) - > dvalue->count()) { // Sometime byteOrder get messed up (especially if metadata got saved with kexiv2 library, - // or any library that doesn't save back with the same byte order as the camera) - order = invertByteOrder(order); -+#if EXIV2_TEST_VERSION(0,28,0) -+ columns = fixEndianess((reinterpret_cast(array.data()))[0], order); -+ rows = fixEndianess((reinterpret_cast(array.data()))[1], order); -+#else - columns = fixEndianess((reinterpret_cast(array.data()))[0], order); - rows = fixEndianess((reinterpret_cast(array.data()))[1], order); -+#endif - Q_ASSERT((columns * rows + 4) > dvalue->count()); - } -- oecfStructure["Columns"] = KisMetaData::Value(columns); -- oecfStructure["Rows"] = KisMetaData::Value(rows); -+ QVariant qcolumns, qrows; -+ qcolumns.setValue(columns); -+ qrows.setValue(rows); -+ oecfStructure["Columns"] = KisMetaData::Value(qcolumns); -+ oecfStructure["Rows"] = KisMetaData::Value(qrows); - int index = 4; - QList names; -+#if EXIV2_TEST_VERSION(0,28,0) -+ for (size_t i = 0; i < columns; i++) { -+#else - for (int i = 0; i < columns; i++) { -+#endif - int lastIndex = array.indexOf((char)0, index); - QString name = array.mid(index, lastIndex - index); - if (index != lastIndex) { -@@ -153,8 +191,13 @@ KisMetaData::Value exifOECFToKMDOECFStructure(const Exiv2::Value::AutoPtr value, - oecfStructure["Names"] = KisMetaData::Value(names, KisMetaData::Value::OrderedArray); - QList values; - qint32 *dataIt = reinterpret_cast(array.data() + index); -+#if EXIV2_TEST_VERSION(0,28,0) -+ for (size_t i = 0; i < columns; i++) { -+ for (size_t j = 0; j < rows; j++) { -+#else - for (int i = 0; i < columns; i++) { - for (int j = 0; j < rows; j++) { -+#endif - values.append(KisMetaData::Value( - KisMetaData::Rational(fixEndianess(dataIt[0], order), fixEndianess(dataIt[1], order)))); - dataIt += 2; -@@ -202,7 +245,11 @@ Exiv2::Value *kmdOECFStructureToExifOECF(const KisMetaData::Value &value) - return new Exiv2::DataValue((const Exiv2::byte *)array.data(), array.size()); - } - -+#if EXIV2_TEST_VERSION(0,28,0) -+KisMetaData::Value deviceSettingDescriptionExifToKMD(const Exiv2::Value::UniquePtr value) -+#else - KisMetaData::Value deviceSettingDescriptionExifToKMD(const Exiv2::Value::AutoPtr value) -+#endif - { - QMap deviceSettingStructure; - QByteArray array; -@@ -258,15 +305,24 @@ Exiv2::Value *deviceSettingDescriptionKMDToExif(const KisMetaData::Value &value) - return new Exiv2::DataValue((const Exiv2::byte *)array.data(), array.size()); - } - -+#if EXIV2_TEST_VERSION(0,28,0) -+KisMetaData::Value cfaPatternExifToKMD(const Exiv2::Value::UniquePtr value, Exiv2::ByteOrder order) -+#else - KisMetaData::Value cfaPatternExifToKMD(const Exiv2::Value::AutoPtr value, Exiv2::ByteOrder order) -+#endif - { - QMap cfaPatternStructure; - const Exiv2::DataValue *dvalue = dynamic_cast(&*value); - Q_ASSERT(dvalue); - QByteArray array(dvalue->count(), 0); - dvalue->copy((Exiv2::byte *)array.data()); -+#if EXIV2_TEST_VERSION(0,28,0) -+ size_t columns = fixEndianess((reinterpret_cast(array.data()))[0], order); -+ size_t rows = fixEndianess((reinterpret_cast(array.data()))[1], order); -+#else - int columns = fixEndianess((reinterpret_cast(array.data()))[0], order); - int rows = fixEndianess((reinterpret_cast(array.data()))[1], order); -+#endif - if ((columns * rows + 4) - != dvalue->count()) { // Sometime byteOrder get messed up (especially if metadata got saved with kexiv2 library, - // or any library that doesn't save back with the same byte order as the camera) -@@ -275,8 +331,11 @@ KisMetaData::Value cfaPatternExifToKMD(const Exiv2::Value::AutoPtr value, Exiv2: - rows = fixEndianess((reinterpret_cast(array.data()))[1], order); - Q_ASSERT((columns * rows + 4) == dvalue->count()); - } -- cfaPatternStructure["Columns"] = KisMetaData::Value(columns); -- cfaPatternStructure["Rows"] = KisMetaData::Value(rows); -+ QVariant qcolumns, qrows; -+ qcolumns.setValue(columns); -+ qrows.setValue(rows); -+ cfaPatternStructure["Columns"] = KisMetaData::Value(qcolumns); -+ cfaPatternStructure["Rows"] = KisMetaData::Value(qrows); - QList values; - int index = 4; - for (int i = 0; i < columns * rows; i++) { -@@ -310,9 +369,17 @@ Exiv2::Value *cfaPatternKMDToExif(const KisMetaData::Value &value) - - // Read and write Flash // - -+#if EXIV2_TEST_VERSION(0,28,0) -+KisMetaData::Value flashExifToKMD(const Exiv2::Value::UniquePtr value) -+#else - KisMetaData::Value flashExifToKMD(const Exiv2::Value::AutoPtr value) -+#endif - { -+#if EXIV2_TEST_VERSION(0,28,0) -+ const uint16_t v = static_cast(value->toUint32()); -+#else - const uint16_t v = static_cast(value->toLong()); -+#endif - QMap flashStructure; - bool fired = (v & 0x01); // bit 1 is whether flash was fired or not - flashStructure["Fired"] = QVariant(fired); -@@ -465,7 +532,11 @@ bool KisExifIO::saveTo(KisMetaData::Store *store, QIODevice *ioDevice, HeaderTyp - << exivKey; // << " of KMD value" << entry.value(); - } - } -+#if EXIV2_TEST_VERSION(0,28,0) -+ } catch (Exiv2::Error &e) { -+#else - } catch (Exiv2::AnyError &e) { -+#endif - dbgMetaData << "exiv error " << e.what(); - } - } -diff --git a/plugins/metadata/iptc/kis_iptc_io.cpp b/plugins/metadata/iptc/kis_iptc_io.cpp -index 05f66eef29..06f91ed87a 100644 ---- a/plugins/metadata/iptc/kis_iptc_io.cpp -+++ b/plugins/metadata/iptc/kis_iptc_io.cpp -@@ -110,7 +110,11 @@ bool KisIptcIO::saveTo(KisMetaData::Store *store, QIODevice *ioDevice, HeaderTyp - if (v && v->typeId() != Exiv2::invalidTypeId) { - iptcData.add(iptcKey, v); - } -+#if EXIV2_TEST_VERSION(0,28,0) -+ } catch (Exiv2::Error &e) { -+#else - } catch (Exiv2::AnyError &e) { -+#endif - dbgMetaData << "exiv error " << e.what(); - } - } -@@ -128,7 +132,11 @@ bool KisIptcIO::saveTo(KisMetaData::Store *store, QIODevice *ioDevice, HeaderTyp - header.append(photoshopBimId_); - header.append(photoshopIptc_); - header.append(QByteArray(2, 0)); -+#if EXIV2_TEST_VERSION(0, 28, 0) -+ qint32 size = rawData.size(); -+#else - qint32 size = rawData.size_; -+#endif - QByteArray sizeArray(4, 0); - sizeArray[0] = (char)((size & 0xff000000) >> 24); - sizeArray[1] = (char)((size & 0x00ff0000) >> 16); -@@ -138,7 +146,11 @@ bool KisIptcIO::saveTo(KisMetaData::Store *store, QIODevice *ioDevice, HeaderTyp - ioDevice->write(header); - } - -+#if EXIV2_TEST_VERSION(0, 28, 0) -+ ioDevice->write((const char *)rawData.data(), rawData.size()); -+#else - ioDevice->write((const char *)rawData.pData_, rawData.size_); -+#endif - ioDevice->close(); - return true; - } -diff --git a/plugins/metadata/xmp/kis_xmp_io.cpp b/plugins/metadata/xmp/kis_xmp_io.cpp -index 14990de938..afb6aa92cb 100644 ---- a/plugins/metadata/xmp/kis_xmp_io.cpp -+++ b/plugins/metadata/xmp/kis_xmp_io.cpp -@@ -248,8 +248,11 @@ bool KisXMPIO::loadFrom(KisMetaData::Store *store, QIODevice *ioDevice) const - Q_ASSERT(schema); - } - } -+#if EXIV2_TEST_VERSION(0,28,0) -+ const Exiv2::Value::UniquePtr value = it->getValue(); -+#else - const Exiv2::Value::AutoPtr value = it->getValue(); -- -+#endif - QString structName; - int arrayIndex = -1; - QString tagName; -@@ -278,7 +281,11 @@ bool KisXMPIO::loadFrom(KisMetaData::Store *store, QIODevice *ioDevice) const - const Exiv2::XmpArrayValue *xav = dynamic_cast(value.get()); - Q_ASSERT(xav); - QList array; -+#if EXIV2_TEST_VERSION(0,28,0) -+ for (size_t i = 0; i < xav->count(); ++i) { -+#else - for (int i = 0; i < xav->count(); ++i) { -+#endif - QString value = QString::fromStdString(xav->toString(i)); - if (parser) { - array.push_back(parser->parse(value));