package org.ripple.power.ui.graphics.chart; import java.util.ArrayList; public class StyledChartPointSerie { public ArrayList<StyledChartPoint> mPointList = new ArrayList<StyledChartPoint>(); public float mWidth = 2; public boolean mUseDip = true; public float mXmin = 0, mXmax = 1, mYmin = 0, mYmax = 1; private boolean mShow = true; private boolean mOrderonx = false; private boolean mAutoXminmax = true; private boolean mAutoYminmax = true; public StyledChartPointSerie() { } public StyledChartPointSerie(float width) { mWidth = width; } public StyledChartPointSerie(float width, boolean usedip) { mWidth = width; mUseDip = usedip; } public ArrayList<StyledChartPoint> getPointList() { return mPointList; } public void setPointList(ArrayList<StyledChartPoint> points) { this.mPointList = points; } public void clearPointList() { this.mPointList.clear(); } public void addPoint(StyledChartPoint point) { if (mAutoXminmax) { if (mPointList.size() > 0) { if (point.x > mXmax) mXmax = point.x; else if (point.x < mXmin) mXmin = point.x; } else mXmin = mXmax = point.x; } if (mAutoYminmax) { if (mPointList.size() > 0) { if (point.y > mYmax) mYmax = point.y; else if (point.y < mYmin) mYmin = point.y; } else mYmin = mYmax = point.y; } if (!mOrderonx) { mPointList.add(point); return; } StyledChartPoint p; int i; for (i = 0; i < mPointList.size(); i++) { p = mPointList.get(i); if (point.x < p.x) { mPointList.add(i, point); return; } } mPointList.add(point); } public void shiftPoint(StyledChartPoint point, int max) { addPoint(point); while (mPointList.size() > max) { mPointList.remove(0); } if (mAutoXminmax || mAutoYminmax) { calcRanges(); } } public void removePoint(StyledChartPoint point) { mPointList.remove(point); if (mAutoXminmax || mAutoYminmax) { calcRanges(); } } public StyledChartPoint getPoint(int index) { return mPointList.get(index); } public int getSize() { return mPointList.size(); } private void calcRanges() { int i; if (mPointList.size() == 0) { return; } if (mAutoXminmax) { mXmin = mPointList.get(0).x; mXmax = mPointList.get(0).x; for (i = 1; i < mPointList.size(); i++) { if (mPointList.get(i).x > mXmax) mXmax = mPointList.get(i).x; else if (mPointList.get(i).x < mXmin) mXmin = mPointList.get(i).x; } } if (mAutoYminmax) { mYmin = mPointList.get(0).y; mYmax = mPointList.get(0).y; for (i = 1; i < mPointList.size(); i++) { if (mPointList.get(i).y > mYmax) mYmax = mPointList.get(i).y; else if (mPointList.get(i).y < mYmin) mYmin = mPointList.get(i).y; } } } public void setAutoMinmax(boolean bAutoX, boolean bAutoY) { this.mAutoXminmax = bAutoX; this.mAutoYminmax = bAutoY; if (bAutoX || bAutoY) calcRanges(); } public void setAutoMinmax(boolean bAutoX, boolean bAutoY, float fXmin, float fXmax, float fYmin, float fYmax) { this.mAutoXminmax = bAutoX; this.mAutoYminmax = bAutoY; if (!bAutoX) { this.mXmin = fXmin; this.mXmax = fXmax; } if (!bAutoY) { this.mYmin = fYmin; this.mYmax = fYmax; } if (bAutoX || bAutoY) calcRanges(); } public void setOrderOnX(boolean bOrderonx) { if (mPointList.size() > 0) return; this.mOrderonx = bOrderonx; } public void setVisible(boolean bShow) { this.mShow = bShow; } public boolean isVisible() { return this.mShow; } public void setStyle(float fWidth) { mWidth = fWidth; } public void setStyle(float fWidth, boolean bUsedip) { mWidth = fWidth; mUseDip = bUsedip; } }