print the name of the HW cf in debug mode -- Helge Oldach
[rrdtool.git] / src / rrd_graph.c
index 47c187a..35978cf 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * RRDtool 1.2.19  Copyright by Tobi Oetiker, 1997-2007
+ * RRDtool 1.2.23  Copyright by Tobi Oetiker, 1997-2007
  ****************************************************************************
  * rrd__graph.c  produce graphs from data in rrdfiles
  ****************************************************************************/
@@ -399,6 +399,13 @@ expand_range(image_desc_t *im)
               im->minval -= adj;
               im->maxval += adj;
         }
+       else if(im->extra_flags & ALTAUTOSCALE_MIN) {
+           /* measure the amplitude of the function. Make sure that
+              graph boundaries are slightly lower than min vals
+              so we can see amplitude on the graph */
+             adj = (im->maxval - im->minval) * 0.1;
+             im->minval -= adj;
+       }
         else if(im->extra_flags & ALTAUTOSCALE_MAX) {
             /* measure the amplitude of the function. Make sure that
                graph boundaries are slightly higher than max vals
@@ -490,7 +497,10 @@ apply_gridfit(image_desc_t *im)
     double new_range = factor * (im->maxval - im->minval);
     double gridstep = im->ygrid_scale.gridstep;
     double minor_y, minor_y_px, minor_y_px_frac;
-    im->maxval = im->minval + new_range;
+    if (im->maxval > 0.0)
+      im->maxval = im->minval + new_range;
+    else
+      im->minval = im->maxval - new_range;
     ytr(im,DNAN); /* reset precalc */
     /* make sure first minor gridline is on integer pixel y coord */
     minor_y = gridstep * floor(im->minval / gridstep);
@@ -1663,8 +1673,8 @@ int draw_horizontal_grid(image_desc_t *im)
     for (i = sgrid; i <= egrid; i++){
        double Y0=ytr(im,im->ygrid_scale.gridstep*i);
        double YN=ytr(im,im->ygrid_scale.gridstep*(i+1));
-       if ( Y0 >= im->yorigin-im->ysize
-                 && Y0 <= im->yorigin){       
+       if ( round(Y0) >= im->yorigin-im->ysize 
+            && round(Y0) <= im->yorigin){       
             /* Make sure at least 2 grid labels are shown, even if it doesn't agree
                with the chosen settings. Add a label if required by settings, or if
                there is only one label so far and the next grid line is out of bounds. */
@@ -1827,7 +1837,7 @@ horizontal_log_grid(image_desc_t   *im)
         pre_value = value;
 
         Y0 = ytr(im, value);
-        if(Y0 <= im->yorigin - im->ysize) break;
+        if(round(Y0) <= im->yorigin - im->ysize) break;
 
         /* major grid line */
         gfx_new_dashed_line ( im->canvas,
@@ -1887,7 +1897,7 @@ horizontal_log_grid(image_desc_t   *im)
                 if(value < im->minval) continue;
 
                 Y0 = ytr(im, value);
-                if(Y0 <= im->yorigin - im->ysize) break;
+                if(round(Y0) <= im->yorigin - im->ysize) break;
 
                 /* draw lines */
                 gfx_new_dashed_line ( im->canvas,
@@ -1903,7 +1913,7 @@ horizontal_log_grid(image_desc_t   *im)
                 if(value < im->minval) continue;
 
                 Y0 = ytr(im, value);
-                if(Y0 <= im->yorigin - im->ysize) break;
+                if(round(Y0) <= im->yorigin - im->ysize) break;
 
                 /* draw lines */
                 gfx_new_dashed_line ( im->canvas,
@@ -1944,7 +1954,7 @@ horizontal_log_grid(image_desc_t   *im)
             if(value < im->minval) continue;
 
             Y0 = ytr(im, value);
-            if(Y0 <= im->yorigin - im->ysize) break;
+            if(round(Y0) <= im->yorigin - im->ysize) break;
 
             /* draw lines */
             gfx_new_dashed_line ( im->canvas,
@@ -1961,7 +1971,7 @@ horizontal_log_grid(image_desc_t   *im)
             if(value < im->minval) continue;
 
             Y0 = ytr(im, value);
-            if(Y0 <= im->yorigin - im->ysize) break;
+            if(round(Y0) <= im->yorigin - im->ysize) break;
 
             /* draw lines */
             gfx_new_dashed_line ( im->canvas,
@@ -3223,6 +3233,7 @@ rrd_graph_options(int argc, char *argv[],image_desc_t *im)
             {"no-minor",   no_argument,       0,  'I'},
             {"slope-mode", no_argument,              0,  'E'},
             {"alt-autoscale", no_argument,    0,  'A'},
+           {"alt-autoscale-min", no_argument, 0, 'J'},
             {"alt-autoscale-max", no_argument, 0, 'M'},
             {"no-gridfit", no_argument,       0,   'N'},
             {"units-exponent",required_argument, 0, 'X'},
@@ -3255,6 +3266,9 @@ rrd_graph_options(int argc, char *argv[],image_desc_t *im)
             break;
         case 'A':
             im->extra_flags |= ALTAUTOSCALE;
+           break;
+       case 'J':
+           im->extra_flags |= ALTAUTOSCALE_MIN;
             break;
         case 'M':
             im->extra_flags |= ALTAUTOSCALE_MAX;