Skip to content

Commit 81efb42

Browse files
committed
Fix cubic draw
1 parent 252e547 commit 81efb42

File tree

1 file changed

+33
-35
lines changed

1 file changed

+33
-35
lines changed

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

Lines changed: 33 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -110,26 +110,24 @@ open class LineChartRenderer(
110110
cubicPath.reset()
111111

112112
if (xBounds.range >= 1) {
113-
var prev = dataSet.getEntryForIndex(xBounds.min)
114-
val cur = prev
113+
var prev = dataSet.getEntryForIndex(xBounds.min)!!
114+
var cur = prev
115115

116-
cur?.let {
117-
// let the spline start
118-
cubicPath.moveTo(it.x, it.y * phaseY)
116+
// let the spline start
117+
cubicPath.moveTo(cur.x, cur.y * phaseY)
119118

120-
for (j in xBounds.min + 1..xBounds.range + xBounds.min) {
121-
prev = it
122-
dataSet.getEntryForIndex(j)?.let { cur ->
119+
for (j in xBounds.min + 1..xBounds.range + xBounds.min) {
120+
prev = cur
121+
cur = dataSet.getEntryForIndex(j)!!
123122

124-
val cpx = ((prev.x) + (cur.x - prev.x) / 2.0f)
123+
val cpx = ((prev.x)
124+
+ (cur.x - prev.x) / 2.0f)
125125

126-
cubicPath.cubicTo(
127-
cpx, prev.y * phaseY,
128-
cpx, cur.y * phaseY,
129-
cur.x, cur.y * phaseY
130-
)
131-
}
132-
}
126+
cubicPath.cubicTo(
127+
cpx, prev.y * phaseY,
128+
cpx, cur.y * phaseY,
129+
cur.x, cur.y * phaseY
130+
)
133131
}
134132
}
135133

@@ -181,29 +179,29 @@ open class LineChartRenderer(
181179
var next = cur
182180
var nextIndex = -1
183181

184-
cur?.let {
185-
// let the spline start
186-
cubicPath.moveTo(it.x, it.y * phaseY)
182+
if (cur == null) return
187183

188-
for (j in xBounds.min + 1..xBounds.range + xBounds.min) {
189-
prevPrev = prev
190-
prev = it
191-
cur = if (nextIndex == j) next else dataSet.getEntryForIndex(j)!!
184+
// let the spline start
185+
cubicPath.moveTo(cur.x, cur.y * phaseY)
192186

193-
nextIndex = if (j + 1 < dataSet.entryCount) j + 1 else j
194-
next = dataSet.getEntryForIndex(nextIndex)!!
187+
for (j in xBounds.min + 1..xBounds.range + xBounds.min) {
188+
prevPrev = prev
189+
prev = cur
190+
cur = if (nextIndex == j) next else dataSet.getEntryForIndex(j)
195191

196-
prevDx = (cur!!.x - prevPrev!!.x) * intensity
197-
prevDy = (cur.y - prevPrev.y) * intensity
198-
curDx = (next.x - prev.x) * intensity
199-
curDy = (next.y - prev.y) * intensity
192+
nextIndex = if (j + 1 < dataSet.entryCount) j + 1 else j
193+
next = dataSet.getEntryForIndex(nextIndex)!!
200194

201-
cubicPath.cubicTo(
202-
prev.x + prevDx, (prev.y + prevDy) * phaseY,
203-
cur.x - curDx,
204-
(cur.y - curDy) * phaseY, cur.x, cur.y * phaseY
205-
)
206-
}
195+
prevDx = (cur!!.x - prevPrev!!.x) * intensity
196+
prevDy = (cur.y - prevPrev.y) * intensity
197+
curDx = (next.x - prev!!.x) * intensity
198+
curDy = (next.y - prev.y) * intensity
199+
200+
cubicPath.cubicTo(
201+
prev.x + prevDx, (prev.y + prevDy) * phaseY,
202+
cur.x - curDx,
203+
(cur.y - curDy) * phaseY, cur.x, cur.y * phaseY
204+
)
207205
}
208206
}
209207

0 commit comments

Comments
 (0)