Skip to content

Commit

Permalink
Remember the event names as we encounter them
Browse files Browse the repository at this point in the history
First step to being able to filter the events that we display in the
profile. We could (in theory) walk all the dives in the divelist when we
need this data, but it seems much more convenient to have them in an array
in one place.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
  • Loading branch information
dirkhh committed Oct 25, 2011
1 parent c469130 commit 5ca49b0
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 0 deletions.
1 change: 1 addition & 0 deletions dive.c
Expand Up @@ -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)
Expand Down
1 change: 1 addition & 0 deletions dive.h
Expand Up @@ -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);
Expand Down
31 changes: 31 additions & 0 deletions profile.c
Expand Up @@ -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;
Expand Down

0 comments on commit 5ca49b0

Please sign in to comment.