projects
/
rrdtool.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
avoid drawing lines where two points are in the same spot. this mai be confusing...
[rrdtool.git]
/
src
/
rrd_graph.c
diff --git
a/src/rrd_graph.c
b/src/rrd_graph.c
index
5f656aa
..
2a13cb5
100644
(file)
--- a/
src/rrd_graph.c
+++ b/
src/rrd_graph.c
@@
-1,5
+1,5
@@
/****************************************************************************
/****************************************************************************
- * RRDtool 1.2.1
0
Copyright by Tobi Oetiker, 1997-2005
+ * RRDtool 1.2.1
1
Copyright by Tobi Oetiker, 1997-2005
****************************************************************************
* rrd__graph.c produce graphs from data in rrdfiles
****************************************************************************/
****************************************************************************
* 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);
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
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);
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
}
} 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;
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)
/* 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;
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 */
}
}
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;
im->ximg = im->xsize;
im->yimg = im->ysize;
im->yorigin = im->ysize;
+ ytr(im,DNAN);
return 0;
}
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;
/* reserve space for main and/or pie */
im->yimg = Ymain + Yxlabel;
-
+
#ifdef WITH_PIECHART
if (im->yimg < Ypie) im->yimg = Ypie;
#endif
#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;
}
/* 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.
*/
/* 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
}
#endif
+ ytr(im,DNAN);
return 0;
}
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 ){
if (im->gdes[i].col != 0x0){
/* GF_LINE and friend */
if(stack_gf == GF_LINE ){
+ double last_y=0;
node = NULL;
node = NULL;
- for(ii=1;ii<im->xsize;ii++){
+ for(ii=1;ii<im->xsize;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 ) {
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,
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]),
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 {
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
);
};
}
};
}
@@
-2590,7
+2595,7
@@
graph_paint(image_desc_t *im, char ***calcpr)
if (lastgdes && (im->gdes[i].stack)) {
im->gdes[i].p_data[ii] = lastgdes->p_data[ii];
} else {
if (lastgdes && (im->gdes[i].stack)) {
im->gdes[i].p_data[ii] = lastgdes->p_data[ii];
} else {
- im->gdes[i].p_data[ii] =
ytr(im,areazero)
;
+ im->gdes[i].p_data[ii] =
areazero
;
}
}
}
}
}
}
@@
-3181,7
+3186,7
@@
rrd_graph_options(int argc, char *argv[],image_desc_t *im)
case 'n':{
char prop[15];
double size = 1;
case 'n':{
char prop[15];
double size = 1;
- char font[1024];
+ char font[1024]
= ""
;
if(sscanf(optarg,
"%10[A-Z]:%lf:%1000s",
if(sscanf(optarg,
"%10[A-Z]:%lf:%1000s",