diff options
-rw-r--r-- | dive.c | 1 | ||||
-rw-r--r-- | dive.h | 1 | ||||
-rw-r--r-- | profile.c | 31 |
3 files changed, 33 insertions, 0 deletions
@@ -26,6 +26,7 @@ void add_event(struct dive *dive, int time, int type, int flags, int value, cons while (*p) p = &(*p)->next; *p = ev; + remember_event(name); } double get_depth_units(unsigned int mm, int *frac, const char **units) @@ -262,6 +262,7 @@ extern void report_error(GError* error); extern void add_cylinder_description(cylinder_type_t *); extern void add_people(const char *string); extern void add_location(const char *string); +extern void remember_event(const char *eventname); extern void dive_list_update_dives(void); extern void flush_divelist(struct dive *dive); @@ -166,6 +166,37 @@ static void plot_text(struct graphics_context *gc, const text_render_options_t * cairo_show_text(cr, buffer); } +struct ev_select { + char *ev_name; + gboolean plot_ev; +}; +static struct ev_select *ev_namelist; +static int evn_allocated; +static int evn_used; + +void remember_event(const char *eventname) +{ + int i=0, len; + + if (!eventname || (len = strlen(eventname)) == 0) + return; + while (i < evn_used) { + if (!strncmp(eventname,ev_namelist[i].ev_name,len)) + return; + i++; + } + if (evn_used == evn_allocated) { + evn_allocated += 10; + ev_namelist = realloc(ev_namelist, evn_allocated * sizeof(struct ev_select)); + if (! ev_namelist) + /* we are screwed, but let's just bail out */ + return; + } + ev_namelist[evn_used].ev_name = strdup(eventname); + ev_namelist[evn_used].plot_ev = TRUE; + evn_used++; +} + static void plot_one_event(struct graphics_context *gc, struct plot_info *pi, struct event *event, const text_render_options_t *tro) { int i, depth = 0; |