INIT_PRIO_TREE_ROOT(&i->prio_tree);
}
-static void graph_label_add_value(struct graph_label *i, void *value,
- const char *tooltip)
+static void graph_label_add_value(struct graph *g, struct graph_label *i,
+ void *value, const char *tooltip)
{
struct graph_value *x;
x = malloc(sizeof(*x));
memset(x, 0, sizeof(*x));
x->value = value;
- if (tooltip)
- x->tooltip = strdup(tooltip);
- else
- x->tooltip = NULL;
x->next = NULL;
- if (!i->tail) {
+ if (!i->tail)
i->values = x;
- } else {
+ else
i->tail->next = x;
- }
i->tail = x;
i->value_count++;
- if (x->tooltip) {
+ if (tooltip) {
double yval = gety(x);
double miny = yval / TOOLTIP_DELTA;
double maxy = yval * TOOLTIP_DELTA;
INIT_PRIO_TREE_NODE(&x->node);
x->node.start = miny;
x->node.last = maxy;
- if (x->node.last == x->node.start)
- x->node.last++;
+ if (x->node.last == x->node.start) {
+ x->node.last += fabs(g->ytick_delta);
+ printf("last bumped to %lu\n", x->node.last);
+ }
/*
* If ret != &x->node, we have an alias. Since the values
* should be identical, we can drop it
*/
ret = prio_tree_insert(&i->prio_tree, &x->node);
- if (ret != &x->node) {
- free(x->tooltip);
- x->tooltip = NULL;
- } else
+ if (ret == &x->node) {
+ x->tooltip = strdup(tooltip);
i->tooltip_count++;
+ }
}
if (i->parent->per_label_limit != -1 &&
i = graph_find_label(bg, label);
if (!i)
return -1;
- graph_label_add_value(i, d, NULL);
+ graph_label_add_value(bg, i, d, NULL);
return 0;
}
if (!i)
return -1;
- graph_label_add_value(i, xy, tooltip);
+ graph_label_add_value(bg, i, xy, tooltip);
return 0;
}