Skip to content
Permalink
Browse files

EomMetadataDetails: Improve fractional GPS coordinates support

Increase displayed coordinate resolution for Exif GPS coordinates that
use fractional degrees for minutes or fractional minutes for seconds.

https://bugzilla.gnome.org/show_bug.cgi?id=725416

origin commit:
https://gitlab.gnome.org/GNOME/eog/commit/1b0fb6b
  • Loading branch information...
Felix Riemann authored and raveit65 committed Feb 28, 2014
1 parent f965eb2 commit 9b4890eac998316d72e2358aa0bf5a8f3166afb3
Showing with 26 additions and 7 deletions.
  1. +26 −7 src/eom-metadata-details.c
@@ -39,6 +39,7 @@
#include <gtk/gtk.h>

#include <string.h>
#include <math.h>

typedef enum {
EXIF_CATEGORY_CAMERA,
@@ -372,7 +373,7 @@ eom_exif_entry_get_value (ExifEntry *e,
{
gsize rational_size;
ExifRational r;
gfloat h = 0., m = 0.;
gfloat h = 0., m = 0., s = 0.;


rational_size = exif_format_get_size (EXIF_FORMAT_RATIONAL);
@@ -385,15 +386,33 @@ eom_exif_entry_get_value (ExifEntry *e,
h = (gfloat)r.numerator / r.denominator;

r = exif_get_rational (e->data + rational_size, bo);
if (r.denominator != 0)
m = (gfloat)r.numerator / (gfloat)r.denominator;
if (r.denominator != 0) {
if (r.numerator != 0) {
m = (gfloat)r.numerator /
(gfloat)r.denominator;
} else {
double integ;

m = (gfloat)(modf (h, &integ) * 60.0);
h = (gfloat) integ;
}
}

r = exif_get_rational (e->data + (2 * rational_size),
bo);
if (r.numerator != 0 && r.denominator != 0) {
gfloat s;

s = (gfloat)r.numerator / (gfloat)r.denominator;
if (r.denominator != 0) {
if (r.numerator != 0) {
s = (gfloat)r.numerator /
(gfloat)r.denominator;
} else {
double integ;

s = (gfloat)(modf (m, &integ) * 60.0);
m = (gfloat) integ;
}
}

if (s != 0.0) {
g_snprintf (buf, n_buf,
"%.0f° %.0f' %.2f\"",
h, m, s);

0 comments on commit 9b4890e

Please sign in to comment.
You can’t perform that action at this time.