X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Frrd_graph.c;h=2a13cb54e8ed62bf461b1914b3be57d31fcad833;hb=8e0f0172c60d3f207cc4dd61f996347fa2a63b09;hp=bfbd4550fda972d36b97505bb8d11691abb906a6;hpb=32abc651a73d99b513dcf9dc47ed27a509a999c9;p=rrdtool.git diff --git a/src/rrd_graph.c b/src/rrd_graph.c index bfbd455..2a13cb5 100644 --- a/src/rrd_graph.c +++ b/src/rrd_graph.c @@ -1,5 +1,5 @@ /**************************************************************************** - * RRDtool 1.2.10 Copyright by Tobi Oetiker, 1997-2005 + * RRDtool 1.2.11 Copyright by Tobi Oetiker, 1997-2005 **************************************************************************** * rrd__graph.c produce graphs from data in rrdfiles ****************************************************************************/ @@ -469,7 +469,7 @@ apply_gridfit(image_desc_t *im) double new_log10_range = factor * log10_range; double new_ymax_log10 = log10(im->minval) + new_log10_range; im->maxval = pow(10, new_ymax_log10); - ytr(im, DNAN); /* reset precalc */ + ytr(im,DNAN); /* reset precalc */ log10_range = log10(im->maxval) - log10(im->minval); } /* make sure first y=10^x gridline is located on @@ -481,7 +481,7 @@ apply_gridfit(image_desc_t *im) double yfrac = ypixfrac / im->ysize; im->minval = pow(10, log10(im->minval) - yfrac * log10_range); im->maxval = pow(10, log10(im->maxval) - yfrac * log10_range); - ytr(im, DNAN); /* reset precalc */ + ytr(im,DNAN); /* reset precalc */ } } else { /* Make sure we have an integer pixel distance between @@ -494,7 +494,7 @@ apply_gridfit(image_desc_t *im) double gridstep = im->ygrid_scale.gridstep; double minor_y, minor_y_px, minor_y_px_frac; im->maxval = im->minval + new_range; - ytr(im, DNAN); /* reset precalc */ + ytr(im,DNAN); /* reset precalc */ /* make sure first minor gridline is on integer pixel y coord */ minor_y = gridstep * floor(im->minval / gridstep); while (minor_y < im->minval) @@ -506,7 +506,7 @@ apply_gridfit(image_desc_t *im) double range = im->maxval - im->minval; im->minval = im->minval - yfrac * range; im->maxval = im->maxval - yfrac * range; - ytr(im, DNAN); /* reset precalc */ + ytr(im,DNAN); /* reset precalc */ } calc_horizontal_grid(im); /* recalc with changed im->maxval */ } @@ -2151,6 +2151,7 @@ graph_size_location(image_desc_t *im, int elements im->ximg = im->xsize; im->yimg = im->ysize; im->yorigin = im->ysize; + ytr(im,DNAN); return 0; } @@ -2241,7 +2242,7 @@ graph_size_location(image_desc_t *im, int elements /* reserve space for main and/or pie */ im->yimg = Ymain + Yxlabel; - + #ifdef WITH_PIECHART if (im->yimg < Ypie) im->yimg = Ypie; #endif @@ -2258,8 +2259,7 @@ graph_size_location(image_desc_t *im, int elements } /* reserve space for padding below the graph */ im->yimg += Yspacing; - ytr(im,DNAN); - + /* Determine where to place the legends onto the image. ** Adjust im->yimg to match the space requirements. */ @@ -2288,6 +2288,7 @@ graph_size_location(image_desc_t *im, int elements } #endif + ytr(im,DNAN); return 0; } @@ -2471,31 +2472,35 @@ graph_paint(image_desc_t *im, char ***calcpr) if (im->gdes[i].col != 0x0){ /* GF_LINE and friend */ if(stack_gf == GF_LINE ){ + double last_y=0; node = NULL; - for(ii=1;iixsize;ii++){ + for(ii=1;iixsize;ii++){ if (isnan(im->gdes[i].p_data[ii]) || (im->slopemode==1 && isnan(im->gdes[i].p_data[ii-1]))){ node = NULL; continue; } if ( node == NULL ) { + last_y = ytr(im,im->gdes[i].p_data[ii]); if ( im->slopemode == 0 ){ node = gfx_new_line(im->canvas, - ii-1+im->xorigin,ytr(im,im->gdes[i].p_data[ii]), - ii+im->xorigin,ytr(im,im->gdes[i].p_data[ii]), + ii-1+im->xorigin,last_y, + ii+im->xorigin,last_y, im->gdes[i].linewidth, im->gdes[i].col); } else { node = gfx_new_line(im->canvas, ii-1+im->xorigin,ytr(im,im->gdes[i].p_data[ii-1]), - ii+im->xorigin,ytr(im,im->gdes[i].p_data[ii]), + ii+im->xorigin,last_y, im->gdes[i].linewidth, im->gdes[i].col); } } else { - if ( im->slopemode==0 ){ - gfx_add_point(node,ii-1+im->xorigin,ytr(im,im->gdes[i].p_data[ii])); + double new_y = ytr(im,im->gdes[i].p_data[ii]); + if ( im->slopemode==0 && new_y != last_y){ + gfx_add_point(node,ii-1+im->xorigin,new_y); + last_y = new_y; }; - gfx_add_point(node,ii+im->xorigin,ytr(im,im->gdes[i].p_data[ii])); + gfx_add_point(node,ii+im->xorigin,new_y); }; } @@ -3181,7 +3186,7 @@ rrd_graph_options(int argc, char *argv[],image_desc_t *im) case 'n':{ char prop[15]; double size = 1; - char font[1024]; + char font[1024] = ""; if(sscanf(optarg, "%10[A-Z]:%lf:%1000s",