X-Git-Url: http://geeqie.org/cgi-bin/gitweb.cgi?p=geeqie.git;a=blobdiff_plain;f=src%2Fmetadata.c;h=26d835007f12102338df7915df13cf85125285b4;hp=8c8e9abc6d5f8af03aff07bddc1b2ab411e8a6b9;hb=7d42ca045284da44b249b42564421163c5969aab;hpb=ab4c998d4835a809e10f25e3aaa3acff8b8b6538 diff --git a/src/metadata.c b/src/metadata.c index 8c8e9abc..26d83500 100644 --- a/src/metadata.c +++ b/src/metadata.c @@ -833,6 +833,46 @@ gboolean metadata_append_string(FileData *fd, const gchar *key, const char *valu } } +gboolean metadata_write_GPS_coord(FileData *fd, const gchar *key, gdouble value) +{ + gint deg; + gdouble min; + gdouble param; + char *coordinate; + char *ref; + gboolean ok = TRUE; + + param = value; + if (param < 0) + param = -param; + deg = param; + min = (param * 60) - (deg * 60); + if (g_strcmp0(key, "Xmp.exif.GPSLongitude") == 0) + if (value < 0) + ref = "W"; + else + ref = "E"; + else if (g_strcmp0(key, "Xmp.exif.GPSLatitude") == 0) + if (value < 0) + ref = "S"; + else + ref = "N"; + else + { + log_printf("unknown GPS parameter key '%s'\n", key); + ok = FALSE; + } + + if (ok) + { + coordinate = g_strdup_printf("%i,%lf,%s", deg, min, ref); + metadata_write_string(fd, key, coordinate ); + g_free(coordinate); + } + + return ok; +} + gboolean metadata_append_list(FileData *fd, const gchar *key, const GList *values) { GList *list = metadata_read_list(fd, key, METADATA_PLAIN);