pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: pkgsrc/graphics/libkexiv2
Module Name: pkgsrc
Committed By: mrg
Date: Thu Jul 6 23:20:19 UTC 2023
Modified Files:
pkgsrc/graphics/libkexiv2: distinfo
Added Files:
pkgsrc/graphics/libkexiv2/patches: patch-exiv2-0.28-upstream.diff
Log Message:
include upstream build fix for exiv2 0.28 issues.
To generate a diff of this commit:
cvs rdiff -u -r1.27 -r1.28 pkgsrc/graphics/libkexiv2/distinfo
cvs rdiff -u -r0 -r1.1 \
pkgsrc/graphics/libkexiv2/patches/patch-exiv2-0.28-upstream.diff
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: pkgsrc/graphics/libkexiv2/distinfo
diff -u pkgsrc/graphics/libkexiv2/distinfo:1.27 pkgsrc/graphics/libkexiv2/distinfo:1.28
--- pkgsrc/graphics/libkexiv2/distinfo:1.27 Thu Sep 29 00:53:12 2022
+++ pkgsrc/graphics/libkexiv2/distinfo Thu Jul 6 23:20:18 2023
@@ -1,5 +1,6 @@
-$NetBSD: distinfo,v 1.27 2022/09/29 00:53:12 markd Exp $
+$NetBSD: distinfo,v 1.28 2023/07/06 23:20:18 mrg Exp $
BLAKE2s (libkexiv2-22.08.1.tar.xz) = f20c891463d8143b32d51ae72cbfe4be824044a4629232fa0a01359b2519a5b5
SHA512 (libkexiv2-22.08.1.tar.xz) = 97bb72f679b4153c742adfa520e200557a472f7df529e6f0a40f562ccf68ae48e163e3c790131a60960b7617b015b22381363c54a83f42503c1e38c5a1bd0248
Size (libkexiv2-22.08.1.tar.xz) = 59736 bytes
+SHA1 (patch-exiv2-0.28-upstream.diff) = e67aab6c0556cc445d25a6628aa1b61441027a98
Added files:
Index: pkgsrc/graphics/libkexiv2/patches/patch-exiv2-0.28-upstream.diff
diff -u /dev/null pkgsrc/graphics/libkexiv2/patches/patch-exiv2-0.28-upstream.diff:1.1
--- /dev/null Thu Jul 6 23:20:19 2023
+++ pkgsrc/graphics/libkexiv2/patches/patch-exiv2-0.28-upstream.diff Thu Jul 6 23:20:19 2023
@@ -0,0 +1,704 @@
+$NetBSD: patch-exiv2-0.28-upstream.diff,v 1.1 2023/07/06 23:20:19 mrg Exp $
+
+Upstream patch to fix exiv2 0.28 issues, commit 68c21bba5f73ea6abfdf031139ed085251ef660d.
+
+diff --git src/kexiv2.cpp b/src/kexiv2.cpp
+index 29149b5..ebe2035 100644
+--- src/kexiv2.cpp
++++ src/kexiv2.cpp
+@@ -207,7 +207,11 @@ bool KExiv2::loadFromData(const QByteArray& imgData) const
+
+ try
+ {
++#if EXIV2_TEST_VERSION(0,28,0)
++ Exiv2::Image::UniquePtr image = Exiv2::ImageFactory::open((Exiv2::byte*)imgData.data(), imgData.size());
++#else
+ Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open((Exiv2::byte*)imgData.data(), imgData.size());
++#endif
+
+ d->filePath.clear();
+ image->readMetadata();
+@@ -263,7 +267,11 @@ bool KExiv2::load(const QString& filePath) const
+
+ try
+ {
++#if EXIV2_TEST_VERSION(0,28,0)
++ Exiv2::Image::UniquePtr image;
++#else
+ Exiv2::Image::AutoPtr image;
++#endif
+
+ image = Exiv2::ImageFactory::open((const char*)(QFile::encodeName(filePath)).constData());
+
+@@ -312,7 +320,11 @@ bool KExiv2::load(const QString& filePath) const
+ QString xmpSidecarPath = sidecarFilePathForFile(filePath);
+ QFileInfo xmpSidecarFileInfo(xmpSidecarPath);
+
++#if EXIV2_TEST_VERSION(0,28,0)
++ Exiv2::Image::UniquePtr xmpsidecar;
++#else
+ Exiv2::Image::AutoPtr xmpsidecar;
++#endif
+
+ if (xmpSidecarFileInfo.exists() && xmpSidecarFileInfo.isReadable())
+ {
+@@ -321,7 +333,11 @@ bool KExiv2::load(const QString& filePath) const
+ xmpsidecar->readMetadata();
+
+ // Merge
++#if EXIV2_TEST_VERSION(0,28,0)
++ d->loadSidecarData(std::move(xmpsidecar));
++#else
+ d->loadSidecarData(xmpsidecar);
++#endif
+ hasLoaded = true;
+ }
+ }
+diff --git src/kexiv2_p.cpp b/src/kexiv2_p.cpp
+index 039fb10..93c08a3 100644
+--- src/kexiv2_p.cpp
++++ src/kexiv2_p.cpp
+@@ -76,9 +76,17 @@ bool KExiv2Private::saveToXMPSidecar(const QFileInfo& finfo) const
+
+ try
+ {
++#if EXIV2_TEST_VERSION(0,28,0)
++ Exiv2::Image::UniquePtr image;
++#else
+ Exiv2::Image::AutoPtr image;
++#endif
+ image = Exiv2::ImageFactory::create(Exiv2::ImageType::xmp, (const char*)(QFile::encodeName(filePath).constData()));
++#if EXIV2_TEST_VERSION(0,28,0)
++ return saveOperations(finfo, std::move(image));
++#else
+ return saveOperations(finfo, image);
++#endif
+ }
+ catch( Exiv2::Error& e )
+ {
+@@ -155,9 +163,17 @@ bool KExiv2Private::saveToFile(const QFileInfo& finfo) const
+
+ try
+ {
++#if EXIV2_TEST_VERSION(0,28,0)
++ Exiv2::Image::UniquePtr image;
++#else
+ Exiv2::Image::AutoPtr image;
++#endif
+ image = Exiv2::ImageFactory::open((const char*)(QFile::encodeName(finfo.filePath()).constData()));
++#if EXIV2_TEST_VERSION(0,28,0)
++ return saveOperations(finfo, std::move(image));
++#else
+ return saveOperations(finfo, image);
++#endif
+ }
+ catch( Exiv2::Error& e )
+ {
+@@ -171,7 +187,11 @@ bool KExiv2Private::saveToFile(const QFileInfo& finfo) const
+ }
+ }
+
++#if EXIV2_TEST_VERSION(0,28,0)
++bool KExiv2Private::saveOperations(const QFileInfo& finfo, Exiv2::Image::UniquePtr image) const
++#else
+ bool KExiv2Private::saveOperations(const QFileInfo& finfo, Exiv2::Image::AutoPtr image) const
++#endif
+ {
+ try
+ {
+@@ -345,7 +365,12 @@ void KExiv2Private::printExiv2ExceptionError(const QString& msg, Exiv2::Error& e
+ {
+ std::string s(e.what());
+ qCCritical(LIBKEXIV2_LOG) << msg.toLatin1().constData() << " (Error #"
+- << e.code() << ": " << s.c_str();
++#if EXIV2_TEST_VERSION(0,28,0)
++ << Exiv2::Error(e.code()).what()
++#else
++ << e.code() << ": " << s.c_str()
++#endif
++ << ")";
+ }
+
+ void KExiv2Private::printExiv2MessageHandler(int lvl, const char* msg)
+@@ -599,7 +624,11 @@ int KExiv2Private::getXMPTagsListFromPrefix(const QString& pf, KExiv2::TagsMap&
+ }
+
+ #ifdef _XMP_SUPPORT_
++#if EXIV2_TEST_VERSION(0,28,0)
++void KExiv2Private::loadSidecarData(Exiv2::Image::UniquePtr xmpsidecar)
++#else
+ void KExiv2Private::loadSidecarData(Exiv2::Image::AutoPtr xmpsidecar)
++#endif
+ {
+ // Having a sidecar is a special situation.
+ // The sidecar data often "dominates", see in particular bug 309058 for important aspects:
+diff --git src/kexiv2_p.h b/src/kexiv2_p.h
+index 7d6028d..4d110fc 100644
+--- src/kexiv2_p.h
++++ src/kexiv2_p.h
+@@ -94,7 +94,11 @@ class KExiv2Private
+
+ bool saveToXMPSidecar(const QFileInfo& finfo) const;
+ bool saveToFile(const QFileInfo& finfo) const;
++#if EXIV2_TEST_VERSION(0,28,0)
++ bool saveOperations(const QFileInfo& finfo, Exiv2::Image::UniquePtr image) const;
++#else
+ bool saveOperations(const QFileInfo& finfo, Exiv2::Image::AutoPtr image) const;
++#endif
+
+ /** Wrapper method to convert a Comments content to a QString.
+ */
+@@ -125,8 +129,12 @@ class KExiv2Private
+ #ifdef _XMP_SUPPORT_
+ Exiv2::XmpData& xmpMetadata() { return data.data()->xmpMetadata; }
+
++#if EXIV2_TEST_VERSION(0,28,0)
++ void loadSidecarData(Exiv2::Image::UniquePtr xmpsidecar);
++#else
+ void loadSidecarData(Exiv2::Image::AutoPtr xmpsidecar);
+ #endif
++#endif
+
+ public:
+
+diff --git src/kexiv2comments.cpp b/src/kexiv2comments.cpp
+index 3f71981..d73e44a 100644
+--- src/kexiv2comments.cpp
++++ src/kexiv2comments.cpp
+@@ -18,7 +18,12 @@ bool KExiv2::canWriteComment(const QString& filePath)
+ {
+ try
+ {
+- Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open((const char*)
++#if EXIV2_TEST_VERSION(0,28,0)
++ Exiv2::Image::UniquePtr image
++#else
++ Exiv2::Image::AutoPtr image
++#endif
++ = Exiv2::ImageFactory::open((const char*)
+ (QFile::encodeName(filePath).constData()));
+
+ Exiv2::AccessMode mode = image->checkMode(Exiv2::mdComment);
+@@ -28,7 +33,12 @@ bool KExiv2::canWriteComment(const QString& filePath)
+ {
+ std::string s(e.what());
+ qCCritical(LIBKEXIV2_LOG) << "Cannot check Comment access mode using Exiv2 (Error #"
+- << e.code() << ": " << s.c_str() << ")";
++#if EXIV2_TEST_VERSION(0,28,0)
++ << Exiv2::Error(e.code()).what()
++#else
++ << e.code() << ": " << s.c_str()
++#endif
++ << ")";
+ }
+ catch(...)
+ {
+diff --git src/kexiv2exif.cpp b/src/kexiv2exif.cpp
+index 319d317..affca29 100644
+--- src/kexiv2exif.cpp
++++ src/kexiv2exif.cpp
+@@ -28,7 +28,12 @@ bool KExiv2::canWriteExif(const QString& filePath)
+ {
+ try
+ {
+- Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open((const char*)
++#if EXIV2_TEST_VERSION(0,28,0)
++ Exiv2::Image::UniquePtr image =
++#else
++ Exiv2::Image::AutoPtr image =
++#endif
++ Exiv2::ImageFactory::open((const char*)
+ (QFile::encodeName(filePath).constData()));
+
+ Exiv2::AccessMode mode = image->checkMode(Exiv2::mdExif);
+@@ -39,7 +44,12 @@ bool KExiv2::canWriteExif(const QString& filePath)
+ {
+ std::string s(e.what());
+ qCCritical(LIBKEXIV2_LOG) << "Cannot check Exif access mode using Exiv2 (Error #"
+- << e.code() << ": " << s.c_str() << ")";
++#if EXIV2_TEST_VERSION(0,28,0)
++ << Exiv2::Error(e.code()).what()
++#else
++ << e.code() << ": " << s.c_str()
++#endif
++ << ")";
+ }
+ catch(...)
+ {
+@@ -658,7 +668,11 @@ bool KExiv2::getExifTagLong(const char* exifTagName, long& val, int component) c
+
+ if (it != exifData.end() && it->count() > 0)
+ {
++#if EXIV2_TEST_VERSION(0,28,0)
++ val = it->toUint32(component);
++#else
+ val = it->toLong(component);
++#endif
+ return true;
+ }
+ }
+@@ -722,7 +736,11 @@ QVariant KExiv2::getExifTagVariant(const char* exifTagName, bool rationalAsListO
+ case Exiv2::signedShort:
+ case Exiv2::signedLong:
+ if (it->count() > component)
++#if EXIV2_TEST_VERSION(0,28,0)
++ return QVariant((int)it->toUint32(component));
++#else
+ return QVariant((int)it->toLong(component));
++#endif
+ else
+ return QVariant(QVariant::Int);
+ case Exiv2::unsignedRational:
+@@ -854,7 +872,11 @@ QImage KExiv2::getExifThumbnail(bool fixOrientation) const
+ {
+ Exiv2::ExifThumbC thumb(d->exifMetadata());
+ Exiv2::DataBuf const c1 = thumb.copy();
++#if EXIV2_TEST_VERSION(0,28,0)
++ thumbnail.loadFromData(c1.c_data(), c1.size());
++#else
+ thumbnail.loadFromData(c1.pData_, c1.size_);
++#endif
+
+ if (!thumbnail.isNull())
+ {
+@@ -870,7 +892,11 @@ QImage KExiv2::getExifThumbnail(bool fixOrientation) const
+
+ if (it != exifData.end() && it->count())
+ {
++#if EXIV2_TEST_VERSION(0,28,0)
++ long orientation = it->toUint32();
++#else
+ long orientation = it->toLong();
++#endif
+ qCDebug(LIBKEXIV2_LOG) << "Exif Thumbnail Orientation: " << (int)orientation;
+ rotateExifQImage(thumbnail, (ImageOrientation)orientation);
+ }
+@@ -948,9 +974,15 @@ bool KExiv2::setTiffThumbnail(const QImage& thumbImage, bool setProgramName) con
+ // Make sure IFD0 is explicitly marked as a main image
+ Exiv2::ExifData::const_iterator pos = d->exifMetadata().findKey(Exiv2::ExifKey("Exif.Image.NewSubfileType"));
+
++#if EXIV2_TEST_VERSION(0,28,0)
++ if (pos == d->exifMetadata().end() || pos->count() != 1 || pos->toUint32() != 0)
++#else
+ if (pos == d->exifMetadata().end() || pos->count() != 1 || pos->toLong() != 0)
++#endif
+ {
+-#if EXIV2_TEST_VERSION(0,27,0)
++#if EXIV2_TEST_VERSION(0,28,0)
++ throw Exiv2::Error(Exiv2::ErrorCode::kerErrorMessage, "Exif.Image.NewSubfileType missing or not set as main image");
++#elif EXIV2_TEST_VERSION(0,27,0)
+ throw Exiv2::Error(Exiv2::kerErrorMessage, "Exif.Image.NewSubfileType missing or not set as main image");
+ #else
+ throw Exiv2::Error(1, "Exif.Image.NewSubfileType missing or not set as main image");
+@@ -979,9 +1011,17 @@ bool KExiv2::setTiffThumbnail(const QImage& thumbImage, bool setProgramName) con
+ Exiv2::DataBuf buf((Exiv2::byte *)data.data(), data.size());
+ Exiv2::ULongValue val;
+ val.read("0");
++#if EXIV2_TEST_VERSION(0,28,0)
++ val.setDataArea(buf.c_data(), buf.size());
++#else
+ val.setDataArea(buf.pData_, buf.size_);
++#endif
+ d->exifMetadata()["Exif.SubImage1.JPEGInterchangeFormat"] = val;
++#if EXIV2_TEST_VERSION(0,28,0)
++ d->exifMetadata()["Exif.SubImage1.JPEGInterchangeFormatLength"] = uint32_t(buf.size());
++#else
+ d->exifMetadata()["Exif.SubImage1.JPEGInterchangeFormatLength"] = uint32_t(buf.size_);
++#endif
+ d->exifMetadata()["Exif.SubImage1.Compression"] = uint16_t(6); // JPEG (old-style)
+ d->exifMetadata()["Exif.SubImage1.NewSubfileType"] = uint32_t(1); // Thumbnail image
+ return true;
+diff --git src/kexiv2gps.cpp b/src/kexiv2gps.cpp
+index 857e6a2..3873fc1 100644
+--- src/kexiv2gps.cpp
++++ src/kexiv2gps.cpp
+@@ -325,7 +325,11 @@ bool KExiv2::initializeGPSInfo(const bool setProgramName)
+ // Do all the easy constant ones first.
+ // GPSVersionID tag: standard says is should be four bytes: 02 00 00 00
+ // (and, must be present).
++#if EXIV2_TEST_VERSION(0,28,0)
++ Exiv2::Value::UniquePtr value = Exiv2::Value::create(Exiv2::unsignedByte);
++#else
+ Exiv2::Value::AutoPtr value = Exiv2::Value::create(Exiv2::unsignedByte);
++#endif
+ value->read("2 0 0 0");
+ d->exifMetadata().add(Exiv2::ExifKey("Exif.GPSInfo.GPSVersionID"), value.get());
+
+@@ -380,7 +384,11 @@ bool KExiv2::setGPSInfo(const double* const altitude, const double latitude, con
+ if (altitude)
+ {
+ // Altitude reference: byte "00" meaning "above sea level", "01" mening "behing sea level".
++#if EXIV2_TEST_VERSION(0,28,0)
++ Exiv2::Value::UniquePtr value = Exiv2::Value::create(Exiv2::unsignedByte);
++#else
+ Exiv2::Value::AutoPtr value = Exiv2::Value::create(Exiv2::unsignedByte);
++#endif
+
+ if ((*altitude) >= 0) value->read("0");
+ else value->read("1");
+diff --git src/kexiv2image.cpp b/src/kexiv2image.cpp
+index a15edef..a857671 100644
+--- src/kexiv2image.cpp
++++ src/kexiv2image.cpp
+@@ -94,13 +94,21 @@ QSize KExiv2::getImageDimensions() const
+ Exiv2::ExifData::iterator it = exifData.findKey(key);
+
+ if (it != exifData.end() && it->count())
++#if EXIV2_TEST_VERSION(0,28,0)
++ width = it->toUint32();
++#else
+ width = it->toLong();
++#endif
+
+ Exiv2::ExifKey key2("Exif.Photo.PixelYDimension");
+ Exiv2::ExifData::iterator it2 = exifData.findKey(key2);
+
+ if (it2 != exifData.end() && it2->count())
++#if EXIV2_TEST_VERSION(0,28,0)
++ height = it2->toUint32();
++#else
+ height = it2->toLong();
++#endif
+
+ if (width != -1 && height != -1)
+ return QSize(width, height);
+@@ -114,13 +122,21 @@ QSize KExiv2::getImageDimensions() const
+ Exiv2::ExifData::iterator it3 = exifData.findKey(key3);
+
+ if (it3 != exifData.end() && it3->count())
++#if EXIV2_TEST_VERSION(0,28,0)
++ width = it3->toUint32();
++#else
+ width = it3->toLong();
++#endif
+
+ Exiv2::ExifKey key4("Exif.Image.ImageLength");
+ Exiv2::ExifData::iterator it4 = exifData.findKey(key4);
+
+ if (it4 != exifData.end() && it4->count())
++#if EXIV2_TEST_VERSION(0,28,0)
++ height = it4->toUint32();
++#else
+ height = it4->toLong();
++#endif
+
+ if (width != -1 && height != -1)
+ return QSize(width, height);
+@@ -261,7 +277,11 @@ KExiv2::ImageOrientation KExiv2::getImageOrientation() const
+
+ if (it != exifData.end() && it->count())
+ {
++#if EXIV2_TEST_VERSION(0,28,0)
++ orientation = it->toUint32();
++#else
+ orientation = it->toLong();
++#endif
+ qCDebug(LIBKEXIV2_LOG) << "Orientation => Exif.MinoltaCs7D.Rotation => " << (int)orientation;
+
+ switch(orientation)
+@@ -282,7 +302,11 @@ KExiv2::ImageOrientation KExiv2::getImageOrientation() const
+
+ if (it != exifData.end() && it->count())
+ {
++#if EXIV2_TEST_VERSION(0,28,0)
++ orientation = it->toUint32();
++#else
+ orientation = it->toLong();
++#endif
+ qCDebug(LIBKEXIV2_LOG) << "Orientation => Exif.MinoltaCs5D.Rotation => " << (int)orientation;
+
+ switch(orientation)
+@@ -305,7 +329,11 @@ KExiv2::ImageOrientation KExiv2::getImageOrientation() const
+
+ if (it != exifData.end() && it->count())
+ {
++#if EXIV2_TEST_VERSION(0,28,0)
++ orientation = it->toUint32();
++#else
+ orientation = it->toLong();
++#endif
+ qCDebug(LIBKEXIV2_LOG) << "Orientation => Exif.Image.Orientation => " << (int)orientation;
+ return (ImageOrientation)orientation;
+ }
+@@ -381,7 +409,11 @@ bool KExiv2::setImageOrientation(ImageOrientation orientation, bool setProgramNa
+
+ if (it != d->exifMetadata().end() && it->count())
+ {
++#if EXIV2_TEST_VERSION(0,28,0)
++ RotationMatrix operation((KExiv2Iface::KExiv2::ImageOrientation)it->toUint32());
++#else
+ RotationMatrix operation((KExiv2Iface::KExiv2::ImageOrientation)it->toLong());
++#endif
+ operation *= orientation;
+ (*it) = static_cast<uint16_t>(operation.exifOrientation());
+ }
+@@ -849,7 +881,11 @@ bool KExiv2::setImageDateTime(const QDateTime& dateTime, bool setDateTimeDigitiz
+
+ const std::string &xmpdatetime(dateTime.toString(Qt::ISODate).toLatin1().constData());
+
++#if EXIV2_TEST_VERSION(0,28,0)
++ Exiv2::Value::UniquePtr xmpTxtVal = Exiv2::Value::create(Exiv2::xmpText);
++#else
+ Exiv2::Value::AutoPtr xmpTxtVal = Exiv2::Value::create(Exiv2::xmpText);
++#endif
+ xmpTxtVal->read(xmpdatetime);
+ d->xmpMetadata().add(Exiv2::XmpKey("Xmp.exif.DateTimeOriginal"), xmpTxtVal.get());
+ d->xmpMetadata().add(Exiv2::XmpKey("Xmp.photoshop.DateCreated"), xmpTxtVal.get());
+diff --git src/kexiv2iptc.cpp b/src/kexiv2iptc.cpp
+index cb8afa1..ee4d6db 100644
+--- src/kexiv2iptc.cpp
++++ src/kexiv2iptc.cpp
+@@ -18,7 +18,12 @@ bool KExiv2::canWriteIptc(const QString& filePath)
+ {
+ try
+ {
+- Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open((const char*)
++#if EXIV2_TEST_VERSION(0,28,0)
++ Exiv2::Image::UniquePtr image =
++#else
++ Exiv2::Image::AutoPtr image =
++#endif
++ Exiv2::ImageFactory::open((const char*)
+ (QFile::encodeName(filePath).constData()));
+
+ Exiv2::AccessMode mode = image->checkMode(Exiv2::mdIptc);
+@@ -28,7 +33,12 @@ bool KExiv2::canWriteIptc(const QString& filePath)
+ {
+ std::string s(e.what());
+ qCCritical(LIBKEXIV2_LOG) << "Cannot check Iptc access mode using Exiv2 (Error #"
+- << e.code() << ": " << s.c_str() << ")";
++#if EXIV2_TEST_VERSION(0,28,0)
++ << Exiv2::Error(e.code()).what()
++#else
++ << e.code() << ": " << s.c_str()
++#endif
++ << ")";
+ }
+ catch(...)
+ {
+@@ -80,7 +90,11 @@ QByteArray KExiv2::getIptc(bool addIrbHeader) const
+ c2 = Exiv2::IptcParser::encode(d->iptcMetadata());
+ }
+
++#if EXIV2_TEST_VERSION(0,28,0)
++ QByteArray data((const char*)c2.c_data(), c2.size());
++#else
+ QByteArray data((const char*)c2.pData_, c2.size_);
++#endif
+ return data;
+
+ }
+@@ -510,7 +524,11 @@ bool KExiv2::setIptcTagsStringList(const char* iptcTagName, int maxSize,
+ QString key = *it;
+ key.truncate(maxSize);
+
++#if EXIV2_TEST_VERSION(0,28,0)
++ Exiv2::Value::UniquePtr val = Exiv2::Value::create(Exiv2::string);
++#else
+ Exiv2::Value::AutoPtr val = Exiv2::Value::create(Exiv2::string);
++#endif
+ val->read(key.toUtf8().constData());
+ iptcData.add(iptcTag, val.get());
+ }
+@@ -611,7 +629,11 @@ bool KExiv2::setIptcKeywords(const QStringList& oldKeywords, const QStringList&
+ QString key = *it;
+ key.truncate(64);
+
++#if EXIV2_TEST_VERSION(0,28,0)
++ Exiv2::Value::UniquePtr val = Exiv2::Value::create(Exiv2::string);
++#else
+ Exiv2::Value::AutoPtr val = Exiv2::Value::create(Exiv2::string);
++#endif
+ val->read(key.toUtf8().constData());
+ iptcData.add(iptcTag, val.get());
+ }
+@@ -705,7 +727,11 @@ bool KExiv2::setIptcSubjects(const QStringList& oldSubjects, const QStringList&
+ QString key = *it;
+ key.truncate(236);
+
++#if EXIV2_TEST_VERSION(0,28,0)
++ Exiv2::Value::UniquePtr val = Exiv2::Value::create(Exiv2::string);
++#else
+ Exiv2::Value::AutoPtr val = Exiv2::Value::create(Exiv2::string);
++#endif
+ val->read(key.toUtf8().constData());
+ iptcData.add(iptcTag, val.get());
+ }
+@@ -800,7 +826,11 @@ bool KExiv2::setIptcSubCategories(const QStringList& oldSubCategories, const QSt
+ QString key = *it;
+ key.truncate(32);
+
++#if EXIV2_TEST_VERSION(0,28,0)
++ Exiv2::Value::UniquePtr val = Exiv2::Value::create(Exiv2::string);
++#else
+ Exiv2::Value::AutoPtr val = Exiv2::Value::create(Exiv2::string);
++#endif
+ val->read(key.toUtf8().constData());
+ iptcData.add(iptcTag, val.get());
+ }
+diff --git src/kexiv2previews.cpp b/src/kexiv2previews.cpp
+index 4313253..d7782eb 100644
+--- src/kexiv2previews.cpp
++++ src/kexiv2previews.cpp
+@@ -29,9 +29,17 @@ class KExiv2PreviewsPrivate
+ delete manager;
+ }
+
++#if EXIV2_TEST_VERSION(0,28,0)
++ void load(Exiv2::Image::UniquePtr image_)
++#else
+ void load(Exiv2::Image::AutoPtr image_)
++#endif
+ {
++#if EXIV2_TEST_VERSION(0,28,0)
++ image = std::move(image_);
++#else
+ image = image_;
++#endif
+
+ image->readMetadata();
+
+@@ -49,7 +57,11 @@ class KExiv2PreviewsPrivate
+
+ public:
+
++#if EXIV2_TEST_VERSION(0,28,0)
++ Exiv2::Image::UniquePtr image;
++#else
+ Exiv2::Image::AutoPtr image;
++#endif
+ Exiv2::PreviewManager* manager;
+ QList<Exiv2::PreviewProperties> properties;
+ };
+@@ -59,8 +71,13 @@ KExiv2Previews::KExiv2Previews(const QString& filePath)
+ {
+ try
+ {
++#if EXIV2_TEST_VERSION(0,28,0)
++ Exiv2::Image::UniquePtr image = Exiv2::ImageFactory::open((const char*)(QFile::encodeName(filePath).constData()));
++ d->load(std::move(image));
++#else
+ Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open((const char*)(QFile::encodeName(filePath).constData()));
+ d->load(image);
++#endif
+ }
+ catch( Exiv2::Error& e )
+ {
+@@ -77,8 +94,13 @@ KExiv2Previews::KExiv2Previews(const QByteArray& imgData)
+ {
+ try
+ {
++#if EXIV2_TEST_VERSION(0,28,0)
++ Exiv2::Image::UniquePtr image = Exiv2::ImageFactory::open((Exiv2::byte*)imgData.data(), imgData.size());
++ d->load(std::move(image));
++#else
+ Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open((Exiv2::byte*)imgData.data(), imgData.size());
+ d->load(image);
++#endif
+ }
+ catch( Exiv2::Error& e )
+ {
+diff --git src/kexiv2xmp.cpp b/src/kexiv2xmp.cpp
+index 99b3003..6b83b51 100644
+--- src/kexiv2xmp.cpp
++++ src/kexiv2xmp.cpp
+@@ -19,7 +19,12 @@ bool KExiv2::canWriteXmp(const QString& filePath)
+ #ifdef _XMP_SUPPORT_
+ try
+ {
+- Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open((const char*)
++#if EXIV2_TEST_VERSION(0,28,0)
++ Exiv2::Image::UniquePtr image =
++#else
++ Exiv2::Image::AutoPtr image =
++#endif
++ Exiv2::ImageFactory::open((const char*)
+ (QFile::encodeName(filePath).constData()));
+
+ Exiv2::AccessMode mode = image->checkMode(Exiv2::mdXmp);
+@@ -29,7 +34,12 @@ bool KExiv2::canWriteXmp(const QString& filePath)
+ {
+ std::string s(e.what());
+ qCCritical(LIBKEXIV2_LOG) << "Cannot check Xmp access mode using Exiv2 (Error #"
+- << e.code() << ": " << s.c_str() << ")";
++#if EXIV2_TEST_VERSION(0,28,0)
++ << Exiv2::Error(e.code()).what()
++#else
++ << e.code() << ": " << s.c_str()
++#endif
++ << ")";
+ }
+ catch(...)
+ {
+@@ -374,7 +384,11 @@ bool KExiv2::setXmpTagString(const char* xmpTagName, const QString& value, bool
+ try
+ {
+ const std::string &txt(value.toUtf8().constData());
++#if EXIV2_TEST_VERSION(0,28,0)
++ Exiv2::Value::UniquePtr xmpTxtVal = Exiv2::Value::create(Exiv2::xmpText);
++#else
+ Exiv2::Value::AutoPtr xmpTxtVal = Exiv2::Value::create(Exiv2::xmpText);
++#endif
+ xmpTxtVal->read(txt);
+ d->xmpMetadata()[xmpTagName].setValue(xmpTxtVal.get());
+ return true;
+@@ -515,7 +529,11 @@ bool KExiv2::setXmpTagStringListLangAlt(const char* xmpTagName, const KExiv2::Al
+
+ if (!values.isEmpty())
+ {
++#if EXIV2_TEST_VERSION(0,28,0)
++ Exiv2::Value::UniquePtr xmpTxtVal = Exiv2::Value::create(Exiv2::langAlt);
++#else
+ Exiv2::Value::AutoPtr xmpTxtVal = Exiv2::Value::create(Exiv2::langAlt);
++#endif
+
+ for (AltLangMap::const_iterator it = values.constBegin(); it != values.constEnd(); ++it)
+ {
+@@ -621,7 +639,11 @@ bool KExiv2::setXmpTagStringLangAlt(const char* xmpTagName, const QString& value
+ QString txtLangAlt = QString(QString::fromLatin1("lang=%1 %2")).arg(language).arg(value);
+
+ const std::string &txt(txtLangAlt.toUtf8().constData());
++#if EXIV2_TEST_VERSION(0,28,0)
++ Exiv2::Value::UniquePtr xmpTxtVal = Exiv2::Value::create(Exiv2::langAlt);
++#else
+ Exiv2::Value::AutoPtr xmpTxtVal = Exiv2::Value::create(Exiv2::langAlt);
++#endif
+
+ // Search if an Xmp tag already exist.
+
+@@ -735,7 +757,11 @@ bool KExiv2::setXmpTagStringSeq(const char* xmpTagName, const QStringList& seq,
+ else
+ {
+ const QStringList list = seq;
++#if EXIV2_TEST_VERSION(0,28,0)
++ Exiv2::Value::UniquePtr xmpTxtSeq = Exiv2::Value::create(Exiv2::xmpSeq);
++#else
+ Exiv2::Value::AutoPtr xmpTxtSeq = Exiv2::Value::create(Exiv2::xmpSeq);
++#endif
+
+ for (QStringList::const_iterator it = list.constBegin(); it != list.constEnd(); ++it )
+ {
+@@ -835,7 +861,11 @@ bool KExiv2::setXmpTagStringBag(const char* xmpTagName, const QStringList& bag,
+ else
+ {
+ QStringList list = bag;
++#if EXIV2_TEST_VERSION(0,28,0)
++ Exiv2::Value::UniquePtr xmpTxtBag = Exiv2::Value::create(Exiv2::xmpBag);
++#else
+ Exiv2::Value::AutoPtr xmpTxtBag = Exiv2::Value::create(Exiv2::xmpBag);
++#endif
+
+ for (QStringList::const_iterator it = list.constBegin(); it != list.constEnd(); ++it )
+ {
+@@ -929,7 +959,11 @@ QVariant KExiv2::getXmpTagVariant(const char* xmpTagName, bool rationalAsListOfI
+ case Exiv2::unsignedLong:
+ case Exiv2::signedShort:
+ case Exiv2::signedLong:
++#if EXIV2_TEST_VERSION(0,28,0)
++ return QVariant((int)it->toUint32());
++#else
+ return QVariant((int)it->toLong());
++#endif
+ case Exiv2::unsignedRational:
+ case Exiv2::signedRational:
+ if (rationalAsListOfInts)
Home |
Main Index |
Thread Index |
Old Index