summaryrefslogtreecommitdiffstats
path: root/qthelper.cpp
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tomaz.canabrava@intel.com>2014-06-02 18:28:02 -0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-06-02 23:59:29 -0700
commitd95d1735b5f0fec2941696a4bb1720eb00a6f59c (patch)
treeeae15bb2c25d051150292de7b17429d074c65d36 /qthelper.cpp
parent13e8aba7daee2104c859e17de3363a24c5a885c0 (diff)
downloadsubsurface-d95d1735b5f0fec2941696a4bb1720eb00a6f59c.tar.gz
Break picture handling code from C++ to C.
This commit breaks the loading of images that were done in the divelist into smaller bits. A bit of code refactor was done in order to correct the placement of a few methods. ShiftTimesDialog::EpochFromExiv got moved to Exif::epoch dive_add_picture is now used instead of add_event picture_load_exif_data got implemented using the old listview code. dive_set_geodata_from_picture got implemented using the old listview code. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qthelper.cpp')
-rw-r--r--qthelper.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/qthelper.cpp b/qthelper.cpp
index d8626f9d7..1dd25e241 100644
--- a/qthelper.cpp
+++ b/qthelper.cpp
@@ -1,5 +1,8 @@
#include "qthelper.h"
#include "qt-gui.h"
+#include "dive.h"
+#include <exif.h>
+#include "file.h"
#include <QRegExp>
#include <QDir>
@@ -260,3 +263,20 @@ extern "C" xsltStylesheetPtr get_stylesheet(const char *name)
return xslt;
}
+
+extern "C" void picture_load_exif_data(struct picture *p)
+{
+ EXIFInfo exif;
+ memblock mem;
+
+ if (readfile(p->filename, &mem) <= 0)
+ goto picture_load_exit;
+ if (exif.parseFrom((const unsigned char *)mem.buffer, (unsigned)mem.size) != PARSE_EXIF_SUCCESS)
+ goto picture_load_exit;
+ p->timestamp = exif.epoch();
+ p->longitude.udeg= lrint(1000000.0 * exif.GeoLocation.Longitude);
+ p->latitude.udeg = lrint(1000000.0 * exif.GeoLocation.Latitude);
+ picture_load_exit:
+ free(mem.buffer);
+ return;
+}