Simplified scatter shape enum model
(Why would anyone try to subclass an enum?)
This commit is contained in:
parent
99379d7bcf
commit
79f5ed0200
3 changed files with 28 additions and 69 deletions
|
@ -48,7 +48,12 @@ public class ScatterChart extends BarLineChartBase<ScatterData> implements Scatt
|
|||
*/
|
||||
public enum ScatterShape {
|
||||
|
||||
SQUARE("SQUARE"), CIRCLE("CIRCLE"), TRIANGLE("TRIANGLE"), CROSS("CROSS"), X("X"), CHEVRON_UP("CHEVRON_UP"),
|
||||
SQUARE("SQUARE"),
|
||||
CIRCLE("CIRCLE"),
|
||||
TRIANGLE("TRIANGLE"),
|
||||
CROSS("CROSS"),
|
||||
X("X"),
|
||||
CHEVRON_UP("CHEVRON_UP"),
|
||||
CHEVRON_DOWN("CHEVRON_DOWN");
|
||||
|
||||
private final String shapeIdentifier;
|
||||
|
|
|
@ -3,10 +3,15 @@ package com.github.mikephil.charting.data;
|
|||
|
||||
import com.github.mikephil.charting.charts.ScatterChart;
|
||||
import com.github.mikephil.charting.interfaces.datasets.IScatterDataSet;
|
||||
import com.github.mikephil.charting.renderer.scatter.ChevronDownShapeRenderer;
|
||||
import com.github.mikephil.charting.renderer.scatter.ChevronUpShapeRenderer;
|
||||
import com.github.mikephil.charting.renderer.scatter.CircleShapeRenderer;
|
||||
import com.github.mikephil.charting.renderer.scatter.CrossShapeRenderer;
|
||||
import com.github.mikephil.charting.renderer.scatter.IShapeRenderer;
|
||||
import com.github.mikephil.charting.renderer.scatter.SquareShapeRenderer;
|
||||
import com.github.mikephil.charting.renderer.scatter.TriangleShapeRenderer;
|
||||
import com.github.mikephil.charting.renderer.scatter.XShapeRenderer;
|
||||
import com.github.mikephil.charting.utils.ColorTemplate;
|
||||
import com.github.mikephil.charting.utils.ShapeRendererHandler;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
@ -36,11 +41,6 @@ public class ScatterDataSet extends LineScatterCandleRadarDataSet<Entry> impleme
|
|||
*/
|
||||
private int mScatterShapeHoleColor = ColorTemplate.COLOR_NONE;
|
||||
|
||||
/**
|
||||
* Custom path object the user can provide that is drawn where the values
|
||||
* are at. This is used when ScatterShape.CUSTOM is set for a DataSet.
|
||||
*/
|
||||
//private Path mCustomScatterPath = null;
|
||||
public ScatterDataSet(List<Entry> yVals, String label) {
|
||||
super(yVals, label);
|
||||
}
|
||||
|
@ -91,9 +91,7 @@ public class ScatterDataSet extends LineScatterCandleRadarDataSet<Entry> impleme
|
|||
* @param shape
|
||||
*/
|
||||
public void setScatterShape(ScatterChart.ScatterShape shape) {
|
||||
|
||||
ShapeRendererHandler handler = new ShapeRendererHandler();
|
||||
mShapeRenderer = handler.getShapeRenderer(shape);
|
||||
mShapeRenderer = getRendererForShape(shape);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -139,4 +137,19 @@ public class ScatterDataSet extends LineScatterCandleRadarDataSet<Entry> impleme
|
|||
public int getScatterShapeHoleColor() {
|
||||
return mScatterShapeHoleColor;
|
||||
}
|
||||
|
||||
public static IShapeRenderer getRendererForShape(ScatterChart.ScatterShape shape) {
|
||||
|
||||
switch (shape) {
|
||||
case SQUARE: return new SquareShapeRenderer();
|
||||
case CIRCLE: return new CircleShapeRenderer();
|
||||
case TRIANGLE: return new TriangleShapeRenderer();
|
||||
case CROSS: return new CrossShapeRenderer();
|
||||
case X: return new XShapeRenderer();
|
||||
case CHEVRON_UP: return new ChevronUpShapeRenderer();
|
||||
case CHEVRON_DOWN: return new ChevronDownShapeRenderer();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,59 +0,0 @@
|
|||
package com.github.mikephil.charting.utils;
|
||||
|
||||
import com.github.mikephil.charting.charts.ScatterChart;
|
||||
import com.github.mikephil.charting.renderer.scatter.ChevronDownShapeRenderer;
|
||||
import com.github.mikephil.charting.renderer.scatter.ChevronUpShapeRenderer;
|
||||
import com.github.mikephil.charting.renderer.scatter.CircleShapeRenderer;
|
||||
import com.github.mikephil.charting.renderer.scatter.CrossShapeRenderer;
|
||||
import com.github.mikephil.charting.renderer.scatter.IShapeRenderer;
|
||||
import com.github.mikephil.charting.renderer.scatter.SquareShapeRenderer;
|
||||
import com.github.mikephil.charting.renderer.scatter.TriangleShapeRenderer;
|
||||
import com.github.mikephil.charting.renderer.scatter.XShapeRenderer;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
* Created by Philipp Jahoda on 27/06/16.
|
||||
* Class allowing to determine the corresponding IShapeRenderer for a given ScatterShape.
|
||||
*/
|
||||
public final class ShapeRendererHandler {
|
||||
|
||||
/**
|
||||
* Dictionary of IShapeRenderer which are responsible for drawing custom shapes.
|
||||
* Can add to it your custom shapes.
|
||||
* CustomShapeRenderer Implements IShapeRenderer{}
|
||||
*/
|
||||
protected HashMap<String, IShapeRenderer> shapeRendererList;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public ShapeRendererHandler() {
|
||||
initShapeRenderers();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the corresponding IShapeRenderer for a given ScatterShape.
|
||||
*
|
||||
* @param shape
|
||||
* @return
|
||||
*/
|
||||
public IShapeRenderer getShapeRenderer(ScatterChart.ScatterShape shape) {
|
||||
return shapeRendererList.get(shape.toString());
|
||||
}
|
||||
|
||||
/**
|
||||
* Init default ShapeRenderers.
|
||||
*/
|
||||
protected void initShapeRenderers() {
|
||||
shapeRendererList = new HashMap<>();
|
||||
|
||||
shapeRendererList.put(ScatterChart.ScatterShape.SQUARE.toString(), new SquareShapeRenderer());
|
||||
shapeRendererList.put(ScatterChart.ScatterShape.CIRCLE.toString(), new CircleShapeRenderer());
|
||||
shapeRendererList.put(ScatterChart.ScatterShape.TRIANGLE.toString(), new TriangleShapeRenderer());
|
||||
shapeRendererList.put(ScatterChart.ScatterShape.CROSS.toString(), new CrossShapeRenderer());
|
||||
shapeRendererList.put(ScatterChart.ScatterShape.X.toString(), new XShapeRenderer());
|
||||
shapeRendererList.put(ScatterChart.ScatterShape.CHEVRON_UP.toString(), new ChevronUpShapeRenderer());
|
||||
shapeRendererList.put(ScatterChart.ScatterShape.CHEVRON_DOWN.toString(), new ChevronDownShapeRenderer());
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue