Author: post
Date: 2011-01-14 11:39:23 +0100 (Fri, 14 Jan 2011)
New Revision: 3798

Modified:
   trunk/plugins/output-jpegfile/output-jpegfile.c
   trunk/plugins/output-picasa/output-picasa.c
   trunk/plugins/output-pngfile/output-pngfile.c
   trunk/plugins/output-tifffile/output-tifffile.c
Log:
Add option to copy EXIF data when exporting JPG/PNG/TIFF and uploading to 
Picasa.

Modified: trunk/plugins/output-jpegfile/output-jpegfile.c
===================================================================
--- trunk/plugins/output-jpegfile/output-jpegfile.c     2011-01-14 10:06:14 UTC 
(rev 3797)
+++ trunk/plugins/output-jpegfile/output-jpegfile.c     2011-01-14 10:39:23 UTC 
(rev 3798)
@@ -48,6 +48,7 @@
        gchar *filename;
        gint quality;
        RSColorSpace *color_space;
+       gboolean copy_metadata;
 };
 
 struct _RSJpegfileClass {
@@ -60,6 +61,7 @@
        PROP_0,
        PROP_FILENAME,
        PROP_QUALITY,
+       PROP_METADATA,
        PROP_COLORSPACE
 };
 
@@ -100,6 +102,12 @@
                        RS_TYPE_COLOR_SPACE, G_PARAM_READWRITE)
        );
 
+       g_object_class_install_property(object_class,
+               PROP_METADATA, g_param_spec_boolean(
+                       "copy-metadata", "Copy Metadata", _("Copy EXIF 
metadata"),
+                       TRUE, G_PARAM_READWRITE)
+       );
+
        output_class->execute = execute;
        output_class->extension = "jpg";
        output_class->display_name = _("JPEG (Joint Photographic Experts 
Group)");
@@ -111,6 +119,7 @@
        jpegfile->filename = NULL;
        jpegfile->quality = 90;
        jpegfile->color_space = rs_color_space_new_singleton("RSSrgb");
+       jpegfile->copy_metadata = TRUE;
 }
 
 static void
@@ -129,6 +138,9 @@
                case PROP_COLORSPACE:
                        g_value_set_object(value, jpegfile->color_space);
                        break;
+               case PROP_METADATA:
+                       g_value_set_boolean(value, jpegfile->copy_metadata);
+                       break;
                default:
                        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, 
pspec);
        }
@@ -152,6 +164,9 @@
                                g_object_unref(jpegfile->color_space);
                        jpegfile->color_space = g_value_get_object(value);
                        break;
+               case PROP_METADATA:
+                       jpegfile->copy_metadata = g_value_get_boolean(value);
+                       break;
                default:
                        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, 
pspec);
        }
@@ -279,7 +294,10 @@
 
        gchar *input_filename = NULL;
        rs_filter_get_recursive(filter, "filename", &input_filename, NULL);
-       rs_exif_copy(input_filename, jpegfile->filename, 
G_OBJECT_TYPE_NAME(jpegfile->color_space), RS_EXIF_FILE_TYPE_JPEG);
+
+       if (jpegfile->copy_metadata)
+               rs_exif_copy(input_filename, jpegfile->filename, 
G_OBJECT_TYPE_NAME(jpegfile->color_space), RS_EXIF_FILE_TYPE_JPEG);
+
        rs_io_unlock();
        g_free(input_filename);
 

Modified: trunk/plugins/output-picasa/output-picasa.c
===================================================================
--- trunk/plugins/output-picasa/output-picasa.c 2011-01-14 10:06:14 UTC (rev 
3797)
+++ trunk/plugins/output-picasa/output-picasa.c 2011-01-14 10:39:23 UTC (rev 
3798)
@@ -40,6 +40,7 @@
        RSOutput parent;
        gchar *album_id;
        gint quality;
+       gboolean copy_metadata;
 };
 
 struct _RSPicasaClass
@@ -68,6 +69,7 @@
        PROP_LOGO,
        PROP_JPEG_QUALITY,
        PROP_ALBUM_SELECTOR,
+       PROP_METADATA,
        PROP_FILENAME /* Required for a output plugin - not in use */
 };
 
@@ -112,6 +114,11 @@
                                                                                
    "Album selector",
                                                                                
    GTK_TYPE_WIDGET,
                                                                                
    G_PARAM_READABLE));
+       g_object_class_install_property(object_class,
+               PROP_METADATA, g_param_spec_boolean(
+                       "copy-metadata", "Copy Metadata", _("Retain EXIF 
metadata"),
+                       TRUE, G_PARAM_READWRITE)
+       );
        output_class->execute = execute;
        output_class->display_name = _("Upload photo to Picasa");
 }
@@ -121,6 +128,7 @@
 {
        picasa->quality = 90;
        picasa->album_id = rs_conf_get_string(CONF_PICASA_CLIENT_ALBUM_ID);
+       picasa->copy_metadata = TRUE;
 }
 
 static void
@@ -139,6 +147,9 @@
        case PROP_ALBUM_SELECTOR:
                g_value_set_object(value, get_album_selector_widget(picasa));
                break;
+       case PROP_METADATA:
+               g_value_set_boolean(value, picasa->copy_metadata);
+               break;
        default:
                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
        }
@@ -154,6 +165,9 @@
        case PROP_JPEG_QUALITY:
                picasa->quality = g_value_get_int (value);
                break;
+       case PROP_METADATA:
+               picasa->copy_metadata = g_value_get_boolean(value);
+               break;
        default:
                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
        }
@@ -399,7 +413,8 @@
        gchar *temp_file = g_strdup_printf ("%s%s.rawstudio-tmp-%d.jpg", 
g_get_tmp_dir (), G_DIR_SEPARATOR_S, (gint) (g_random_double () * 10000.0));
 
        g_object_set (jpegsave, "filename", temp_file, 
-                                                               "quality", 
picasa->quality, 
+                                                               "quality", 
picasa->quality,
+                                                               
"copy-metadata", picasa->copy_metadata,
                                                                NULL);
 
        rs_output_execute (jpegsave, filter);

Modified: trunk/plugins/output-pngfile/output-pngfile.c
===================================================================
--- trunk/plugins/output-pngfile/output-pngfile.c       2011-01-14 10:06:14 UTC 
(rev 3797)
+++ trunk/plugins/output-pngfile/output-pngfile.c       2011-01-14 10:39:23 UTC 
(rev 3798)
@@ -39,6 +39,7 @@
        gint quality;
        RSColorSpace *color_space;
        gboolean save16bit;
+       gboolean copy_metadata;
 };
 
 struct _RSPngfileClass {
@@ -51,6 +52,7 @@
        PROP_0,
        PROP_FILENAME,
        PROP_16BIT,
+       PROP_METADATA,
        PROP_COLORSPACE
 };
 
@@ -88,6 +90,11 @@
                        "save16bit", "16 bit PNG", _("Save 16 bit linear PNG"),
                        FALSE, G_PARAM_READWRITE)
        );
+       g_object_class_install_property(object_class,
+               PROP_METADATA, g_param_spec_boolean(
+                       "copy-metadata", "Copy Metadata", _("Copy EXIF metadata 
to XMP"),
+                       TRUE, G_PARAM_READWRITE)
+       );
 
        output_class->execute = execute;
        output_class->extension = "png";
@@ -100,6 +107,7 @@
        pngfile->filename = NULL;
        pngfile->color_space = rs_color_space_new_singleton("RSSrgb");
        pngfile->save16bit = FALSE;
+       pngfile->copy_metadata = TRUE;
 }
 
 static void
@@ -118,6 +126,9 @@
                case PROP_16BIT:
                        g_value_set_boolean(value, pngfile->save16bit);
                        break;
+               case PROP_METADATA:
+                       g_value_set_boolean(value, pngfile->copy_metadata);
+                       break;
                default:
                        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, 
pspec);
        }
@@ -141,6 +152,9 @@
                case PROP_16BIT:
                        pngfile->save16bit = g_value_get_boolean(value);
                        break;
+               case PROP_METADATA:
+                       pngfile->copy_metadata = g_value_get_boolean(value);
+                       break;
                default:
                        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, 
pspec);
        }
@@ -262,7 +276,10 @@
 
        gchar *input_filename = NULL;
        rs_filter_get_recursive(filter, "filename", &input_filename, NULL);
-       rs_exif_copy(input_filename, pngfile->filename, 
G_OBJECT_TYPE_NAME(pngfile->color_space), RS_EXIF_FILE_TYPE_PNG);
+
+       if (pngfile->copy_metadata)
+               rs_exif_copy(input_filename, pngfile->filename, 
G_OBJECT_TYPE_NAME(pngfile->color_space), RS_EXIF_FILE_TYPE_PNG);
+
        rs_io_unlock();
        g_free(input_filename);
 

Modified: trunk/plugins/output-tifffile/output-tifffile.c
===================================================================
--- trunk/plugins/output-tifffile/output-tifffile.c     2011-01-14 10:06:14 UTC 
(rev 3797)
+++ trunk/plugins/output-tifffile/output-tifffile.c     2011-01-14 10:39:23 UTC 
(rev 3798)
@@ -37,6 +37,7 @@
        gboolean uncompressed;
        gboolean save16bit;
        RSColorSpace *color_space;
+       gboolean copy_metadata;
 };
 
 struct _RSTifffileClass {
@@ -50,6 +51,7 @@
        PROP_FILENAME,
        PROP_UNCOMPRESSED,
        PROP_16BIT,
+       PROP_METADATA,
        PROP_COLORSPACE
 };
 
@@ -89,6 +91,11 @@
                        "save16bit", "16 bit TIFF", _("Save 16 bit TIFF"),
                        FALSE, G_PARAM_READWRITE)
        );
+       g_object_class_install_property(object_class,
+               PROP_METADATA, g_param_spec_boolean(
+                       "copy-metadata", "Copy Metadata", _("Copy EXIF 
metadata"),
+                       TRUE, G_PARAM_READWRITE)
+       );
 
        g_object_class_install_property(object_class,
                PROP_COLORSPACE, g_param_spec_object(
@@ -107,6 +114,7 @@
        tifffile->filename = NULL;
        tifffile->uncompressed = FALSE;
        tifffile->save16bit = FALSE;
+       tifffile->copy_metadata = TRUE;
        tifffile->color_space = rs_color_space_new_singleton("RSSrgb");
 }
 
@@ -129,6 +137,9 @@
                case PROP_COLORSPACE:
                        g_value_set_object(value, tifffile->color_space);
                        break;
+               case PROP_METADATA:
+                       g_value_set_boolean(value, tifffile->copy_metadata);
+                       break;
                default:
                        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, 
pspec);
        }
@@ -155,6 +166,9 @@
                                g_object_unref(tifffile->color_space);
                        tifffile->color_space = g_value_get_object(value);
                        break;
+               case PROP_METADATA:
+                       tifffile->copy_metadata = g_value_get_boolean(value);
+                       break;
                default:
                        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, 
pspec);
        }
@@ -279,7 +293,8 @@
        gchar *input_filename = NULL;
        rs_filter_get_recursive(filter, "filename", &input_filename, NULL);
 
-       rs_exif_copy(input_filename, tifffile->filename,  
G_OBJECT_TYPE_NAME(tifffile->color_space), RS_EXIF_FILE_TYPE_TIFF);
+       if (tifffile->copy_metadata)
+               rs_exif_copy(input_filename, tifffile->filename,  
G_OBJECT_TYPE_NAME(tifffile->color_space), RS_EXIF_FILE_TYPE_TIFF);
        rs_io_unlock();
        g_free(input_filename);
 


_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit

Reply via email to