[gexiv2] Fix get_fnumber() to use proper Exiv tag: Closes bgo#722406



commit 011d8ee3fba0472ae73dca6549b9763d5db8422e
Author: Jim Nelson <jim yorba org>
Date:   Fri Jan 17 12:18:02 2014 -0800

    Fix get_fnumber() to use proper Exiv tag: Closes bgo#722406
    
    Also adds some GI annotations for the affect method and its brethren.

 gexiv2/gexiv2-metadata-exif.cpp  |    8 ++++++++
 gexiv2/gexiv2-metadata-private.h |    2 +-
 gexiv2/gexiv2-metadata.cpp       |   29 ++---------------------------
 gexiv2/gexiv2-metadata.h         |   27 +++++++++++++++++++++++++++
 4 files changed, 38 insertions(+), 28 deletions(-)
---
diff --git a/gexiv2/gexiv2-metadata-exif.cpp b/gexiv2/gexiv2-metadata-exif.cpp
index 3540499..7b3ffe3 100644
--- a/gexiv2/gexiv2-metadata-exif.cpp
+++ b/gexiv2/gexiv2-metadata-exif.cpp
@@ -246,6 +246,14 @@ gboolean gexiv2_metadata_set_exif_tag_rational (GExiv2Metadata *self, const gcha
     return FALSE;
 }
 
+gdouble gexiv2_metadata_get_exif_tag_rational_as_double (GExiv2Metadata *self, const gchar* tag, gdouble 
def) {
+    gint nom, den;
+    if (!gexiv2_metadata_get_exif_tag_rational(self, tag, &nom, &den))
+        return def;
+    
+    return (den != 0.0) ? (double) nom / (double) den : def;
+}
+
 const gchar* gexiv2_metadata_get_exif_tag_label (const gchar* tag) {
     g_return_val_if_fail(tag != NULL, NULL);
     
diff --git a/gexiv2/gexiv2-metadata-private.h b/gexiv2/gexiv2-metadata-private.h
index 4b08c0b..03f8324 100644
--- a/gexiv2/gexiv2-metadata-private.h
+++ b/gexiv2/gexiv2-metadata-private.h
@@ -45,7 +45,7 @@ gboolean              gexiv2_metadata_set_exif_tag_string     (GExiv2Metadata *self, const 
gchar
 gchar*                 gexiv2_metadata_get_exif_tag_interpreted_string (GExiv2Metadata *self, const gchar* 
tag);
 glong                  gexiv2_metadata_get_exif_tag_long       (GExiv2Metadata *self, const gchar* tag);
 gboolean               gexiv2_metadata_set_exif_tag_long       (GExiv2Metadata *self, const gchar* tag, 
glong value);
-
+gdouble                        gexiv2_metadata_get_exif_tag_rational_as_double (GExiv2Metadata *self, const 
gchar* tag, gdouble def);
 const gchar*   gexiv2_metadata_get_exif_tag_label      (const gchar* tag);
 const gchar*   gexiv2_metadata_get_exif_tag_description (const gchar* tag);
 const gchar*   gexiv2_metadata_get_exif_tag_type (const gchar* tag);
diff --git a/gexiv2/gexiv2-metadata.cpp b/gexiv2/gexiv2-metadata.cpp
index 1c51e47..fc7bcb4 100644
--- a/gexiv2/gexiv2-metadata.cpp
+++ b/gexiv2/gexiv2-metadata.cpp
@@ -741,39 +741,14 @@ gboolean gexiv2_metadata_get_exposure_time (GExiv2Metadata *self, gint *nom, gin
 }
 
 gdouble gexiv2_metadata_get_fnumber (GExiv2Metadata *self) {
-    g_return_val_if_fail(GEXIV2_IS_METADATA (self), -1.0);
-    g_return_val_if_fail(self->priv->image.get() != NULL, -1.0);
-    
-    gint nom;
-    gint den;
-    if ( ! gexiv2_metadata_get_exif_tag_rational (self, "Exif.Photo.ISOSpeedRatings", &nom, &den))
-        return -1.0;
-    
-    if (den == 0.0)
-        return -1.0;
-    
-    return (nom / den);
+    return gexiv2_metadata_get_exif_tag_rational_as_double(self, "Exif.Photo.Fnumber", -1.0);
 }
 
 gdouble gexiv2_metadata_get_focal_length (GExiv2Metadata *self) {
-    g_return_val_if_fail(GEXIV2_IS_METADATA (self), -1.0);
-    g_return_val_if_fail(self->priv->image.get() != NULL, -1.0);
-    
-    gint nom;
-    gint den;
-    if ( ! gexiv2_metadata_get_exif_tag_rational (self, "Exif.Photo.FocalLength", &nom, &den))
-        return -1.0;
-    
-    if (den == 0.0)
-        return -1.0;
-        
-    return (nom / den);
+    return gexiv2_metadata_get_exif_tag_rational_as_double(self, "Exif.Photo.FocalLength", -1.0);
 }
 
 gint gexiv2_metadata_get_iso_speed (GExiv2Metadata *self) {
-    g_return_val_if_fail (GEXIV2_IS_METADATA (self), -1);
-    g_return_val_if_fail(self->priv->image.get() != NULL, -1);
-    
     return (gint) gexiv2_metadata_get_exif_tag_long (self, "Exif.Photo.ISOSpeedRatings");
 }
 
diff --git a/gexiv2/gexiv2-metadata.h b/gexiv2/gexiv2-metadata.h
index bfcb220..cf46e04 100644
--- a/gexiv2/gexiv2-metadata.h
+++ b/gexiv2/gexiv2-metadata.h
@@ -177,11 +177,38 @@ gboolean          gexiv2_metadata_set_tag_multiple        (GExiv2Metadata *self, const 
gchar* t
  * @nom: (out): The numerator
  * @den: (out): The denominator
  *
+ * Returns the exposure time in seconds (shutter speed, <em>not</em> date-time of exposure) as a
+ * rational.  See https://en.wikipedia.org/wiki/Shutter_speed for more information.
+ *
  * Returns: (skip): Boolean success value
  */
 gboolean               gexiv2_metadata_get_exposure_time       (GExiv2Metadata *self, gint *nom, gint *den);
+
+/**
+ * gexiv2_metadata_get_fnumber:
+ *
+ * See https://en.wikipedia.org/wiki/F-number for more information.
+ *
+ * Returns: The exposure Fnumber as a gdouble, or -1.0 if tag is not present or invalid.
+ */
 gdouble                        gexiv2_metadata_get_fnumber                     (GExiv2Metadata *self);
+
+/**
+ * gexiv2_metadata_get_focal_length:
+ *
+ * See https://en.wikipedia.org/wiki/Flange_focal_distance for more information.
+ *
+ * Returns: The focal length as a gdouble, or -1.0 if tag is not present or invalid.
+ */
 gdouble                        gexiv2_metadata_get_focal_length        (GExiv2Metadata *self);
+
+/**
+ * gexiv2_metadata_get_iso_speed:
+ *
+ * See https://en.wikipedia.org/wiki/Iso_speed for more information.
+ *
+ * Returns: The ISO speed rating as a gint, or 0 if tag is not present or invalid.
+ */
 gint                   gexiv2_metadata_get_iso_speed           (GExiv2Metadata *self);
 
 /* static functions */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]