package com.github.mikephil.charting.data;
import com.github.mikephil.charting.utils.LimitLine;
import java.util.ArrayList;
/**
* Baseclass for all Line, Bar, Radar and ScatterData. Supports LimitLines.
*
* @author Philipp Jahoda
*/
public abstract class BarLineScatterCandleRadarData<T extends BarLineScatterCandleRadarDataSet<? extends Entry>>
extends ChartData<T> {
/** array of limit-lines that are set for this data object */
private ArrayList<LimitLine> mLimitLines;
public BarLineScatterCandleRadarData(ArrayList<String> xVals) {
super(xVals);
}
public BarLineScatterCandleRadarData(String[] xVals) {
super(xVals);
}
public BarLineScatterCandleRadarData(ArrayList<String> xVals, ArrayList<T> sets) {
super(xVals, sets);
}
public BarLineScatterCandleRadarData(String[] xVals, ArrayList<T> sets) {
super(xVals, sets);
}
/**
* Adds a new LimitLine to the data.
*
* @param limitLine
*/
public void addLimitLine(LimitLine limitLine) {
if (mLimitLines == null)
mLimitLines = new ArrayList<LimitLine>();
mLimitLines.add(limitLine);
updateMinMax();
}
/**
* Adds a new array of LimitLines.
*
* @param lines
*/
public void addLimitLines(ArrayList<LimitLine> lines) {
mLimitLines = lines;
updateMinMax();
}
/**
* Resets the limit lines array to null. Causes no more limit lines to be
* set for this data object.
*/
public void resetLimitLines() {
mLimitLines = null;
calcMinMax(mDataSets);
}
/**
* Returns the LimitLine array of this data object.
*
* @return
*/
public ArrayList<LimitLine> getLimitLines() {
return mLimitLines;
}
/**
* Returns the LimitLine from the limitlines array at the specified index.
*
* @param index
* @return
*/
public LimitLine getLimitLine(int index) {
if (mLimitLines == null || mLimitLines.size() <= index)
return null;
else
return mLimitLines.get(index);
}
/**
* Updates the min and max y-value according to the set limits.
*/
private void updateMinMax() {
if (mLimitLines == null)
return;
for (int i = 0; i < mLimitLines.size(); i++) {
LimitLine l = mLimitLines.get(i);
if (l.getLimit() > mYMax)
mYMax = l.getLimit();
if (l.getLimit() < mYMin)
mYMin = l.getLimit();
}
}
}