Revision: 1605
          http://geeqie.svn.sourceforge.net/geeqie/?rev=1605&view=rev
Author:   nadvornik
Date:     2009-04-04 19:10:49 +0000 (Sat, 04 Apr 2009)

Log Message:
-----------
added metadata_read_GPS_coord

Modified Paths:
--------------
    trunk/src/metadata.c
    trunk/src/metadata.h

Modified: trunk/src/metadata.c
===================================================================
--- trunk/src/metadata.c        2009-04-04 16:42:54 UTC (rev 1604)
+++ trunk/src/metadata.c        2009-04-04 19:10:49 UTC (rev 1605)
@@ -515,7 +515,44 @@
        g_free(string);
        return ret;
 }
+
+gdouble metadata_read_GPS_coord(FileData *fd, const gchar *key, gdouble 
fallback)
+{
+       gdouble coord;
+       gchar *endptr;
+       gdouble deg, min, sec;
+       gboolean ok = FALSE;
+       gchar *string = metadata_read_string(fd, key, METADATA_PLAIN);
+       if (!string) return fallback;
        
+       deg = g_ascii_strtod(string, &endptr);
+       if (*endptr == ',')
+               {
+               min = g_ascii_strtod(endptr + 1, &endptr);
+               if (*endptr == ',')
+                       sec = g_ascii_strtod(endptr + 1, &endptr);
+               else 
+                       sec = 0.0;
+               
+               
+               if (*endptr == 'S' || *endptr == 'W' || *endptr == 'N' || 
*endptr == 'E') 
+                       {
+                       coord = deg + min /60.0 + sec / 3600.0;
+                       ok = TRUE;
+                       if (*endptr == 'S' || *endptr == 'W') coord = -coord;
+                       }
+               }
+       
+       if (!ok)
+               {
+               coord = fallback;
+               log_printf("unable to parse GPS coordinate '%s'\n", string);
+               }
+       
+       g_free(string);
+       return coord;
+}
+       
 gboolean metadata_append_string(FileData *fd, const gchar *key, const char 
*value)
 {
        gchar *str = metadata_read_string(fd, key, METADATA_PLAIN);

Modified: trunk/src/metadata.h
===================================================================
--- trunk/src/metadata.h        2009-04-04 16:42:54 UTC (rev 1604)
+++ trunk/src/metadata.h        2009-04-04 19:10:49 UTC (rev 1605)
@@ -30,6 +30,7 @@
 GList *metadata_read_list(FileData *fd, const gchar *key, MetadataFormat 
format);
 gchar *metadata_read_string(FileData *fd, const gchar *key, MetadataFormat 
format);
 guint64 metadata_read_int(FileData *fd, const gchar *key, guint64 fallback);
+gdouble metadata_read_GPS_coord(FileData *fd, const gchar *key, gdouble 
fallback);
 
 gboolean metadata_append_string(FileData *fd, const gchar *key, const char 
*value);
 gboolean metadata_append_list(FileData *fd, const gchar *key, const GList 
*values);


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
_______________________________________________
Geeqie-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geeqie-svn

Reply via email to