diff options
author | Tomaz Canabrava <tomaz.canabrava@intel.com> | 2014-06-02 18:28:02 -0300 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2014-06-02 23:59:29 -0700 |
commit | d95d1735b5f0fec2941696a4bb1720eb00a6f59c (patch) | |
tree | eae15bb2c25d051150292de7b17429d074c65d36 /qthelper.cpp | |
parent | 13e8aba7daee2104c859e17de3363a24c5a885c0 (diff) | |
download | subsurface-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.cpp | 20 |
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; +} |