author | Antonio Rojas
<arojas@archlinux.org> 2023-07-28 06:13:10 UTC |
committer | Antonio Rojas
<arojas@archlinux.org> 2023-07-28 06:13:10 UTC |
parent | 1e00af636ac25eb8acce66a1a5f7dc6c74cfc4dd |
PKGBUILD | +9 | -23 |
exiv2-0.28.patch | +0 | -566 |
find-xsimd.patch | +0 | -21 |
diff --git a/PKGBUILD b/PKGBUILD index d026997..a3f7817 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,44 +1,30 @@ # Maintainer: Antonio Rojas <arojas@archlinux,org> pkgname=krita -pkgver=5.1.5 -pkgrel=10 +_pkgver=5.2.0-beta1 +pkgver=${_pkgver/-/} +pkgrel=1 pkgdesc='Edit and paint images' arch=(x86_64) url='https://krita.org' license=(GPL3) depends=(kitemviews kitemmodels ki18n kcompletion kguiaddons kcrash qt5-svg qt5-multimedia quazip - gsl libraw exiv2 openexr fftw openjpeg2 opencolorio libwebp hicolor-icon-theme) + gsl libkdcraw exiv2 openexr fftw openjpeg2 opencolorio libwebp mlt sdl2 libraqm libunibreak ffmpeg hicolor-icon-theme) makedepends=(extra-cmake-modules kdoctools boost eigen poppler-qt5 python-pyqt5 libheif - qt5-tools sip kseexpr libmypaint libjxl xsimd) + qt5-tools sip kseexpr libmypaint libjxl xsimd immer zug lager) optdepends=('poppler-qt5: PDF filter' 'ffmpeg: to save animations' 'python-pyqt5: for the Python plugins' 'libheif: HEIF filter' 'kseexpr: SeExpr generator layer' 'kimageformats: PSD support' 'libmypaint: support for MyPaint brushes' 'krita-plugin-gmic: GMic plugin' 'libjxl: JPEG-XL filter') -source=(https://download.kde.org/stable/krita/$pkgver/$pkgname-$pkgver.tar.gz{,.sig} - find-xsimd.patch - https://invent.kde.org/graphics/krita/-/commit/e9184281.patch - https://invent.kde.org/graphics/krita/-/commit/bbee5eff.patch - exiv2-0.28.patch) -sha256sums=('1c775ebef0f799a9a6b74440c3d906ab913c27541b177ed621704de714e9a4d3' - 'SKIP' - '622c9ffbbfef72dd024b391b879c79ae34da11d52b2f3488dfd8ee42bf7b453b' - '3db041acee92d6e4238c47ad572142a930340858703f523baa32f129e6474060' - '0f52ba825ce0432e55c1c673d8ebbd34f4353470a6c27bdc55beb2a5446f9a4a' - 'c17d5fa6362c6b4d1884ff3b84ce72ca78065d987192c36d59ea9256a1e8d74b') +source=(https://download.kde.org/unstable/krita/$_pkgver/$pkgname-$_pkgver.tar.gz{,.sig}) +sha256sums=('56903fe67716045678be95d8fffc4e069ba0cff0bb53c954b5f3d93ab2219098' + 'SKIP') validpgpkeys=('05D00A8B73A686789E0A156858B9596C722EA3BD' # Boudewijn Rempt <foundation@krita.org> 'E9FB29E74ADEACC5E3035B8AB69EB4CF7468332F' # Dmitry Kazakov (main key) <dimula73@gmail.com> '064182440C674D9F8D0F6F8B4DA79EDA231C852B') # Stichting Krita Foundation <foundation@krita.org> -prepare() { - patch -d $pkgname-$pkgver -p1 < find-xsimd.patch - patch -d $pkgname-$pkgver -p1 < e9184281.patch # Fix build with libheif 1.14.1 - patch -d $pkgname-$pkgver -p1 < bbee5eff.patch # Fix crash when loading some TIFF files - patch -d $pkgname-$pkgver -p1 < exiv2-0.28.patch # Fix build with exiv2 0.28 -} - build() { - cmake -B build -S $pkgname-$pkgver \ + cmake -B build -S $pkgname-$_pkgver \ -DBUILD_KRITA_QT_DESIGNER_PLUGINS=ON \ -DBUILD_TESTING=OFF cmake --build build diff --git a/exiv2-0.28.patch b/exiv2-0.28.patch deleted file mode 100644 index 0954682..0000000 --- a/exiv2-0.28.patch +++ /dev/null @@ -1,566 +0,0 @@ -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 <exiv2/jpgimage.hpp> -+#include <exiv2/version.hpp> -+#if EXIV2_TEST_VERSION(0,28,0) -+#include <exiv2/photoshop.hpp> -+#endif - - #include <QFile> - #include <QBuffer> -@@ -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<Exiv2::Image> img = Exiv2::ImageFactory::open(std::move(basicIoDevice)); -+#else - const std::unique_ptr<Exiv2::Image> 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<Exiv2::Image> readImg = Exiv2::ImageFactory::open(std::move(basicIoDevice)); -+#else - const std::unique_ptr<Exiv2::Image> 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<BasicIo *>(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<char *>(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<KisMetaData::Value> 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<KisMetaData::Value> 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<KisMetaData::Value> 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<const Exiv2::DataValue *>(&*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<KisMetaData::Value> v; - const Exiv2::DataValue *dvalue = dynamic_cast<const Exiv2::DataValue *>(&*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<long>(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<QString, KisMetaData::Value> oecfStructure; - const Exiv2::DataValue *dvalue = dynamic_cast<const Exiv2::DataValue *>(&*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<qsizetype>((reinterpret_cast<qsizetype *>(array.data()))[0], order); -+ size_t rows = fixEndianess<qsizetype>((reinterpret_cast<qsizetype *>(array.data()))[1], order); -+#else - int columns = fixEndianess<quint16>((reinterpret_cast<quint16 *>(array.data()))[0], order); - int rows = fixEndianess<quint16>((reinterpret_cast<quint16 *>(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<qsizetype>((reinterpret_cast<qsizetype *>(array.data()))[0], order); -+ rows = fixEndianess<qsizetype>((reinterpret_cast<qsizetype *>(array.data()))[1], order); -+#else - columns = fixEndianess<quint16>((reinterpret_cast<quint16 *>(array.data()))[0], order); - rows = fixEndianess<quint16>((reinterpret_cast<quint16 *>(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<KisMetaData::Value> 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<KisMetaData::Value> values; - qint32 *dataIt = reinterpret_cast<qint32 *>(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<qint32>(dataIt[0], order), fixEndianess<qint32>(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<QString, KisMetaData::Value> 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<QString, KisMetaData::Value> cfaPatternStructure; - const Exiv2::DataValue *dvalue = dynamic_cast<const Exiv2::DataValue *>(&*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<qsizetype>((reinterpret_cast<qsizetype *>(array.data()))[0], order); -+ size_t rows = fixEndianess<qsizetype>((reinterpret_cast<qsizetype *>(array.data()))[1], order); -+#else - int columns = fixEndianess<quint16>((reinterpret_cast<quint16 *>(array.data()))[0], order); - int rows = fixEndianess<quint16>((reinterpret_cast<quint16 *>(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<quint16>((reinterpret_cast<quint16 *>(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<KisMetaData::Value> 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<uint16_t>(value->toUint32()); -+#else - const uint16_t v = static_cast<uint16_t>(value->toLong()); -+#endif - QMap<QString, KisMetaData::Value> 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<const Exiv2::XmpArrayValue *>(value.get()); - Q_ASSERT(xav); - QList<KisMetaData::Value> 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)); diff --git a/find-xsimd.patch b/find-xsimd.patch deleted file mode 100644 index a1f20a3..0000000 --- a/find-xsimd.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 7d075a7223..6dc88e243a 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -1052,10 +1052,12 @@ list (APPEND ANDROID_EXTRA_LIBS ${LCMS2_LIBRARIES}) - ## - ## Test for xsimd - ## --find_package(xsimd 8.1.0) --if(NOT xsimd_FOUND) -- find_package(xsimd 9) --endif() -+foreach(xsimd_version 8.1.0 9 10) -+ if(NOT xsimd_FOUND) -+ find_package(xsimd ${xsimd_version}) -+ endif() -+endforeach() -+ - set_package_properties(xsimd PROPERTIES - DESCRIPTION "C++ wrappers for SIMD intrinsics" - URL "https://github.com/xtensor-stack/xsimd"