From 7770d3f20f207cab61ee49660f0c0667d67d82f4 Mon Sep 17 00:00:00 2001 From: Hannes Achleitner Date: Sat, 27 Dec 2025 10:00:50 +0100 Subject: [PATCH] Use other Canvas function --- .../charting/renderer/BarChartRenderer.kt | 11 +++----- .../charting/renderer/BubbleChartRenderer.kt | 5 ++-- .../renderer/CandleStickChartRenderer.kt | 5 ++-- .../renderer/HorizontalBarChartRenderer.kt | 11 +++----- .../charting/renderer/LineChartRenderer.kt | 5 ++-- .../charting/renderer/PieChartRenderer.kt | 5 ++-- .../charting/renderer/RadarChartRenderer.kt | 5 ++-- .../charting/renderer/ScatterChartRenderer.kt | 5 ++-- .../info/appdev/charting/utils/CanvasUtils.kt | 4 +-- .../info/appdev/charting/utils/Utils.kt | 26 ------------------- 10 files changed, 23 insertions(+), 59 deletions(-) diff --git a/chartLib/src/main/kotlin/info/appdev/charting/renderer/BarChartRenderer.kt b/chartLib/src/main/kotlin/info/appdev/charting/renderer/BarChartRenderer.kt index 34aca9426..91b44ab76 100644 --- a/chartLib/src/main/kotlin/info/appdev/charting/renderer/BarChartRenderer.kt +++ b/chartLib/src/main/kotlin/info/appdev/charting/renderer/BarChartRenderer.kt @@ -12,10 +12,10 @@ import info.appdev.charting.interfaces.datasets.IBarDataSet import info.appdev.charting.utils.Fill import info.appdev.charting.utils.PointF import info.appdev.charting.utils.Transformer -import info.appdev.charting.utils.Utils import info.appdev.charting.utils.ViewPortHandler import info.appdev.charting.utils.calcTextHeight import info.appdev.charting.utils.convertDpToPixel +import info.appdev.charting.utils.drawImage import kotlin.math.ceil import kotlin.math.min @@ -332,8 +332,7 @@ open class BarChartRenderer( py += iconsOffset.y icon?.let { - Utils.drawImage( - canvas, + canvas.drawImage( it, px.toInt(), py.toInt() @@ -392,8 +391,7 @@ open class BarChartRenderer( py += iconsOffset.y icon?.let { - Utils.drawImage( - canvas, + canvas.drawImage( it, px.toInt(), py.toInt() @@ -471,8 +469,7 @@ open class BarChartRenderer( val icon = barEntry.icon icon?.let { - Utils.drawImage( - canvas, + canvas.drawImage( it, (x + iconsOffset.x).toInt(), (y + iconsOffset.y).toInt() diff --git a/chartLib/src/main/kotlin/info/appdev/charting/renderer/BubbleChartRenderer.kt b/chartLib/src/main/kotlin/info/appdev/charting/renderer/BubbleChartRenderer.kt index ca057a372..ef44901b1 100644 --- a/chartLib/src/main/kotlin/info/appdev/charting/renderer/BubbleChartRenderer.kt +++ b/chartLib/src/main/kotlin/info/appdev/charting/renderer/BubbleChartRenderer.kt @@ -8,10 +8,10 @@ import info.appdev.charting.highlight.Highlight import info.appdev.charting.interfaces.dataprovider.BubbleDataProvider import info.appdev.charting.interfaces.datasets.IBubbleDataSet import info.appdev.charting.utils.PointF -import info.appdev.charting.utils.Utils import info.appdev.charting.utils.ViewPortHandler import info.appdev.charting.utils.calcTextHeight import info.appdev.charting.utils.convertDpToPixel +import info.appdev.charting.utils.drawImage import kotlin.math.abs import kotlin.math.max import kotlin.math.min @@ -162,8 +162,7 @@ open class BubbleChartRenderer( val icon = bubbleEntry.icon icon?.let { ico -> - Utils.drawImage( - canvas, + canvas.drawImage( ico, (x + iconsOffset.x).toInt(), (y + iconsOffset.y).toInt() diff --git a/chartLib/src/main/kotlin/info/appdev/charting/renderer/CandleStickChartRenderer.kt b/chartLib/src/main/kotlin/info/appdev/charting/renderer/CandleStickChartRenderer.kt index 6ed68a9aa..9d38d1530 100644 --- a/chartLib/src/main/kotlin/info/appdev/charting/renderer/CandleStickChartRenderer.kt +++ b/chartLib/src/main/kotlin/info/appdev/charting/renderer/CandleStickChartRenderer.kt @@ -8,9 +8,9 @@ import info.appdev.charting.interfaces.dataprovider.CandleDataProvider import info.appdev.charting.interfaces.datasets.ICandleDataSet import info.appdev.charting.utils.ColorTemplate import info.appdev.charting.utils.PointF -import info.appdev.charting.utils.Utils import info.appdev.charting.utils.ViewPortHandler import info.appdev.charting.utils.convertDpToPixel +import info.appdev.charting.utils.drawImage open class CandleStickChartRenderer( var dataProvider: CandleDataProvider, @@ -269,8 +269,7 @@ open class CandleStickChartRenderer( val icon = entry.icon icon?.let { ico -> - Utils.drawImage( - canvas, + canvas.drawImage( ico, (x + iconsOffset.x).toInt(), (y + iconsOffset.y).toInt() diff --git a/chartLib/src/main/kotlin/info/appdev/charting/renderer/HorizontalBarChartRenderer.kt b/chartLib/src/main/kotlin/info/appdev/charting/renderer/HorizontalBarChartRenderer.kt index 29f237822..a540d2ea3 100644 --- a/chartLib/src/main/kotlin/info/appdev/charting/renderer/HorizontalBarChartRenderer.kt +++ b/chartLib/src/main/kotlin/info/appdev/charting/renderer/HorizontalBarChartRenderer.kt @@ -12,11 +12,11 @@ import info.appdev.charting.interfaces.datasets.IBarDataSet import info.appdev.charting.utils.Fill import info.appdev.charting.utils.PointF import info.appdev.charting.utils.Transformer -import info.appdev.charting.utils.Utils import info.appdev.charting.utils.ViewPortHandler import info.appdev.charting.utils.calcTextHeight import info.appdev.charting.utils.calcTextWidth import info.appdev.charting.utils.convertDpToPixel +import info.appdev.charting.utils.drawImage import kotlin.math.ceil import kotlin.math.min @@ -256,8 +256,7 @@ open class HorizontalBarChartRenderer( py += iconsOffset.y icon?.let { - Utils.drawImage( - canvas, + canvas.drawImage( it, px.toInt(), py.toInt() @@ -332,8 +331,7 @@ open class HorizontalBarChartRenderer( py += iconsOffset.y icon?.let { myIcon -> - Utils.drawImage( - canvas, + canvas.drawImage( myIcon, px.toInt(), py.toInt() @@ -417,8 +415,7 @@ open class HorizontalBarChartRenderer( val icon = it.icon icon?.let { myIcon -> - Utils.drawImage( - canvas, + canvas.drawImage( myIcon, (x + iconsOffset.x).toInt(), (y + iconsOffset.y).toInt() diff --git a/chartLib/src/main/kotlin/info/appdev/charting/renderer/LineChartRenderer.kt b/chartLib/src/main/kotlin/info/appdev/charting/renderer/LineChartRenderer.kt index 162e80bdf..d5713186d 100644 --- a/chartLib/src/main/kotlin/info/appdev/charting/renderer/LineChartRenderer.kt +++ b/chartLib/src/main/kotlin/info/appdev/charting/renderer/LineChartRenderer.kt @@ -16,9 +16,9 @@ import info.appdev.charting.interfaces.datasets.ILineDataSet import info.appdev.charting.utils.ColorTemplate import info.appdev.charting.utils.PointF import info.appdev.charting.utils.Transformer -import info.appdev.charting.utils.Utils import info.appdev.charting.utils.ViewPortHandler import info.appdev.charting.utils.convertDpToPixel +import info.appdev.charting.utils.drawImage import java.lang.ref.WeakReference import kotlin.math.max import kotlin.math.min @@ -533,8 +533,7 @@ open class LineChartRenderer( val icon = entry.icon icon?.let { - Utils.drawImage( - canvas, + canvas.drawImage( it, (x + iconsOffset.x).toInt(), (y + iconsOffset.y).toInt() diff --git a/chartLib/src/main/kotlin/info/appdev/charting/renderer/PieChartRenderer.kt b/chartLib/src/main/kotlin/info/appdev/charting/renderer/PieChartRenderer.kt index bd1ca6f41..795febf7a 100644 --- a/chartLib/src/main/kotlin/info/appdev/charting/renderer/PieChartRenderer.kt +++ b/chartLib/src/main/kotlin/info/appdev/charting/renderer/PieChartRenderer.kt @@ -23,6 +23,7 @@ import info.appdev.charting.utils.Utils import info.appdev.charting.utils.ViewPortHandler import info.appdev.charting.utils.calcTextHeight import info.appdev.charting.utils.convertDpToPixel +import info.appdev.charting.utils.drawImage import java.lang.ref.WeakReference import kotlin.math.abs import kotlin.math.ceil @@ -571,8 +572,8 @@ open class PieChartRenderer( y += iconsOffset.x icon?.let { - Utils.drawImage( - this, it, x.toInt(), y.toInt() + this.drawImage( + it, x.toInt(), y.toInt() ) } } diff --git a/chartLib/src/main/kotlin/info/appdev/charting/renderer/RadarChartRenderer.kt b/chartLib/src/main/kotlin/info/appdev/charting/renderer/RadarChartRenderer.kt index 4a4aa4fd4..b72f6e5a7 100644 --- a/chartLib/src/main/kotlin/info/appdev/charting/renderer/RadarChartRenderer.kt +++ b/chartLib/src/main/kotlin/info/appdev/charting/renderer/RadarChartRenderer.kt @@ -11,10 +11,10 @@ import info.appdev.charting.highlight.Highlight import info.appdev.charting.interfaces.datasets.IRadarDataSet import info.appdev.charting.utils.ColorTemplate import info.appdev.charting.utils.PointF -import info.appdev.charting.utils.Utils import info.appdev.charting.utils.ViewPortHandler import info.appdev.charting.utils.convertDpToPixel import info.appdev.charting.utils.getPosition +import info.appdev.charting.utils.drawImage open class RadarChartRenderer( protected var chart: RadarChart, @@ -180,8 +180,7 @@ open class RadarChartRenderer( pIcon.y += iconsOffset.x icon?.let { - Utils.drawImage( - canvas, + canvas.drawImage( it, pIcon.x.toInt(), pIcon.y.toInt() diff --git a/chartLib/src/main/kotlin/info/appdev/charting/renderer/ScatterChartRenderer.kt b/chartLib/src/main/kotlin/info/appdev/charting/renderer/ScatterChartRenderer.kt index 6c241a546..85ac4674a 100644 --- a/chartLib/src/main/kotlin/info/appdev/charting/renderer/ScatterChartRenderer.kt +++ b/chartLib/src/main/kotlin/info/appdev/charting/renderer/ScatterChartRenderer.kt @@ -6,9 +6,9 @@ import info.appdev.charting.highlight.Highlight import info.appdev.charting.interfaces.dataprovider.ScatterDataProvider import info.appdev.charting.interfaces.datasets.IScatterDataSet import info.appdev.charting.utils.PointF -import info.appdev.charting.utils.Utils import info.appdev.charting.utils.ViewPortHandler import info.appdev.charting.utils.convertDpToPixel +import info.appdev.charting.utils.drawImage import timber.log.Timber import kotlin.math.ceil import kotlin.math.min @@ -139,8 +139,7 @@ open class ScatterChartRenderer( val icon = entry.icon icon?.let { - Utils.drawImage( - canvas, + canvas.drawImage( it, (positions[j] + iconsOffset.x).toInt(), (positions[j + 1] + iconsOffset.y).toInt() diff --git a/chartLib/src/main/kotlin/info/appdev/charting/utils/CanvasUtils.kt b/chartLib/src/main/kotlin/info/appdev/charting/utils/CanvasUtils.kt index 657664ded..2c79f7d9b 100644 --- a/chartLib/src/main/kotlin/info/appdev/charting/utils/CanvasUtils.kt +++ b/chartLib/src/main/kotlin/info/appdev/charting/utils/CanvasUtils.kt @@ -25,8 +25,8 @@ fun Canvas.drawImage( val width: Int = drawable.intrinsicWidth val height: Int = drawable.intrinsicHeight val drawOffset = PointF.getInstance(width.toFloat(), height.toFloat()) - drawOffset.x = x - (width.toFloat() / 2) - drawOffset.y = y - (height.toFloat() / 2) + drawOffset.x = x - (width / 2).toFloat() + drawOffset.y = y - (height / 2).toFloat() drawable.copyBounds(mDrawableBoundsCache) drawable.setBounds( diff --git a/chartLib/src/main/kotlin/info/appdev/charting/utils/Utils.kt b/chartLib/src/main/kotlin/info/appdev/charting/utils/Utils.kt index 3606c3b87..89b40ea96 100644 --- a/chartLib/src/main/kotlin/info/appdev/charting/utils/Utils.kt +++ b/chartLib/src/main/kotlin/info/appdev/charting/utils/Utils.kt @@ -1,15 +1,12 @@ package info.appdev.charting.utils import android.content.Context -import android.graphics.Canvas import android.graphics.Rect -import android.graphics.drawable.Drawable import android.view.MotionEvent import android.view.VelocityTracker import android.view.ViewConfiguration import info.appdev.charting.formatter.DefaultValueFormatter import info.appdev.charting.formatter.IValueFormatter -import info.appdev.charting.utils.PointF.Companion.instance import kotlin.Int import kotlin.IntArray import kotlin.Suppress @@ -88,29 +85,6 @@ object Utils { private val mDrawableBoundsCache = Rect() - fun drawImage(canvas: Canvas, drawable: Drawable, x: Int, y: Int) { - val width = drawable.intrinsicWidth - val height = drawable.intrinsicHeight - - val drawOffset = instance - drawOffset.x = x - (width / 2).toFloat() - drawOffset.y = y - (height / 2).toFloat() - - drawable.copyBounds(mDrawableBoundsCache) - drawable.setBounds( - mDrawableBoundsCache.left, - mDrawableBoundsCache.top, - mDrawableBoundsCache.left + width, - mDrawableBoundsCache.top + width - ) - - val saveId = canvas.save() - // translate to the correct position and draw - canvas.translate(drawOffset.x, drawOffset.y) - drawable.draw(canvas) - canvas.restoreToCount(saveId) - } - /** * Returns a recyclable FSize instance. * Represents size of a rotated rectangle by degrees.