gthumb r2258 - in trunk: . libgthumb
- From: mjc svn gnome org
- To: svn-commits-list gnome org
- Subject: gthumb r2258 - in trunk: . libgthumb
- Date: Wed, 6 Feb 2008 13:38:23 +0000 (GMT)
Author: mjc
Date: Wed Feb 6 13:38:22 2008
New Revision: 2258
URL: http://svn.gnome.org/viewvc/gthumb?rev=2258&view=rev
Log:
2008-02-06 Michael J. Chudobiak <mjc svn gnome org>
* libgthumb/comments.c: (load_comment_from_metadata),
(save_comment_to_metadata):
* libgthumb/gth-exif-utils.c: (get_metadata_time_from_fd),
(update_metadata):
* libgthumb/gth-exif-utils.h:
Use two different tagsets for comment dates and sorting dates.
Comments prefer the Exif DateTime tag, sorting prefers the
DateTimeOriginal tag.
Modified:
trunk/ChangeLog
trunk/libgthumb/comments.c
trunk/libgthumb/gth-exif-utils.c
trunk/libgthumb/gth-exif-utils.h
Modified: trunk/libgthumb/comments.c
==============================================================================
--- trunk/libgthumb/comments.c (original)
+++ trunk/libgthumb/comments.c Wed Feb 6 13:38:22 2008
@@ -387,7 +387,7 @@
g_free (metadata_string);
}
- metadata_time = get_exif_time (file);
+ metadata_time = get_metadata_time_from_fd (file, TAG_NAME_SETS[COMMENT_DATE_TAG_NAMES]);
if (metadata_time > (time_t) 0)
data->time = metadata_time;
@@ -434,8 +434,8 @@
file = file_data_new (uri, NULL);
file_data_update_all (file, FALSE);
- add_metadata = simple_add_metadata (add_metadata, "Exif.Photo.UserComment", data->comment);
- add_metadata = simple_add_metadata (add_metadata, "Xmp.iptc.Location", data->place);
+ add_metadata = simple_add_metadata (add_metadata, TAG_NAME_SETS[COMMENT_TAG_NAMES][0], data->comment);
+ add_metadata = simple_add_metadata (add_metadata, TAG_NAME_SETS[LOCATION_TAG_NAMES][0], data->place);
localtime_r (&data->time, &tm);
buf = g_strdup_printf ("%04d:%02d:%02d %02d:%02d:%02d ",
@@ -445,7 +445,7 @@
tm.tm_hour,
tm.tm_min,
tm.tm_sec );
- add_metadata = simple_add_metadata (add_metadata, "Exif.Image.DateTime", buf);
+ add_metadata = simple_add_metadata (add_metadata, TAG_NAME_SETS[COMMENT_DATE_TAG_NAMES][0], buf);
if (data->keywords_n > 0) {
if (data->keywords_n == 1)
@@ -455,7 +455,7 @@
} else
keywords_str = g_strdup ("");
- add_metadata = simple_add_metadata (add_metadata, "Xmp.dc.subject", keywords_str);
+ add_metadata = simple_add_metadata (add_metadata, TAG_NAME_SETS[KEYWORD_TAG_NAMES][0], keywords_str);
update_and_save_metadata (file->path, file->path, add_metadata);
free_metadata (add_metadata);
Modified: trunk/libgthumb/gth-exif-utils.c
==============================================================================
--- trunk/libgthumb/gth-exif-utils.c (original)
+++ trunk/libgthumb/gth-exif-utils.c Wed Feb 6 13:38:22 2008
@@ -39,19 +39,34 @@
The arrays below define the valid tags for a particular piece of
information, in decreasing order of preference (best one first) */
-const char *_DATE_TAG_NAMES[] = {
+/* When reading / writing comment dates, we use a slightly different
+ set of tags than for date sorting. */
+const char *_COMMENT_DATE_TAG_NAMES[] = {
+ "Exif.Image.DateTime",
+ "Xmp.exif.DateTime",
"Exif.Photo.DateTimeOriginal",
"Xmp.exif.DateTimeOriginal",
"Exif.Photo.DateTimeDigitized",
"Xmp.exif.DateTimeDigitized",
- "Exif.Image.DateTime",
- "Xmp.exif.DateTime",
"Xmp.xmp.CreateDate",
"Xmp.photoshop.DateCreated",
"Xmp.xmp.ModifyDate",
"Xmp.xmp.MetadataDate",
NULL };
+const char *_SORTING_DATE_TAG_NAMES[] = {
+ "Exif.Photo.DateTimeOriginal",
+ "Xmp.exif.DateTimeOriginal",
+ "Exif.Photo.DateTimeDigitized",
+ "Xmp.exif.DateTimeDigitized",
+ "Exif.Image.DateTime",
+ "Xmp.exif.DateTime",
+ "Xmp.xmp.CreateDate",
+ "Xmp.photoshop.DateCreated",
+ "Xmp.xmp.ModifyDate",
+ "Xmp.xmp.MetadataDate",
+ NULL };
+
const char *_EXPTIME_TAG_NAMES[] = {
"Exif.Photo.ExposureTime",
"Xmp.exif.ExposureTime",
@@ -127,7 +142,8 @@
/* if you add something here, also update the matching enum in gth-exif-utils.h */
const char **TAG_NAME_SETS[] = {
- _DATE_TAG_NAMES,
+ _COMMENT_DATE_TAG_NAMES,
+ _SORTING_DATE_TAG_NAMES,
_EXPTIME_TAG_NAMES,
_EXPMODE_TAG_NAMES,
_ISOSPEED_TAG_NAMES,
@@ -241,12 +257,12 @@
time_t
-get_metadata_time_from_fd (FileData *fd)
+get_metadata_time_from_fd (FileData *fd, const char *tagnames[])
{
char *date = NULL;
time_t result = 0;
- date = get_metadata_tagset_string (fd, TAG_NAME_SETS[DATE_TAG_NAMES]);
+ date = get_metadata_tagset_string (fd, tagnames);
if (date != NULL)
result = exif_string_to_time_t (date);
@@ -523,7 +539,7 @@
override this sorting, if position is non-zero. */
fd->metadata = g_list_sort (fd->metadata, (GCompareFunc) sort_by_tag_name);
fd->exif_data_loaded = TRUE;
- fd->exif_time = get_metadata_time_from_fd (fd);
+ fd->exif_time = get_metadata_time_from_fd (fd, TAG_NAME_SETS[SORTING_DATE_TAG_NAMES]);
g_free (local_file);
Modified: trunk/libgthumb/gth-exif-utils.h
==============================================================================
--- trunk/libgthumb/gth-exif-utils.h (original)
+++ trunk/libgthumb/gth-exif-utils.h Wed Feb 6 13:38:22 2008
@@ -61,7 +61,8 @@
extern const char **TAG_NAME_SETS[];
enum {
- DATE_TAG_NAMES,
+ COMMENT_DATE_TAG_NAMES,
+ SORTING_DATE_TAG_NAMES,
EXPTIME_TAG_NAMES,
EXPMODE_TAG_NAMES,
ISOSPEED_TAG_NAMES,
@@ -82,7 +83,8 @@
GthTransform get_orientation_from_fd (FileData *fd);
time_t get_exif_time (FileData *fd);
time_t get_exif_time_or_mtime (FileData *fd);
-time_t get_metadata_time_from_fd (FileData *fd);
+time_t get_metadata_time_from_fd (FileData *fd,
+ const char *tagnames[]);
time_t get_metadata_time (const char *mime_type,
const char *uri,
GList *md);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]