Skip to content
Merged
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 @@ -251,4 +251,8 @@ open class BarChart : BarLineChartBase<BarData>, BarDataProvider {
}
return ""
}

override fun setData(data: BarData?) {
super.setData(data)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package com.github.mikephil.charting.charts
import android.content.Context
import android.util.AttributeSet
import com.github.mikephil.charting.data.BubbleData
import com.github.mikephil.charting.data.ChartData
import com.github.mikephil.charting.interfaces.dataprovider.BubbleDataProvider
import com.github.mikephil.charting.renderer.BubbleChartRenderer

Expand Down Expand Up @@ -31,4 +32,8 @@ class BubbleChart : BarLineChartBase<BubbleData?>, BubbleDataProvider {
override fun getAccessibilityDescription(): String {
return "This is bubble chart"
}

override fun setData(data: BubbleData?) {
super.setData(data)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package com.github.mikephil.charting.charts
import android.content.Context
import android.util.AttributeSet
import com.github.mikephil.charting.data.CandleData
import com.github.mikephil.charting.data.ChartData
import com.github.mikephil.charting.interfaces.dataprovider.CandleDataProvider
import com.github.mikephil.charting.renderer.CandleStickChartRenderer

Expand Down Expand Up @@ -31,4 +32,8 @@ class CandleStickChart : BarLineChartBase<CandleData?>, CandleDataProvider {
override fun getAccessibilityDescription(): String {
return "This is a candlestick chart"
}

override fun setData(data: CandleData?) {
super.setData(data)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@ package com.github.mikephil.charting.charts

import android.content.Context
import android.util.AttributeSet
import com.github.mikephil.charting.data.ChartData
import com.github.mikephil.charting.data.LineData
import com.github.mikephil.charting.interfaces.dataprovider.LineDataProvider
import com.github.mikephil.charting.renderer.LineChartRenderer
import java.util.Locale

open class LineChart : BarLineChartBase<LineData?>, LineDataProvider {
open class LineChart : BarLineChartBase<LineData>, LineDataProvider {

constructor(context: Context?) : super(context)
constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
Expand All @@ -18,12 +19,16 @@ open class LineChart : BarLineChartBase<LineData?>, LineDataProvider {
mRenderer = LineChartRenderer(this, mAnimator, mViewPortHandler)
}

override val lineData: LineData
override var lineData: LineData
get() {
return mData ?: run {
LineData()
}
}
set(value) {
mData = value
notifyDataSetChanged()
}

public override fun onDetachedFromWindow() {
// releases the bitmap in the renderer to avoid oom error
Expand Down Expand Up @@ -54,4 +59,8 @@ open class LineChart : BarLineChartBase<LineData?>, LineDataProvider {
numberOfPoints, entries, minVal, maxVal, minRange, maxRange
)
}

override fun setData(data: LineData?) {
super.setData(data)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import android.graphics.Typeface
import android.text.TextUtils
import android.util.AttributeSet
import com.github.mikephil.charting.components.XAxis
import com.github.mikephil.charting.data.ChartData
import com.github.mikephil.charting.data.PieData
import com.github.mikephil.charting.highlight.Highlight
import com.github.mikephil.charting.highlight.PieHighlighter
Expand Down Expand Up @@ -586,7 +587,7 @@ class PieChart : PieRadarChartBase<PieData> {
}

override fun getAccessibilityDescription(): String {
val pieData = data
val pieData = getData() as PieData?

var entryCount = 0
if (pieData != null) entryCount = pieData.entryCount
Expand All @@ -609,4 +610,8 @@ class PieChart : PieRadarChartBase<PieData> {

return builder.toString()
}

override fun setData(data: PieData?) {
super.setData(data)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,8 @@ abstract class PieRadarChartBase<T : ChartData<out IDataSet<out Entry>>>
//mXAxis.mAxisRange = mData.getXVals().size() - 1;
}

override fun getMaxVisibleCount(): Int {
return mData!!.entryCount
}
override val maxVisibleCount: Int
get() = mData!!.entryCount

override fun onTouchEvent(event: MotionEvent?): Boolean {
// use the Pie- and RadarChart listener own listener
Expand Down Expand Up @@ -183,10 +182,12 @@ abstract class PieRadarChartBase<T : ChartData<out IDataSet<out Entry>>>
mLegend.mNeededHeight,
mViewPortHandler.chartHeight * mLegend.maxSizePercent
)

LegendVerticalAlignment.BOTTOM -> legendBottom = min(
mLegend.mNeededHeight,
mViewPortHandler.chartHeight * mLegend.maxSizePercent
)

LegendVerticalAlignment.CENTER -> Log.e(LOG_TAG, "LegendCenter/VerticalCenter not supported for PieRadarChart")
}
}
Expand Down Expand Up @@ -258,27 +259,28 @@ abstract class PieRadarChartBase<T : ChartData<out IDataSet<out Entry>>>
* 90° is EAST, ...
*/
fun getAngleForPoint(x: Float, y: Float): Float {
val c = centerOffsets

val tx = (x - c.x).toDouble()
val ty = (y - c.y).toDouble()
val length = sqrt(tx * tx + ty * ty)
val r = acos(ty / length)
centerOffsets?.let { c ->

var angle = Math.toDegrees(r).toFloat()
val tx = (x - c.x).toDouble()
val ty = (y - c.y).toDouble()
val length = sqrt(tx * tx + ty * ty)
val r = acos(ty / length)

if (x > c.x) angle = 360f - angle
var angle = Math.toDegrees(r).toFloat()

// add 90° because chart starts EAST
angle += 90f
if (x > c.x) angle = 360f - angle

// neutralize overflow
if (angle > 360f)
angle -= 360f
// add 90° because chart starts EAST
angle += 90f

recycleInstance(c)
// neutralize overflow
if (angle > 360f)
angle -= 360f

return angle
recycleInstance(c)
return angle
}
return 0f
}

/**
Expand All @@ -302,28 +304,30 @@ abstract class PieRadarChartBase<T : ChartData<out IDataSet<out Entry>>>
* Returns the distance of a certain point on the chart to the center of the chart.
*/
fun distanceToCenter(x: Float, y: Float): Float {
val c = centerOffsets
centerOffsets?.let { c ->

val dist: Float
val dist: Float

val xDist: Float = if (x > c.x) {
x - c.x
} else {
c.x - x
}
val xDist: Float = if (x > c.x) {
x - c.x
} else {
c.x - x
}

val yDist: Float = if (y > c.y) {
y - c.y
} else {
c.y - y
}
val yDist: Float = if (y > c.y) {
y - c.y
} else {
c.y - y
}

// pythagoras
dist = sqrt(xDist.toDouble().pow(2.0) + yDist.toDouble().pow(2.0)).toFloat()
// pythagoras
dist = sqrt(xDist.toDouble().pow(2.0) + yDist.toDouble().pow(2.0)).toFloat()

recycleInstance(c)
recycleInstance(c)

return dist
return dist
}
return 0f
}

/**
Expand Down Expand Up @@ -376,15 +380,11 @@ abstract class PieRadarChartBase<T : ChartData<out IDataSet<out Entry>>>
*/
protected abstract val requiredBaseOffset: Float

override fun getYChartMax(): Float {
// TODO Auto-generated method stub
return 0f
}
override val yChartMax: Float
get() = 0f

override fun getYChartMin(): Float {
// TODO Auto-generated method stub
return 0f
}
override val yChartMin: Float
get() = 0f

/**
* Apply a spin animation to the Chart.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import android.graphics.Color
import android.util.AttributeSet
import com.github.mikephil.charting.components.YAxis
import com.github.mikephil.charting.components.YAxis.AxisDependency
import com.github.mikephil.charting.data.ChartData
import com.github.mikephil.charting.data.RadarData
import com.github.mikephil.charting.highlight.RadarHighlighter
import com.github.mikephil.charting.renderer.RadarChartRenderer
Expand Down Expand Up @@ -283,21 +284,24 @@ class RadarChart : PieRadarChartBase<RadarData> {
/**
* Returns the maximum value this chart can display on it's y-axis.
*/
override fun getYChartMax(): Float {
return mYAxis!!.mAxisMaximum
override val yChartMax: Float
get() = mYAxis!!.mAxisMaximum

override fun setData(data: RadarData?) {
super.setData(data)
}


/**
* Returns the minimum value this chart can display on it's y-axis.
*/
override fun getYChartMin(): Float {
return mYAxis!!.mAxisMinimum
}
override val yChartMin: Float
get() = mYAxis!!.mAxisMinimum

/**
* Range of y-values this chart can display.
*/
val yRange: Float
/**
* Returns the range of y-values this chart can display.
*/
get() = mYAxis!!.mAxisRange

override fun getAccessibilityDescription(): String {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.github.mikephil.charting.charts

import android.content.Context
import android.util.AttributeSet
import com.github.mikephil.charting.data.ChartData
import com.github.mikephil.charting.data.ScatterData
import com.github.mikephil.charting.interfaces.dataprovider.ScatterDataProvider
import com.github.mikephil.charting.renderer.ScatterChartRenderer
Expand Down Expand Up @@ -65,4 +66,8 @@ class ScatterChart : BarLineChartBase<ScatterData>, ScatterDataProvider {
override fun getAccessibilityDescription(): String {
return "This is scatter chart"
}

override fun setData(data: ScatterData?) {
super.setData(data)
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.github.mikephil.charting.highlight

import com.github.mikephil.charting.components.YAxis.AxisDependency
import com.github.mikephil.charting.data.BarLineScatterCandleBubbleData
import com.github.mikephil.charting.data.ChartData
import com.github.mikephil.charting.data.DataSet
import com.github.mikephil.charting.data.Entry
import com.github.mikephil.charting.interfaces.dataprovider.base.BarLineScatterCandleBubbleDataProvider
Expand Down Expand Up @@ -50,7 +50,7 @@ open class ChartHighlighter<T : BarLineScatterCandleBubbleDataProvider>(protecte

val axis = if (leftAxisMinDist < rightAxisMinDist) AxisDependency.LEFT else AxisDependency.RIGHT

return getClosestHighlightByPixel(closestValues, x, y, axis, provider.getMaxHighlightDistance())
return getClosestHighlightByPixel(closestValues, x, y, axis, provider.maxHighlightDistance)
}

/**
Expand Down Expand Up @@ -89,25 +89,24 @@ open class ChartHighlighter<T : BarLineScatterCandleBubbleDataProvider>(protecte
protected open fun getHighlightsAtXValue(xVal: Float, x: Float, y: Float): MutableList<Highlight>? {
highlightBuffer.clear()

val data = this.data

var i = 0
val dataSetCount = data.dataSetCount
while (i < dataSetCount) {
val dataSet= data.getDataSetByIndex(i)

// don't include DataSets that cannot be highlighted
dataSet?.let {
if (!it.isHighlightEnabled) {
i++
continue
data?.let { myData ->
var i = 0
val dataSetCount = myData.dataSetCount
while (i < dataSetCount) {
val dataSet = myData.getDataSetByIndex(i)

// don't include DataSets that cannot be highlighted
dataSet?.let {
if (!it.isHighlightEnabled) {
i++
continue
}
highlightBuffer.addAll(buildHighlights(it, i, xVal, DataSet.Rounding.CLOSEST))
}
highlightBuffer.addAll(buildHighlights(it, i, xVal, DataSet.Rounding.CLOSEST))
}

i++
i++
}
}

return highlightBuffer
}

Expand Down Expand Up @@ -186,6 +185,6 @@ open class ChartHighlighter<T : BarLineScatterCandleBubbleDataProvider>(protecte
return hypot((x1 - x2).toDouble(), (y1 - y2).toDouble()).toFloat()
}

protected open val data: BarLineScatterCandleBubbleData<*>
protected open val data: ChartData<*>?
get() = provider.getData()
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import com.github.mikephil.charting.data.Entry

open class PieHighlighter(chart: PieChart) : PieRadarHighlighter<PieChart>(chart) {
override fun getClosestHighlight(index: Int, x: Float, y: Float): Highlight? {
val pieDataSet = chartPieRadar.data!!.dataSets!![0]
val pieDataSet = chartPieRadar.getData()!!.dataSets!![0]

val entry: Entry? = pieDataSet.getEntryForIndex(index)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ abstract class PieRadarHighlighter<T : PieRadarChartBase<*>>(protected var chart

val index = chartPieRadar.getIndexForAngle(angle)

val localData = chartPieRadar.data
val localData = chartPieRadar.getData()
val maxCount = localData?.maxEntryCountSet?.entryCount ?: 0
return if (index !in 0..<maxCount) {
null
Expand Down
Loading
Loading