File 0001-Fixed-compilation-with-exiv2-0.28.patch of Package kphotoalbum
From b1719d6b337059e070b2db812eb3b747a3e5a627 Mon Sep 17 00:00:00 2001
From: Tobias Leupold <tl@stonemx.de>
Date: Sat, 20 May 2023 22:33:44 +0200
Subject: [PATCH 1/3] Fixed compilation with exiv2 0.28
---
DB/FileInfo.cpp | 11 ++++++++++-
lib/kpaexif/Database.cpp | 13 +++++++++++--
lib/kpaexif/DatabaseElement.cpp | 21 ++++++++++++++-------
lib/kpaexif/Info.cpp | 9 +++++++++
4 files changed, 44 insertions(+), 10 deletions(-)
diff --git a/DB/FileInfo.cpp b/DB/FileInfo.cpp
index dc4c9819..ca18ddc2 100644
--- a/DB/FileInfo.cpp
+++ b/DB/FileInfo.cpp
@@ -1,5 +1,6 @@
// SPDX-FileCopyrightText: 2003-2010 Jesper K. Pedersen <blackie@kde.org>
// SPDX-FileCopyrightText: 2021 Johannes Zarl-Zierl <johannes@zarl-zierl.at>
+// SPDX-FileCopyrightText: 2023 Tobias Leupold <tl at stonemx dot de>
//
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -13,6 +14,8 @@
#include <QFileInfo>
#include <QRegularExpression>
+#include <exiv2/version.hpp>
+
using namespace DB;
FileInfo FileInfo::read(const DB::FileName &fileName, DB::ExifMode mode)
@@ -79,8 +82,14 @@ void DB::FileInfo::parseEXIV2(const DB::FileName &fileName)
const Exiv2::Exifdatum &datum = m_exifMap["Exif.Image.Orientation"];
int orientation = 0;
- if (datum.count() > 0)
+ if (datum.count() > 0) {
+#if EXIV2_TEST_VERSION(0, 28, 0)
+ orientation = datum.toUint32();
+#else
orientation = datum.toLong();
+#endif
+ }
+
m_angle = orientationToAngle(orientation);
}
diff --git a/lib/kpaexif/Database.cpp b/lib/kpaexif/Database.cpp
index 4d0e228c..930d1c8e 100644
--- a/lib/kpaexif/Database.cpp
+++ b/lib/kpaexif/Database.cpp
@@ -1,6 +1,6 @@
// SPDX-FileCopyrightText: 2003-2020 The KPhotoAlbum Development Team
-// SPDX-FileCopyrightText: 2021 Johannes Zarl-Zierl <johannes@zarl-zierl.at>
-// SPDX-FileCopyrightText: 2022 Johannes Zarl-Zierl <johannes@zarl-zierl.at>
+// SPDX-FileCopyrightText: 2021-2022 Johannes Zarl-Zierl <johannes@zarl-zierl.at>
+// SPDX-FileCopyrightText: 2023 Tobias Leupold <tl at stonemx dot de>
//
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -21,6 +21,7 @@
#include <QSqlQuery>
#include <exiv2/exif.hpp>
#include <exiv2/image.hpp>
+#include <exiv2/version.hpp>
using namespace Exif;
@@ -320,7 +321,11 @@ bool Exif::Database::add(const DB::FileName &fileName)
return false;
try {
+#if EXIV2_TEST_VERSION(0, 28, 0)
+ Exiv2::Image::UniquePtr image = Exiv2::ImageFactory::open(fileName.absolute().toLocal8Bit().data());
+#else
Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(fileName.absolute().toLocal8Bit().data());
+#endif
Q_ASSERT(image.get() != nullptr);
image->readMetadata();
Exiv2::ExifData &exifData = image->exifData();
@@ -341,7 +346,11 @@ bool Exif::Database::add(const DB::FileNameList &list)
for (const DB::FileName &fileName : list) {
try {
+#if EXIV2_TEST_VERSION(0, 28, 0)
+ Exiv2::Image::UniquePtr image = Exiv2::ImageFactory::open(fileName.absolute().toLocal8Bit().data());
+#else
Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(fileName.absolute().toLocal8Bit().data());
+#endif
Q_ASSERT(image.get() != nullptr);
image->readMetadata();
map << DBExifInfo(fileName, image->exifData());
diff --git a/lib/kpaexif/DatabaseElement.cpp b/lib/kpaexif/DatabaseElement.cpp
index 4e7ba198..e218bb5e 100644
--- a/lib/kpaexif/DatabaseElement.cpp
+++ b/lib/kpaexif/DatabaseElement.cpp
@@ -1,13 +1,15 @@
-/* SPDX-FileCopyrightText: 2003-2010 Jesper K. Pedersen <blackie@kde.org>
+// SPDX-FileCopyrightText: 2003-2010 Jesper K. Pedersen <blackie@kde.org>
+// SPDX-FileCopyrightText: 2023 Tobias Leupold <tl at stonemx dot de>
+//
+// SPDX-License-Identifier: GPL-2.0-or-later
- SPDX-License-Identifier: GPL-2.0-or-later
-*/
#include "DatabaseElement.h"
#include <kpabase/Logging.h>
#include <QVariant>
#include <exiv2/exif.hpp>
+#include <exiv2/version.hpp>
static QString replaceDotWithUnderscore(const char *cstr)
{
@@ -76,10 +78,15 @@ QString Exif::IntExifElement::queryString() const
QVariant Exif::IntExifElement::valueFromExif(Exiv2::ExifData &data) const
{
- if (data[m_tag].count() > 0)
- return QVariant { (int)data[m_tag].toLong() };
- else
- return QVariant { (int)0 };
+ if (data[m_tag].count() > 0) {
+#if EXIV2_TEST_VERSION(0, 28, 0)
+ return QVariant((int) data[m_tag].toUint32());
+#else
+ return QVariant((int) data[m_tag].toLong());
+#endif
+ } else {
+ return QVariant(0);
+ }
}
Exif::RationalExifElement::RationalExifElement(const char *tag)
diff --git a/lib/kpaexif/Info.cpp b/lib/kpaexif/Info.cpp
index 5f77fc81..d72d88b3 100644
--- a/lib/kpaexif/Info.cpp
+++ b/lib/kpaexif/Info.cpp
@@ -1,5 +1,6 @@
// SPDX-FileCopyrightText: 2003-2020 The KPhotoAlbum Development Team
// SPDX-FileCopyrightText: 2021 Johannes Zarl-Zierl <johannes@zarl-zierl.at>
+// SPDX-FileCopyrightText: 2023 Tobias Leupold <tl at stonemx dot de>
//
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -166,7 +167,11 @@ Info::Info()
void Exif::writeExifInfoToFile(const DB::FileName &srcName, const QString &destName, const QString &imageDescription)
{
// Load Exif from source image
+#if EXIV2_TEST_VERSION(0, 28, 0)
+ Exiv2::Image::UniquePtr image = Exiv2::ImageFactory::open(QFile::encodeName(srcName.absolute()).data());
+#else
Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(QFile::encodeName(srcName.absolute()).data());
+#endif
image->readMetadata();
Exiv2::ExifData data = image->exifData();
@@ -201,7 +206,11 @@ Exif::Metadata Exif::Info::metadata(const DB::FileName &fileName)
{
try {
Exif::Metadata result;
+#if EXIV2_TEST_VERSION(0, 28, 0)
+ Exiv2::Image::UniquePtr image = Exiv2::ImageFactory::open(QFile::encodeName(fileName.absolute()).data());
+#else
Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(QFile::encodeName(fileName.absolute()).data());
+#endif
Q_ASSERT(image.get() != nullptr);
image->readMetadata();
result.exif = image->exifData();
--
2.41.0