if ( im->gdes[i].gf != GF_PRINT &&
im->gdes[i].gf != GF_GPRINT &&
im->gdes[i].gf != GF_COMMENT) {
- int boxL, boxH, boxV;
+ int boxH, boxV;
- boxL = gfx_get_text_width(im->canvas, 0,
+ boxH = gfx_get_text_width(im->canvas, 0,
im->text_prop[TEXT_PROP_LEGEND].font,
im->text_prop[TEXT_PROP_LEGEND].size,
- im->tabwidth,"oo", 0);
- boxH = boxL / 1.9;
- boxV = boxH+1;
+ im->tabwidth,"o", 0) * 1.2;
+ boxV = boxH*1.1;
- /* make sure transparent colors show up all the same */
+ /* make sure transparent colors show up the same way as in the graph */
node = gfx_new_area(im->canvas,
- X0-1,Y0-boxV,
- X0-1,Y0+1,
- X0+boxL+0.5,Y0+1,
- im->graph_col[GRC_BACK]);
- gfx_add_point ( node, X0+boxL+0.5, Y0-boxV );
- node = gfx_new_area(im->canvas,
- X0-1,Y0-boxV,
- X0-1,Y0,
+ X0,Y0-boxV,
+ X0,Y0,
X0+boxH,Y0,
- im->graph_col[GRC_CANVAS]);
+ im->graph_col[GRC_BACK]);
gfx_add_point ( node, X0+boxH, Y0-boxV );
node = gfx_new_area(im->canvas,
- X0-1,Y0-boxV,
- X0-1,Y0,
+ X0,Y0-boxV,
+ X0,Y0,
X0+boxH,Y0,
im->gdes[i].col);
gfx_add_point ( node, X0+boxH, Y0-boxV );
node = gfx_new_line(im->canvas,
- X0-1,Y0-boxV,
- X0-1,Y0,
- 1,im->graph_col[GRC_FRAME]);
+ X0,Y0-boxV,
+ X0,Y0,
+ 1.0,im->graph_col[GRC_FRAME]);
gfx_add_point(node,X0+boxH,Y0);
gfx_add_point(node,X0+boxH,Y0-boxV);
gfx_close_path(node);
int i,j,k;
int colorfound=0;
char tmpstr[MAX_VNAME_LEN + 10]; /* vname#RRGGBBAA\0 */
+ static int spacecnt = 0;
+
+ if (spacecnt == 0) {
+ float one_space = gfx_get_text_width(im->canvas, 0,
+ im->text_prop[TEXT_PROP_LEGEND].font,
+ im->text_prop[TEXT_PROP_LEGEND].size,
+ im->tabwidth," ", 0) / 4.0;
+ float target_space = gfx_get_text_width(im->canvas, 0,
+ im->text_prop[TEXT_PROP_LEGEND].font,
+ im->text_prop[TEXT_PROP_LEGEND].size,
+ im->tabwidth,"oo", 0);
+ spacecnt = target_space / one_space;
+ dprintf("- spacecnt: %i onespace: %f targspace: %f\n",spacecnt,one_space,target_space);
+ }
+
dprintf("- parsing '%s'\n",&line[*eaten]);
dprintf("- examining '%s'\n",&line[*eaten]);
if (linecp[*eaten] != '\0' && linecp[*eaten] != ':') {
- /* If the legend is not empty, it has to be prefixed with "m ". This then gets
+ int spi;
+ /* If the legend is not empty, it has to be prefixed with spacecnt ' ' characters. This then gets
* replaced by the color box later on. */
- (*eaten)--;
- linecp[*eaten]='o';
- (*eaten)--;
- linecp[*eaten]='o';
+ for (spi=0;spi<spacecnt && (*eaten) > 1;spi++){
+ linecp[--(*eaten)]=' ';
+ }
}
if (rrd_parse_legend(linecp, eaten, gdp)) err=1;
-
free(linecp);
if (err) return 1;