projects
/
rrdtool.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* make y-axis labels NOT run into each other (classic and alt)
[rrdtool.git]
/
src
/
rrd_graph.c
diff --git
a/src/rrd_graph.c
b/src/rrd_graph.c
index
a0e3ddc
..
0cc78d4
100644
(file)
--- a/
src/rrd_graph.c
+++ b/
src/rrd_graph.c
@@
-1,5
+1,5
@@
/****************************************************************************
/****************************************************************************
- * RRDtool 1.3rc
4
Copyright by Tobi Oetiker, 1997-2008
+ * RRDtool 1.3rc
5
Copyright by Tobi Oetiker, 1997-2008
****************************************************************************
* rrd__graph.c produce graphs from data in rrdfiles
****************************************************************************/
****************************************************************************
* rrd__graph.c produce graphs from data in rrdfiles
****************************************************************************/
@@
-1612,7
+1612,8
@@
int leg_place(
int border = im->text_prop[TEXT_PROP_LEGEND].size * 2.0;
int fill = 0, fill_last;
int leg_c = 0;
int border = im->text_prop[TEXT_PROP_LEGEND].size * 2.0;
int fill = 0, fill_last;
int leg_c = 0;
- int leg_x = border, leg_y = im->yimg;
+ int leg_x = border;
+ int leg_y = im->yimg;
int leg_y_prev = im->yimg;
int leg_cc;
int glue = 0;
int leg_y_prev = im->yimg;
int leg_cc;
int glue = 0;
@@
-1620,6
+1621,7
@@
int leg_place(
char prt_fctn; /*special printfunctions */
char default_txtalign = TXA_JUSTIFIED; /*default line orientation */
int *legspace;
char prt_fctn; /*special printfunctions */
char default_txtalign = TXA_JUSTIFIED; /*default line orientation */
int *legspace;
+ char *tab;
if (!(im->extra_flags & NOLEGEND) & !(im->extra_flags & ONLY_GRAPH)) {
if ((legspace = malloc(im->gdes_c * sizeof(int))) == NULL) {
if (!(im->extra_flags & NOLEGEND) & !(im->extra_flags & ONLY_GRAPH)) {
if ((legspace = malloc(im->gdes_c * sizeof(int))) == NULL) {
@@
-1648,13
+1650,16
@@
int leg_place(
im->gdes[i].legend[0] = '\0';
}
im->gdes[i].legend[0] = '\0';
}
+ /* turn \\t into tab */
+ while ((tab = strstr(im->gdes[i].legend, "\\t"))) {
+ memmove(tab, tab + 1, strlen(tab));
+ tab[0] = (char) 9;
+ }
leg_cc = strlen(im->gdes[i].legend);
/* is there a controle code ant the end of the legend string ? */
leg_cc = strlen(im->gdes[i].legend);
/* is there a controle code ant the end of the legend string ? */
- /* and it is not a tab \\t */
if (leg_cc >= 2
&& im->gdes[i].legend[leg_cc -
if (leg_cc >= 2
&& im->gdes[i].legend[leg_cc -
- 2] == '\\'
- && im->gdes[i].legend[leg_cc - 1] != 't') {
+ 2] == '\\' ) {
prt_fctn = im->gdes[i].legend[leg_cc - 1];
leg_cc -= 2;
im->gdes[i].legend[leg_cc] = '\0';
prt_fctn = im->gdes[i].legend[leg_cc - 1];
leg_cc -= 2;
im->gdes[i].legend[leg_cc] = '\0';
@@
-1667,7
+1672,7
@@
int leg_place(
prt_fctn != 'j' &&
prt_fctn != 'c' &&
prt_fctn != 's' &&
prt_fctn != 'j' &&
prt_fctn != 'c' &&
prt_fctn != 's' &&
- prt_fctn != '
t' && prt_fctn != '
\0' && prt_fctn != 'g') {
+ prt_fctn != '\0' && prt_fctn != 'g') {
free(legspace);
rrd_set_error
("Unknown control code at the end of '%s\\%c'",
free(legspace);
rrd_set_error
("Unknown control code at the end of '%s\\%c'",
@@
-1803,10
+1808,7
@@
int leg_place(
leg_y - im->text_prop[TEXT_PROP_LEGEND].size * 1.8;
}
} else {
leg_y - im->text_prop[TEXT_PROP_LEGEND].size * 1.8;
}
} else {
- im->yimg = leg_y_prev;
- /* if we did place some legends we have to add vertical space */
- if (leg_y != im->yimg)
- im->yimg += im->text_prop[TEXT_PROP_LEGEND].size * 1.8;
+ im->yimg = leg_y - im->text_prop[TEXT_PROP_LEGEND].size * 1.8 + border * 0.6;
}
free(legspace);
}
}
free(legspace);
}
@@
-1819,8
+1821,6
@@
int leg_place(
/* the xaxis labels are determined from the number of seconds per pixel
in the requested graph */
/* the xaxis labels are determined from the number of seconds per pixel
in the requested graph */
-
-
int calc_horizontal_grid(
image_desc_t
*im)
int calc_horizontal_grid(
image_desc_t
*im)
@@
-1858,13
+1858,13
@@
int calc_horizontal_grid(
if (im->ygrid_scale.gridstep == 0) /* range is one -> 0.1 is reasonable scale */
im->ygrid_scale.gridstep = 0.1;
/* should have at least 5 lines but no more then 15 */
if (im->ygrid_scale.gridstep == 0) /* range is one -> 0.1 is reasonable scale */
im->ygrid_scale.gridstep = 0.1;
/* should have at least 5 lines but no more then 15 */
- if (range / im->ygrid_scale.gridstep < 5)
+ if (range / im->ygrid_scale.gridstep < 5
&& im->ygrid_scale.gridstep >= 30
)
im->ygrid_scale.gridstep /= 10;
if (range / im->ygrid_scale.gridstep > 15)
im->ygrid_scale.gridstep *= 10;
im->ygrid_scale.gridstep /= 10;
if (range / im->ygrid_scale.gridstep > 15)
im->ygrid_scale.gridstep *= 10;
- if (range / im->ygrid_scale.gridstep > 5) {
+ if (range / im->ygrid_scale.gridstep > 5
) {
im->ygrid_scale.labfact = 1;
im->ygrid_scale.labfact = 1;
- if (range / im->ygrid_scale.gridstep > 8)
+ if (range / im->ygrid_scale.gridstep > 8
|| im->ygrid_scale.gridstep < 1.8 * im->text_prop[TEXT_PROP_AXIS].size
)
im->ygrid_scale.labfact = 2;
} else {
im->ygrid_scale.gridstep /= 5;
im->ygrid_scale.labfact = 2;
} else {
im->ygrid_scale.gridstep /= 5;
@@
-1891,17
+1891,17
@@
int calc_horizontal_grid(
sprintf(im->ygrid_scale.labfmt,
"%%%d.0f%s", len, (im->symbol != ' ' ? " %c" : ""));
}
sprintf(im->ygrid_scale.labfmt,
"%%%d.0f%s", len, (im->symbol != ' ' ? " %c" : ""));
}
- } else {
+ } else {
/* classic rrd grid */
for (i = 0; ylab[i].grid > 0; i++) {
pixel = im->ysize / (scaledrange / ylab[i].grid);
gridind = i;
for (i = 0; ylab[i].grid > 0; i++) {
pixel = im->ysize / (scaledrange / ylab[i].grid);
gridind = i;
- if (pixel >
7
)
+ if (pixel >
= 5
)
break;
}
for (i = 0; i < 4; i++) {
if (pixel * ylab[gridind].lfac[i] >=
break;
}
for (i = 0; i < 4; i++) {
if (pixel * ylab[gridind].lfac[i] >=
-
2.5
* im->text_prop[TEXT_PROP_AXIS].size) {
+
1.8
* im->text_prop[TEXT_PROP_AXIS].size) {
im->ygrid_scale.labfact = ylab[gridind].lfac[i];
break;
}
im->ygrid_scale.labfact = ylab[gridind].lfac[i];
break;
}
@@
-3066,7
+3066,9
@@
int graph_paint(
im->xsize,
im->yorigin - im->ysize, im->graph_col[GRC_CANVAS]);
gfx_add_point(im, im->xorigin, im->yorigin - im->ysize);
im->xsize,
im->yorigin - im->ysize, im->graph_col[GRC_CANVAS]);
gfx_add_point(im, im->xorigin, im->yorigin - im->ysize);
- gfx_close_path(im);
+ gfx_close_path(im);
+ cairo_rectangle(im->cr, im->xorigin, im->yorigin-im->ysize-1.0, im->xsize,im->ysize+2.0);
+ cairo_clip(im->cr);
if (im->minval > 0.0)
areazero = im->minval;
if (im->maxval < 0.0)
if (im->minval > 0.0)
areazero = im->minval;
if (im->maxval < 0.0)
@@
-3354,6
+3356,7
@@
int graph_paint(
break;
} /* switch */
}
break;
} /* switch */
}
+ cairo_reset_clip(im->cr);
/* grid_paint also does the text */
if (!(im->extra_flags & ONLY_GRAPH))
/* grid_paint also does the text */
if (!(im->extra_flags & ONLY_GRAPH))