package com.github.mikephil.charting.renderer.scatter;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import com.github.mikephil.charting.interfaces.datasets.IScatterDataSet;
import com.github.mikephil.charting.utils.ColorTemplate;
import com.github.mikephil.charting.utils.Utils;
import com.github.mikephil.charting.utils.ViewPortHandler;
/**
* Created by wajdic on 15/06/2016.
* Created at Time 09:08
*/
public class TriangleShapeRenderer implements IShapeRenderer
{
protected Path mTrianglePathBuffer = new Path();
@Override
public void renderShape(Canvas c, IScatterDataSet dataSet, ViewPortHandler viewPortHandler,
float posX, float posY, Paint renderPaint) {
final float shapeSize = dataSet.getScatterShapeSize();
final float shapeHalf = shapeSize / 2f;
final float shapeHoleSizeHalf = Utils.convertDpToPixel(dataSet.getScatterShapeHoleRadius());
final float shapeHoleSize = shapeHoleSizeHalf * 2.f;
final float shapeStrokeSize = (shapeSize - shapeHoleSize) / 2.f;
final int shapeHoleColor = dataSet.getScatterShapeHoleColor();
renderPaint.setStyle(Paint.Style.FILL);
// create a triangle path
Path tri = mTrianglePathBuffer;
tri.reset();
tri.moveTo(posX, posY - shapeHalf);
tri.lineTo(posX + shapeHalf, posY + shapeHalf);
tri.lineTo(posX - shapeHalf, posY + shapeHalf);
if (shapeSize > 0.0) {
tri.lineTo(posX, posY - shapeHalf);
tri.moveTo(posX - shapeHalf + shapeStrokeSize,
posY + shapeHalf - shapeStrokeSize);
tri.lineTo(posX + shapeHalf - shapeStrokeSize,
posY + shapeHalf - shapeStrokeSize);
tri.lineTo(posX,
posY - shapeHalf + shapeStrokeSize);
tri.lineTo(posX - shapeHalf + shapeStrokeSize,
posY + shapeHalf - shapeStrokeSize);
}
tri.close();
c.drawPath(tri, renderPaint);
tri.reset();
if (shapeSize > 0.0 &&
shapeHoleColor != ColorTemplate.COLOR_NONE) {
renderPaint.setColor(shapeHoleColor);
tri.moveTo(posX,
posY - shapeHalf + shapeStrokeSize);
tri.lineTo(posX + shapeHalf - shapeStrokeSize,
posY + shapeHalf - shapeStrokeSize);
tri.lineTo(posX - shapeHalf + shapeStrokeSize,
posY + shapeHalf - shapeStrokeSize);
tri.close();
c.drawPath(tri, renderPaint);
tri.reset();
}
}
}