prepare for the release of rrdtool-1.2.23
[rrdtool.git] / src / rrd_graph.c
index 47c187a..69d6871 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);
@@ -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;