package org.ripple.power.ui.graphics.chart; import java.util.ArrayList; import org.ripple.power.ui.graphics.LColor; public class ChartPointSerie { public ArrayList<ChartPoint> mPointList = new ArrayList<ChartPoint>(); public int mColor = 0xFF000000; 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 ChartPointSerie() { } public ChartPointSerie(int color) { mColor = color; } public ChartPointSerie(int color, float width) { mColor = color; mWidth = width; } public ChartPointSerie(LColor color, float width) { mColor = color.getARGB(); mWidth = width; } public ChartPointSerie(int color, float width, boolean usedip) { mColor = color; mWidth = width; mUseDip = usedip; } public ArrayList<ChartPoint> getPointList() { return mPointList; } public void setPointList(ArrayList<ChartPoint> points) { this.mPointList = points; } public void clearPointList() { this.mPointList.clear(); } public void addPoint(ChartPoint 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; } ChartPoint 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(ChartPoint point, int max) { addPoint(point); while (mPointList.size() > max) mPointList.remove(0); if (mAutoXminmax || mAutoYminmax) calcRanges(); } public void removePoint(ChartPoint point) { mPointList.remove(point); if (mAutoXminmax || mAutoYminmax) calcRanges(); } public ChartPoint 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(int iColor, float fWidth) { mColor = iColor; mWidth = fWidth; } public void setStyle(LColor color, float fWidth) { mColor = color.getARGB(); mWidth = fWidth; } public void setStyle(int iColor, float fWidth, boolean bUsedip) { mColor = iColor; mWidth = fWidth; mUseDip = bUsedip; } public void setStyle(LColor color, float fWidth, boolean bUsedip) { mColor = color.getARGB(); mWidth = fWidth; mUseDip = bUsedip; } }