From df109d86306313fecf66e62253d849b4f3b30e5c Mon Sep 17 00:00:00 2001 From: Derek Trauger Date: Mon, 19 Dec 2016 13:45:03 -0500 Subject: [PATCH 1/5] added functionality to render limit label beneath line adjusting line height accordingly; --- Source/Charts/Components/ChartLimitLine.swift | 1 + Source/Charts/Renderers/XAxisRenderer.swift | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/Source/Charts/Components/ChartLimitLine.swift b/Source/Charts/Components/ChartLimitLine.swift index f4aaef406a..88b617cfcb 100644 --- a/Source/Charts/Components/ChartLimitLine.swift +++ b/Source/Charts/Components/ChartLimitLine.swift @@ -24,6 +24,7 @@ open class ChartLimitLine: ComponentBase case leftBottom case rightTop case rightBottom + case centerBottom } /// limit / maximum (the y-value or xIndex) diff --git a/Source/Charts/Renderers/XAxisRenderer.swift b/Source/Charts/Renderers/XAxisRenderer.swift index 7bec034e63..faa97ede55 100644 --- a/Source/Charts/Renderers/XAxisRenderer.swift +++ b/Source/Charts/Renderers/XAxisRenderer.swift @@ -457,6 +457,16 @@ open class XAxisRenderer: AxisRendererBase align: .left, attributes: [NSFontAttributeName: limitLine.valueFont, NSForegroundColorAttributeName: limitLine.valueTextColor]) } + else if limitLine.labelPosition == .centerBottom + { + ChartUtils.drawText(context: context, + text: label, + point: CGPoint( + x: position.x, + y: viewPortHandler.contentBottom - labelLineHeight), + align: .center, + attributes: [NSFontAttributeName: limitLine.valueFont, NSForegroundColorAttributeName: limitLine.valueTextColor]) + } else if limitLine.labelPosition == .leftTop { ChartUtils.drawText(context: context, From 60226fbbaf15b76fbde752fb2dcf4c7bf212a405 Mon Sep 17 00:00:00 2001 From: Derek Trauger Date: Mon, 19 Dec 2016 13:49:30 -0500 Subject: [PATCH 2/5] uncommited change related functionality to render limit label beneath line adjusting line height accordingly; --- Source/Charts/Renderers/XAxisRenderer.swift | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Source/Charts/Renderers/XAxisRenderer.swift b/Source/Charts/Renderers/XAxisRenderer.swift index faa97ede55..b31804a4be 100644 --- a/Source/Charts/Renderers/XAxisRenderer.swift +++ b/Source/Charts/Renderers/XAxisRenderer.swift @@ -406,6 +406,13 @@ open class XAxisRenderer: AxisRendererBase context.beginPath() context.move(to: CGPoint(x: position.x, y: viewPortHandler.contentTop)) + + if limitLine.labelPosition == .centerBottom { + context.addLine(to: CGPoint(x: position.x, y: viewPortHandler.contentBottom-limitLine.valueFont.lineHeight)) + } else { + context.addLine(to: CGPoint(x: position.x, y: viewPortHandler.contentBottom)) + } + context.addLine(to: CGPoint(x: position.x, y: viewPortHandler.contentBottom)) context.setStrokeColor(limitLine.lineColor.cgColor) From eb4138eb863aef9d9101462cc46d0275ed4ad6e4 Mon Sep 17 00:00:00 2001 From: Derek Trauger Date: Tue, 14 Feb 2017 14:10:32 -0500 Subject: [PATCH 3/5] removed errant limit line; --- Source/Charts/Renderers/XAxisRenderer.swift | 2 -- 1 file changed, 2 deletions(-) diff --git a/Source/Charts/Renderers/XAxisRenderer.swift b/Source/Charts/Renderers/XAxisRenderer.swift index b31804a4be..2e88592e48 100644 --- a/Source/Charts/Renderers/XAxisRenderer.swift +++ b/Source/Charts/Renderers/XAxisRenderer.swift @@ -413,8 +413,6 @@ open class XAxisRenderer: AxisRendererBase context.addLine(to: CGPoint(x: position.x, y: viewPortHandler.contentBottom)) } - context.addLine(to: CGPoint(x: position.x, y: viewPortHandler.contentBottom)) - context.setStrokeColor(limitLine.lineColor.cgColor) context.setLineWidth(limitLine.lineWidth) if limitLine.lineDashLengths != nil From 15090e7aac05a0b792f2bae3fc165680c62f6811 Mon Sep 17 00:00:00 2001 From: Derek Trauger Date: Tue, 14 Feb 2017 14:13:15 -0500 Subject: [PATCH 4/5] updated project config; --- Charts.xcodeproj/project.pbxproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Charts.xcodeproj/project.pbxproj b/Charts.xcodeproj/project.pbxproj index 293966f73f..c19e92a752 100644 --- a/Charts.xcodeproj/project.pbxproj +++ b/Charts.xcodeproj/project.pbxproj @@ -1185,7 +1185,7 @@ MACOSX_DEPLOYMENT_TARGET = 10.11; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; - SDKROOT = macosx; + SDKROOT = iphoneos; SUPPORTED_PLATFORMS = "iphonesimulator iphoneos appletvsimulator appletvos macosx"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 3.0; @@ -1234,7 +1234,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 8.0; MACOSX_DEPLOYMENT_TARGET = 10.11; MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = macosx; + SDKROOT = iphoneos; SUPPORTED_PLATFORMS = "iphonesimulator iphoneos appletvsimulator appletvos macosx"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_VERSION = 3.0; From a9698f68824b91a2770fc78594641f9baa46bbdc Mon Sep 17 00:00:00 2001 From: Derek Trauger Date: Mon, 23 Oct 2017 17:19:06 -0400 Subject: [PATCH 5/5] bar chart fix; --- .../Charts/Renderers/BarChartRenderer.swift | 35 +++++++++++++++++-- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/Source/Charts/Renderers/BarChartRenderer.swift b/Source/Charts/Renderers/BarChartRenderer.swift index 579810f844..c61d4a5e07 100644 --- a/Source/Charts/Renderers/BarChartRenderer.swift +++ b/Source/Charts/Renderers/BarChartRenderer.swift @@ -68,6 +68,24 @@ open class BarChartRenderer: BarLineScatterCandleBubbleRenderer } } + open func calcWidth(span: CGFloat) -> CGFloat + { + var width = CGFloat(60.0) + if (span < 240) { //z0 + width = 60; + } else if (span < 1200) { //z1 + width = 240; + } else if (span < 10000) { //z2 + width = 960; + } else if (span < 80000) { //z3 + width = 4800*3; + } else { //z4 + width = 15360*2; + } + return width; + } + + fileprivate func prepareBuffer(dataSet: IBarChartDataSet, index: Int) { guard @@ -101,6 +119,10 @@ open class BarChartRenderer: BarLineScatterCandleBubbleRenderer { let left = CGFloat(x - barWidthHalf) let right = CGFloat(x + barWidthHalf) + + let span = right - left; + let width = calcWidth(span: span) + var top = isInverted ? (y <= 0.0 ? CGFloat(y) : 0) : (y >= 0.0 ? CGFloat(y) : 0) @@ -119,7 +141,7 @@ open class BarChartRenderer: BarLineScatterCandleBubbleRenderer } barRect.origin.x = left - barRect.size.width = right - left + barRect.size.width = width;//right - left barRect.origin.y = top barRect.size.height = bottom - top @@ -164,8 +186,11 @@ open class BarChartRenderer: BarLineScatterCandleBubbleRenderer top *= CGFloat(phaseY) bottom *= CGFloat(phaseY) + let span = right - left; + let width = calcWidth(span: span) + barRect.origin.x = left - barRect.size.width = right - left + barRect.size.width = width//right - left barRect.origin.y = top barRect.size.height = bottom - top @@ -339,7 +364,11 @@ open class BarChartRenderer: BarLineScatterCandleBubbleRenderer rect.origin.x = CGFloat(left) rect.origin.y = CGFloat(top) - rect.size.width = CGFloat(right - left) + + let span = right - left; + let width = calcWidth(span: CGFloat(span)) + + rect.size.width = CGFloat(width) //right - left rect.size.height = CGFloat(bottom - top) trans.rectValueToPixel(&rect, phaseY: animator?.phaseY ?? 1.0)