@@ -228,28 +228,28 @@ open class YAxisRenderer(
228228 * Draws the zero line.
229229 */
230230 protected open fun drawZeroLine (canvas : Canvas ) {
231- val clipRestoreCount = canvas.save()
232- zeroLineClippingRect.set(viewPortHandler.contentRect)
233- zeroLineClippingRect.inset(0f , - yAxis.zeroLineWidth)
234- canvas.clipRect(zeroLineClippingRect)
231+ canvas.withSave {
232+ zeroLineClippingRect.set(viewPortHandler.contentRect)
233+ zeroLineClippingRect.inset(0f , - yAxis.zeroLineWidth)
234+ canvas.clipRect(zeroLineClippingRect)
235235
236- // draw zero line
237- val pos = transformer?.getPixelForValues(0f , 0f )
238- pos?.let {
239- zeroLinePaint.color = yAxis.zeroLineColor
240- zeroLinePaint.strokeWidth = yAxis.zeroLineWidth
236+ // draw zero line
237+ val pos = transformer?.getPixelForValues(0f , 0f )
238+ pos?.let {
239+ zeroLinePaint.color = yAxis.zeroLineColor
240+ zeroLinePaint.strokeWidth = yAxis.zeroLineWidth
241241
242- val zeroLinePath = drawZeroLinePath
243- zeroLinePath.reset()
242+ val zeroLinePath = drawZeroLinePath
243+ zeroLinePath.reset()
244244
245- zeroLinePath.moveTo(viewPortHandler.contentLeft(), it.y.toFloat())
246- zeroLinePath.lineTo(viewPortHandler.contentRight(), it.y.toFloat())
245+ zeroLinePath.moveTo(viewPortHandler.contentLeft(), it.y.toFloat())
246+ zeroLinePath.lineTo(viewPortHandler.contentRight(), it.y.toFloat())
247247
248- // draw a path because lines don't support dashing on lower android versions
249- canvas.drawPath(zeroLinePath, zeroLinePaint)
250- }
248+ // draw a path because lines don't support dashing on lower android versions
249+ canvas.drawPath(zeroLinePath, zeroLinePaint)
250+ }
251251
252- canvas.restoreToCount(clipRestoreCount)
252+ }
253253 }
254254
255255 protected var renderLimitRanges: Path = Path ()
@@ -384,105 +384,105 @@ open class YAxisRenderer(
384384 if (! limitRange.isEnabled)
385385 continue
386386
387- val clipRestoreCount = canvas.save()
388- limitLineClippingRect.set(viewPortHandler.contentRect)
389- limitLineClippingRect.inset(0f , - limitRange.lineWidth)
390- canvas.clipRect(limitLineClippingRect)
391-
392- limitRangePaint.style = Paint .Style .STROKE
393- limitRangePaint.color = limitRange.lineColor
394- limitRangePaint.strokeWidth = limitRange.lineWidth
395- limitRangePaint.pathEffect = limitRange.dashPathEffect
396-
397- limitRangePaintFill.style = Paint .Style .FILL
398- limitRangePaintFill.color = limitRange.rangeColor
399-
400- ptsr[1 ] = limitRange.limit.high
401- ptsr2[1 ] = limitRange.limit.low
402-
403- transformer?.pointValuesToPixel(ptsr)
404- transformer?.pointValuesToPixel(ptsr2)
405-
406- limitRangePathFill.moveTo(viewPortHandler.contentLeft(), ptsr[1 ])
407- limitRangePathFill.addRect(
408- viewPortHandler.contentLeft(),
409- ptsr[1 ],
410- viewPortHandler.contentRight(),
411- ptsr2[1 ],
412- Path .Direction .CW
413- )
414- canvas.drawPath(limitRangePathFill, limitRangePaintFill)
415- limitRangePathFill.reset()
416-
417- if (limitRange.lineWidth > 0 ) {
418- limitRangePath.moveTo(viewPortHandler.contentLeft(), ptsr[1 ])
419- limitRangePath.lineTo(viewPortHandler.contentRight(), ptsr[1 ])
420- canvas.drawPath(limitRangePath, limitRangePaint)
421-
422- limitRangePath.moveTo(viewPortHandler.contentLeft(), ptsr2[1 ])
423- limitRangePath.lineTo(viewPortHandler.contentRight(), ptsr2[1 ])
424- canvas.drawPath(limitRangePath, limitRangePaint)
425- }
387+ canvas.withSave {
388+ limitLineClippingRect.set(viewPortHandler.contentRect)
389+ limitLineClippingRect.inset(0f , - limitRange.lineWidth)
390+ canvas.clipRect(limitLineClippingRect)
426391
427- limitRangePath.reset()
428-
429- val label = limitRange.label
430-
431- // if drawing the limit-value label is enabled
432- if (label != null && label != " " ) {
433- limitRangePaint.style = limitRange.textStyle
434- limitRangePaint.pathEffect = null
435- limitRangePaint.color = limitRange.textColor
436- limitRangePaint.typeface = limitRange.typeface
437- limitRangePaint.strokeWidth = 0.5f
438- limitRangePaint.textSize = limitRange.textSize
439-
440- val labelLineHeight = limitRangePaint.calcTextHeight(label).toFloat()
441- val xOffset = 4f .convertDpToPixel() + limitRange.xOffset
442- val yOffset = limitRange.lineWidth + labelLineHeight + limitRange.yOffset
443-
444- val position = limitRange.labelPosition
445-
446- when (position) {
447- LimitLabelPosition .RIGHT_TOP -> {
448- limitRangePaint.textAlign = Align .RIGHT
449- canvas.drawText(
450- label,
451- viewPortHandler.contentRight() - xOffset,
452- ptsr[1 ] - yOffset + labelLineHeight, limitRangePaint
453- )
454- }
392+ limitRangePaint.style = Paint .Style .STROKE
393+ limitRangePaint.color = limitRange.lineColor
394+ limitRangePaint.strokeWidth = limitRange.lineWidth
395+ limitRangePaint.pathEffect = limitRange.dashPathEffect
396+
397+ limitRangePaintFill.style = Paint .Style .FILL
398+ limitRangePaintFill.color = limitRange.rangeColor
399+
400+ ptsr[1 ] = limitRange.limit.high
401+ ptsr2[1 ] = limitRange.limit.low
402+
403+ transformer?.pointValuesToPixel(ptsr)
404+ transformer?.pointValuesToPixel(ptsr2)
405+
406+ limitRangePathFill.moveTo(viewPortHandler.contentLeft(), ptsr[1 ])
407+ limitRangePathFill.addRect(
408+ viewPortHandler.contentLeft(),
409+ ptsr[1 ],
410+ viewPortHandler.contentRight(),
411+ ptsr2[1 ],
412+ Path .Direction .CW
413+ )
414+ canvas.drawPath(limitRangePathFill, limitRangePaintFill)
415+ limitRangePathFill.reset()
416+
417+ if (limitRange.lineWidth > 0 ) {
418+ limitRangePath.moveTo(viewPortHandler.contentLeft(), ptsr[1 ])
419+ limitRangePath.lineTo(viewPortHandler.contentRight(), ptsr[1 ])
420+ canvas.drawPath(limitRangePath, limitRangePaint)
421+
422+ limitRangePath.moveTo(viewPortHandler.contentLeft(), ptsr2[1 ])
423+ limitRangePath.lineTo(viewPortHandler.contentRight(), ptsr2[1 ])
424+ canvas.drawPath(limitRangePath, limitRangePaint)
425+ }
455426
456- LimitLabelPosition .RIGHT_BOTTOM -> {
457- limitRangePaint.textAlign = Align .RIGHT
458- canvas.drawText(
459- label,
460- viewPortHandler.contentRight() - xOffset,
461- ptsr[1 ] + yOffset, limitRangePaint
462- )
463- }
427+ limitRangePath.reset()
464428
465- LimitLabelPosition .LEFT_TOP -> {
466- limitRangePaint.textAlign = Align .LEFT
467- canvas.drawText(
468- label,
469- viewPortHandler.contentLeft() + xOffset,
470- ptsr[1 ] - yOffset + labelLineHeight, limitRangePaint
471- )
472- }
429+ val label = limitRange.label
430+
431+ // if drawing the limit-value label is enabled
432+ if (label != null && label != " " ) {
433+ limitRangePaint.style = limitRange.textStyle
434+ limitRangePaint.pathEffect = null
435+ limitRangePaint.color = limitRange.textColor
436+ limitRangePaint.typeface = limitRange.typeface
437+ limitRangePaint.strokeWidth = 0.5f
438+ limitRangePaint.textSize = limitRange.textSize
439+
440+ val labelLineHeight = limitRangePaint.calcTextHeight(label).toFloat()
441+ val xOffset = 4f .convertDpToPixel() + limitRange.xOffset
442+ val yOffset = limitRange.lineWidth + labelLineHeight + limitRange.yOffset
443+
444+ val position = limitRange.labelPosition
445+
446+ when (position) {
447+ LimitLabelPosition .RIGHT_TOP -> {
448+ limitRangePaint.textAlign = Align .RIGHT
449+ canvas.drawText(
450+ label,
451+ viewPortHandler.contentRight() - xOffset,
452+ ptsr[1 ] - yOffset + labelLineHeight, limitRangePaint
453+ )
454+ }
455+
456+ LimitLabelPosition .RIGHT_BOTTOM -> {
457+ limitRangePaint.textAlign = Align .RIGHT
458+ canvas.drawText(
459+ label,
460+ viewPortHandler.contentRight() - xOffset,
461+ ptsr[1 ] + yOffset, limitRangePaint
462+ )
463+ }
473464
474- else -> {
475- limitRangePaint.textAlign = Align .LEFT
476- canvas.drawText(
477- label,
478- viewPortHandler.offsetLeft() + xOffset,
479- ptsr[1 ] + yOffset, limitRangePaint
480- )
465+ LimitLabelPosition .LEFT_TOP -> {
466+ limitRangePaint.textAlign = Align .LEFT
467+ canvas.drawText(
468+ label,
469+ viewPortHandler.contentLeft() + xOffset,
470+ ptsr[1 ] - yOffset + labelLineHeight, limitRangePaint
471+ )
472+ }
473+
474+ else -> {
475+ limitRangePaint.textAlign = Align .LEFT
476+ canvas.drawText(
477+ label,
478+ viewPortHandler.offsetLeft() + xOffset,
479+ ptsr[1 ] + yOffset, limitRangePaint
480+ )
481+ }
481482 }
482483 }
483- }
484484
485- canvas.restoreToCount(clipRestoreCount)
485+ }
486486 }
487487 }
488488 }
0 commit comments