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