[tracker-miners] libtracker-extract, tracker-extract: Use enums for resolution units



commit c3020b0b21433543e30efb593eff4e90b59b69c3
Author: Debarshi Ray <debarshir gnome org>
Date:   Thu Jan 4 10:47:33 2018 +0100

    libtracker-extract, tracker-extract: Use enums for resolution units
    
    Based on page 20 of version 2.2 of the Exif standard [1] published by
    JEITA; and comments in libjpeg's jpeglib.h.
    
    [1] http://www.exiv2.org/Exif2-2.PDF
    
    https://bugzilla.gnome.org/show_bug.cgi?id=792178

 src/libtracker-extract/tracker-exif.h      |    5 +++++
 src/tracker-extract/tracker-extract-jpeg.c |   26 ++++++++++++++++----------
 src/tracker-extract/tracker-extract-png.c  |   12 ++++++++++--
 src/tracker-extract/tracker-extract-tiff.c |   12 ++++++++++--
 4 files changed, 41 insertions(+), 14 deletions(-)
---
diff --git a/src/libtracker-extract/tracker-exif.h b/src/libtracker-extract/tracker-exif.h
index 7d00711..4871189 100644
--- a/src/libtracker-extract/tracker-exif.h
+++ b/src/libtracker-extract/tracker-exif.h
@@ -28,6 +28,11 @@
 
 G_BEGIN_DECLS
 
+enum {
+       EXIF_RESOLUTION_UNIT_PER_INCH = 2,
+       EXIF_RESOLUTION_UNIT_PER_CENTIMETER = 3,
+};
+
 /**
  * TrackerExifData:
  * @y_dimension: Y dimension.
diff --git a/src/tracker-extract/tracker-extract-jpeg.c b/src/tracker-extract/tracker-extract-jpeg.c
index fd15380..1097cfe 100644
--- a/src/tracker-extract/tracker-extract-jpeg.c
+++ b/src/tracker-extract/tracker-extract-jpeg.c
@@ -49,6 +49,12 @@
 #include <libiptcdata/iptc-jpeg.h>
 #endif /* HAVE_LIBIPTCDATA */
 
+enum {
+       JPEG_RESOLUTION_UNIT_UNKNOWN = 0,
+       JPEG_RESOLUTION_UNIT_PER_INCH = 1,
+       JPEG_RESOLUTION_UNIT_PER_CENTIMETER = 2,
+};
+
 typedef struct {
        const gchar *make;
        const gchar *model;
@@ -532,13 +538,13 @@ tracker_extract_get_metadata (TrackerExtractInfo *info)
        if (cinfo.density_unit != 0 || ed->x_resolution) {
                gdouble value;
 
-               if (cinfo.density_unit == 0) {
-                       if (ed->resolution_unit != 3)
-                               value = g_strtod (ed->x_resolution, NULL);
-                       else
+               if (cinfo.density_unit == JPEG_RESOLUTION_UNIT_UNKNOWN) {
+                       if (ed->resolution_unit == EXIF_RESOLUTION_UNIT_PER_CENTIMETER)
                                value = g_strtod (ed->x_resolution, NULL) * CM_TO_INCH;
+                       else
+                               value = g_strtod (ed->x_resolution, NULL);
                } else {
-                       if (cinfo.density_unit == 1)
+                       if (cinfo.density_unit == JPEG_RESOLUTION_UNIT_PER_INCH)
                                value = cinfo.X_density;
                        else
                                value = cinfo.X_density * CM_TO_INCH;
@@ -550,13 +556,13 @@ tracker_extract_get_metadata (TrackerExtractInfo *info)
        if (cinfo.density_unit != 0 || ed->y_resolution) {
                gdouble value;
 
-               if (cinfo.density_unit == 0) {
-                       if (ed->resolution_unit != 3)
-                               value = g_strtod (ed->y_resolution, NULL);
-                       else
+               if (cinfo.density_unit == JPEG_RESOLUTION_UNIT_UNKNOWN) {
+                       if (ed->resolution_unit == EXIF_RESOLUTION_UNIT_PER_CENTIMETER)
                                value = g_strtod (ed->y_resolution, NULL) * CM_TO_INCH;
+                       else
+                               value = g_strtod (ed->y_resolution, NULL);
                } else {
-                       if (cinfo.density_unit == 1)
+                       if (cinfo.density_unit == JPEG_RESOLUTION_UNIT_PER_INCH)
                                value = cinfo.Y_density;
                        else
                                value = cinfo.Y_density * CM_TO_INCH;
diff --git a/src/tracker-extract/tracker-extract-png.c b/src/tracker-extract/tracker-extract-png.c
index aafde55..0c33d3c 100644
--- a/src/tracker-extract/tracker-extract-png.c
+++ b/src/tracker-extract/tracker-extract-png.c
@@ -532,14 +532,22 @@ read_metadata (TrackerResource      *metadata,
        if (ed->x_resolution) {
                gdouble value;
 
-               value = ed->resolution_unit != 3 ? g_strtod (ed->x_resolution, NULL) : g_strtod 
(ed->x_resolution, NULL) * CM_TO_INCH;
+               if (ed->resolution_unit == EXIF_RESOLUTION_UNIT_PER_CENTIMETER)
+                       value = g_strtod (ed->x_resolution, NULL) * CM_TO_INCH;
+               else
+                       value = g_strtod (ed->x_resolution, NULL);
+
                tracker_resource_set_double (metadata, "nfo:horizontalResolution", value);
        }
 
        if (ed->y_resolution) {
                gdouble value;
 
-               value = ed->resolution_unit != 3 ? g_strtod (ed->y_resolution, NULL) : g_strtod 
(ed->y_resolution, NULL) * CM_TO_INCH;
+               if (ed->resolution_unit == EXIF_RESOLUTION_UNIT_PER_CENTIMETER)
+                       value = g_strtod (ed->y_resolution, NULL) * CM_TO_INCH;
+               else
+                       value = g_strtod (ed->y_resolution, NULL);
+
                tracker_resource_set_double (metadata, "nfo:verticalResolution", value);
        }
 
diff --git a/src/tracker-extract/tracker-extract-tiff.c b/src/tracker-extract/tracker-extract-tiff.c
index 042a27a..8c3ed61 100644
--- a/src/tracker-extract/tracker-extract-tiff.c
+++ b/src/tracker-extract/tracker-extract-tiff.c
@@ -632,14 +632,22 @@ tracker_extract_get_metadata (TrackerExtractInfo *info)
        if (ed->x_resolution) {
                gdouble value;
 
-               value = ed->resolution_unit != 3 ? g_strtod (ed->x_resolution, NULL) : g_strtod 
(ed->x_resolution, NULL) * CM_TO_INCH;
+               if (ed->resolution_unit == EXIF_RESOLUTION_UNIT_PER_CENTIMETER)
+                       value = g_strtod (ed->x_resolution, NULL) * CM_TO_INCH;
+               else
+                       value = g_strtod (ed->x_resolution, NULL);
+
                tracker_resource_set_double (metadata, "nfo:horizontalResolution", value);
        }
 
        if (ed->y_resolution) {
                gdouble value;
 
-               value = ed->resolution_unit != 3 ? g_strtod (ed->y_resolution, NULL) : g_strtod 
(ed->y_resolution, NULL) * CM_TO_INCH;
+               if (ed->resolution_unit == EXIF_RESOLUTION_UNIT_PER_CENTIMETER)
+                       value = g_strtod (ed->y_resolution, NULL) * CM_TO_INCH;
+               else
+                       value = g_strtod (ed->y_resolution, NULL);
+
                tracker_resource_set_double (metadata, "nfo:verticalResolution", value);
        }
 


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