Skip to content

Commit

Permalink
Fix compilation with libexiv2 newer than 0.28.0
Browse files Browse the repository at this point in the history
resolves #131
  • Loading branch information
Труфанов Александр committed Jul 15, 2023
1 parent 2f95d22 commit 8529846
Showing 1 changed file with 17 additions and 6 deletions.
23 changes: 17 additions & 6 deletions src/core/filters/output/ImageMetadataCopier.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,19 @@
#include <exiv2/exiv2.hpp>
#include <iostream>

#if EXIV2_TEST_VERSION(0,28,0)
typedef Exiv2::UniquePtr ExivUniquePtr;
#else
typedef Exiv2::Image::AutoPtr ExivUniquePtr;
#endif

bool
ImageMetadataCopier::iccProfileDefined(const QString& filename)
{
#ifdef _WIN32
const Exiv2::Image::AutoPtr src_image = Exiv2::ImageFactory::open(filename.toStdWString());
const ExivUniquePtr src_image = Exiv2::ImageFactory::open(filename.toStdWString());
#else
const Exiv2::Image::AutoPtr src_image = Exiv2::ImageFactory::open(filename.toStdString());
const ExivUniquePtr src_image = Exiv2::ImageFactory::open(filename.toStdString());
#endif
if (src_image.get()) {
src_image->readMetadata();
Expand All @@ -25,9 +31,9 @@ ImageMetadataCopier::copyMetadata(const QString& src_img,
try
{
#ifdef _WIN32
const Exiv2::Image::AutoPtr src_image = Exiv2::ImageFactory::open(src_img.toStdWString());
const ExivUniquePtr src_image = Exiv2::ImageFactory::open(src_img.toStdWString());
#else
const Exiv2::Image::AutoPtr src_image = Exiv2::ImageFactory::open(src_img.toStdString());
const ExivUniquePtr src_image = Exiv2::ImageFactory::open(src_img.toStdString());
#endif

if (src_image.get()) {
Expand All @@ -36,12 +42,17 @@ ImageMetadataCopier::copyMetadata(const QString& src_img,
if (src_image->iccProfileDefined()) {
src_image->iccProfile();
#ifdef _WIN32
const Exiv2::Image::AutoPtr dst_image = Exiv2::ImageFactory::open(dst_img.toStdWString());
const ExivUniquePtr dst_image = Exiv2::ImageFactory::open(dst_img.toStdWString());
#else
const Exiv2::Image::AutoPtr dst_image = Exiv2::ImageFactory::open(dst_img.toStdString());
const ExivUniquePtr dst_image = Exiv2::ImageFactory::open(dst_img.toStdString());
#endif
dst_image->readMetadata();
#if EXIV2_TEST_VERSION(0,28,0)
Exiv2::DataBuf profile = src_image->iccProfile();
dst_image->setIccProfile(std::move(profile))
#else
dst_image->setIccProfile(*src_image->iccProfile());
#endif
dst_image->writeMetadata();
return true;
}
Expand Down

0 comments on commit 8529846

Please sign in to comment.