Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:wolfi323:branches:KDE:Frameworks5
calligra4
Fix-build-with-exiv2-0.28.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File Fix-build-with-exiv2-0.28.patch of Package calligra4
diff --git a/krita/plugins/formats/jpeg/kis_jpeg_converter.cc b/krita/plugins/formats/jpeg/kis_jpeg_converter.cc --- a/krita/plugins/formats/jpeg/kis_jpeg_converter.cc +++ b/krita/plugins/formats/jpeg/kis_jpeg_converter.cc @@ -33,6 +33,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> @@ -374,7 +378,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/krita/ui/kisexiv2/kis_exiv2.h b/krita/ui/kisexiv2/kis_exiv2.h --- a/krita/ui/kisexiv2/kis_exiv2.h +++ b/krita/ui/kisexiv2/kis_exiv2.h @@ -25,7 +25,11 @@ extern "C" { #include "kritaui_export.h" /// Convert an exiv value to a KisMetaData value +#if EXIV2_TEST_VERSION(0,28,0) +KisMetaData::Value exivValueToKMDValue(const Exiv2::Value::UniquePtr value, bool forceSeq, KisMetaData::Value::ValueType arrayType = KisMetaData::Value::UnorderedArray); +#else KisMetaData::Value exivValueToKMDValue(const Exiv2::Value::AutoPtr value, bool forceSeq, KisMetaData::Value::ValueType arrayType = KisMetaData::Value::UnorderedArray); +#endif /// Convert a KisMetaData to an Exiv value Exiv2::Value* kmdValueToExivValue(const KisMetaData::Value& value, Exiv2::TypeId type); diff --git a/krita/ui/kisexiv2/kis_exif_io.cpp b/krita/ui/kisexiv2/kis_exif_io.cpp --- a/krita/ui/kisexiv2/kis_exif_io.cpp +++ b/krita/ui/kisexiv2/kis_exif_io.cpp @@ -46,7 +46,11 @@ extern "C" { // ---- Exception convertion 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) @@ -71,7 +75,11 @@ 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); @@ -81,7 +94,11 @@ Exiv2::Value* kmdIntOrderedArrayToExifArray(const KisMetaData::Value& value) return new Exiv2::DataValue((const Exiv2::byte*)s.data(), s.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); } @@ -138,7 +150,11 @@ Exiv2::ByteOrder invertByteOrder(Exiv2::ByteOrder order) } +#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); @@ -146,19 +162,36 @@ 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<QIntegerForSizeof<std::size_t>::Signed>((reinterpret_cast<QIntegerForSizeof<std::size_t>::Signed *>(array.data()))[0], order); + size_t rows = fixEndianess<QIntegerForSizeof<std::size_t>::Signed>((reinterpret_cast<QIntegerForSizeof<std::size_t>::Signed *>(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<QIntegerForSizeof<std::size_t>::Signed>((reinterpret_cast<QIntegerForSizeof<std::size_t>::Signed *>(array.data()))[0], order); + rows = fixEndianess<QIntegerForSizeof<std::size_t>::Signed>((reinterpret_cast<QIntegerForSizeof<std::size_t>::Signed *>(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) { @@ -172,8 +205,13 @@ KisMetaData::Value exifOECFToKMDOECFStructure(const Exiv2::Value::AutoPtr value, oecfStructure["Names"] = KisMetaData::Value(names, KisMetaData::Value::OrderedArray); QList<KisMetaData::Value> values; qint16* dataIt = reinterpret_cast<qint16*>(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 += 8; } @@ -221,7 +259,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; @@ -275,15 +317,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<QIntegerForSizeof<std::size_t>::Signed>((reinterpret_cast<QIntegerForSizeof<std::size_t>::Signed *>(array.data()))[0], order); + size_t rows = fixEndianess<QIntegerForSizeof<std::size_t>::Signed>((reinterpret_cast<QIntegerForSizeof<std::size_t>::Signed *>(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); columns = fixEndianess<quint16>((reinterpret_cast<quint16*>(array.data()))[0], order); @@ -290,8 +341,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++) { @@ -324,9 +383,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) + uint16_t v = value->toUint32(); +#else uint16_t v = 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); @@ -478,7 +545,11 @@ bool KisExifIO::saveTo(KisMetaData::Store* store, QIODevice* ioDevice, HeaderTyp dbgFile << "No exif value was created for" << entry.qualifiedName() << " as" << exivKey;// << " of KMD value" << entry.value(); } } +#if EXIV2_TEST_VERSION(0,28,0) + } catch (Exiv2::Error &e) { +#else } catch (Exiv2::AnyError& e) { +#endif dbgFile << "exiv error " << e.what(); } } diff --git a/krita/ui/kisexiv2/kis_exiv2.cpp b/krita/ui/kisexiv2/kis_exiv2.cpp index 3ab34bb..b4912c7 100644 --- a/krita/ui/kisexiv2/kis_exiv2.cpp +++ b/krita/ui/kisexiv2/kis_exiv2.cpp @@ -30,7 +30,11 @@ // ---- Generic convertion functions ---- // // Convert an exiv value to a KisMetaData value +#if EXIV2_TEST_VERSION(0,28,0) +KisMetaData::Value exivValueToKMDValue(const Exiv2::Value::UniquePtr value, bool forceSeq, KisMetaData::Value::ValueType arrayType) +#else KisMetaData::Value exivValueToKMDValue(const Exiv2::Value::AutoPtr value, bool forceSeq, KisMetaData::Value::ValueType arrayType) +#endif { switch (value->typeId()) { case Exiv2::signedByte: @@ -51,11 +55,19 @@ exivValueToKMDValue(const Exiv2::Value::AutoPtr value, case Exiv2::signedShort: case Exiv2::signedLong: { if (value->count() == 1 && !forceSeq) { - return KisMetaData::Value((int)value->toLong()); +#if EXIV2_TEST_VERSION(0,28,0) + return {static_cast<int>(value->toUint32())}; +#else + return {static_cast<int>(value->toLong())}; +#endif } else { QList<KisMetaData::Value> array; for (int i = 0; i < value->count(); i++) +#if EXIV2_TEST_VERSION(0,28,0) + array.push_back(KisMetaData::Value((int)value->toUint32(i))); +#else array.push_back(KisMetaData::Value((int)value->toLong(i))); +#endif return KisMetaData::Value(array, arrayType); } } diff --git a/krita/ui/kisexiv2/kis_iptc_io.cpp b/krita/ui/kisexiv2/kis_iptc_io.cpp index 05f66ee..06f91ed 100644 --- a/krita/ui/kisexiv2/kis_iptc_io.cpp +++ b/krita/ui/kisexiv2/kis_iptc_io.cpp @@ -121,7 +121,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 dbgFile << "exiv error " << e.what(); } } @@ -139,7 +143,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); @@ -149,7 +157,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/krita/ui/kisexiv2/kis_xmp_io.cpp b/krita/ui/kisexiv2/kis_xmp_io.cpp index 14990de..afb6aa9 100644 --- a/krita/ui/kisexiv2/kis_xmp_io.cpp +++ b/krita/ui/kisexiv2/kis_xmp_io.cpp @@ -244,8 +244,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;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor