X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Frrd_graph.c;h=a258685a91bfb26ec1ffcd95f66dcc8f02592ea1;hb=a669be0918d3b0427e6ce549c1877963ce046b95;hp=2fae2583de02cfda0e96f5edeafac79a4dbfc292;hpb=573275391d149bac4636f0928bb8eef914708851;p=rrdtool.git diff --git a/src/rrd_graph.c b/src/rrd_graph.c index 2fae258..a258685 100644 --- a/src/rrd_graph.c +++ b/src/rrd_graph.c @@ -1,5 +1,5 @@ /**************************************************************************** - * RRDtool 1.2.4 Copyright by Tobi Oetiker, 1997-2005 + * RRDtool 1.2.6 Copyright by Tobi Oetiker, 1997-2005 **************************************************************************** * rrd__graph.c produce graphs from data in rrdfiles ****************************************************************************/ @@ -9,7 +9,7 @@ #include "rrd_tool.h" -#if defined(WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__) +#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__) #include #include #endif @@ -100,8 +100,9 @@ gfx_color_t graph_col[] = /* default colors */ 0xE0505080, /* major grid */ 0x000000FF, /* font */ 0x802020FF, /* arrow */ - 0x202020FF /* axis */ -}; + 0x202020FF, /* axis */ + 0x000000FF /* frame */ +}; /* #define DEBUG */ @@ -151,9 +152,9 @@ ytr(image_desc_t *im, double value){ if (! im->rigid) { /* keep yval as-is */ } else if (yval > im->yorigin) { - yval = im->yorigin; + yval = im->yorigin +0.00001; } else if (yval < im->yorigin - im->ysize){ - yval = im->yorigin - im->ysize; + yval = im->yorigin - im->ysize - 0.00001; } return yval; } @@ -222,6 +223,7 @@ enum grc_en grc_conv(char *string){ conv_if(FONT,GRC_FONT) conv_if(ARROW,GRC_ARROW) conv_if(AXIS,GRC_AXIS) + conv_if(FRAME,GRC_FRAME) return -1; } @@ -1614,14 +1616,16 @@ int draw_horizontal_grid(image_desc_t *im) int sgrid = (int)( im->minval / im->ygrid_scale.gridstep - 1); int egrid = (int)( im->maxval / im->ygrid_scale.gridstep + 1); + double MaxY; scaledstep = im->ygrid_scale.gridstep/im->magfact; + MaxY = scaledstep*(double)im->viewfactor*(double)egrid; for (i = sgrid; i <= egrid; i++){ double Y0=ytr(im,im->ygrid_scale.gridstep*i); if ( Y0 >= im->yorigin-im->ysize && Y0 <= im->yorigin){ if(i % im->ygrid_scale.labfact == 0){ if (i==0 || im->symbol == ' ') { - if(scaledstep < 1){ + if(MaxY < 10) { if(im->extra_flags & ALTYGRID) { sprintf(graph_label,im->ygrid_scale.labfmt,scaledstep*im->viewfactor*i); } @@ -1632,7 +1636,7 @@ int draw_horizontal_grid(image_desc_t *im) sprintf(graph_label,"%4.0f",scaledstep*im->viewfactor*i); } }else { - if(scaledstep < 1){ + if(MaxY < 10){ sprintf(graph_label,"%4.1f %c",scaledstep*im->viewfactor*i, im->symbol); } else { sprintf(graph_label,"%4.0f %c",scaledstep*im->viewfactor*i, im->symbol); @@ -2019,7 +2023,7 @@ grid_paint(image_desc_t *im) node = gfx_new_line(im->canvas, X0-1,Y0-boxV, X0-1,Y0, - 1,im->graph_col[GRC_FONT]); + 1,im->graph_col[GRC_FRAME]); gfx_add_point(node,X0+boxH,Y0); gfx_add_point(node,X0+boxH,Y0-boxV); gfx_close_path(node); @@ -2385,11 +2389,11 @@ graph_paint(image_desc_t *im, char ***calcpr) node=gfx_new_area ( im->canvas, 0, 0, - im->ximg, 0, - im->ximg, im->yimg, + 0, im->yimg, + im->ximg, im->yimg, im->graph_col[GRC_BACK]); - gfx_add_point(node,0, im->yimg); + gfx_add_point(node,im->ximg, 0); #ifdef WITH_PIECHART if (piechart != 2) { @@ -2504,11 +2508,11 @@ graph_paint(image_desc_t *im, char ***calcpr) } } else { - float ybase0 = DNAN,ytop0=DNAN; + double ybase0 = DNAN,ytop0=DNAN; for(ii=0;iixsize;ii++){ /* keep things simple for now, just draw these bars do not try to build a big and complex area */ - float ybase,ytop; + double ybase,ytop; if ( im->slopemode == 0 && ii==0){ continue; } @@ -2529,7 +2533,7 @@ graph_paint(image_desc_t *im, char ***calcpr) /* every area has to be wound clock-wise, so we have to make sur base remains base */ if (ybase > ytop){ - float extra = ytop; + double extra = ytop; ytop = ybase; ybase = extra; } @@ -2539,13 +2543,13 @@ graph_paint(image_desc_t *im, char ***calcpr) } if ( !isnan(ybase0) ){ node = gfx_new_area(im->canvas, - ii-1+im->xorigin,ybase0, - ii-1+im->xorigin,ytop0, - ii+im->xorigin,ytop, + (double)ii-1.2+(double)im->xorigin,ybase0-0.2, + (double)ii-1.2+(double)im->xorigin,ytop0+0.2, + (double)ii+0.2+(double)im->xorigin,ytop+0.2, im->gdes[i].col ); gfx_add_point(node, - ii+im->xorigin,ybase + (double)ii+0.02+im->xorigin,ybase-0.2 ); } ybase0=ybase; @@ -2632,7 +2636,7 @@ graph_paint(image_desc_t *im, char ***calcpr) if (strcmp(im->graphfile,"-")==0) { fo = im->graphhandle ? im->graphhandle : stdout; -#if defined(WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__) +#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__) /* Change translation mode for stdout to BINARY */ _setmode( _fileno( fo ), O_BINARY ); #endif @@ -2643,7 +2647,7 @@ graph_paint(image_desc_t *im, char ***calcpr) return (-1); } } - gfx_render (im->canvas,im->ximg,im->yimg,0x0,fo); + gfx_render (im->canvas,im->ximg,im->yimg,0x00000000,fo); if (strcmp(im->graphfile,"-") != 0) fclose(fo); return 0; @@ -2837,7 +2841,7 @@ rrd_graph_init(image_desc_t *im) for(i=0;igraph_col[i]=graph_col[i]; -#if defined(WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__) +#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__) { char *windir; char rrd_win_default_font[1000]; @@ -3110,6 +3114,22 @@ rrd_graph_options(int argc, char *argv[],image_desc_t *im) int ci; int col_len = col_end - col_start; switch (col_len){ + case 3: + color = ( + ((color & 0xF00) * 0x110000) | + ((color & 0x0F0) * 0x011000) | + ((color & 0x00F) * 0x001100) | + 0x000000FF + ); + break; + case 4: + color = ( + ((color & 0xF000) * 0x11000) | + ((color & 0x0F00) * 0x01100) | + ((color & 0x00F0) * 0x00110) | + ((color & 0x000F) * 0x00011) + ); + break; case 6: color = (color << 8) + 0xff /* shift left by 8 */; break;