[gexiv2] Fix get_fnumber() to use proper Exiv tag: Closes bgo#722406
- From: Jim Nelson <jnelson src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gexiv2] Fix get_fnumber() to use proper Exiv tag: Closes bgo#722406
- Date: Fri, 17 Jan 2014 20:18:46 +0000 (UTC)
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]