From 01160fddff6d6239841201fdf497ebd9817dc6d0 Mon Sep 17 00:00:00 2001 From: Jacob Christie Date: Mon, 13 Nov 2017 15:11:36 -0800 Subject: [PATCH] Replaced `ChartUtils` methods with `CGSize` extensions --- Source/Charts/Renderers/XAxisRenderer.swift | 2 +- .../XAxisRendererHorizontalBarChart.swift | 5 +-- Source/Charts/Utils/ChartUtils.swift | 45 +++++++------------ 3 files changed, 20 insertions(+), 32 deletions(-) diff --git a/Source/Charts/Renderers/XAxisRenderer.swift b/Source/Charts/Renderers/XAxisRenderer.swift index 85535b82a4..bb75d25450 100644 --- a/Source/Charts/Renderers/XAxisRenderer.swift +++ b/Source/Charts/Renderers/XAxisRenderer.swift @@ -77,7 +77,7 @@ open class XAxisRenderer: AxisRendererBase let labelWidth = labelSize.width let labelHeight = labelSize.height - let labelRotatedSize = ChartUtils.sizeOfRotatedRectangle(labelSize, degrees: xAxis.labelRotationAngle) + let labelRotatedSize = labelSize.rotatedBy(degrees: xAxis.labelRotationAngle) xAxis.labelWidth = labelWidth xAxis.labelHeight = labelHeight diff --git a/Source/Charts/Renderers/XAxisRendererHorizontalBarChart.swift b/Source/Charts/Renderers/XAxisRendererHorizontalBarChart.swift index b277e0fa50..97f0c56029 100644 --- a/Source/Charts/Renderers/XAxisRendererHorizontalBarChart.swift +++ b/Source/Charts/Renderers/XAxisRendererHorizontalBarChart.swift @@ -72,9 +72,8 @@ open class XAxisRendererHorizontalBarChart: XAxisRenderer let labelWidth = floor(labelSize.width + xAxis.xOffset * 3.5) let labelHeight = labelSize.height - - let labelRotatedSize = ChartUtils.sizeOfRotatedRectangle(rectangleWidth: labelSize.width, rectangleHeight: labelHeight, degrees: xAxis.labelRotationAngle) - + let labelRotatedSize = CGSize(width: labelSize.width, height: labelHeight).rotatedBy(degrees: xAxis.labelRotationAngle) + xAxis.labelWidth = labelWidth xAxis.labelHeight = labelHeight xAxis.labelRotatedWidth = round(labelRotatedSize.width + xAxis.xOffset * 3.5) diff --git a/Source/Charts/Utils/ChartUtils.swift b/Source/Charts/Utils/ChartUtils.swift index 21601a7030..a1c56ab477 100755 --- a/Source/Charts/Utils/ChartUtils.swift +++ b/Source/Charts/Utils/ChartUtils.swift @@ -16,6 +16,20 @@ import CoreGraphics import UIKit #endif +extension CGSize { + func rotatedBy(degrees: CGFloat) -> CGSize { + let radians = ChartUtils.Math.FDEG2RAD * degrees + return rotatedBy(radians: radians) + } + + func rotatedBy(radians: CGFloat) -> CGSize { + return CGSize( + width: abs(width * cos(radians)) + abs(height * sin(radians)), + height: abs(width * sin(radians)) + abs(height * cos(radians)) + ) + } +} + open class ChartUtils { fileprivate static var _defaultValueFormatter: IValueFormatter = ChartUtils.generateDefaultValueFormatter() @@ -162,7 +176,7 @@ open class ChartUtils // Move the "outer" rect relative to the anchor, assuming its centered if anchor.x != 0.5 || anchor.y != 0.5 { - let rotatedSize = sizeOfRotatedRectangle(size, radians: angleRadians) + let rotatedSize = size.rotatedBy(radians: angleRadians) translate.x -= rotatedSize.width * (anchor.x - 0.5) translate.y -= rotatedSize.height * (anchor.y - 0.5) @@ -212,7 +226,7 @@ open class ChartUtils // Move the "outer" rect relative to the anchor, assuming its centered if anchor.x != 0.5 || anchor.y != 0.5 { - let rotatedSize = sizeOfRotatedRectangle(knownTextSize, radians: angleRadians) + let rotatedSize = knownTextSize.rotatedBy(radians: angleRadians) translate.x -= rotatedSize.width * (anchor.x - 0.5) translate.y -= rotatedSize.height * (anchor.y - 0.5) @@ -273,32 +287,7 @@ open class ChartUtils { return _defaultValueFormatter } - - internal class func sizeOfRotatedRectangle(_ rectangleSize: CGSize, degrees: CGFloat) -> CGSize - { - let radians = degrees * Math.FDEG2RAD - return sizeOfRotatedRectangle(rectangleWidth: rectangleSize.width, rectangleHeight: rectangleSize.height, radians: radians) - } - - internal class func sizeOfRotatedRectangle(_ rectangleSize: CGSize, radians: CGFloat) -> CGSize - { - return sizeOfRotatedRectangle(rectangleWidth: rectangleSize.width, rectangleHeight: rectangleSize.height, radians: radians) - } - - internal class func sizeOfRotatedRectangle(rectangleWidth: CGFloat, rectangleHeight: CGFloat, degrees: CGFloat) -> CGSize - { - let radians = degrees * Math.FDEG2RAD - return sizeOfRotatedRectangle(rectangleWidth: rectangleWidth, rectangleHeight: rectangleHeight, radians: radians) - } - - internal class func sizeOfRotatedRectangle(rectangleWidth: CGFloat, rectangleHeight: CGFloat, radians: CGFloat) -> CGSize - { - return CGSize( - width: abs(rectangleWidth * cos(radians)) + abs(rectangleHeight * sin(radians)), - height: abs(rectangleWidth * sin(radians)) + abs(rectangleHeight * cos(radians)) - ) - } - + /// MARK: - Bridging functions internal class func bridgedObjCGetNSUIColorArray (swift array: [NSUIColor?]) -> [NSObject]