Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -332,8 +332,7 @@ open class BarChartRenderer(
py += iconsOffset.y

icon?.let {
Utils.drawImage(
canvas,
canvas.drawImage(
it,
px.toInt(),
py.toInt()
Expand Down Expand Up @@ -392,8 +391,7 @@ open class BarChartRenderer(
py += iconsOffset.y

icon?.let {
Utils.drawImage(
canvas,
canvas.drawImage(
it,
px.toInt(),
py.toInt()
Expand Down Expand Up @@ -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()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -161,8 +161,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()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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, animator: ChartAnimator,
Expand Down Expand Up @@ -268,8 +268,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()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ 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

Expand Down Expand Up @@ -256,8 +257,7 @@ open class HorizontalBarChartRenderer(
py += iconsOffset.y

icon?.let {
Utils.drawImage(
canvas,
canvas.drawImage(
it,
px.toInt(),
py.toInt()
Expand Down Expand Up @@ -332,8 +332,7 @@ open class HorizontalBarChartRenderer(
py += iconsOffset.y

icon?.let { myIcon ->
Utils.drawImage(
canvas,
canvas.drawImage(
myIcon,
px.toInt(),
py.toInt()
Expand Down Expand Up @@ -417,8 +416,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()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -542,8 +542,7 @@ open class LineChartRenderer(
val icon = entry.icon

icon?.let {
Utils.drawImage(
canvas,
canvas.drawImage(
it,
(x + iconsOffset.x).toInt(),
(y + iconsOffset.y).toInt()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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()
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ 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.drawImage
import info.appdev.charting.utils.getPosition

open class RadarChartRenderer(
Expand Down Expand Up @@ -179,8 +179,7 @@ open class RadarChartRenderer(
pIcon.y += iconsOffset.x

icon?.let {
Utils.drawImage(
canvas,
canvas.drawImage(
it,
pIcon.x.toInt(),
pIcon.y.toInt()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -136,8 +136,7 @@ open class ScatterChartRenderer(var dataProvider: ScatterDataProvider, animator:
val icon = entry.icon

icon?.let {
Utils.drawImage(
canvas,
canvas.drawImage(
it,
(positions[j] + iconsOffset.x).toInt(),
(positions[j + 1] + iconsOffset.y).toInt()
Expand Down
32 changes: 24 additions & 8 deletions chartLib/src/main/kotlin/info/appdev/charting/utils/CanvasUtils.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import android.graphics.Paint
import android.graphics.Paint.Align
import android.graphics.Rect
import android.graphics.drawable.Drawable
import info.appdev.charting.utils.PointF.Companion.instance
import info.appdev.charting.utils.Utils.FDEG2RAD
import kotlin.math.abs
import kotlin.math.cos
Expand Down Expand Up @@ -113,14 +114,6 @@ fun Canvas.drawXAxisValue(
paint.textAlign = originalTextAlign
}

/**
* calculates the approximate width of a text, depending on a demo text
* avoid repeated calls (e.g. inside drawing methods)
*/
fun Paint.calcTextWidth(demoText: String?): Int {
return measureText(demoText).toInt()
}

/**
* Returns a recyclable FSize instance.
* Represents size of a rotated rectangle by degrees.
Expand Down Expand Up @@ -150,3 +143,26 @@ fun getSizeOfRotatedRectangleByRadians(rectangleWidth: Float, rectangleHeight: F
abs(rectangleWidth * sin(radians.toDouble()).toFloat()) + abs(rectangleHeight * cos(radians.toDouble()).toFloat())
)
}

fun Canvas.drawImageX(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 = this.save()
// translate to the correct position and draw
translate(drawOffset.x, drawOffset.y)
drawable.draw(this)
restoreToCount(saveId)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package info.appdev.charting.utils

import android.content.Context
import android.os.Build
import android.util.DisplayMetrics
import android.view.ViewConfiguration
import kotlin.Float

var metrics: DisplayMetrics? = null
var minimumFlingVelocity = 0
var maximumFlingVelocity = 0

fun Context.initUtils() {
val viewConfiguration = ViewConfiguration.get(this)
minimumFlingVelocity = viewConfiguration.scaledMinimumFlingVelocity
maximumFlingVelocity = viewConfiguration.scaledMaximumFlingVelocity

metrics = this.resources.displayMetrics
}

fun getSDKInt() = Build.VERSION.SDK_INT

fun Context.convertDpToPixel(dp: Float) = dp * this.resources.displayMetrics.density
Loading
Loading