Add option for using slice color as value line color
Fixes: #3897
diff --git a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/PiePolylineChartActivity.java b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/PiePolylineChartActivity.java
index 49fc495..e0d3063 100644
--- a/MPChartExample/src/com/xxmassdeveloper/mpchartexample/PiePolylineChartActivity.java
+++ b/MPChartExample/src/com/xxmassdeveloper/mpchartexample/PiePolylineChartActivity.java
@@ -19,7 +19,6 @@
import com.github.mikephil.charting.animation.Easing;
import com.github.mikephil.charting.charts.PieChart;
import com.github.mikephil.charting.components.Legend;
-import com.github.mikephil.charting.components.Legend.LegendPosition;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.PieData;
import com.github.mikephil.charting.data.PieDataSet;
@@ -226,6 +225,8 @@
dataSet.setValueLinePart1OffsetPercentage(80.f);
dataSet.setValueLinePart1Length(0.2f);
dataSet.setValueLinePart2Length(0.4f);
+ //dataSet.setUsingSliceColorAsValueLineColor(true);
+
//dataSet.setXValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE);
dataSet.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE);
diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/data/PieDataSet.java b/MPChartLib/src/main/java/com/github/mikephil/charting/data/PieDataSet.java
index 010cfbd..98b434d 100644
--- a/MPChartLib/src/main/java/com/github/mikephil/charting/data/PieDataSet.java
+++ b/MPChartLib/src/main/java/com/github/mikephil/charting/data/PieDataSet.java
@@ -18,6 +18,7 @@
private ValuePosition mXValuePosition = ValuePosition.INSIDE_SLICE;
private ValuePosition mYValuePosition = ValuePosition.INSIDE_SLICE;
+ private boolean mUsingSliceColorAsValueLineColor = false;
private int mValueLineColor = 0xff000000;
private float mValueLineWidth = 1.0f;
private float mValueLinePart1OffsetPercentage = 75.f;
@@ -134,6 +135,18 @@
this.mYValuePosition = yValuePosition;
}
+ /**
+ * When valuePosition is OutsideSlice, use slice colors as line color if true
+ * */
+ @Override
+ public boolean isUsingSliceColorAsValueLineColor() {
+ return mUsingSliceColorAsValueLineColor;
+ }
+
+ public void setUsingSliceColorAsValueLineColor(boolean usingSliceColorAsValueLineColor) {
+ this.mUsingSliceColorAsValueLineColor = usingSliceColorAsValueLineColor;
+ }
+
/** When valuePosition is OutsideSlice, indicates line color */
@Override
public int getValueLineColor()
@@ -141,8 +154,7 @@
return mValueLineColor;
}
- public void setValueLineColor(int valueLineColor)
- {
+ public void setValueLineColor(int valueLineColor) {
this.mValueLineColor = valueLineColor;
}
diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/interfaces/datasets/IPieDataSet.java b/MPChartLib/src/main/java/com/github/mikephil/charting/interfaces/datasets/IPieDataSet.java
index a53a964..1698ef7 100644
--- a/MPChartLib/src/main/java/com/github/mikephil/charting/interfaces/datasets/IPieDataSet.java
+++ b/MPChartLib/src/main/java/com/github/mikephil/charting/interfaces/datasets/IPieDataSet.java
@@ -1,6 +1,5 @@
package com.github.mikephil.charting.interfaces.datasets;
-import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.PieDataSet;
import com.github.mikephil.charting.data.PieEntry;
@@ -37,6 +36,11 @@
PieDataSet.ValuePosition getYValuePosition();
/**
+ * When valuePosition is OutsideSlice, use slice colors as line color if true
+ * */
+ boolean isUsingSliceColorAsValueLineColor();
+
+ /**
* When valuePosition is OutsideSlice, indicates line color
* */
int getValueLineColor();
diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/PieChartRenderer.java b/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/PieChartRenderer.java
index be72a08..495ae72 100644
--- a/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/PieChartRenderer.java
+++ b/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/PieChartRenderer.java
@@ -536,6 +536,11 @@
}
if (dataSet.getValueLineColor() != ColorTemplate.COLOR_NONE) {
+
+ if (dataSet.isUsingSliceColorAsValueLineColor()) {
+ mValueLinePaint.setColor(dataSet.getColor(j));
+ }
+
c.drawLine(pt0x, pt0y, pt1x, pt1y, mValueLinePaint);
c.drawLine(pt1x, pt1y, pt2x, pt2y, mValueLinePaint);
}