while (m != null) {
if (m.getLevel() > 1 && m.size() < plot.getMaxDrawableDataPoints()) {
break;
}
Interval rangeExtrema = dr.getRangeExtrema(m);
double rangeMin = rangeExtrema.getStart();
double rangeMax = rangeExtrema.getEnd();
// rangeLength = rangeExtrema.length();
setAbsLength(rangeMin, rangeMax);
if (calcRangeAsPercent) {
final double refY = dr.getRange(ds.getFlyweightTuple(0));
double rmin = rangeOveriddenLow ? absRangeMin : rangeMin;
double rmax = rangeOveriddenHigh ? absRangeMax : rangeMax;
double normalizedMin = rangeExtrema.getPercentChange(refY, rmin);
double normalizedMax = rangeExtrema.getPercentChange(refY, rmax);
setAbsRange( normalizedMin, normalizedMax);
} else {
setAbsRange(
Math.min(absRangeMin, rangeOveriddenLow ? absRangeMin : rangeMin),
Math.max(absRangeMax, rangeOveriddenHigh ? absRangeMax : rangeMax));