gthumb r2459 - in trunk: . libgthumb



Author: mjc
Date: Fri Dec 19 12:50:26 2008
New Revision: 2459
URL: http://svn.gnome.org/viewvc/gthumb?rev=2459&view=rev

Log:
2008-12-19  Michael J. Chudobiak  <mjc svn gnome org>

        * NEWS:
        * README:
        * configure.in:
        * libgthumb/gth-exiv2-utils.cpp:
        Adapt to exiv2 0.18, which has API changes. Metadata writing is
        partly broken, so don't use trunk for editing until that is fixed.
        Working on it!



Modified:
   trunk/ChangeLog
   trunk/NEWS
   trunk/README
   trunk/configure.in
   trunk/libgthumb/gth-exiv2-utils.cpp

Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS	(original)
+++ trunk/NEWS	Fri Dec 19 12:50:26 2008
@@ -61,7 +61,7 @@
 	* Added page_rows and page_cols web album tags. Bug #543966.
 
 	Library changes:
-	* exiv2 0.15 or higher is now required.
+	* exiv2 0.18 or higher is now required.
 	* libiptcdata is no longer used.
 	* libexif is no longer used.
 

Modified: trunk/README
==============================================================================
--- trunk/README	(original)
+++ trunk/README	Fri Dec 19 12:50:26 2008
@@ -93,7 +93,7 @@
 	* gnome-vfs 		version >= 2.6.0
 	* libglade 		version >= 2.4.0
 	* intltool		version >= 0.35.0
-	* exiv2			version >= 0.15
+	* exiv2			version >= 0.18
 	* libjpeg
 	* gtkunique		version >= 0.9.1 (optional)
 

Modified: trunk/configure.in
==============================================================================
--- trunk/configure.in	(original)
+++ trunk/configure.in	Fri Dec 19 12:50:26 2008
@@ -34,7 +34,7 @@
 LIBGPHOTO_REQUIRED=2.1.3
 BONOBO_REQUIRED=2.6.0
 LIBOPENRAW_REQUIRED=0.0.2
-EXIV2_REQUIRED=0.15
+EXIV2_REQUIRED=0.18
 GSTREAMER_REQUIRED=0.10.15
 
 AC_SUBST(GLIB_REQUIRED)
@@ -174,13 +174,6 @@
 		   HAVE_GDKX=yes],
 		  [AC_MSG_WARN(Disabling GDK/X11-dependent features and Xrender.)])
 
-#
-# check for exiv2 xmp functionality
-#
-AC_LANG_PUSH([C++])
-AC_CHECK_HEADERS([exiv2/xmp.hpp],[HAVE_XMP=yes],[HAVE_XMP=no])
-AC_LANG_POP([C++])
-
 
 #
 # check for gstreamer
@@ -357,7 +350,6 @@
 	Have libtiff:             ${HAVE_TIFF}
 	Have libgphoto:           ${HAVE_GPHOTO2}
 	Have libopenraw:          ${HAVE_LIBOPENRAW}
-	Have exiv2 xmp support:   ${HAVE_XMP}
 	Have gstreamer:           ${HAVE_GSTREAMER}
 	Use Mac OS X menu:        ${HAVE_MACOSMENU}
 

Modified: trunk/libgthumb/gth-exiv2-utils.cpp
==============================================================================
--- trunk/libgthumb/gth-exiv2-utils.cpp	(original)
+++ trunk/libgthumb/gth-exiv2-utils.cpp	Fri Dec 19 12:50:26 2008
@@ -32,9 +32,7 @@
 #include <sstream>
 #include <vector>
 
-#ifdef HAVE_EXIV2_XMP_HPP
 #include <exiv2/xmp.hpp>
-#endif
 
 #include <glib.h>
 #include <gdk-pixbuf/gdk-pixbuf.h>
@@ -463,7 +461,6 @@
 			}
 		}
 
-#ifdef HAVE_EXIV2_XMP_HPP
 		Exiv2::XmpData &xmpData = image->xmpData();
 		if (!xmpData.empty()) {
 
@@ -491,7 +488,6 @@
 						0);
 			}
 		}
-#endif
 
 		return metadata;
 	}
@@ -507,7 +503,6 @@
 read_exiv2_sidecar (const char *uri, GList *metadata)
 {
 	try {
-#ifdef HAVE_EXIV2_XMP_HPP
 		Exiv2::DataBuf buf = Exiv2::readFile(uri);
 		std::string xmpPacket;
 		xmpPacket.assign(reinterpret_cast<char*>(buf.pData_), buf.size_);
@@ -543,7 +538,6 @@
 			}
 		}
 		Exiv2::XmpParser::terminate();
-#endif
 		return metadata;
 	} 
 	catch (Exiv2::AnyError& e) {
@@ -580,6 +574,8 @@
 		const char *to_file,
 		GList      *metadata_in)
 {
+printf ("\ndebugging: metadata writes are partly broken. Beware!\n");	
+printf ("Copy from %s to %s:\n",from_file,to_file);
 	try {
 		GList *scan;
 
@@ -592,33 +588,32 @@
 
 		Exiv2::ExifData &ed = image1->exifData();
 		Exiv2::IptcData &id = image1->iptcData();
-#ifdef HAVE_EXIV2_XMP_HPP
 		Exiv2::XmpData &xd = image1->xmpData();
-#endif
 
 		for (scan = metadata_in; scan; scan = scan->next) {
 			// Update the requested tag
 			GthMetadata *metadatum = (GthMetadata *) scan->data;
 			if (metadatum->full_name != NULL) {
+printf ("Copy tag %s = %s\n",metadatum->full_name, metadatum->raw_value);
 				if (g_str_has_prefix (metadatum->full_name, "Exif")) {
 					ed[metadatum->full_name] = metadatum->raw_value;
 				}
 				else if (g_str_has_prefix (metadatum->full_name, "Iptc")) {
 					id[metadatum->full_name] = metadatum->raw_value;
 		        	}
-#ifdef HAVE_EXIV2_XMP_HPP
 				else if (g_str_has_prefix (metadatum->full_name, "Xmp")) {
 					xd[metadatum->full_name] = metadatum->raw_value;
 		        	}
-#endif
 			}
 		}
 
 		// Delete thumbnail and IFD1 tags, because the main image may
 		// have changed, and gThumb doesn't use the embedded thumbnails
 		// anyways.
-		image1->exifData().eraseThumbnail();
 
+		Exiv2::ExifThumb exifThumb(image1->exifData());
+		exifThumb.erase();
+		
 		// Mandatory tags - add if not already present
 		mandatory_int (ed, "Exif.Image.XResolution", 72);
 		mandatory_int (ed, "Exif.Image.YResolution", 72);
@@ -666,11 +661,10 @@
 
 		image2->setExifData (image1->exifData());
 		image2->setIptcData (image1->iptcData());
-#ifdef HAVE_EXIV2_XMP_HPP
 		image2->setXmpData (image1->xmpData());
-#endif
 
 		// overwrite existing metadata with new metadata
+printf ("Did this write work?\n");
 		image2->writeMetadata();
 	}
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]