mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Moved the 'create fake dc' to it's own function in device.c
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
This commit is contained in:
parent
bd8470ebcf
commit
3eac2360e7
3 changed files with 32 additions and 20 deletions
28
device.c
28
device.c
|
@ -109,3 +109,31 @@ struct device_info *remove_device_info(const char *model, uint32_t deviceid)
|
|||
}
|
||||
return entry;
|
||||
}
|
||||
|
||||
struct divecomputer* fake_dc(struct divecomputer* dc)
|
||||
{
|
||||
static struct sample fake[4];
|
||||
static struct divecomputer fakedc;
|
||||
static bool initialized = 0;
|
||||
if (!initialized){
|
||||
fakedc = (*dc);
|
||||
fakedc.sample = fake;
|
||||
fakedc.samples = 4;
|
||||
|
||||
/* The dive has no samples, so create a few fake ones. This assumes an
|
||||
ascent/descent rate of 9 m/min, which is just below the limit for FAST. */
|
||||
int duration = dc->duration.seconds;
|
||||
int maxdepth = dc->maxdepth.mm;
|
||||
int asc_desc_time = dc->maxdepth.mm*60/9000;
|
||||
if (asc_desc_time * 2 >= duration)
|
||||
asc_desc_time = duration / 2;
|
||||
fake[1].time.seconds = asc_desc_time;
|
||||
fake[1].depth.mm = maxdepth;
|
||||
fake[2].time.seconds = duration - asc_desc_time;
|
||||
fake[2].depth.mm = maxdepth;
|
||||
fake[3].time.seconds = duration * 1.00;
|
||||
fakedc.events = dc->events;
|
||||
}
|
||||
return &fakedc;
|
||||
}
|
||||
|
||||
|
|
2
device.h
2
device.h
|
@ -2,6 +2,7 @@
|
|||
#define DEVICE_INFO_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
#include "dive.h"
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
@ -20,6 +21,7 @@ extern struct device_info *get_different_device_info(const char *model, uint32_t
|
|||
extern struct device_info *create_device_info(const char *model, uint32_t deviceid);
|
||||
extern struct device_info *remove_device_info(const char *model, uint32_t deviceid);
|
||||
extern struct device_info *head_of_device_info_list(void);
|
||||
extern struct divecomputer *fake_dc(struct divecomputer* dc);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
#include "../display.h"
|
||||
#include "../dive.h"
|
||||
#include "../profile.h"
|
||||
#include "../device.h"
|
||||
|
||||
#include <libdivecomputer/parser.h>
|
||||
#include <libdivecomputer/version.h>
|
||||
|
@ -265,26 +266,7 @@ void ProfileGraphicsView::plot(struct dive *d, bool forceRedraw)
|
|||
// plot_set_scale(scale_mode_t);
|
||||
|
||||
if (!dc->samples) {
|
||||
static struct sample fake[4];
|
||||
static struct divecomputer fakedc;
|
||||
fakedc = dive->dc;
|
||||
fakedc.sample = fake;
|
||||
fakedc.samples = 4;
|
||||
|
||||
/* The dive has no samples, so create a few fake ones. This assumes an
|
||||
ascent/descent rate of 9 m/min, which is just below the limit for FAST. */
|
||||
int duration = dive->dc.duration.seconds;
|
||||
int maxdepth = dive->dc.maxdepth.mm;
|
||||
int asc_desc_time = dive->dc.maxdepth.mm*60/9000;
|
||||
if (asc_desc_time * 2 >= duration)
|
||||
asc_desc_time = duration / 2;
|
||||
fake[1].time.seconds = asc_desc_time;
|
||||
fake[1].depth.mm = maxdepth;
|
||||
fake[2].time.seconds = duration - asc_desc_time;
|
||||
fake[2].depth.mm = maxdepth;
|
||||
fake[3].time.seconds = duration * 1.00;
|
||||
fakedc.events = dc->events;
|
||||
dc = &fakedc;
|
||||
dc = fake_dc(dc);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Add table
Reference in a new issue