[tracker-miners] libtracker-extract, tracker-extract: Use enums for resolution units
- From: Debarshi Ray <debarshir src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker-miners] libtracker-extract, tracker-extract: Use enums for resolution units
- Date: Mon, 29 Jan 2018 10:05:34 +0000 (UTC)
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]