Skip to content

Commit 87193a3

Browse files
committed
Add extra control point when rendering cubic bezier out of range
1 parent b59cf56 commit 87193a3

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

MPChartLib/src/com/github/mikephil/charting/renderer/LineChartRenderer.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import com.github.mikephil.charting.data.DataSet;
1414
import com.github.mikephil.charting.data.Entry;
1515
import com.github.mikephil.charting.data.LineData;
16+
import com.github.mikephil.charting.data.LineDataSet;
1617
import com.github.mikephil.charting.highlight.Highlight;
1718
import com.github.mikephil.charting.interfaces.dataprovider.LineDataProvider;
1819
import com.github.mikephil.charting.interfaces.datasets.ILineDataSet;
@@ -205,7 +206,7 @@ protected void drawCubicBezier(Canvas c, ILineDataSet dataSet) {
205206
Entry entryTo = dataSet.getEntryForXIndex(mMaxX, DataSet.Rounding.UP);
206207

207208
int diff = (entryFrom == entryTo) ? 1 : 0;
208-
int minx = Math.max(dataSet.getEntryIndex(entryFrom) - diff, 0);
209+
int minx = Math.max(dataSet.getEntryIndex(entryFrom) - diff - 1, 0);
209210
int maxx = Math.min(Math.max(minx + 2, dataSet.getEntryIndex(entryTo) + 1), entryCount);
210211

211212
float phaseX = Math.max(0.f, Math.min(1.f, mAnimator.getPhaseX()));
@@ -563,6 +564,9 @@ public void drawValues(Canvas c) {
563564
Entry entryTo = dataSet.getEntryForXIndex(mMaxX, DataSet.Rounding.UP);
564565

565566
int diff = (entryFrom == entryTo) ? 1 : 0;
567+
if (dataSet.getMode() == LineDataSet.Mode.CUBIC_BEZIER)
568+
diff += 1;
569+
566570
int minx = Math.max(dataSet.getEntryIndex(entryFrom) - diff, 0);
567571
int maxx = Math.min(Math.max(minx + 2, dataSet.getEntryIndex(entryTo) + 1), entryCount);
568572

@@ -626,6 +630,9 @@ protected void drawCircles(Canvas c) {
626630
Entry entryTo = dataSet.getEntryForXIndex(mMaxX, DataSet.Rounding.UP);
627631

628632
int diff = (entryFrom == entryTo) ? 1 : 0;
633+
if (dataSet.getMode() == LineDataSet.Mode.CUBIC_BEZIER)
634+
diff += 1;
635+
629636
int minx = Math.max(dataSet.getEntryIndex(entryFrom) - diff, 0);
630637
int maxx = Math.min(Math.max(minx + 2, dataSet.getEntryIndex(entryTo) + 1), entryCount);
631638

0 commit comments

Comments
 (0)