static gboolean get_coordinates (EogImage *image, gdouble *latitude, gdouble *longitude) { ExifData *exif_data; gchar buffer[32]; gdouble lon, lat; exif_data = (ExifData *) eog_image_get_exif_info (image); if (exif_data) { ExifEntry *entry; ExifByteOrder byte_order; byte_order = exif_data_get_byte_order (exif_data); entry = exif_data_get_entry (exif_data, EXIF_TAG_GPS_LONGITUDE); if (!parse_exif_gps_coordinate (entry, &lon, byte_order) || (lon > 180.0)) { exif_data_unref (exif_data); return FALSE; } eog_exif_data_get_value (exif_data, EXIF_TAG_GPS_LONGITUDE_REF, buffer, 32); if (strcmp (buffer, "W") == 0) lon *= -1; entry = exif_data_get_entry (exif_data, EXIF_TAG_GPS_LATITUDE); if (!parse_exif_gps_coordinate (entry, &lat, byte_order) || (lat > 90.0)) { exif_data_unref (exif_data); return FALSE; } eog_exif_data_get_value (exif_data, EXIF_TAG_GPS_LATITUDE_REF, buffer, 32); if (strcmp (buffer, "S") == 0) lat *= -1; *longitude = lon; *latitude = lat; exif_data_unref (exif_data); return TRUE; } return FALSE; }
void eog_exif_util_set_label_text (GtkLabel *label, EogExifData *exif_data, gint tag_id) { gchar exif_buffer[512]; const gchar *buf_ptr; gchar *label_text = NULL; g_return_if_fail (GTK_IS_LABEL (label)); if (exif_data) { buf_ptr = eog_exif_data_get_value (exif_data, tag_id, exif_buffer, 512); if (tag_id == EXIF_TAG_DATE_TIME_ORIGINAL && buf_ptr) label_text = eog_exif_util_format_date (buf_ptr); else label_text = eog_util_make_valid_utf8 (buf_ptr); } gtk_label_set_text (label, label_text); g_free (label_text); }