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 @@ -6,16 +6,15 @@ import com.github.mikephil.charting.utils.ColorTemplate
import com.github.mikephil.charting.utils.FSize
import com.github.mikephil.charting.utils.Utils
import com.github.mikephil.charting.utils.ViewPortHandler
import com.github.mikephil.charting.utils.calcTextHeight
import com.github.mikephil.charting.utils.calcTextWidth
import com.github.mikephil.charting.utils.convertDpToPixel
import java.lang.Float
import kotlin.Array
import kotlin.Boolean
import kotlin.IntArray
import kotlin.String
import kotlin.arrayOf
import kotlin.collections.ArrayList
import kotlin.collections.MutableList
import kotlin.collections.toTypedArray
import kotlin.math.max
import kotlin.math.min
import kotlin.requireNotNull
Expand Down Expand Up @@ -284,10 +283,9 @@ class Legend() : ComponentBase() {
entry.formSize).convertDpToPixel()
if (formSize > maxFormSize) maxFormSize = formSize

val label = entry.label
if (label == null) continue
val label = entry.label ?: continue

val length = Utils.calcTextWidth(p, label).toFloat()
val length = p.calcTextWidth(label).toFloat()

if (length > max) max = length
}
Expand All @@ -304,10 +302,9 @@ class Legend() : ComponentBase() {
var max = 0f

for (entry in this.entries) {
val label = entry.label
if (label == null) continue
val label = entry.label ?: continue

val length = Utils.calcTextHeight(p, label).toFloat()
val length = p.calcTextHeight(label).toFloat()

if (length > max) max = length
}
Expand Down Expand Up @@ -491,7 +488,7 @@ class Legend() : ComponentBase() {
wasStacked = false
}

width += Utils.calcTextWidth(labelpaint, label).toFloat()
width += labelpaint.calcTextWidth(label).toFloat()

maxHeight += labelLineHeight + yEntrySpace
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ package com.github.mikephil.charting.components

import android.graphics.Color
import android.graphics.Paint
import com.github.mikephil.charting.utils.Utils
import com.github.mikephil.charting.utils.calcTextHeight
import com.github.mikephil.charting.utils.calcTextWidth
import com.github.mikephil.charting.utils.convertDpToPixel
import kotlin.math.abs
import kotlin.math.max
Expand Down Expand Up @@ -169,7 +170,7 @@ class YAxis : AxisBase {
* use Inifinity for disabling the maximum
* default: Float.POSITIVE_INFINITY (no maximum specified)
*/
var maxWidth: Float = Float.Companion.POSITIVE_INFINITY
var maxWidth: Float = Float.POSITIVE_INFINITY

/**
* Enum that specifies the axis a DataSet should be plotted against, either LEFT or RIGHT.
Expand Down Expand Up @@ -238,17 +239,17 @@ class YAxis : AxisBase {
* This is for normal (not horizontal) charts horizontal spacing.
*/
fun getRequiredWidthSpace(p: Paint): Float {
p.setTextSize(mTextSize)
p.textSize = mTextSize

val label = getLongestLabel(p)
var width = Utils.calcTextWidth(p, label).toFloat() + xOffset * 2f
var width = p.calcTextWidth(label).toFloat() + xOffset * 2f

var minWidth = this.minWidth
var maxWidth = this.maxWidth

if (minWidth > 0f) minWidth = minWidth.convertDpToPixel()

if (maxWidth > 0f && maxWidth != Float.Companion.POSITIVE_INFINITY) maxWidth = maxWidth.convertDpToPixel()
if (maxWidth > 0f && maxWidth != Float.POSITIVE_INFINITY) maxWidth = maxWidth.convertDpToPixel()

width = max(minWidth, min(width, if (maxWidth > 0.0) maxWidth else width))

Expand All @@ -259,22 +260,21 @@ class YAxis : AxisBase {
* This is for HorizontalBarChart vertical spacing.
*/
fun getRequiredHeightSpace(p: Paint): Float {
p.setTextSize(mTextSize)
p.textSize = mTextSize

val label = getLongestLabel(p)
return Utils.calcTextHeight(p, label).toFloat() + yOffset * 2f
return p.calcTextHeight(label).toFloat() + yOffset * 2f
}

/**
* Returns true if this axis needs horizontal offset, false if no offset is needed.
*/
fun needsOffset(): Boolean {
if (isEnabled && isDrawLabelsEnabled && this.labelPosition == YAxisLabelPosition.OUTSIDE_CHART) return true
else return false
return isEnabled && isDrawLabelsEnabled && this.labelPosition == YAxisLabelPosition.OUTSIDE_CHART
}


public override fun calculate(dataMin: Float, dataMax: Float) {
override fun calculate(dataMin: Float, dataMax: Float) {
var min = dataMin
var max = dataMax

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import com.github.mikephil.charting.utils.MPPointF
import com.github.mikephil.charting.utils.Transformer
import com.github.mikephil.charting.utils.Utils
import com.github.mikephil.charting.utils.ViewPortHandler
import com.github.mikephil.charting.utils.calcTextHeight
import com.github.mikephil.charting.utils.convertDpToPixel
import kotlin.math.ceil
import kotlin.math.min
Expand Down Expand Up @@ -277,7 +278,7 @@ open class BarChartRenderer(

// calculate the correct offset depending on the draw position of
// the value
val valueTextHeight = Utils.calcTextHeight(paintValues, "8").toFloat()
val valueTextHeight = paintValues.calcTextHeight("8").toFloat()
posOffset = (if (drawValueAboveBar) -valueOffsetPlus else valueTextHeight + valueOffsetPlus)
negOffset = (if (drawValueAboveBar) valueTextHeight + valueOffsetPlus else -valueOffsetPlus)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import com.github.mikephil.charting.interfaces.datasets.IBubbleDataSet
import com.github.mikephil.charting.utils.MPPointF
import com.github.mikephil.charting.utils.Utils
import com.github.mikephil.charting.utils.ViewPortHandler
import com.github.mikephil.charting.utils.calcTextHeight
import com.github.mikephil.charting.utils.convertDpToPixel
import kotlin.math.abs
import kotlin.math.max
Expand Down Expand Up @@ -97,7 +98,7 @@ open class BubbleChartRenderer(
if (isDrawingValuesAllowed(dataProvider)) {
val dataSets = bubbleData.dataSets

val lineHeight = Utils.calcTextHeight(paintValues, "1").toFloat()
val lineHeight = paintValues.calcTextHeight("1").toFloat()

for (i in dataSets.indices) {
val dataSet = dataSets[i]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ import com.github.mikephil.charting.utils.MPPointF
import com.github.mikephil.charting.utils.Transformer
import com.github.mikephil.charting.utils.Utils
import com.github.mikephil.charting.utils.ViewPortHandler
import com.github.mikephil.charting.utils.calcTextHeight
import com.github.mikephil.charting.utils.calcTextWidth
import com.github.mikephil.charting.utils.convertDpToPixel
import kotlin.math.ceil
import kotlin.math.min
Expand Down Expand Up @@ -187,7 +189,7 @@ open class HorizontalBarChartRenderer(

// apply the text-styling defined by the DataSet
applyValueTextStyle(dataSet)
val halfTextHeight = Utils.calcTextHeight(paintValues, "10") / 2f
val halfTextHeight = paintValues.calcTextHeight("10") / 2f

val formatter = dataSet.valueFormatter

Expand Down Expand Up @@ -225,7 +227,7 @@ open class HorizontalBarChartRenderer(
val valueY = barEntry.y
val formattedValue = formatter.getFormattedValue(valueY, barEntry, i, viewPortHandler)
// calculate the correct offset depending on the draw position of the value
val valueTextWidth = Utils.calcTextWidth(paintValues, formattedValue).toFloat()
val valueTextWidth = paintValues.calcTextWidth(formattedValue).toFloat()
posOffset = (if (drawValueAboveBar) valueOffsetPlus else -(valueTextWidth + valueOffsetPlus))
negOffset = ((if (drawValueAboveBar) -(valueTextWidth + valueOffsetPlus) else valueOffsetPlus)
- (buffer.buffer[j + 2] - buffer.buffer[j]))
Expand Down Expand Up @@ -302,7 +304,7 @@ open class HorizontalBarChartRenderer(
)

// calculate the correct offset depending on the draw position of the value
val valueTextWidth = Utils.calcTextWidth(paintValues, formattedValue).toFloat()
val valueTextWidth = paintValues.calcTextWidth(formattedValue).toFloat()
posOffset = (if (drawValueAboveBar) valueOffsetPlus else -(valueTextWidth + valueOffsetPlus))
negOffset = (if (drawValueAboveBar) -(valueTextWidth + valueOffsetPlus) else valueOffsetPlus)

Expand Down Expand Up @@ -380,7 +382,7 @@ open class HorizontalBarChartRenderer(
)

// calculate the correct offset depending on the draw position of the value
val valueTextWidth = Utils.calcTextWidth(paintValues, formattedValue).toFloat()
val valueTextWidth = paintValues.calcTextWidth(formattedValue).toFloat()
posOffset = (if (drawValueAboveBar) valueOffsetPlus else -(valueTextWidth + valueOffsetPlus))
negOffset = (if (drawValueAboveBar) -(valueTextWidth + valueOffsetPlus) else valueOffsetPlus)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ import com.github.mikephil.charting.interfaces.datasets.IPieDataSet
import com.github.mikephil.charting.utils.ColorTemplate
import com.github.mikephil.charting.utils.Utils
import com.github.mikephil.charting.utils.ViewPortHandler
import com.github.mikephil.charting.utils.calcTextHeight
import com.github.mikephil.charting.utils.calcTextWidth
import com.github.mikephil.charting.utils.convertDpToPixel
import java.util.Collections
import kotlin.math.min
Expand Down Expand Up @@ -211,7 +213,7 @@ open class LegendRenderer(
val labelLineHeight = Utils.getLineHeight(labelPaint, legendFontMetrics)
val labelLineSpacing = (Utils.getLineSpacing(labelPaint, legendFontMetrics)
+ legend.yEntrySpace.convertDpToPixel())
val formYOffset = labelLineHeight - Utils.calcTextHeight(labelPaint, "ABC") / 2f
val formYOffset = labelLineHeight - labelPaint.calcTextHeight("ABC") / 2f

val entries = legend.entries

Expand Down Expand Up @@ -396,7 +398,7 @@ open class LegendRenderer(
-formToTextSpace
else if (wasStacked) posX = originPosX

if (direction == LegendDirection.RIGHT_TO_LEFT) posX -= Utils.calcTextWidth(labelPaint, e.label).toFloat()
if (direction == LegendDirection.RIGHT_TO_LEFT) posX -= labelPaint.calcTextWidth(e.label).toFloat()

if (e.label != null)
if (!wasStacked) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import com.github.mikephil.charting.utils.ColorTemplate
import com.github.mikephil.charting.utils.MPPointF
import com.github.mikephil.charting.utils.Utils
import com.github.mikephil.charting.utils.ViewPortHandler
import com.github.mikephil.charting.utils.calcTextHeight
import com.github.mikephil.charting.utils.convertDpToPixel
import java.lang.ref.WeakReference
import kotlin.math.abs
Expand Down Expand Up @@ -403,8 +404,7 @@ open class PieChartRenderer(
// apply the text-styling defined by the DataSet
applyValueTextStyle(dataSet)

val lineHeight = (Utils.calcTextHeight(paintValues, "Q")
+ 4f.convertDpToPixel())
val lineHeight = paintValues.calcTextHeight("Q") + 4f.convertDpToPixel()

val formatter = dataSet.valueFormatter

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import com.github.mikephil.charting.utils.MPPointF
import com.github.mikephil.charting.utils.Utils
import com.github.mikephil.charting.utils.ViewPortHandler
import com.github.mikephil.charting.utils.convertDpToPixel
import com.github.mikephil.charting.utils.getPosition

open class RadarChartRenderer(
protected var chart: RadarChart, animator: ChartAnimator,
Expand Down Expand Up @@ -60,7 +61,7 @@ open class RadarChartRenderer(
val factor = chart.factor

val center = chart.centerOffsets
val pOut = MPPointF.getInstance(0f, 0f)
var pOut = MPPointF.getInstance(0f, 0f)
val surface = drawDataSetSurfacePathBuffer
surface.reset()

Expand All @@ -71,10 +72,9 @@ open class RadarChartRenderer(

dataSet.getEntryForIndex(j)?.let { e ->

Utils.getPosition(
center,
pOut = center.getPosition(
(e.y - chart.yChartMin) * factor * phaseY,
sliceAngle * j * phaseX + chart.rotationAngle, pOut
sliceAngle * j * phaseX + chart.rotationAngle
)
}
if (java.lang.Float.isNaN(pOut.x)) continue
Expand Down Expand Up @@ -122,8 +122,8 @@ open class RadarChartRenderer(
val factor = chart.factor

val center = chart.centerOffsets
val pOut = MPPointF.getInstance(0f, 0f)
val pIcon = MPPointF.getInstance(0f, 0f)
var pOut = MPPointF.getInstance(0f, 0f)
var pIcon = MPPointF.getInstance(0f, 0f)

val yOffset = 5f.convertDpToPixel()

Expand All @@ -146,12 +146,10 @@ open class RadarChartRenderer(
for (j in 0..<dataSet.entryCount) {
dataSet.getEntryForIndex(j)?.let { entry ->

Utils.getPosition(
center,
pOut = center.getPosition(
(entry.y - chart.yChartMin) * factor * phaseY,
sliceAngle * j * phaseX + chart.rotationAngle,
pOut
)
sliceAngle * j * phaseX + chart.rotationAngle
)

if (dataSet.isDrawValues) {
drawValue(
Expand All @@ -169,12 +167,10 @@ open class RadarChartRenderer(
if (entry.icon != null && dataSet.isDrawIcons) {
val icon = entry.icon

Utils.getPosition(
center,
pIcon = center.getPosition(
(entry.y) * factor * phaseY + iconsOffset.y,
sliceAngle * j * phaseX + chart.rotationAngle,
pIcon
)
sliceAngle * j * phaseX + chart.rotationAngle
)

pIcon.y += iconsOffset.x

Expand Down Expand Up @@ -220,14 +216,12 @@ open class RadarChartRenderer(
val xIncrements = 1 + chart.skipWebLineCount
val maxEntryCount = chart.data!!.maxEntryCountSet.entryCount

val p = MPPointF.getInstance(0f, 0f)
var p = MPPointF.getInstance(0f, 0f)
var i = 0
while (i < maxEntryCount) {
Utils.getPosition(
center,
p = center.getPosition(
chart.yRange * factor,
sliceAngle * i + rotationAngle,
p
sliceAngle * i + rotationAngle
)

canvas.drawLine(center.x, center.y, p.x, p.y, webPaint)
Expand All @@ -242,8 +236,8 @@ open class RadarChartRenderer(

val labelCount = chart.yAxis.mEntryCount

val p1out = MPPointF.getInstance(0f, 0f)
val p2out = MPPointF.getInstance(0f, 0f)
var p1out = MPPointF.getInstance(0f, 0f)
var p2out = MPPointF.getInstance(0f, 0f)
for (j in 0..<labelCount) {
if (chart.isCustomLayerColorEnable) {
innerAreaPath.rewind()
Expand All @@ -252,8 +246,8 @@ open class RadarChartRenderer(
for (i in 0..<chart.data!!.entryCount) {
val r = (chart.yAxis.mEntries[j] - chart.yChartMin) * factor

Utils.getPosition(center, r, sliceAngle * i + rotationAngle, p1out)
Utils.getPosition(center, r, sliceAngle * (i + 1) + rotationAngle, p2out)
p1out = center.getPosition(r, sliceAngle * i + rotationAngle)
p2out = center.getPosition(r, sliceAngle * (i + 1) + rotationAngle)

canvas.drawLine(p1out.x, p1out.y, p2out.x, p2out.y, webPaint)
if (chart.isCustomLayerColorEnable) {
Expand Down Expand Up @@ -290,7 +284,7 @@ open class RadarChartRenderer(
val factor = chart.factor

val center = chart.centerOffsets
val pOut = MPPointF.getInstance(0f, 0f)
var pOut = MPPointF.getInstance(0f, 0f)

val radarData = chart.data

Expand All @@ -307,11 +301,9 @@ open class RadarChartRenderer(

val y = (radarEntry.y - chart.yChartMin)

Utils.getPosition(
center,
pOut = center.getPosition(
y * factor * animator.phaseY,
sliceAngle * high.x * animator.phaseX + chart.rotationAngle,
pOut
sliceAngle * high.x * animator.phaseX + chart.rotationAngle
)
}
high.setDraw(pOut.x, pOut.y)
Expand Down
Loading
Loading