00001
00002
00003
00004
00005
00006
00007 package org.swtchart.internal.compress;
00008
00009 import java.util.ArrayList;
00010
00014 public class CompressBarSeries extends Compress {
00015
00016
00017
00018
00019 @Override
00020 protected void addNecessaryPlots(ArrayList<Double> xList,
00021 ArrayList<Double> yList, ArrayList<Integer> indexList) {
00022
00023 double prevX = xSeries[0];
00024 double maxY = Double.NaN;
00025 int prevIndex = 0;
00026
00027 for (int i = 0; i < xSeries.length && i < ySeries.length; i++) {
00028 if (xSeries[i] >= config.getXLowerValue()) {
00029 if (isInSameGridXAsPrevious(xSeries[i])) {
00030 if (maxY < ySeries[i]) {
00031 maxY = ySeries[i];
00032 }
00033 } else {
00034 if (!Double.isNaN(maxY)) {
00035 addToList(xList, yList, indexList, prevX, maxY, prevIndex);
00036 }
00037 prevX = xSeries[i];
00038 maxY = ySeries[i];
00039 prevIndex = i;
00040 }
00041 }
00042
00043 if (xSeries[i] > config.getXUpperValue()) {
00044 break;
00045 }
00046 }
00047 addToList(xList, yList, indexList, prevX, maxY, prevIndex);
00048 }
00049
00057 private boolean isInSameGridXAsPrevious(double x) {
00058 int xGridIndex = (int) ((x - config.getXLowerValue())
00059 / (config.getXUpperValue() - config.getXLowerValue()) * config
00060 .getWidthInPixel());
00061
00062 boolean isInSameGridAsPrevious = (xGridIndex == previousXGridIndex);
00063
00064 previousXGridIndex = xGridIndex;
00065
00066 return isInSameGridAsPrevious;
00067 }
00068 }