*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
#include <string.h>
static double find_double_values(struct graph_label *l, double_comparator cmp)
{
struct flist_head *entry;
- double answer, tmp;
+ double answer = 0.0, tmp;
int first = 1;
if (flist_empty(&l->value_list))
}
}
-static void graph_draw_common(struct graph *g, cairo_t *cr,
- double *x1, double *y1, double *x2, double *y2)
+static void graph_draw_common(struct graph *g, cairo_t *cr, double *x1,
+ double *y1, double *x2, double *y2)
{
- cairo_set_source_rgb(cr, 0, 0, 0);
- cairo_set_line_width(cr, 0.8);
+ const double shade_col[3][3] = { { 0.55, 0.54, 0.54 },
+ { 0.80, 0.78, 0.78 },
+ { 0.93, 0.91, 0.91 } };
+ int i;
*x1 = 0.10 * g->xdim;
*x2 = 0.95 * g->xdim;
*y1 = 0.10 * g->ydim;
*y2 = 0.90 * g->ydim;
+ /*
+ * Add shade
+ */
+ cairo_set_line_width(cr, 1.0);
+ for (i = 0; i < 3; i++) {
+ float offset = i + 1.0;
+
+ cairo_set_source_rgb(cr, shade_col[i][0], shade_col[i][1], shade_col[i][2]);
+ cairo_move_to(cr, offset + *x1, *y1 - offset);
+ cairo_line_to(cr, *x2 + offset, *y1 - offset);
+ cairo_line_to(cr, *x2 + offset, *y2 - offset);
+ cairo_stroke(cr);
+ }
+
+ cairo_set_source_rgb(cr, 0, 0, 0);
+ cairo_set_line_width(cr, 1.2);
+
cairo_move_to(cr, *x1, *y1);
cairo_line_to(cr, *x1, *y2);
cairo_line_to(cr, *x2, *y2);
continue;
/* Draw tick mark */
- cairo_set_line_width(cr, 0.8);
+ cairo_set_line_width(cr, 1.0);
cairo_move_to(cr, tx, y2);
cairo_line_to(cr, tx, y2 + (y2 - y1) * 0.03);
cairo_stroke(cr);
/* draw grid lines */
cairo_save(cr);
- cairo_set_dash(cr, dash, 2, 2.0);
- cairo_set_line_width(cr, 0.5);
+ cairo_set_dash(cr, dash, 2, 0.66);
+ cairo_set_line_width(cr, 0.33);
cairo_move_to(cr, tx, y1);
cairo_line_to(cr, tx, y2);
cairo_stroke(cr);
struct tickmark *tm;
double ty;
int i, power_of_ten;
- static double dash[] = { 2.0, 2.0 };
+ static double dash[] = { 1.0, 2.0 };
nticks = calc_tickmarks(miny, maxy, nticks, &tm, &power_of_ten,
g->y_axis_unit_change_callback == NULL, g->base_offset);
/* draw grid lines */
cairo_save(cr);
- cairo_set_dash(cr, dash, 2, 2.0);
- cairo_set_line_width(cr, 0.5);
+ cairo_set_dash(cr, dash, 2, 0.66);
+ cairo_set_line_width(cr, 0.33);
cairo_move_to(cr, x1, ty);
cairo_line_to(cr, x2, ty);
cairo_stroke(cr);
goto skip_data;
cairo_set_line_width(cr, 1.5);
+ cairo_set_line_join(cr, CAIRO_LINE_JOIN_ROUND);
+
flist_for_each(lentry, &g->label_list) {
i = flist_entry(lentry, struct graph_label, list);
first = 1;
if (first) {
cairo_move_to(cr, tx, ty);
first = 0;
- } else {
+ } else
cairo_line_to(cr, tx, ty);
- }
}
cairo_stroke(cr);
}
*/
while (!(v->flags & GV_F_ON_PRIO)) {
assert(!flist_empty(&v->alias));
- v = flist_entry(v->alias.next, struct graph_value, alias);
+ v = flist_first_entry(&v->alias, struct graph_value, alias);
}
prio_tree_remove(&l->prio_tree, &v->node);
while (!flist_empty(&v->alias)) {
struct graph_value *a;
- a = flist_entry(v->alias.next, struct graph_value, alias);
+ a = flist_first_entry(&v->alias, struct graph_value, alias);
flist_del_init(&a->alias);
__graph_value_drop(l, a);
to_drop = 2;
while (to_drop-- && !flist_empty(&i->value_list)) {
- x = flist_entry(i->value_list.next, struct graph_value, list);
+ x = flist_first_entry(&i->value_list, struct graph_value, list);
graph_value_drop(i, x);
/*
struct graph_value *i;
while (!flist_empty(&l->value_list)) {
- i = flist_entry(l->value_list.next, struct graph_value, list);
+ i = flist_first_entry(&l->value_list, struct graph_value, list);
graph_value_drop(l, i);
}
}
struct graph_label *i;
while (!flist_empty(&g->label_list)) {
- i = flist_entry(g->label_list.next, struct graph_label, list);
+ i = flist_first_entry(&g->label_list, struct graph_label, list);
flist_del(&i->list);
graph_free_values(i);
free(i);
}
}
+void graph_clear_values(struct graph *g)
+{
+ struct flist_head *node;
+ struct graph_label *i;
+
+ flist_for_each(node, &g->label_list) {
+ i = flist_entry(node, struct graph_label, list);
+ graph_free_values(i);
+ }
+}
+
void graph_set_color(struct graph *gr, graph_label_t label, double red,
double green, double blue)
{
}
}
if (!flist_empty(&v->alias))
- v = flist_entry(v->alias.next, struct graph_value, alias);
+ v = flist_first_entry(&v->alias, struct graph_value, alias);
} while (v != rootv);
} while ((n = prio_tree_next(&iter)) != NULL);