Merge pull request #3 from wajdichamakhi/Custom-Shape-Renderer

Custom shape renderer - Optimisation
This commit is contained in:
wajdichamakhi 2016-06-15 14:28:24 +01:00 committed by GitHub
commit b0a0af8427
4 changed files with 60 additions and 11 deletions

View file

@ -188,10 +188,10 @@ public class ScatterChartActivity extends DemoBase implements OnSeekBarChangeLis
// create a dataset and give it a type
ScatterDataSet set1 = new ScatterDataSet(yVals1, "DS 1");
set1.setScatterShape(ScatterShape.getScatterShapeNames().get(ScatterShape.SQUARE));
set1.setScatterShape(ScatterChart.ScatterShape.SQUARE);
set1.setColor(ColorTemplate.COLORFUL_COLORS[0]);
ScatterDataSet set2 = new ScatterDataSet(yVals2, "DS 2");
set2.setScatterShape(ScatterShape.getScatterShapeNames().get(ScatterShape.CIRCLE));
set2.setScatterShape(ScatterChart.ScatterShape.CIRCLE);
set2.setScatterShapeHoleColor(ColorTemplate.COLORFUL_COLORS[3]);
set2.setScatterShapeHoleRadius(4f);
set2.setColor(ColorTemplate.COLORFUL_COLORS[1]);

View file

@ -11,7 +11,6 @@ import com.github.mikephil.charting.renderer.ShapeRenders.ChevronDownShapeRender
import com.github.mikephil.charting.renderer.ShapeRenders.ChevronUpShapeRenderer;
import com.github.mikephil.charting.renderer.ShapeRenders.CircleShapeRenderer;
import com.github.mikephil.charting.renderer.ShapeRenders.CrossShapeRenderer;
import com.github.mikephil.charting.renderer.ShapeRenders.ScatterShape;
import com.github.mikephil.charting.renderer.ShapeRenders.ShapeRenderer;
import com.github.mikephil.charting.renderer.ShapeRenders.SquareShapeRenderer;
import com.github.mikephil.charting.renderer.ShapeRenders.TriangleShapeRenderer;
@ -38,7 +37,7 @@ public class ScatterChart extends BarLineChartBase<ScatterData> implements Scatt
public static void registerShapeRenderer(String scatterShapeName, ShapeRenderer shapeRenderer) {
if (shapeRendererList == null) {
shapeRendererList = new HashMap<>();
initShapeRenderer();
}
shapeRendererList.put(scatterShapeName, shapeRenderer);
}
@ -54,16 +53,42 @@ public class ScatterChart extends BarLineChartBase<ScatterData> implements Scatt
* Init ShapeRendererList
*/
private static void initShapeRenderer() {
registerShapeRenderer(ScatterShape.getScatterShapeNames().get(ScatterShape.SQUARE), new SquareShapeRenderer());
registerShapeRenderer(ScatterShape.getScatterShapeNames().get(ScatterShape.CIRCLE), new CircleShapeRenderer());
registerShapeRenderer(ScatterShape.getScatterShapeNames().get(ScatterShape.TRIANGLE), new TriangleShapeRenderer());
registerShapeRenderer(ScatterShape.getScatterShapeNames().get(ScatterShape.CROSS), new CrossShapeRenderer());
registerShapeRenderer(ScatterShape.getScatterShapeNames().get(ScatterShape.X), new XShapeRenderer());
registerShapeRenderer(ScatterShape.getScatterShapeNames().get(ScatterShape.CHEVRON_UP), new ChevronUpShapeRenderer());
registerShapeRenderer(ScatterShape.getScatterShapeNames().get(ScatterShape.CHEVRON_DOWN), new ChevronDownShapeRenderer());
shapeRendererList = new HashMap<>();
shapeRendererList.put(com.github.mikephil.charting.renderer.ShapeRenders.ScatterShape.getScatterShapeNames()
.get(com.github.mikephil.charting.renderer.ShapeRenders.ScatterShape.SQUARE), new SquareShapeRenderer());
shapeRendererList.put(com.github.mikephil.charting.renderer.ShapeRenders.ScatterShape.getScatterShapeNames()
.get(com.github.mikephil.charting.renderer.ShapeRenders.ScatterShape.CIRCLE), new CircleShapeRenderer());
shapeRendererList.put(com.github.mikephil.charting.renderer.ShapeRenders.ScatterShape.getScatterShapeNames()
.get(com.github.mikephil.charting.renderer.ShapeRenders.ScatterShape.TRIANGLE), new TriangleShapeRenderer());
shapeRendererList.put(com.github.mikephil.charting.renderer.ShapeRenders.ScatterShape.getScatterShapeNames()
.get(com.github.mikephil.charting.renderer.ShapeRenders.ScatterShape.CROSS), new CrossShapeRenderer());
shapeRendererList.put(com.github.mikephil.charting.renderer.ShapeRenders.ScatterShape.getScatterShapeNames()
.get(com.github.mikephil.charting.renderer.ShapeRenders.ScatterShape.X), new XShapeRenderer());
shapeRendererList.put(com.github.mikephil.charting.renderer.ShapeRenders.ScatterShape.getScatterShapeNames()
.get(com.github.mikephil.charting.renderer.ShapeRenders.ScatterShape.CHEVRON_UP), new ChevronUpShapeRenderer());
shapeRendererList.put(com.github.mikephil.charting.renderer.ShapeRenders.ScatterShape.getScatterShapeNames()
.get(com.github.mikephil.charting.renderer.ShapeRenders.ScatterShape.CHEVRON_DOWN), new ChevronDownShapeRenderer());
}
/**
* enum that defines the shape that is drawn where the values are
*/
public enum ScatterShape {
SQUARE, CIRCLE, TRIANGLE, CROSS, X,
}
/**
* Returns all possible predefined ScatterShapes.
*
* @return ScatterShape to array
*/
public static ScatterShape[] getAllPossibleShapes() {
return new ScatterShape[] {
ScatterShape.SQUARE, ScatterShape.CIRCLE, ScatterShape.TRIANGLE, ScatterShape.CROSS
};
}
public ScatterChart(Context context) {
super(context);
}

View file

@ -1,6 +1,7 @@
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.ShapeRenders.ScatterShape;
import com.github.mikephil.charting.utils.ColorTemplate;
@ -79,6 +80,17 @@ public class ScatterDataSet extends LineScatterCandleRadarDataSet<Entry> impleme
return mShapeSize;
}
/**
* Sets the shape that is drawn on the position where the values are at.
*
* @param shape
*/
public void setScatterShape(ScatterChart.ScatterShape shape) {
mScatterShape = shape.toString();
}
/**
* Sets the shape that is drawn on the position where the values are at.
*

View file

@ -1,5 +1,6 @@
package com.github.mikephil.charting.data.realm.implementation;
import com.github.mikephil.charting.charts.ScatterChart;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.realm.base.RealmLineScatterCandleRadarDataSet;
import com.github.mikephil.charting.interfaces.datasets.IScatterDataSet;
@ -80,6 +81,17 @@ public class RealmScatterDataSet<T extends RealmObject> extends RealmLineScatter
return mShapeSize;
}
/**
* Sets the shape that is drawn on the position where the values are at.
*
* @param shape
*/
public void setScatterShape(ScatterChart.ScatterShape shape) {
mScatterShape = shape.toString();
}
/**
* Sets the shape that is drawn on the position where the values are at. If
* "CUSTOM" is chosen, you need to call setCustomScatterShape(...) and