From 4c3e7607a2cb3c38bf5681996ffd2083a1c8af06 Mon Sep 17 00:00:00 2001 From: oetiker Date: Mon, 16 May 2005 10:12:26 +0000 Subject: [PATCH] fix the color square spacing so that it works regardles of the fontsize and with transparend backgrounds. git-svn-id: svn://svn.oetiker.ch/rrdtool/branches/1.2/program@563 a5681a0c-68f1-0310-ab6d-d61299d08faa --- src/rrd_graph.c | 33 +++++++++++++-------------------- src/rrd_graph_helper.c | 26 ++++++++++++++++++++------ 2 files changed, 33 insertions(+), 26 deletions(-) diff --git a/src/rrd_graph.c b/src/rrd_graph.c index 7db7590..95ebfe7 100644 --- a/src/rrd_graph.c +++ b/src/rrd_graph.c @@ -1991,39 +1991,32 @@ grid_paint(image_desc_t *im) 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); diff --git a/src/rrd_graph_helper.c b/src/rrd_graph_helper.c index a12591b..388dadf 100644 --- a/src/rrd_graph_helper.c +++ b/src/rrd_graph_helper.c @@ -295,6 +295,21 @@ rrd_parse_PVHLAST(char *line, unsigned int *eaten, graph_desc_t *gdp, image_desc 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]); @@ -399,16 +414,15 @@ rrd_parse_PVHLAST(char *line, unsigned int *eaten, graph_desc_t *gdp, image_desc 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 1;spi++){ + linecp[--(*eaten)]=' '; + } } if (rrd_parse_legend(linecp, eaten, gdp)) err=1; - free(linecp); if (err) return 1; -- 2.30.2