#ifdef WIN32
#include <io.h>
#include <fcntl.h>
-#define RRD_DEFAULT_FONT "c:/winnt/fonts/COUR.TTF"
#endif
#include "rrd_graph.h"
}
}
break;
- case GF_COMMENT:
case GF_LINE:
case GF_AREA:
case GF_TICK:
case GF_VRULE:
graphelement = 1;
break;
+ case GF_COMMENT:
case GF_DEF:
case GF_CDEF:
case GF_VDEF:
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->ygif;
+ int leg_x = border, leg_y = im->yimg;
int leg_cc;
int glue = 0;
int i,ii, mark = 0;
if (i == im->gdes_c -1 ) prt_fctn ='l';
/* is it time to place the legends ? */
- if (fill > im->xgif - 2*border){
+ if (fill > im->ximg - 2*border){
if (leg_c > 1) {
/* go back one */
i--;
if (prt_fctn != '\0'){
leg_x = border;
if (leg_c >= 2 && prt_fctn == 'j') {
- glue = (im->xgif - fill - 2* border) / (leg_c-1);
+ glue = (im->ximg - fill - 2* border) / (leg_c-1);
} else {
glue = 0;
}
- if (prt_fctn =='c') leg_x = (im->xgif - fill) / 2.0;
- if (prt_fctn =='r') leg_x = im->xgif - fill - border;
+ if (prt_fctn =='c') leg_x = (im->ximg - fill) / 2.0;
+ if (prt_fctn =='r') leg_x = im->ximg - fill - border;
for(ii=mark;ii<=i;ii++){
if(im->gdes[ii].legend[0]=='\0')
mark = ii;
}
}
- im->ygif = leg_y;
+ im->yimg = leg_y;
free(legspace);
}
return 0;
double gridstep;
double scaledstep;
char graph_label[100];
- double x0,x1,y0;
+ double X0,X1,Y0;
int labfact,gridind;
int decimals, fractionals;
char labfmt[64];
labfact = im->ylabfact;
}
- x0=im->xorigin;
- x1=im->xorigin+im->xsize;
+ X0=im->xorigin;
+ X1=im->xorigin+im->xsize;
sgrid = (int)( im->minval / gridstep - 1);
egrid = (int)( im->maxval / gridstep + 1);
scaledstep = gridstep/im->magfact;
for (i = sgrid; i <= egrid; i++){
- y0=ytr(im,gridstep*i);
- if ( y0 >= im->yorigin-im->ysize
- && y0 <= im->yorigin){
+ Y0=ytr(im,gridstep*i);
+ if ( Y0 >= im->yorigin-im->ysize
+ && Y0 <= im->yorigin){
if(i % labfact == 0){
if (i==0 || im->symbol == ' ') {
if(scaledstep < 1){
}
gfx_new_text ( im->canvas,
- x0-im->text_prop[TEXT_PROP_AXIS].size/1.5, y0,
+ X0-im->text_prop[TEXT_PROP_AXIS].size/1.5, Y0,
im->graph_col[GRC_FONT],
im->text_prop[TEXT_PROP_AXIS].font,
im->text_prop[TEXT_PROP_AXIS].size,
im->tabwidth, 0.0, GFX_H_RIGHT, GFX_V_CENTER,
graph_label );
gfx_new_line ( im->canvas,
- x0-2,y0,
- x1+2,y0,
+ X0-2,Y0,
+ X1+2,Y0,
MGRIDWIDTH, im->graph_col[GRC_MGRID] );
} else {
gfx_new_line ( im->canvas,
- x0-1,y0,
- x1+1,y0,
+ X0-1,Y0,
+ X1+1,Y0,
GRIDWIDTH, im->graph_col[GRC_GRID] );
}
int ii,i;
int minoridx=0, majoridx=0;
char graph_label[100];
- double x0,x1,y0;
+ double X0,X1,Y0;
double value, pixperstep, minstep;
/* find grid spaceing */
if(pixperstep > 2 * im->text_prop[TEXT_PROP_LEGEND].size){majoridx = i;}
}
- x0=im->xorigin;
- x1=im->xorigin+im->xsize;
+ X0=im->xorigin;
+ X1=im->xorigin+im->xsize;
/* paint minor grid */
for (value = pow((double)10, log10(im->minval)
- fmod(log10(im->minval),log10(yloglab[minoridx][0])));
if (value < im->minval) continue;
i=0;
while(yloglab[minoridx][++i] > 0){
- y0 = ytr(im,value * yloglab[minoridx][i]);
- if (y0 <= im->yorigin - im->ysize) break;
+ Y0 = ytr(im,value * yloglab[minoridx][i]);
+ if (Y0 <= im->yorigin - im->ysize) break;
gfx_new_line ( im->canvas,
- x0-1,y0,
- x1+1,y0,
+ X0-1,Y0,
+ X1+1,Y0,
GRIDWIDTH, im->graph_col[GRC_GRID] );
}
}
if (value < im->minval) continue;
i=0;
while(yloglab[majoridx][++i] > 0){
- y0 = ytr(im,value * yloglab[majoridx][i]);
- if (y0 <= im->yorigin - im->ysize) break;
+ Y0 = ytr(im,value * yloglab[majoridx][i]);
+ if (Y0 <= im->yorigin - im->ysize) break;
gfx_new_line ( im->canvas,
- x0-2,y0,
- x1+2,y0,
+ X0-2,Y0,
+ X1+2,Y0,
MGRIDWIDTH, im->graph_col[GRC_MGRID] );
sprintf(graph_label,"%3.0e",value * yloglab[majoridx][i]);
gfx_new_text ( im->canvas,
- x0-im->text_prop[TEXT_PROP_AXIS].size/1.5, y0,
+ X0-im->text_prop[TEXT_PROP_AXIS].size/1.5, Y0,
im->graph_col[GRC_FONT],
im->text_prop[TEXT_PROP_AXIS].font,
im->text_prop[TEXT_PROP_AXIS].size,
time_t ti, tilab;
long factor;
char graph_label[100];
- double x0,y0,y1; /* points for filled graph and more*/
+ double X0,Y0,Y1; /* points for filled graph and more*/
/* the type of time grid is determined by finding
}
/* y coords are the same for every line ... */
- y0 = im->yorigin;
- y1 = im->yorigin-im->ysize;
+ Y0 = im->yorigin;
+ Y1 = im->yorigin-im->ysize;
/* paint the minor grid */
){
/* are we inside the graph ? */
if (ti < im->start || ti > im->end) continue;
- x0 = xtr(im,ti);
- gfx_new_line(im->canvas,x0,y0+1, x0,y1-1,GRIDWIDTH, im->graph_col[GRC_GRID]);
+ X0 = xtr(im,ti);
+ gfx_new_line(im->canvas,X0,Y0+1, X0,Y1-1,GRIDWIDTH, im->graph_col[GRC_GRID]);
}
){
/* are we inside the graph ? */
if (ti < im->start || ti > im->end) continue;
- x0 = xtr(im,ti);
- gfx_new_line(im->canvas,x0,y0+2, x0,y1-2,MGRIDWIDTH, im->graph_col[GRC_MGRID]);
+ X0 = xtr(im,ti);
+ gfx_new_line(im->canvas,X0,Y0+2, X0,Y1-2,MGRIDWIDTH, im->graph_col[GRC_MGRID]);
}
/* paint the labels below the graph */
# error "your libc has no strftime I guess we'll abort the exercise here."
#endif
gfx_new_text ( im->canvas,
- xtr(im,tilab), y0+im->text_prop[TEXT_PROP_AXIS].size/1.5,
+ xtr(im,tilab), Y0+im->text_prop[TEXT_PROP_AXIS].size/1.5,
im->graph_col[GRC_FONT],
im->text_prop[TEXT_PROP_AXIS].font,
im->text_prop[TEXT_PROP_AXIS].size,
gfx_new_area ( im->canvas,
im->xorigin+im->xsize+3, im->yorigin-3,
im->xorigin+im->xsize+3, im->yorigin+4,
- im->xorigin+im->xsize+8, im->yorigin+0.5, // LINEOFFSET
+ im->xorigin+im->xsize+8, im->yorigin+0.5, /* LINEOFFSET */
im->graph_col[GRC_ARROW]);
{
long i;
int res=0;
- double x0,y0; /* points for filled graph and more*/
+ double X0,Y0; /* points for filled graph and more*/
gfx_node_t *node;
/* draw 3d border */
- node = gfx_new_area (im->canvas, 0,im->ygif,
- 2,im->ygif-2,
+ node = gfx_new_area (im->canvas, 0,im->yimg,
+ 2,im->yimg-2,
2,2,im->graph_col[GRC_SHADEA]);
- gfx_add_point( node , im->xgif - 2, 2 );
- gfx_add_point( node , im->xgif, 0 );
+ gfx_add_point( node , im->ximg - 2, 2 );
+ gfx_add_point( node , im->ximg, 0 );
gfx_add_point( node , 0,0 );
-/* gfx_add_point( node , 0,im->ygif ); */
+/* gfx_add_point( node , 0,im->yimg ); */
- node = gfx_new_area (im->canvas, 2,im->ygif-2,
- im->xgif-2,im->ygif-2,
- im->xgif - 2, 2,
+ node = gfx_new_area (im->canvas, 2,im->yimg-2,
+ im->ximg-2,im->yimg-2,
+ im->ximg - 2, 2,
im->graph_col[GRC_SHADEB]);
- gfx_add_point( node , im->xgif,0);
- gfx_add_point( node , im->xgif,im->ygif);
- gfx_add_point( node , 0,im->ygif);
-/* gfx_add_point( node , 0,im->ygif ); */
+ gfx_add_point( node , im->ximg,0);
+ gfx_add_point( node , im->ximg,im->yimg);
+ gfx_add_point( node , 0,im->yimg);
+/* gfx_add_point( node , 0,im->yimg ); */
if (im->draw_x_grid == 1 )
/* dont draw horizontal grid if there is no min and max val */
if (! res ) {
char *nodata = "No Data found";
- gfx_new_text(im->canvas,im->xgif/2, (2*im->yorigin-im->ysize) / 2,
+ gfx_new_text(im->canvas,im->ximg/2, (2*im->yorigin-im->ysize) / 2,
im->graph_col[GRC_FONT],
im->text_prop[TEXT_PROP_AXIS].font,
im->text_prop[TEXT_PROP_AXIS].size,
/* graph title */
gfx_new_text( im->canvas,
- im->xgif/2, im->text_prop[TEXT_PROP_TITLE].size,
+ im->ximg/2, im->text_prop[TEXT_PROP_TITLE].size,
im->graph_col[GRC_FONT],
im->text_prop[TEXT_PROP_TITLE].font,
im->text_prop[TEXT_PROP_TITLE].size, im->tabwidth, 0.0,
continue;
/* im->gdes[i].leg_y is the bottom of the legend */
- x0 = im->gdes[i].leg_x;
- y0 = im->gdes[i].leg_y;
+ X0 = im->gdes[i].leg_x;
+ Y0 = im->gdes[i].leg_y;
/* Box needed? */
if ( im->gdes[i].gf != GF_GPRINT
&& im->gdes[i].gf != GF_COMMENT) {
boxV = boxH;
node = gfx_new_area(im->canvas,
- x0,y0-boxV,
- x0,y0,
- x0+boxH,y0,
+ X0,Y0-boxV,
+ X0,Y0,
+ X0+boxH,Y0,
im->gdes[i].col);
- gfx_add_point ( node, x0+boxH, y0-boxV );
+ gfx_add_point ( node, X0+boxH, Y0-boxV );
node = gfx_new_line(im->canvas,
- x0,y0-boxV, x0,y0,
+ X0,Y0-boxV, X0,Y0,
1,0x000000FF);
- gfx_add_point(node,x0+boxH,y0);
- gfx_add_point(node,x0+boxH,y0-boxV);
+ gfx_add_point(node,X0+boxH,Y0);
+ gfx_add_point(node,X0+boxH,Y0-boxV);
gfx_close_path(node);
- x0 += boxH / 1.25 * 2;
+ X0 += boxH / 1.25 * 2;
}
- gfx_new_text ( im->canvas, x0, y0,
+ gfx_new_text ( im->canvas, X0, Y0,
im->graph_col[GRC_FONT],
im->text_prop[TEXT_PROP_AXIS].font,
im->text_prop[TEXT_PROP_AXIS].size,
int lazy_check(image_desc_t *im){
FILE *fd = NULL;
int size = 1;
- struct stat gifstat;
+ struct stat imgstat;
if (im->lazy == 0) return 0; /* no lazy option */
- if (stat(im->graphfile,&gifstat) != 0)
+ if (stat(im->graphfile,&imgstat) != 0)
return 0; /* can't stat */
/* one pixel in the existing graph is more then what we would
change here ... */
- if (time(NULL) - gifstat.st_mtime >
+ if (time(NULL) - imgstat.st_mtime >
(im->end - im->start) / im->xsize)
return 0;
if ((fd = fopen(im->graphfile,"rb")) == NULL)
return 0; /* the file does not exist */
switch (im->canvas->imgformat) {
case IF_PNG:
- size = PngSize(fd,&(im->xgif),&(im->ygif));
+ size = PngSize(fd,&(im->ximg),&(im->yimg));
break;
default:
size = 1;
Xmain =0, Ymain =0,
Xpie =0, Ypie =0,
Xxlabel =0, Yxlabel =0,
+#if 0
Xlegend =0, Ylegend =0,
+#endif
Xspacing =10, Yspacing =10;
if (im->ylegend[0] != '\0') {
** forget about it at all; the legend will have to fit in the
** size already allocated.
*/
- im->xgif = Xylabel + Xmain + Xpie + Xspacing;
- if (Xmain) im->xgif += Xspacing;
- if (Xpie) im->xgif += Xspacing;
+ im->ximg = Xylabel + Xmain + Xpie + Xspacing;
+ if (Xmain) im->ximg += Xspacing;
+ if (Xpie) im->ximg += Xspacing;
im->xorigin = Xspacing + Xylabel;
- if (Xtitle > im->xgif) im->xgif = Xtitle;
+ if (Xtitle > im->ximg) im->ximg = Xtitle;
if (Xvertical) {
- im->xgif += Xvertical;
+ im->ximg += Xvertical;
im->xorigin += Xvertical;
}
xtr(im,0);
*/
/* reserve space for main and/or pie */
- im->ygif = Ymain + Yxlabel;
- if (im->ygif < Ypie) im->ygif = Ypie;
- im->yorigin = im->ygif - Yxlabel;
+ im->yimg = Ymain + Yxlabel;
+ if (im->yimg < Ypie) im->yimg = Ypie;
+ im->yorigin = im->yimg - Yxlabel;
/* reserve space for the title *or* some padding above the graph */
if (Ytitle) {
- im->ygif += Ytitle;
+ im->yimg += Ytitle;
im->yorigin += Ytitle;
} else {
- im->ygif += Yspacing;
+ im->yimg += Yspacing;
im->yorigin += Yspacing;
}
/* reserve space for padding below the graph */
- im->ygif += Yspacing;
+ im->yimg += Yspacing;
ytr(im,DNAN);
/* Determine where to place the legends onto the image.
- ** Adjust im->ygif to match the space requirements.
+ ** Adjust im->yimg to match the space requirements.
*/
if(leg_place(im)==-1)
return -1;
/* last of three steps: check total height of image */
- if (im->ygif < Yvertical) im->ygif = Yvertical;
+ if (im->yimg < Yvertical) im->yimg = Yvertical;
#if 0
- if (Xlegend > im->xgif) {
- im->xgif = Xlegend;
+ if (Xlegend > im->ximg) {
+ im->ximg = Xlegend;
/* reposition Pie */
#endif
** padding.
*/
if (elements) {
- im->pie_x = im->xgif - Xspacing - Xpie/2;
+ im->pie_x = im->ximg - Xspacing - Xpie/2;
im->pie_y = im->yorigin-Ymain+Ypie/2;
} else {
- im->pie_x = im->xgif/2;
+ im->pie_x = im->ximg/2;
im->pie_y = im->yorigin-Ypie/2;
}
node=gfx_new_area ( im->canvas,
0, 0,
- im->xgif, 0,
- im->xgif, im->ygif,
+ im->ximg, 0,
+ im->ximg, im->yimg,
im->graph_col[GRC_BACK]);
- gfx_add_point(node,0, im->ygif);
+ gfx_add_point(node,0, im->yimg);
if (piechart != 2) {
node=gfx_new_area ( im->canvas,
return (-1);
}
}
- gfx_render (im->canvas,im->xgif,im->ygif,0x0,fo);
+ gfx_render (im->canvas,im->ximg,im->yimg,0x0,fo);
if (strcmp(im->graphfile,"-") != 0)
fclose(fo);
return 0;
** Also, if needed, print a line with information about the image.
*/
- *xsize=im.xgif;
- *ysize=im.ygif;
+ *xsize=im.ximg;
+ *ysize=im.yimg;
if (im.imginfo) {
char *filename;
if (!(*prdata)) {
filename--;
}
- sprintf((*prdata)[0],im.imginfo,filename,(long)(im.canvas->zoom*im.xgif),(long)(im.canvas->zoom*im.ygif));
+ sprintf((*prdata)[0],im.imginfo,filename,(long)(im.canvas->zoom*im.ximg),(long)(im.canvas->zoom*im.yimg));
}
im_free(&im);
return 0;
int i;
im->xlab_user.minsec = -1;
- im->xgif=0;
- im->ygif=0;
+ im->ximg=0;
+ im->yimg=0;
im->xsize = 400;
im->ysize = 100;
im->step = 0;