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>
This commit is contained in:
Tomaz Canabrava 2014-06-02 18:28:02 -03:00 committed by Dirk Hohndel
parent 13e8aba7da
commit d95d1735b5
9 changed files with 87 additions and 70 deletions

30
dive.c
View file

@ -2260,14 +2260,26 @@ int average_depth(struct diveplan *dive)
return integral / last_time;
}
void picture_load_exif_data(struct picture *p)
struct picture *alloc_picture()
{
struct picture *pic = malloc(sizeof(struct picture));
if (!pic)
exit(1);
memset(pic, 0, sizeof(struct picture));
return pic;
}
struct picture* dive_add_picture(struct dive *d, char *picture)
void dive_add_picture(struct dive *d, struct picture *picture)
{
if (d->picture_list == NULL) {
d->picture_list = picture;
return;
}
struct picture *last = d->picture_list;
while( last->next )
last = last->next;
last->next = picture;
return;
}
uint dive_get_picture_count(struct dive *d)
@ -2278,7 +2290,15 @@ uint dive_get_picture_count(struct dive *d)
return i;
}
void dive_remove_picture(struct dive *d, char *picture)
void dive_set_geodata_from_picture(struct dive *d, struct picture *pic)
{
if (!d->latitude.udeg && pic->latitude.udeg) {
d->latitude = pic->latitude;
d->longitude = pic->longitude;
}
}
void dive_remove_picture(struct dive *d, struct picture *p)
{
}