summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 6533d80)
raw | patch | inline | side by side (parent: 6533d80)
author | oetiker <oetiker@a5681a0c-68f1-0310-ab6d-d61299d08faa> | |
Sun, 3 Apr 2005 10:10:56 +0000 (10:10 +0000) | ||
committer | oetiker <oetiker@a5681a0c-68f1-0310-ab6d-d61299d08faa> | |
Sun, 3 Apr 2005 10:10:56 +0000 (10:10 +0000) |
CONTRIBUTORS | patch | blob | history | |
src/rrd_graph.c | patch | blob | history | |
src/rrd_graph.h | patch | blob | history |
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index dc2974b0b187e766ad78e214d68449d91bb14ee8..77178f67f626748dd9bcdcb370c2106c4ced3063 100644 (file)
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
Peter Speck <speck@vitality.dk> eps/svg/pdf file format code in rrdtool-1.x
David Grimes <dgrimes@navisite.com> SQRT/SORT/REV/SHIFT/TREND
Henrik Storner <henrik@hswn.dk> make rrd_graph() provide the min/max values of data in graph
+ Radoslaw Karas <rkaras@tyndall.ie>
Documentation
diff --git a/src/rrd_graph.c b/src/rrd_graph.c
index 2069660ea58e38b0015b25f3cc4f444406bdd78f..37e19612037fda6f5b0d62ca052f16ebc484564e 100644 (file)
--- a/src/rrd_graph.c
+++ b/src/rrd_graph.c
#endif
text_prop_t text_prop[] = {
- { 10.0, RRD_DEFAULT_FONT }, /* default */
- { 10.0, RRD_DEFAULT_FONT }, /* title */
- { 8.0, RRD_DEFAULT_FONT }, /* axis */
- { 10.0, RRD_DEFAULT_FONT }, /* unit */
- { 10.0, RRD_DEFAULT_FONT } /* legend */
+ { 9.0, RRD_DEFAULT_FONT }, /* default */
+ { 11.0, RRD_DEFAULT_FONT }, /* title */
+ { 8.0, RRD_DEFAULT_FONT }, /* axis */
+ { 9.0, RRD_DEFAULT_FONT }, /* unit */
+ { 9.0, RRD_DEFAULT_FONT } /* legend */
};
xlab_t xlab[] = {
(*prdata)[prlines-2] = malloc((FMT_LEG_LEN+2)*sizeof(char));
(*prdata)[prlines-1] = NULL;
if (bad_format(im->gdes[i].format)) {
- rrd_set_error("bad format for [G]PRINT in '%s'", im->gdes[i].format);
+ rrd_set_error("bad format for PRINT in '%s'", im->gdes[i].format);
return -1;
}
#ifdef HAVE_SNPRINTF
/* GF_GPRINT */
if (bad_format(im->gdes[i].format)) {
- rrd_set_error("bad format for [G]PRINT in '%s'", im->gdes[i].format);
+ rrd_set_error("bad format for GPRINT in '%s'", im->gdes[i].format);
return -1;
}
#ifdef HAVE_SNPRINTF
for(ii=mark;ii<=i;ii++){
if(im->gdes[ii].legend[0]=='\0')
- continue;
+ continue; /* skip empty legends */
im->gdes[ii].leg_x = leg_x;
im->gdes[ii].leg_y = leg_y;
leg_x +=
}
}
- /* yaxis description */
+ /* yaxis unit description */
gfx_new_text( im->canvas,
7, (im->yorigin - im->ysize/2),
im->graph_col[GRC_FONT],
- im->text_prop[TEXT_PROP_AXIS].font,
- im->text_prop[TEXT_PROP_AXIS].size, im->tabwidth,
+ im->text_prop[TEXT_PROP_UNIT].font,
+ im->text_prop[TEXT_PROP_UNIT].size, im->tabwidth,
RRDGRAPH_YLEGEND_ANGLE,
GFX_H_LEFT, GFX_V_CENTER,
im->ylegend);
/* graph title */
gfx_new_text( im->canvas,
- im->ximg/2, im->text_prop[TEXT_PROP_TITLE].size,
+ im->ximg/2, im->text_prop[TEXT_PROP_TITLE].size*1.2,
im->graph_col[GRC_FONT],
im->text_prop[TEXT_PROP_TITLE].font,
im->text_prop[TEXT_PROP_TITLE].size, im->tabwidth, 0.0,
im->gdes[i].legend );
/* The legend for GRAPH items starts with "M " to have
enough space for the box */
- if ( im->gdes[i].gf != GF_GPRINT
- && im->gdes[i].gf != GF_COMMENT) {
+ if ( im->gdes[i].gf != GF_PRINT &&
+ im->gdes[i].gf != GF_GPRINT &&
+ im->gdes[i].gf != GF_COMMENT) {
int boxH, boxV;
boxH = gfx_get_text_width(im->canvas, 0,
im->text_prop[TEXT_PROP_LEGEND].font,
im->text_prop[TEXT_PROP_LEGEND].size,
- im->tabwidth,"M", 0);
+ im->tabwidth,"M", 0)*1.2;
boxV = boxH;
node = gfx_new_area(im->canvas,
Yspacing =0;
} else {
if (im->ylegend[0] != '\0') {
- Xvertical = im->text_prop[TEXT_PROP_LEGEND].size *2;
- Yvertical = im->text_prop[TEXT_PROP_LEGEND].size * (strlen(im->ylegend)+1);
+ Xvertical = im->text_prop[TEXT_PROP_UNIT].size *2;
+ Yvertical = gfx_get_text_width(im->canvas, 0,
+ im->text_prop[TEXT_PROP_UNIT].font,
+ im->text_prop[TEXT_PROP_UNIT].size,
+ im->tabwidth,im->ylegend, 0);
}
}
im->text_prop[TEXT_PROP_TITLE].size,
im->tabwidth,
im->title, 0) + 2*Xspacing;
- Ytitle = im->text_prop[TEXT_PROP_TITLE].size*2;
+ Ytitle = im->text_prop[TEXT_PROP_TITLE].size*2.5;
}
if (elements) {
Ymain=im->ysize;
if (im->draw_x_grid) {
Xxlabel=Xmain;
- Yxlabel=im->text_prop[TEXT_PROP_LEGEND].size *2;
+ Yxlabel=im->text_prop[TEXT_PROP_AXIS].size *2.5;
}
if (im->draw_y_grid) {
- Xylabel=im->text_prop[TEXT_PROP_LEGEND].size *6;
+ Xylabel=im->text_prop[TEXT_PROP_AXIS].size *6;
Yylabel=Ymain;
}
}
im->gdes[im->gdes_c-1].shift=0;
im->gdes[im->gdes_c-1].col = 0x0;
im->gdes[im->gdes_c-1].legend[0]='\0';
+ im->gdes[im->gdes_c-1].format[0]='\0';
im->gdes[im->gdes_c-1].rrd[0]='\0';
im->gdes[im->gdes_c-1].ds=-1;
im->gdes[im->gdes_c-1].p_data=NULL;
strcpy(rrd_win_default_font,windir);
strcat(rrd_win_default_font,"\\fonts\\cour.ttf");
for(i=0;i<DIM(text_prop);i++)
- text_prop[i].font = rrd_win_default_font;
+ strcpy(text_prop[i].font,rrd_win_default_font);
}
}
#endif
for(i=0;i<DIM(text_prop);i++){
im->text_prop[i].size = text_prop[i].size;
- im->text_prop[i].font = text_prop[i].font;
+ strcpy(im->text_prop[i].font,text_prop[i].font);
}
}
}
break;
case 'n':{
- /* originally this used char *prop = "" and
- ** char *font = "dummy" however this results
- ** in a SEG fault, at least on RH7.1
- **
- ** The current implementation isn't proper
- ** either, font is never freed and prop uses
- ** a fixed width string
- */
- char prop[100];
+ char prop[15];
double size = 1;
- char *font;
+ char font[1024];
- font=malloc(255);
if(sscanf(optarg,
"%10[A-Z]:%lf:%s",
prop,&size,font) == 3){
int sindex;
if((sindex=text_prop_conv(prop)) != -1){
im->text_prop[sindex].size=size;
- im->text_prop[sindex].font=font;
+ strcpy(im->text_prop[sindex].font,font);
if (sindex==0) { /* the default */
im->text_prop[TEXT_PROP_TITLE].size=size;
- im->text_prop[TEXT_PROP_TITLE].font=font;
+ strcpy(im->text_prop[TEXT_PROP_TITLE].font,font);
im->text_prop[TEXT_PROP_AXIS].size=size;
- im->text_prop[TEXT_PROP_AXIS].font=font;
+ strcpy(im->text_prop[TEXT_PROP_AXIS].font,font);
im->text_prop[TEXT_PROP_UNIT].size=size;
- im->text_prop[TEXT_PROP_UNIT].font=font;
+ strcpy(im->text_prop[TEXT_PROP_UNIT].font,font);
im->text_prop[TEXT_PROP_LEGEND].size=size;
- im->text_prop[TEXT_PROP_LEGEND].font=font;
+ strcpy(im->text_prop[TEXT_PROP_LEGEND].font,font);
}
} else {
rrd_set_error("invalid fonttag '%s'",prop);
return n;
}
}
-int
-rrd_graph_legend(graph_desc_t *gdp, char *line)
-{
- int i;
-
- i=scan_for_col(line,FMT_LEG_LEN,gdp->legend);
-
- return (strlen(&line[i])==0);
-}
int bad_format(char *fmt) {
diff --git a/src/rrd_graph.h b/src/rrd_graph.h
index 6d587a746a0b35731b9e0eba6924368639220864..0355a8c40c9f7ef61d423354458898fa5c16482b 100644 (file)
--- a/src/rrd_graph.h
+++ b/src/rrd_graph.h
typedef struct text_prop_t {
double size;
- char * font;
+ char font[1024];
} text_prop_t;
int debug; /* boolean */
char vname[MAX_VNAME_LEN+1]; /* name of the variable */
long vidx; /* gdes reference */
- char rrd[255]; /* name of the rrd_file containing data */
+ char rrd[1024]; /* name of the rrd_file containing data */
char ds_nam[DS_NAM_SIZE]; /* data source name */
long ds; /* data source number */
enum cf_en cf; /* consolidation function */
void rrd_graph_script(int, char **, image_desc_t *, int);
int rrd_graph_check_vname(image_desc_t *, char *, char *);
int rrd_graph_color(image_desc_t *, char *, char *, int);
-int rrd_graph_legend(graph_desc_t *, char *);
int bad_format(char *);
int vdef_parse(struct graph_desc_t *,char *);
int vdef_calc(image_desc_t *, int);