From 8905a46c8262998ccdb780bbd5d2c03e45b8ab5a Mon Sep 17 00:00:00 2001 From: Daniel Cohen Gindi Date: Fri, 23 Sep 2016 08:30:57 +0300 Subject: [PATCH] Fixed highlight bugs - in two places there was use of x-index methods (Closes #1535) --- .../Charts/Renderers/RadarChartRenderer.swift | 2 +- .../Renderers/ScatterChartRenderer.swift | 62 +++++++++---------- 2 files changed, 29 insertions(+), 35 deletions(-) diff --git a/Source/Charts/Renderers/RadarChartRenderer.swift b/Source/Charts/Renderers/RadarChartRenderer.swift index 475e60e708..f94f786c43 100644 --- a/Source/Charts/Renderers/RadarChartRenderer.swift +++ b/Source/Charts/Renderers/RadarChartRenderer.swift @@ -299,7 +299,7 @@ open class RadarChartRenderer: LineRadarRenderer set.isHighlightEnabled else { continue } - guard let e = set.entryForIndex(Int(high.x)) as? RadarChartDataEntry + guard let e = set.entryForXValue(high.x) as? RadarChartDataEntry else { continue } if !isInBoundsX(entry: e, dataSet: set) diff --git a/Source/Charts/Renderers/ScatterChartRenderer.swift b/Source/Charts/Renderers/ScatterChartRenderer.swift index 174c0c2d33..24f54c6044 100644 --- a/Source/Charts/Renderers/ScatterChartRenderer.swift +++ b/Source/Charts/Renderers/ScatterChartRenderer.swift @@ -194,8 +194,6 @@ open class ScatterChartRenderer: LineScatterCandleRadarRenderer let animator = animator else { return } - let chartXMax = dataProvider.chartXMax - context.saveGState() for high in indices @@ -205,41 +203,37 @@ open class ScatterChartRenderer: LineScatterCandleRadarRenderer set.isHighlightEnabled else { continue } - guard let e = set.entryForIndex(Int(high.x)) - else { continue } + let entries = set.entriesForXValue(high.x) - if !isInBoundsX(entry: e, dataSet: set) - { - continue - } - - context.setStrokeColor(set.highlightColor.cgColor) - context.setLineWidth(set.highlightLineWidth) - if set.highlightLineDashLengths != nil - { - context.setLineDash(phase: set.highlightLineDashPhase, lengths: set.highlightLineDashLengths!) - } - else + for entry in entries { - context.setLineDash(phase: 0.0, lengths: []) - } - - let x = high.x // get the x-position - let y = high.y * Double(animator.phaseY) - - if x > chartXMax * animator.phaseX - { - continue + if entry.y != high.y { continue } + + if !isInBoundsX(entry: entry, dataSet: set) { continue } + + context.setStrokeColor(set.highlightColor.cgColor) + context.setLineWidth(set.highlightLineWidth) + if set.highlightLineDashLengths != nil + { + context.setLineDash(phase: set.highlightLineDashPhase, lengths: set.highlightLineDashLengths!) + } + else + { + context.setLineDash(phase: 0.0, lengths: []) + } + + let x = entry.x // get the x-position + let y = entry.y * Double(animator.phaseY) + + let trans = dataProvider.getTransformer(forAxis: set.axisDependency) + + let pt = trans.pixelForValues(x: x, y: y) + + high.setDraw(pt: pt) + + // draw the lines + drawHighlightLines(context: context, point: pt, set: set) } - - let trans = dataProvider.getTransformer(forAxis: set.axisDependency) - - let pt = trans.pixelForValues(x: x, y: y) - - high.setDraw(pt: pt) - - // draw the lines - drawHighlightLines(context: context, point: pt, set: set) } context.restoreGState()