$OpenBSD: patch-src_imageutils_jpegcontent_cpp,v 1.2 2009/09/10 16:43:35 sthen Exp $

second two hunks: adapt to exiv2 0.18, from Gentoo via FreeBSD

--- src/imageutils/jpegcontent.cpp.orig	Fri Jul 17 23:00:09 2009
+++ src/imageutils/jpegcontent.cpp	Fri Jul 17 23:00:12 2009
@@ -329,12 +329,17 @@ int JPEGContent::dotsPerMeter(const QString& keyName) 
 	//         2 = inches
 	//         3 = centimeters
 	//         Other = reserved
-	const float INCHESPERMETER = (100. / 2.54); 
+	const double INCHESPERMETER = (100. / 2.54); 
+	Exiv2::Rational r = it->toRational();
+	if (r.second == 0) {
+		// a rational with 0 as second will make hang toLong() conversion
+		r.second = 1;
+	}
 	switch (res) {
 	case 3:  // dots per cm 
-		return (it->toLong() * 100); 
+		return int(double(r.first) * 100 / double(r.second)); 
 	default:  // dots per inch 
-		return (it->toLong() * INCHESPERMETER); 
+		return int(double(r.first) * INCHESPERMETER / double(r.second)); 
 	}
 
 	return 0;
@@ -589,7 +594,8 @@ void JPEGContent::applyPendingTransformation() {
 QImage JPEGContent::thumbnail() const {
 	QImage image;
 	if (!d->mExifData.empty()) {
-		Exiv2::DataBuf thumbnail = d->mExifData.copyThumbnail();
+		Exiv2::ExifThumbC thumb(d->mExifData);
+		Exiv2::DataBuf const thumbnail = thumb.copy();
 		image.loadFromData(thumbnail.pData_, thumbnail.size_);
 	}
 	return image;
@@ -611,7 +617,8 @@ void JPEGContent::setThumbnail(const QImage& thumbnail
 		return;
 	}
 	
-	d->mExifData.setJpegThumbnail((unsigned char*)array.data(), array.size());
+	Exiv2::ExifThumb thumb(d->mExifData);
+	thumb.setJpegThumbnail((unsigned char*)array.data(), array.size());
 }
 
 
