From 94b5188ce7abd58659b2f87659234b0cf19bb7a4 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sat, 24 Sep 2016 09:52:58 -0400 Subject: [PATCH 001/160] Turned on a new Xcode 8.1 compiler warning. --- framework/xcconfig/CorePlotWarnings.xcconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/framework/xcconfig/CorePlotWarnings.xcconfig b/framework/xcconfig/CorePlotWarnings.xcconfig index 2c7ff76f6..3280ae038 100644 --- a/framework/xcconfig/CorePlotWarnings.xcconfig +++ b/framework/xcconfig/CorePlotWarnings.xcconfig @@ -51,6 +51,7 @@ CLANG_WARN_OBJC_ROOT_CLASS = YES CLANG_WARN__ARC_BRIDGE_CAST_NONARC = YES GCC_WARN_64_TO_32_BIT_CONVERSION[arch=*64] = YES CLANG_WARN_INFINITE_RECURSION = YES +CLANG_WARN_SUSPICIOUS_MOVE = YES ENABLE_STRICT_OBJC_MSGSEND = YES From 70337bd5a3636f635d6b82f206ae7a9363bd4503 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sat, 24 Sep 2016 09:53:32 -0400 Subject: [PATCH 002/160] Updated all projects to Xcode 8.1 recommended settings. --- QCPlugin/CorePlotQCPlugin.xcodeproj/project.pbxproj | 6 +++++- .../xcshareddata/xcschemes/Build & Copy.xcscheme | 2 +- .../xcshareddata/xcschemes/CorePlotQCPlugin.xcscheme | 2 +- examples/AAPLot/AAPLot.xcodeproj/project.pbxproj | 6 +++++- .../xcshareddata/xcschemes/AAPLot.xcscheme | 2 +- .../CPTTestApp-iPad.xcodeproj/project.pbxproj | 6 +++++- .../xcshareddata/xcschemes/CPTTestApp-iPad.xcscheme | 2 +- .../CPTTestApp-iPhone.xcodeproj/project.pbxproj | 6 +++++- .../xcshareddata/xcschemes/CPTTestApp-iPhone.xcscheme | 2 +- .../CPTTestApp/CPTTestApp.xcodeproj/project.pbxproj | 6 +++++- .../xcshareddata/xcschemes/CPTTestApp.xcscheme | 2 +- .../Plot_Gallery.xcodeproj/project.pbxproj | 6 +++++- .../xcshareddata/xcschemes/Plot Gallery-Mac.xcscheme | 2 +- .../xcshareddata/xcschemes/Plot Gallery-iOS.xcscheme | 2 +- .../xcshareddata/xcschemes/Plot Gallery-tvOS.xcscheme | 2 +- examples/DatePlot/DatePlot.xcodeproj/project.pbxproj | 6 +++++- .../xcshareddata/xcschemes/DatePlot.xcscheme | 2 +- examples/DropPlot/DropPlot.xcodeproj/project.pbxproj | 6 +++++- .../xcshareddata/xcschemes/DropPlot.xcscheme | 2 +- .../minorTickFormatter.xcodeproj/project.pbxproj | 6 +++++- .../xcshareddata/xcschemes/minorTickFormatter.xcscheme | 2 +- examples/RangePlot/RangePlot.xcodeproj/project.pbxproj | 6 +++++- .../xcshareddata/xcschemes/RangePlot.xcscheme | 2 +- examples/StockPlot/StockPlot.xcodeproj/project.pbxproj | 6 +++++- .../xcshareddata/xcschemes/StockPlot.xcscheme | 2 +- framework/CorePlot.xcodeproj/project.pbxproj | 10 +++++++++- .../xcshareddata/xcschemes/CorePlot Mac.xcscheme | 2 +- .../xcshareddata/xcschemes/CorePlot iOS.xcscheme | 2 +- .../xcshareddata/xcschemes/CorePlot tvOS.xcscheme | 2 +- .../xcschemes/CorePlot-CocoaTouch.xcscheme | 2 +- .../xcshareddata/xcschemes/Documentation-Mac.xcscheme | 2 +- .../xcshareddata/xcschemes/Documentation-iOS.xcscheme | 2 +- .../xcshareddata/xcschemes/Universal Library.xcscheme | 2 +- .../xcschemes/Universal iOS Framework.xcscheme | 2 +- 34 files changed, 86 insertions(+), 34 deletions(-) diff --git a/QCPlugin/CorePlotQCPlugin.xcodeproj/project.pbxproj b/QCPlugin/CorePlotQCPlugin.xcodeproj/project.pbxproj index 036b9dd6b..623b73d0c 100644 --- a/QCPlugin/CorePlotQCPlugin.xcodeproj/project.pbxproj +++ b/QCPlugin/CorePlotQCPlugin.xcodeproj/project.pbxproj @@ -262,7 +262,7 @@ 089C1669FE841209C02AAC07 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0800; + LastUpgradeCheck = 0810; }; buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "CorePlotQCPlugin" */; compatibilityVersion = "Xcode 6.3"; @@ -472,7 +472,9 @@ CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -500,7 +502,9 @@ CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; ENABLE_STRICT_OBJC_MSGSEND = YES; diff --git a/QCPlugin/CorePlotQCPlugin.xcodeproj/xcshareddata/xcschemes/Build & Copy.xcscheme b/QCPlugin/CorePlotQCPlugin.xcodeproj/xcshareddata/xcschemes/Build & Copy.xcscheme index a994e62a5..7ddbf6873 100644 --- a/QCPlugin/CorePlotQCPlugin.xcodeproj/xcshareddata/xcschemes/Build & Copy.xcscheme +++ b/QCPlugin/CorePlotQCPlugin.xcodeproj/xcshareddata/xcschemes/Build & Copy.xcscheme @@ -1,6 +1,6 @@ Date: Fri, 4 Nov 2016 15:32:51 -0400 Subject: [PATCH 003/160] Fixed NSTextAlignment names that were deprecated in macOS 10.12. Fixed issue #309. --- framework/MacOnly/CPTTextStylePlatformSpecific.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/framework/MacOnly/CPTTextStylePlatformSpecific.h b/framework/MacOnly/CPTTextStylePlatformSpecific.h index dcb6919af..3dbcb7fc9 100644 --- a/framework/MacOnly/CPTTextStylePlatformSpecific.h +++ b/framework/MacOnly/CPTTextStylePlatformSpecific.h @@ -3,6 +3,15 @@ /** * @brief Enumeration of paragraph alignments. **/ +#if (MAC_OS_X_VERSION_MAX_ALLOWED >= 101200) +typedef NS_ENUM (NSInteger, CPTTextAlignment) { + CPTTextAlignmentLeft = NSTextAlignmentLeft, ///< Left alignment. + CPTTextAlignmentCenter = NSTextAlignmentCenter, ///< Center alignment. + CPTTextAlignmentRight = NSTextAlignmentRight, ///< Right alignment. + CPTTextAlignmentJustified = NSTextAlignmentJustified, ///< Justified alignment. + CPTTextAlignmentNatural = NSTextAlignmentNatural ///< Natural alignment of the text's script. +}; +#else typedef NS_ENUM (NSInteger, CPTTextAlignment) { CPTTextAlignmentLeft = NSLeftTextAlignment, ///< Left alignment. CPTTextAlignmentCenter = NSCenterTextAlignment, ///< Center alignment. @@ -10,3 +19,4 @@ typedef NS_ENUM (NSInteger, CPTTextAlignment) { CPTTextAlignmentJustified = NSJustifiedTextAlignment, ///< Justified alignment. CPTTextAlignmentNatural = NSNaturalTextAlignment ///< Natural alignment of the text's script. }; +#endif From 5abf2c724b105335c996e072747ece23eb40b51c Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Wed, 9 Nov 2016 20:04:43 -0500 Subject: [PATCH 004/160] Use the same tick label direction for custom labels and ones built by the axis. Fixed issue #313. --- framework/Source/CPTAxis.m | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/framework/Source/CPTAxis.m b/framework/Source/CPTAxis.m index 63553e11b..1e5f8af3a 100644 --- a/framework/Source/CPTAxis.m +++ b/framework/Source/CPTAxis.m @@ -1836,7 +1836,12 @@ -(void)updateCustomTickLabels if ( range.lengthDouble != 0.0 ) { CPTCoordinate orthogonalCoordinate = CPTOrthogonalCoordinate(self.coordinate); - CPTSign direction = self.tickDirection; + + CPTSign direction = self.tickLabelDirection; + + if ( direction == CPTSignNone ) { + direction = self.tickDirection; + } for ( CPTAxisLabel *label in self.axisLabels ) { BOOL visible = [range containsNumber:label.tickLocation]; @@ -2317,7 +2322,12 @@ -(void)setAxisLabels:(nullable CPTAxisLabelSet *)newLabels } } - [self updateMajorTickLabels]; + if ( self.labelingPolicy == CPTAxisLabelingPolicyNone ) { + [self updateCustomTickLabels]; + } + else { + [self updateMajorTickLabels]; + } } } @@ -2357,7 +2367,12 @@ -(void)setMinorTickAxisLabels:(nullable CPTAxisLabelSet *)newLabels } } - [self updateMinorTickLabels]; + if ( self.labelingPolicy == CPTAxisLabelingPolicyNone ) { + [self updateCustomTickLabels]; + } + else { + [self updateMinorTickLabels]; + } } } From 1f6abd374b0b47a1968be3e817cfab0dca054f50 Mon Sep 17 00:00:00 2001 From: beepscore Date: Sat, 10 Dec 2016 19:02:36 -0800 Subject: [PATCH 005/160] Fix typo in example code ScatterPlotController.swift that prevented y axis from appearing. Change axisSet.xAxis to axisSet.yAxis --- examples/CPTTestApp-iPhone/Classes/ScatterPlotController.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/CPTTestApp-iPhone/Classes/ScatterPlotController.swift b/examples/CPTTestApp-iPhone/Classes/ScatterPlotController.swift index 2f41d6be9..9abd3496b 100644 --- a/examples/CPTTestApp-iPhone/Classes/ScatterPlotController.swift +++ b/examples/CPTTestApp-iPhone/Classes/ScatterPlotController.swift @@ -45,7 +45,7 @@ class ScatterPlotController : UIViewController, CPTScatterPlotDataSource, CPTAxi ] } - if let y = axisSet.xAxis { + if let y = axisSet.yAxis { y.majorIntervalLength = 0.5 y.minorTicksPerInterval = 5 y.orthogonalPosition = 2.0 From 05b20ad7d38da8d075aeed1e6ffbad9e91009a03 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 11 Dec 2016 16:34:19 -0500 Subject: [PATCH 006/160] The -[NSString boundingRectWithSize:options:attributes:context:] method is only available on macOS 10.11 and higher; fallback to -[NSString boundingRectWithSize:options:attributes:] on earlier versions. --- .../MacOnly/CPTTextStylePlatformSpecific.m | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/framework/MacOnly/CPTTextStylePlatformSpecific.m b/framework/MacOnly/CPTTextStylePlatformSpecific.m index 594317d5e..6160c0f36 100644 --- a/framework/MacOnly/CPTTextStylePlatformSpecific.m +++ b/framework/MacOnly/CPTTextStylePlatformSpecific.m @@ -198,10 +198,19 @@ @implementation NSString(CPTTextStyleExtensions) **/ -(CGSize)sizeWithTextStyle:(nullable CPTTextStyle *)style { - CGRect rect = [self boundingRectWithSize:CPTSizeMake(10000.0, 10000.0) - options:CPTStringDrawingOptions - attributes:style.attributes - context:nil]; + CGRect rect = CGRectZero; + + if ( [self respondsToSelector:@selector(boundingRectWithSize:options:attributes:context:)] ) { + rect = [self boundingRectWithSize:CPTSizeMake(10000.0, 10000.0) + options:CPTStringDrawingOptions + attributes:style.attributes + context:nil]; + } + else { + rect = [self boundingRectWithSize:CPTSizeMake(10000.0, 10000.0) + options:CPTStringDrawingOptions + attributes:style.attributes]; + } CGSize textSize = rect.size; From b92f3e589e064c53d4712aeac3ca22b8b42db3b5 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Wed, 14 Dec 2016 20:15:04 -0500 Subject: [PATCH 007/160] Fixed axis label colors in the iPhone CPTTestApp scatter plot demo. --- .../Classes/ScatterPlotController.swift | 32 +++++++++---------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/examples/CPTTestApp-iPhone/Classes/ScatterPlotController.swift b/examples/CPTTestApp-iPhone/Classes/ScatterPlotController.swift index 9abd3496b..63c58dacc 100644 --- a/examples/CPTTestApp-iPhone/Classes/ScatterPlotController.swift +++ b/examples/CPTTestApp-iPhone/Classes/ScatterPlotController.swift @@ -151,32 +151,30 @@ class ScatterPlotController : UIViewController, CPTScatterPlotDataSource, CPTAxi // MARK: - Axis Delegate Methods - private func axis(_ axis: CPTAxis, shouldUpdateAxisLabelsAtLocations locations: NSSet!) -> Bool + func axis(_ axis: CPTAxis, shouldUpdateAxisLabelsAtLocations locations: Set) -> Bool { if let formatter = axis.labelFormatter { let labelOffset = axis.labelOffset var newLabels = Set() - if let labelTextStyle = axis.labelTextStyle?.mutableCopy() as? CPTMutableTextStyle { - for location in locations { - if let tickLocation = location as? NSNumber { - if tickLocation.doubleValue >= 0.0 { - labelTextStyle.color = .green() - } - else { - labelTextStyle.color = .red() - } + for tickLocation in locations { + if let labelTextStyle = axis.labelTextStyle?.mutableCopy() as? CPTMutableTextStyle { + if tickLocation.doubleValue >= 0.0 { + labelTextStyle.color = .green() + } + else { + labelTextStyle.color = .red() + } - let labelString = formatter.string(for:tickLocation) - let newLabelLayer = CPTTextLayer(text: labelString, style: labelTextStyle) + let labelString = formatter.string(for:tickLocation) + let newLabelLayer = CPTTextLayer(text: labelString, style: labelTextStyle) - let newLabel = CPTAxisLabel(contentLayer: newLabelLayer) - newLabel.tickLocation = tickLocation - newLabel.offset = labelOffset + let newLabel = CPTAxisLabel(contentLayer: newLabelLayer) + newLabel.tickLocation = tickLocation + newLabel.offset = labelOffset - newLabels.insert(newLabel) - } + newLabels.insert(newLabel) } axis.axisLabels = newLabels From 6e7083770db2e14a3f7aad51bab107e41868cbb8 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Wed, 11 Jan 2017 20:23:29 -0500 Subject: [PATCH 008/160] Made the layer annotation constraints public. Fixed issue #310. --- framework/Source/CPTLayerAnnotation.h | 2 ++ framework/Source/CPTLayerAnnotation.m | 25 ++++++++++++++++++++++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/framework/Source/CPTLayerAnnotation.h b/framework/Source/CPTLayerAnnotation.h index d16785280..23e1afeea 100644 --- a/framework/Source/CPTLayerAnnotation.h +++ b/framework/Source/CPTLayerAnnotation.h @@ -7,6 +7,8 @@ @property (nonatomic, readonly, cpt_weak_property, nullable) CPTLayer *anchorLayer; @property (nonatomic, readwrite, assign) CPTRectAnchor rectAnchor; +@property (nonatomic, readwrite, strong, nullable) CPTConstraints *xConstraints; +@property (nonatomic, readwrite, strong, nullable) CPTConstraints *yConstraints; /// @name Initialization /// @{ diff --git a/framework/Source/CPTLayerAnnotation.m b/framework/Source/CPTLayerAnnotation.m index 7759d90a3..fd8a065b8 100644 --- a/framework/Source/CPTLayerAnnotation.m +++ b/framework/Source/CPTLayerAnnotation.m @@ -7,9 +7,6 @@ /// @cond @interface CPTLayerAnnotation() -@property (nonatomic, readwrite, strong, nullable) CPTConstraints *xConstraints; -@property (nonatomic, readwrite, strong, nullable) CPTConstraints *yConstraints; - -(void)setConstraints; @end @@ -36,7 +33,14 @@ @implementation CPTLayerAnnotation **/ @synthesize rectAnchor; +/** @property CPTConstraints *xConstraints + * @brief The constraints used to position the content layer relative to the reference layer in the x-direction. Setting the @ref rectAnchor resets the constraints. + **/ @synthesize xConstraints; + +/** @property CPTConstraints *yConstraints + * @brief The constraints used to position the content layer relative to the reference layer in the y-direction. Setting the @ref rectAnchor resets the constraints. + **/ @synthesize yConstraints; #pragma mark - @@ -249,6 +253,21 @@ -(void)setRectAnchor:(CPTRectAnchor)newAnchor if ( newAnchor != rectAnchor ) { rectAnchor = newAnchor; [self setConstraints]; + } +} + +-(void)setXConstraints:(CPTConstraints *)newConstraints +{ + if ( newConstraints != xConstraints ) { + xConstraints = newConstraints; + [self positionContentLayer]; + } +} + +-(void)setYConstraints:(CPTConstraints *)newConstraints +{ + if ( newConstraints != yConstraints ) { + yConstraints = newConstraints; [self positionContentLayer]; } } From 841c60b4ac80f518682a58d6e0e7af61deef0814 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sat, 28 Jan 2017 10:38:40 -0500 Subject: [PATCH 009/160] Fixed header name capitalization to fix Xcode 8.3 compiler warnings. --- QCPlugin/CPTBarPlotPlugin.h | 2 +- QCPlugin/CPTBarPlotPlugin.m | 2 +- QCPlugin/CPTPieChartPlugin.h | 2 +- QCPlugin/CPTScatterPlotPlugin.h | 2 +- QCPlugin/CPTScatterPlotPlugin.m | 2 +- QCPlugin/CorePlotQCPlugin.m | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/QCPlugin/CPTBarPlotPlugin.h b/QCPlugin/CPTBarPlotPlugin.h index e8ecf371d..e5fbb2bce 100644 --- a/QCPlugin/CPTBarPlotPlugin.h +++ b/QCPlugin/CPTBarPlotPlugin.h @@ -1,4 +1,4 @@ -#import "CorePlotQCPlugIn.h" +#import "CorePlotQCPlugin.h" #import @interface CPTBarPlotPlugIn : CorePlotQCPlugIn diff --git a/QCPlugin/CPTBarPlotPlugin.m b/QCPlugin/CPTBarPlotPlugin.m index 8a85bd372..89ea643f9 100644 --- a/QCPlugin/CPTBarPlotPlugin.m +++ b/QCPlugin/CPTBarPlotPlugin.m @@ -1,4 +1,4 @@ -#import "CPTBarPlotPlugIn.h" +#import "CPTBarPlotPlugin.h" @implementation CPTBarPlotPlugIn diff --git a/QCPlugin/CPTPieChartPlugin.h b/QCPlugin/CPTPieChartPlugin.h index 4700d9951..844715ba9 100644 --- a/QCPlugin/CPTPieChartPlugin.h +++ b/QCPlugin/CPTPieChartPlugin.h @@ -1,4 +1,4 @@ -#import "CorePlotQCPlugIn.h" +#import "CorePlotQCPlugin.h" #import @interface CPTPieChartPlugIn : CorePlotQCPlugIn diff --git a/QCPlugin/CPTScatterPlotPlugin.h b/QCPlugin/CPTScatterPlotPlugin.h index 0ea178c1d..aaad42138 100644 --- a/QCPlugin/CPTScatterPlotPlugin.h +++ b/QCPlugin/CPTScatterPlotPlugin.h @@ -1,4 +1,4 @@ -#import "CorePlotQCPlugIn.h" +#import "CorePlotQCPlugin.h" #import @interface CPTScatterPlotPlugIn : CorePlotQCPlugIn diff --git a/QCPlugin/CPTScatterPlotPlugin.m b/QCPlugin/CPTScatterPlotPlugin.m index 3fd32a752..de2edc261 100644 --- a/QCPlugin/CPTScatterPlotPlugin.m +++ b/QCPlugin/CPTScatterPlotPlugin.m @@ -1,4 +1,4 @@ -#import "CPTScatterPlotPlugIn.h" +#import "CPTScatterPlotPlugin.h" @implementation CPTScatterPlotPlugIn diff --git a/QCPlugin/CorePlotQCPlugin.m b/QCPlugin/CorePlotQCPlugin.m index 99d4c9080..b29edd32d 100644 --- a/QCPlugin/CorePlotQCPlugin.m +++ b/QCPlugin/CorePlotQCPlugin.m @@ -1,4 +1,4 @@ -#import "CorePlotQCPlugIn.h" +#import "CorePlotQCPlugin.h" #import #define kQCPlugIn_Name @"CorePlotQCPlugIn" From ad68084ec5f8245817884d853053ecb2cf95d69b Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Mon, 27 Feb 2017 19:42:17 -0500 Subject: [PATCH 010/160] Fixed rendering error for pie charts with only one slice. Fixed issue #331. --- framework/Source/CPTPieChart.m | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/framework/Source/CPTPieChart.m b/framework/Source/CPTPieChart.m index 705bd2607..49e125b48 100644 --- a/framework/Source/CPTPieChart.m +++ b/framework/Source/CPTPieChart.m @@ -42,7 +42,7 @@ -(CGFloat)radiansForPieSliceValue:(CGFloat)pieSliceValue; -(CGFloat)normalizedPosition:(CGFloat)rawPosition; -(BOOL)angle:(CGFloat)touchedAngle betweenStartAngle:(CGFloat)startingAngle endAngle:(CGFloat)endingAngle; --(void)addSliceToPath:(nonnull CGMutablePathRef)slicePath centerPoint:(CGPoint)center startingAngle:(CGFloat)startingAngle finishingAngle:(CGFloat)finishingAngle; +-(void)addSliceToPath:(nonnull CGMutablePathRef)slicePath centerPoint:(CGPoint)center startingAngle:(CGFloat)startingAngle finishingAngle:(CGFloat)finishingAngle width:(CGFloat)currentWidth; -(nullable CPTFill *)sliceFillForIndex:(NSUInteger)idx; @end @@ -643,8 +643,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context } CGMutablePathRef slicePath = CGPathCreateMutable(); - [self addSliceToPath:slicePath centerPoint:center startingAngle:startingAngle finishingAngle:finishingAngle]; - CGPathCloseSubpath(slicePath); + [self addSliceToPath:slicePath centerPoint:center startingAngle:startingAngle finishingAngle:finishingAngle width:currentWidth]; CPTFill *currentFill = [self sliceFillForIndex:currentIndex]; if ( [currentFill isKindOfClass:fillClass] ) { @@ -727,19 +726,32 @@ -(CGFloat)radiansForPieSliceValue:(CGFloat)pieSliceValue return fmod( angle, CPTFloat(2.0 * M_PI) ); } --(void)addSliceToPath:(nonnull CGMutablePathRef)slicePath centerPoint:(CGPoint)center startingAngle:(CGFloat)startingAngle finishingAngle:(CGFloat)finishingAngle +-(void)addSliceToPath:(nonnull CGMutablePathRef)slicePath centerPoint:(CGPoint)center startingAngle:(CGFloat)startingAngle finishingAngle:(CGFloat)finishingAngle width:(CGFloat)currentWidth { bool direction = (self.sliceDirection == CPTPieDirectionClockwise) ? true : false; + CGFloat outerRadius = self.pieRadius; CGFloat innerRadius = self.pieInnerRadius; if ( innerRadius > CPTFloat(0.0) ) { - CGPathAddArc(slicePath, NULL, center.x, center.y, self.pieRadius, startingAngle, finishingAngle, direction); - CGPathAddArc(slicePath, NULL, center.x, center.y, innerRadius, finishingAngle, startingAngle, !direction); + if ( currentWidth >= 1.0 ) { + CGPathAddArc(slicePath, NULL, center.x, center.y, outerRadius, startingAngle, startingAngle + CPTFloat(2.0 * M_PI), direction); + CGPathAddArc(slicePath, NULL, center.x, center.y, innerRadius, startingAngle + CPTFloat(2.0 * M_PI), startingAngle, !direction); + } + else { + CGPathAddArc(slicePath, NULL, center.x, center.y, outerRadius, startingAngle, finishingAngle, direction); + CGPathAddArc(slicePath, NULL, center.x, center.y, innerRadius, finishingAngle, startingAngle, !direction); + } } else { - CGPathMoveToPoint(slicePath, NULL, center.x, center.y); - CGPathAddArc(slicePath, NULL, center.x, center.y, self.pieRadius, startingAngle, finishingAngle, direction); + if ( currentWidth >= 1.0 ) { + CGPathAddEllipseInRect( slicePath, NULL, CGRectMake( center.x - outerRadius, center.y - outerRadius, outerRadius * CPTFloat(2.0), outerRadius * CPTFloat(2.0) ) ); + } + else { + CGPathMoveToPoint(slicePath, NULL, center.x, center.y); + CGPathAddArc(slicePath, NULL, center.x, center.y, outerRadius, startingAngle, finishingAngle, direction); + } } + CGPathCloseSubpath(slicePath); } -(nullable CPTFill *)sliceFillForIndex:(NSUInteger)idx From e6b853c77b3d02d076a1ba6d36e76568f09579dc Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Fri, 10 Mar 2017 13:37:50 -0500 Subject: [PATCH 011/160] Fixed compiler warnings in CPTPieChart. Fixed issue #333. --- framework/Source/CPTPieChart.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/framework/Source/CPTPieChart.m b/framework/Source/CPTPieChart.m index 49e125b48..63a1e5b33 100644 --- a/framework/Source/CPTPieChart.m +++ b/framework/Source/CPTPieChart.m @@ -733,7 +733,7 @@ -(void)addSliceToPath:(nonnull CGMutablePathRef)slicePath centerPoint:(CGPoint)c CGFloat innerRadius = self.pieInnerRadius; if ( innerRadius > CPTFloat(0.0) ) { - if ( currentWidth >= 1.0 ) { + if ( currentWidth >= CPTFloat(1.0) ) { CGPathAddArc(slicePath, NULL, center.x, center.y, outerRadius, startingAngle, startingAngle + CPTFloat(2.0 * M_PI), direction); CGPathAddArc(slicePath, NULL, center.x, center.y, innerRadius, startingAngle + CPTFloat(2.0 * M_PI), startingAngle, !direction); } @@ -743,7 +743,7 @@ -(void)addSliceToPath:(nonnull CGMutablePathRef)slicePath centerPoint:(CGPoint)c } } else { - if ( currentWidth >= 1.0 ) { + if ( currentWidth >= CPTFloat(1.0) ) { CGPathAddEllipseInRect( slicePath, NULL, CGRectMake( center.x - outerRadius, center.y - outerRadius, outerRadius * CPTFloat(2.0), outerRadius * CPTFloat(2.0) ) ); } else { From 11e9a6821f90787b2f425fe71b66db89ea8a32e9 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 12 Mar 2017 12:28:03 -0400 Subject: [PATCH 012/160] Removed references to a deprecated constant in the iPhone CPTTestApp example app. --- examples/CPTTestApp-iPhone/Classes/BarChartController.swift | 4 ++-- examples/CPTTestApp-iPhone/Classes/PieChartController.swift | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/CPTTestApp-iPhone/Classes/BarChartController.swift b/examples/CPTTestApp-iPhone/Classes/BarChartController.swift index d8ec6d36b..8049ece24 100644 --- a/examples/CPTTestApp-iPhone/Classes/BarChartController.swift +++ b/examples/CPTTestApp-iPhone/Classes/BarChartController.swift @@ -78,7 +78,7 @@ class BarChartController : UIViewController, CPTBarPlotDataSource { x.titleOffset = 55.0 // Custom labels - x.labelRotation = CGFloat(M_PI_4) + x.labelRotation = CGFloat(.pi / 4.0) x.labelingPolicy = .none let customTickLocations = [1, 5, 10, 15] @@ -91,7 +91,7 @@ class BarChartController : UIViewController, CPTBarPlotDataSource { labelLocation += 1 newLabel.tickLocation = NSNumber.init(value: tickLocation) newLabel.offset = x.labelOffset + x.majorTickLength - newLabel.rotation = CGFloat(M_PI_4) + newLabel.rotation = CGFloat(.pi / 4.0) customLabels.insert(newLabel) } diff --git a/examples/CPTTestApp-iPhone/Classes/PieChartController.swift b/examples/CPTTestApp-iPhone/Classes/PieChartController.swift index 7ccb93a88..841d2d265 100644 --- a/examples/CPTTestApp-iPhone/Classes/PieChartController.swift +++ b/examples/CPTTestApp-iPhone/Classes/PieChartController.swift @@ -37,7 +37,7 @@ class PieChartController : UIViewController, CPTPieChartDataSource, CPTPieChartD piePlot.dataSource = self piePlot.pieRadius = 131.0 piePlot.identifier = NSString.init(string: "Pie Chart 1") - piePlot.startAngle = CGFloat(M_PI_4) + piePlot.startAngle = CGFloat(.pi / 4.0) piePlot.sliceDirection = .counterClockwise piePlot.centerAnchor = CGPoint(x: 0.5, y: 0.38) piePlot.borderLineStyle = CPTLineStyle() From 2897da349c4747b2ca76fe636fcee582f7affb8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9sar=20Arratia=20Garc=C3=ADa?= Date: Fri, 17 Mar 2017 15:04:24 +0100 Subject: [PATCH 013/160] Solved problem with vDSP functions in -plotRangeForField --- framework/Source/CPTPlot.m | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/framework/Source/CPTPlot.m b/framework/Source/CPTPlot.m index 9acc640c1..8922d988b 100644 --- a/framework/Source/CPTPlot.m +++ b/framework/Source/CPTPlot.m @@ -1472,8 +1472,14 @@ -(nullable CPTPlotRange *)plotRangeForField:(NSUInteger)fieldEnum double min = (double)INFINITY; double max = -(double)INFINITY; - vDSP_minvD(doubles, 1, &min, (vDSP_Length)numberOfSamples); - vDSP_maxvD(doubles, 1, &max, (vDSP_Length)numberOfSamples); + for (NSUInteger n = 0; n < numberOfSamples; ++n){ + if (min > doubles[n]){ + min = doubles[n]; + } + if (max < doubles[n]){ + max = doubles[n]; + } + } if ( isnan(min) || isnan(max) ) { // vDSP functions may return NAN if any data in the array is NAN From 57424e007467a78aad6d0b2e24b707b02d2bf483 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sat, 18 Mar 2017 13:59:54 -0400 Subject: [PATCH 014/160] Standardized code formatting. --- framework/Source/CPTPlot.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/framework/Source/CPTPlot.m b/framework/Source/CPTPlot.m index 8922d988b..0d4d3ad7b 100644 --- a/framework/Source/CPTPlot.m +++ b/framework/Source/CPTPlot.m @@ -1472,11 +1472,11 @@ -(nullable CPTPlotRange *)plotRangeForField:(NSUInteger)fieldEnum double min = (double)INFINITY; double max = -(double)INFINITY; - for (NSUInteger n = 0; n < numberOfSamples; ++n){ - if (min > doubles[n]){ + for ( NSUInteger n = 0; n < numberOfSamples; ++n ) { + if ( min > doubles[n] ) { min = doubles[n]; } - if (max < doubles[n]){ + if ( max < doubles[n] ) { max = doubles[n]; } } From b9e9484f4409251b16577a39e308cace3a3a0b3f Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sat, 18 Mar 2017 14:13:23 -0400 Subject: [PATCH 015/160] Removed dependency on the Accelerate framework. Fixed issue #334. --- CorePlot-latest.podspec | 2 +- CorePlot.podspec | 2 +- documentation/changelog.markdown | 3 +- .../AAPLot/AAPLot.xcodeproj/project.pbxproj | 2 - .../CPTTestApp-iPad.xcodeproj/project.pbxproj | 2 - .../project.pbxproj | 2 - .../Plot_Gallery.xcodeproj/project.pbxproj | 4 -- .../RangePlot.xcodeproj/project.pbxproj | 2 - .../StockPlot.xcodeproj/project.pbxproj | 2 - framework/CorePlot.xcodeproj/project.pbxproj | 10 ----- framework/Source/CPTPlot.m | 38 ++++++------------- 11 files changed, 15 insertions(+), 54 deletions(-) diff --git a/CorePlot-latest.podspec b/CorePlot-latest.podspec index bf65bf04f..05752cbac 100644 --- a/CorePlot-latest.podspec +++ b/CorePlot-latest.podspec @@ -39,7 +39,7 @@ Pod::Spec.new do |s| s.osx.xcconfig = { 'HEADER_SEARCH_PATHS' => '"${PODS_ROOT}/Headers/Private/CorePlot/osx"' } s.tvos.xcconfig = { 'HEADER_SEARCH_PATHS' => '"${PODS_ROOT}/Headers/Private/CorePlot/tvos"' } - s.frameworks = 'QuartzCore', 'Accelerate' + s.frameworks = 'QuartzCore' s.ios.frameworks = 'UIKit', 'Foundation' s.tvos.frameworks = 'UIKit', 'Foundation' s.osx.frameworks = 'Cocoa' diff --git a/CorePlot.podspec b/CorePlot.podspec index 7daa36b6d..98cba66ee 100644 --- a/CorePlot.podspec +++ b/CorePlot.podspec @@ -39,7 +39,7 @@ Pod::Spec.new do |s| s.osx.xcconfig = { 'HEADER_SEARCH_PATHS' => '"${PODS_ROOT}/Headers/Private/CorePlot/osx"' } s.tvos.xcconfig = { 'HEADER_SEARCH_PATHS' => '"${PODS_ROOT}/Headers/Private/CorePlot/tvos"' } - s.frameworks = 'QuartzCore', 'Accelerate' + s.frameworks = 'QuartzCore' s.ios.frameworks = 'UIKit', 'Foundation' s.tvos.frameworks = 'UIKit', 'Foundation' s.osx.frameworks = 'Cocoa' diff --git a/documentation/changelog.markdown b/documentation/changelog.markdown index 119d383bd..ba7c20466 100644 --- a/documentation/changelog.markdown +++ b/documentation/changelog.markdown @@ -4,13 +4,14 @@ This release updates Core Plot to be compatible with Xcode 8 and Swift 3. -The Mac deployment target remains OS X 10.8. The iOS deployment target has changed to iOS 8.0 for both the framework and the static library. The tvOS deployment target remains tvOS 9.0. +The Mac deployment target remains OS X 10.8. The iOS deployment target has changed to iOS 8.0 for both the framework and the static library. The tvOS deployment target remains tvOS 9.0. Core Plot no longer requires the Accelerate framework. ## Details - **New**: Increased the iOS deployment target to iOS 8. - **Changed**: Added Swift name mappings for all string constants. - **Changed**: Updated all Swift example apps to Swift 3. - **Changed**: Miscellaneous bug fixes and cleanup. +- **Removed**: Removed the dependency on the Accelerate framework. diff --git a/examples/AAPLot/AAPLot.xcodeproj/project.pbxproj b/examples/AAPLot/AAPLot.xcodeproj/project.pbxproj index c2281e27b..d6ce3a326 100644 --- a/examples/AAPLot/AAPLot.xcodeproj/project.pbxproj +++ b/examples/AAPLot/AAPLot.xcodeproj/project.pbxproj @@ -24,7 +24,6 @@ AB8989470FE0309E00FDC37F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AB8989460FE0309E00FDC37F /* QuartzCore.framework */; }; AB8F94580FDEFA1500E61485 /* APYahooDataPuller.m in Sources */ = {isa = PBXBuildFile; fileRef = AB8F94570FDEFA1500E61485 /* APYahooDataPuller.m */; }; ABA5345E0FEB40CE0046A8DA /* AAPL.plist in Resources */ = {isa = PBXBuildFile; fileRef = ABA5345D0FEB40CE0046A8DA /* AAPL.plist */; }; - C3CD283017DE9B9C008EED1E /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3CD282F17DE9B9C008EED1E /* Accelerate.framework */; }; C3D3936C19FD6B1D00148319 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C3D3936B19FD6B1D00148319 /* Images.xcassets */; }; C3D414941A7D838200B6F5D6 /* libCorePlot-CocoaTouch.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C3D414911A7D836300B6F5D6 /* libCorePlot-CocoaTouch.a */; }; C3F0BA3919EC9F6300F7CB47 /* Launch Screen.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3F0BA3819EC9F6300F7CB47 /* Launch Screen.xib */; }; @@ -134,7 +133,6 @@ 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, 288765590DF743DE002DB57D /* CoreGraphics.framework in Frameworks */, AB8989470FE0309E00FDC37F /* QuartzCore.framework in Frameworks */, - C3CD283017DE9B9C008EED1E /* Accelerate.framework in Frameworks */, C3D414941A7D838200B6F5D6 /* libCorePlot-CocoaTouch.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/examples/CPTTestApp-iPad/CPTTestApp-iPad.xcodeproj/project.pbxproj b/examples/CPTTestApp-iPad/CPTTestApp-iPad.xcodeproj/project.pbxproj index 91499fc18..b5782fb35 100644 --- a/examples/CPTTestApp-iPad/CPTTestApp-iPad.xcodeproj/project.pbxproj +++ b/examples/CPTTestApp-iPad/CPTTestApp-iPad.xcodeproj/project.pbxproj @@ -17,7 +17,6 @@ 28D7ACF80DDB3853001CB0EB /* CPTTestApp_iPadViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28D7ACF70DDB3853001CB0EB /* CPTTestApp_iPadViewController.m */; }; BC65758F116549890008F594 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC65758E116549890008F594 /* QuartzCore.framework */; }; C34677AE19F3341700429A85 /* Launch Screen.xib in Resources */ = {isa = PBXBuildFile; fileRef = C34677AD19F3341700429A85 /* Launch Screen.xib */; }; - C3CD283917DE9C59008EED1E /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3CD283817DE9C59008EED1E /* Accelerate.framework */; }; C3D3936019FD670400148319 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C3D3935F19FD670400148319 /* Images.xcassets */; }; C3D414AD1A7D844400B6F5D6 /* libCorePlot-CocoaTouch.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C3D414AA1A7D843800B6F5D6 /* libCorePlot-CocoaTouch.a */; }; C3F47B6E17BF99DE0075181F /* CorePlotIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = C3F47B6C17BF99DE0075181F /* CorePlotIcon.png */; }; @@ -116,7 +115,6 @@ 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, 288765A50DF7441C002DB57D /* CoreGraphics.framework in Frameworks */, BC65758F116549890008F594 /* QuartzCore.framework in Frameworks */, - C3CD283917DE9C59008EED1E /* Accelerate.framework in Frameworks */, C3D414AD1A7D844400B6F5D6 /* libCorePlot-CocoaTouch.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj index 90d2841ed..20d64c7b1 100644 --- a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj +++ b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj @@ -24,7 +24,6 @@ C359603919CE34FC005CDFB9 /* PieChartController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C359603519CE34FB005CDFB9 /* PieChartController.swift */; }; C359603A19CE34FC005CDFB9 /* ScatterPlotController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C359603619CE34FB005CDFB9 /* ScatterPlotController.swift */; }; C3B9F9D417503CDD001CCC50 /* BlueTexture.png in Resources */ = {isa = PBXBuildFile; fileRef = C3B9F9D317503CDD001CCC50 /* BlueTexture.png */; }; - C3CD283E17DE9C95008EED1E /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3CD283D17DE9C95008EED1E /* Accelerate.framework */; }; C3D3936419FD671100148319 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C3D3936319FD671100148319 /* Images.xcassets */; }; C3D414C61A7D847C00B6F5D6 /* libCorePlot-CocoaTouch.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C3D414C31A7D846500B6F5D6 /* libCorePlot-CocoaTouch.a */; }; /* End PBXBuildFile section */ @@ -124,7 +123,6 @@ 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, 288765080DF74369002DB57D /* CoreGraphics.framework in Frameworks */, BC9B81DA0FB893F70035D8DA /* QuartzCore.framework in Frameworks */, - C3CD283E17DE9C95008EED1E /* Accelerate.framework in Frameworks */, C3D414C61A7D847C00B6F5D6 /* libCorePlot-CocoaTouch.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/examples/CorePlotGallery/Plot_Gallery.xcodeproj/project.pbxproj b/examples/CorePlotGallery/Plot_Gallery.xcodeproj/project.pbxproj index 56e196166..499384a2e 100644 --- a/examples/CorePlotGallery/Plot_Gallery.xcodeproj/project.pbxproj +++ b/examples/CorePlotGallery/Plot_Gallery.xcodeproj/project.pbxproj @@ -62,7 +62,6 @@ C30D8B371BCAFDE20003BB70 /* SimplePieChart.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F22FF9F12342D7C006BF615 /* SimplePieChart.m */; }; C30D8B381BCAFDE20003BB70 /* SimpleScatterPlot.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F22FFA112342D7C006BF615 /* SimpleScatterPlot.m */; }; C30D8B391BCAFDE20003BB70 /* VerticalBarChart.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F22FFA312342D7C006BF615 /* VerticalBarChart.m */; }; - C30D8B3B1BCAFFAE0003BB70 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C30D8B3A1BCAFFAE0003BB70 /* Accelerate.framework */; }; C30D8B3D1BCAFFB50003BB70 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C30D8B3C1BCAFFB50003BB70 /* CoreGraphics.framework */; }; C30D8B3F1BCAFFBB0003BB70 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C30D8B3E1BCAFFBB0003BB70 /* QuartzCore.framework */; }; C30D8B411BCAFFC10003BB70 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C30D8B401BCAFFC10003BB70 /* Foundation.framework */; }; @@ -80,7 +79,6 @@ C34CB5621BC9AB85009270A0 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C34CB5611BC9AB85009270A0 /* UIKit.framework */; }; C34CB5641BC9AB8C009270A0 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C34CB5631BC9AB8C009270A0 /* CoreGraphics.framework */; }; C34CB5661BC9AB93009270A0 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C34CB5651BC9AB93009270A0 /* QuartzCore.framework */; }; - C34CB5681BC9AB9E009270A0 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C34CB5671BC9AB9E009270A0 /* Accelerate.framework */; }; C34CB57C1BC9B1C1009270A0 /* AxisDemo.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F8E1CC112908B0000D2035F /* AxisDemo.m */; }; C34CB57D1BC9B1C1009270A0 /* CandlestickPlot.m in Sources */ = {isa = PBXBuildFile; fileRef = C360E1DF13B18CAE007994B6 /* CandlestickPlot.m */; }; C34CB57E1BC9B1C1009270A0 /* ColoredBarChart.m in Sources */ = {isa = PBXBuildFile; fileRef = C3A31A5514DF782A00734AB7 /* ColoredBarChart.m */; }; @@ -365,7 +363,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C30D8B3B1BCAFFAE0003BB70 /* Accelerate.framework in Frameworks */, C30D8B3D1BCAFFB50003BB70 /* CoreGraphics.framework in Frameworks */, C30D8B201BCAFC140003BB70 /* CorePlot.framework in Frameworks */, C30D8B411BCAFFC10003BB70 /* Foundation.framework in Frameworks */, @@ -379,7 +376,6 @@ buildActionMask = 2147483647; files = ( C30B12431BCADD300084C567 /* CorePlot.framework in Frameworks */, - C34CB5681BC9AB9E009270A0 /* Accelerate.framework in Frameworks */, C34CB5641BC9AB8C009270A0 /* CoreGraphics.framework in Frameworks */, C34CB5601BC9AB7B009270A0 /* Foundation.framework in Frameworks */, C34CB5661BC9AB93009270A0 /* QuartzCore.framework in Frameworks */, diff --git a/examples/RangePlot/RangePlot.xcodeproj/project.pbxproj b/examples/RangePlot/RangePlot.xcodeproj/project.pbxproj index ee192e274..12bc32865 100644 --- a/examples/RangePlot/RangePlot.xcodeproj/project.pbxproj +++ b/examples/RangePlot/RangePlot.xcodeproj/project.pbxproj @@ -7,7 +7,6 @@ objects = { /* Begin PBXBuildFile section */ - 071BCBD71079EBE00045E43D /* CorePlot.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 071BCBD61079EBE00045E43D /* CorePlot.framework */; }; 076185040F3CB17800A89A76 /* CorePlot.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 076184C10F3CAD5900A89A76 /* CorePlot.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 0761850B0F3CB1E800A89A76 /* CorePlot.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 076184C10F3CAD5900A89A76 /* CorePlot.framework */; }; 077382B10F3DC1FB002F10E2 /* Controller.m in Sources */ = {isa = PBXBuildFile; fileRef = 077382B00F3DC1FB002F10E2 /* Controller.m */; }; @@ -128,7 +127,6 @@ 0761850B0F3CB1E800A89A76 /* CorePlot.framework in Frameworks */, 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */, BC8E737D0FC0B3CF00DF8511 /* QuartzCore.framework in Frameworks */, - 071BCBD71079EBE00045E43D /* CorePlot.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/examples/StockPlot/StockPlot.xcodeproj/project.pbxproj b/examples/StockPlot/StockPlot.xcodeproj/project.pbxproj index f1ca975e9..42121bd09 100644 --- a/examples/StockPlot/StockPlot.xcodeproj/project.pbxproj +++ b/examples/StockPlot/StockPlot.xcodeproj/project.pbxproj @@ -26,7 +26,6 @@ AB6FA5590FEB6235008DB04A /* APYahooDataPullerGraph.m in Sources */ = {isa = PBXBuildFile; fileRef = AB6FA5570FEB6235008DB04A /* APYahooDataPullerGraph.m */; }; AB6FA55A0FEB6235008DB04A /* APYahooDataPullerGraph.xib in Resources */ = {isa = PBXBuildFile; fileRef = AB6FA5580FEB6235008DB04A /* APYahooDataPullerGraph.xib */; }; C36157E919D79AAC0036ACDA /* Launch Screen.xib in Resources */ = {isa = PBXBuildFile; fileRef = C36157E819D79AAC0036ACDA /* Launch Screen.xib */; }; - C3CD284817DE9D1F008EED1E /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3CD284717DE9D1F008EED1E /* Accelerate.framework */; }; C3D3937019FD6CBF00148319 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C3D3936F19FD6CBF00148319 /* Images.xcassets */; }; C3D414DF1A7D84CC00B6F5D6 /* libCorePlot-CocoaTouch.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C3D414DC1A7D84BF00B6F5D6 /* libCorePlot-CocoaTouch.a */; }; /* End PBXBuildFile section */ @@ -133,7 +132,6 @@ 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, 2892E4100DC94CBA00A64D0F /* CoreGraphics.framework in Frameworks */, AB6FA4A40FEB579B008DB04A /* QuartzCore.framework in Frameworks */, - C3CD284817DE9D1F008EED1E /* Accelerate.framework in Frameworks */, C3D414DF1A7D84CC00B6F5D6 /* libCorePlot-CocoaTouch.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/framework/CorePlot.xcodeproj/project.pbxproj b/framework/CorePlot.xcodeproj/project.pbxproj index 0f94430af..7b4dd51d3 100644 --- a/framework/CorePlot.xcodeproj/project.pbxproj +++ b/framework/CorePlot.xcodeproj/project.pbxproj @@ -197,10 +197,8 @@ C318F4AE11EA188700595FF9 /* CPTLimitBand.m in Sources */ = {isa = PBXBuildFile; fileRef = C318F4AC11EA188700595FF9 /* CPTLimitBand.m */; }; C3226A521A69F6DA00F77249 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3226A511A69F6DA00F77249 /* QuartzCore.framework */; }; C3226A541A69F6DF00F77249 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3226A531A69F6DF00F77249 /* UIKit.framework */; }; - C3226A561A69F6F000F77249 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3226A551A69F6F000F77249 /* Accelerate.framework */; }; C3226A581A69F6FA00F77249 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3226A571A69F6FA00F77249 /* CoreGraphics.framework */; }; C3226A5C1A69F72900F77249 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3226A531A69F6DF00F77249 /* UIKit.framework */; }; - C3226A5D1A69F72F00F77249 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3226A551A69F6F000F77249 /* Accelerate.framework */; }; C3226A5E1A69F73800F77249 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3226A511A69F6DA00F77249 /* QuartzCore.framework */; }; C3226A5F1A69F75400F77249 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3226A571A69F6FA00F77249 /* CoreGraphics.framework */; }; C3286C0015D8740100A436A8 /* _CPTMaskLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = C3286BFE15D8740100A436A8 /* _CPTMaskLayer.h */; settings = {ATTRIBUTES = (); }; }; @@ -335,7 +333,6 @@ C37EA6261BC83F2A0091C8F7 /* _CPTConstraintsFixed.m in Sources */ = {isa = PBXBuildFile; fileRef = C3CCA03A13E8D85800CE6DB1 /* _CPTConstraintsFixed.m */; }; C37EA6271BC83F2A0091C8F7 /* CPTAxis.m in Sources */ = {isa = PBXBuildFile; fileRef = 07975C480F3B818800DE45DC /* CPTAxis.m */; }; C37EA6281BC83F2A0091C8F7 /* CPTMutableTextStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = 07C4679A0FE1A24C00299939 /* CPTMutableTextStyle.m */; }; - C37EA62A1BC83F2A0091C8F7 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3226A551A69F6F000F77249 /* Accelerate.framework */; }; C37EA62B1BC83F2A0091C8F7 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3226A571A69F6FA00F77249 /* CoreGraphics.framework */; }; C37EA62C1BC83F2A0091C8F7 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3226A511A69F6DA00F77249 /* QuartzCore.framework */; }; C37EA62D1BC83F2A0091C8F7 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3226A531A69F6DF00F77249 /* UIKit.framework */; }; @@ -849,12 +846,10 @@ C3D979BB13D2347400145DFF /* CPTFillTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C3D979BA13D2347300145DFF /* CPTFillTests.m */; }; C3DA34CC107AD7710051DA02 /* _CPTXYTheme.m in Sources */ = {isa = PBXBuildFile; fileRef = C3DA34CA107AD7710051DA02 /* _CPTXYTheme.m */; }; C3DA34CD107AD7710051DA02 /* _CPTXYTheme.h in Headers */ = {isa = PBXBuildFile; fileRef = C3DA34CB107AD7710051DA02 /* _CPTXYTheme.h */; settings = {ATTRIBUTES = (Private, ); }; }; - C3EE4E681A6C13260098F4E6 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3226A551A69F6F000F77249 /* Accelerate.framework */; }; C3EE4E691A6C133D0098F4E6 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3226A511A69F6DA00F77249 /* QuartzCore.framework */; }; C3EE4E6A1A6C134B0098F4E6 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3226A571A69F6FA00F77249 /* CoreGraphics.framework */; }; C3EE4E6B1A6C13560098F4E6 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3226A531A69F6DF00F77249 /* UIKit.framework */; }; C3EE4E6E1A6C15890098F4E6 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 07BF0D630F2B70B8002FCEA7 /* QuartzCore.framework */; }; - C3EE4E6F1A6C15920098F4E6 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3BB7D1416322F7E00BC9515 /* Accelerate.framework */; }; C3EE4E981A6C1E890098F4E6 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3EE4E971A6C1E890098F4E6 /* Cocoa.framework */; }; C3EE4E9A1A6C1F770098F4E6 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 07BF0D630F2B70B8002FCEA7 /* QuartzCore.framework */; }; C3EE4E9B1A6C1F8A0098F4E6 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3EE4E971A6C1E890098F4E6 /* Cocoa.framework */; }; @@ -1223,7 +1218,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C3EE4E6F1A6C15920098F4E6 /* Accelerate.framework in Frameworks */, C3EE4E981A6C1E890098F4E6 /* Cocoa.framework in Frameworks */, C3EE4E6E1A6C15890098F4E6 /* QuartzCore.framework in Frameworks */, ); @@ -1233,7 +1227,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C37EA62A1BC83F2A0091C8F7 /* Accelerate.framework in Frameworks */, C37EA62B1BC83F2A0091C8F7 /* CoreGraphics.framework in Frameworks */, C37EA62C1BC83F2A0091C8F7 /* QuartzCore.framework in Frameworks */, C37EA62D1BC83F2A0091C8F7 /* UIKit.framework in Frameworks */, @@ -1253,7 +1246,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C3226A5D1A69F72F00F77249 /* Accelerate.framework in Frameworks */, C3226A5F1A69F75400F77249 /* CoreGraphics.framework in Frameworks */, C3226A5E1A69F73800F77249 /* QuartzCore.framework in Frameworks */, C3226A5C1A69F72900F77249 /* UIKit.framework in Frameworks */, @@ -1273,7 +1265,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C3226A561A69F6F000F77249 /* Accelerate.framework in Frameworks */, C3226A581A69F6FA00F77249 /* CoreGraphics.framework in Frameworks */, C3226A521A69F6DA00F77249 /* QuartzCore.framework in Frameworks */, C3226A541A69F6DF00F77249 /* UIKit.framework in Frameworks */, @@ -1284,7 +1275,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C3EE4E681A6C13260098F4E6 /* Accelerate.framework in Frameworks */, C3EE4E6A1A6C134B0098F4E6 /* CoreGraphics.framework in Frameworks */, C3EE4E691A6C133D0098F4E6 /* QuartzCore.framework in Frameworks */, C3EE4E6B1A6C13560098F4E6 /* UIKit.framework in Frameworks */, diff --git a/framework/Source/CPTPlot.m b/framework/Source/CPTPlot.m index 0d4d3ad7b..2a92fa6a7 100644 --- a/framework/Source/CPTPlot.m +++ b/framework/Source/CPTPlot.m @@ -16,7 +16,6 @@ #import "CPTTextLayer.h" #import "CPTUtilities.h" #import "NSCoderExtensions.h" -#import #import /** @defgroup plotAnimation Plots @@ -1467,37 +1466,21 @@ -(nullable CPTPlotRange *)plotRangeForField:(NSUInteger)fieldEnum NSUInteger numberOfSamples = numbers.numberOfSamples; if ( numberOfSamples > 0 ) { if ( self.doublePrecisionCache ) { - const double *doubles = (const double *)numbers.bytes; - double min = (double)INFINITY; double max = -(double)INFINITY; - for ( NSUInteger n = 0; n < numberOfSamples; ++n ) { - if ( min > doubles[n] ) { - min = doubles[n]; - } - if ( max < doubles[n] ) { - max = doubles[n]; - } - } - - if ( isnan(min) || isnan(max) ) { - // vDSP functions may return NAN if any data in the array is NAN - min = (double)INFINITY; - max = -(double)INFINITY; - - const double *lastSample = doubles + numberOfSamples; + const double *doubles = (const double *)numbers.bytes; + const double *lastSample = doubles + numberOfSamples; - while ( doubles < lastSample ) { - double value = *doubles++; + while ( doubles < lastSample ) { + double value = *doubles++; - if ( !isnan(value) ) { - if ( value < min ) { - min = value; - } - if ( value > max ) { - max = value; - } + if ( !isnan(value) ) { + if ( value < min ) { + min = value; + } + if ( value > max ) { + max = value; } } } @@ -1512,6 +1495,7 @@ -(nullable CPTPlotRange *)plotRangeForField:(NSUInteger)fieldEnum const NSDecimal *decimals = (const NSDecimal *)numbers.bytes; const NSDecimal *lastSample = decimals + numberOfSamples; + while ( decimals < lastSample ) { NSDecimal value = *decimals++; From 70bd89fec12eec516e6f99923a637222deea48a4 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 2 Apr 2017 16:07:17 -0400 Subject: [PATCH 016/160] Removed ALWAYS_SEARCH_USER_PATHS setting from the podspec (deprecated in Xcode 8.3). Fixed issue #320. --- CorePlot-latest.podspec | 1 - CorePlot.podspec | 1 - 2 files changed, 2 deletions(-) diff --git a/CorePlot-latest.podspec b/CorePlot-latest.podspec index 05752cbac..18cfe4388 100644 --- a/CorePlot-latest.podspec +++ b/CorePlot-latest.podspec @@ -34,7 +34,6 @@ Pod::Spec.new do |s| s.private_header_files = '**/_*.h', '**/CorePlotProbes.h' s.requires_arc = true - s.xcconfig = { 'ALWAYS_SEARCH_USER_PATHS' => 'YES' } s.ios.xcconfig = { 'HEADER_SEARCH_PATHS' => '"${PODS_ROOT}/Headers/Private/CorePlot/ios"' } s.osx.xcconfig = { 'HEADER_SEARCH_PATHS' => '"${PODS_ROOT}/Headers/Private/CorePlot/osx"' } s.tvos.xcconfig = { 'HEADER_SEARCH_PATHS' => '"${PODS_ROOT}/Headers/Private/CorePlot/tvos"' } diff --git a/CorePlot.podspec b/CorePlot.podspec index 98cba66ee..8af07bcba 100644 --- a/CorePlot.podspec +++ b/CorePlot.podspec @@ -34,7 +34,6 @@ Pod::Spec.new do |s| s.private_header_files = '**/_*.h', '**/CorePlotProbes.h' s.requires_arc = true - s.xcconfig = { 'ALWAYS_SEARCH_USER_PATHS' => 'YES' } s.ios.xcconfig = { 'HEADER_SEARCH_PATHS' => '"${PODS_ROOT}/Headers/Private/CorePlot/ios"' } s.osx.xcconfig = { 'HEADER_SEARCH_PATHS' => '"${PODS_ROOT}/Headers/Private/CorePlot/osx"' } s.tvos.xcconfig = { 'HEADER_SEARCH_PATHS' => '"${PODS_ROOT}/Headers/Private/CorePlot/tvos"' } From 55cd45e75de0d98966c50af6c170ea18111ed536 Mon Sep 17 00:00:00 2001 From: Kirill Yakimovich Date: Thu, 6 Apr 2017 16:56:20 +0300 Subject: [PATCH 017/160] Fixed pie drawing for case when there is only one segment and we're drawing in counter clockwise direction --- framework/Source/CPTPieChart.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/Source/CPTPieChart.m b/framework/Source/CPTPieChart.m index 705bd2607..f20f680bc 100644 --- a/framework/Source/CPTPieChart.m +++ b/framework/Source/CPTPieChart.m @@ -724,7 +724,7 @@ -(CGFloat)radiansForPieSliceValue:(CGFloat)pieSliceValue angle += pieSliceValue * pieRange; break; } - return fmod( angle, CPTFloat(2.0 * M_PI) ); + return isnan(endingAngle) ? angle : fmod(angle, CPTFloat(2.0 * M_PI)); } -(void)addSliceToPath:(nonnull CGMutablePathRef)slicePath centerPoint:(CGPoint)center startingAngle:(CGFloat)startingAngle finishingAngle:(CGFloat)finishingAngle From b473ee85ea4dfde8551b8278a20478ea854f199c Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 9 Apr 2017 10:45:21 -0400 Subject: [PATCH 018/160] Standardized code formatting. --- framework/Source/CPTPieChart.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/Source/CPTPieChart.m b/framework/Source/CPTPieChart.m index f20f680bc..48a87c0c6 100644 --- a/framework/Source/CPTPieChart.m +++ b/framework/Source/CPTPieChart.m @@ -724,7 +724,7 @@ -(CGFloat)radiansForPieSliceValue:(CGFloat)pieSliceValue angle += pieSliceValue * pieRange; break; } - return isnan(endingAngle) ? angle : fmod(angle, CPTFloat(2.0 * M_PI)); + return isnan(endingAngle) ? angle : fmod( angle, CPTFloat(2.0 * M_PI) ); } -(void)addSliceToPath:(nonnull CGMutablePathRef)slicePath centerPoint:(CGPoint)center startingAngle:(CGFloat)startingAngle finishingAngle:(CGFloat)finishingAngle From 0aba1a0952355c77d435c14d582970f4cde10542 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 9 Apr 2017 10:51:29 -0400 Subject: [PATCH 019/160] Added Kirill Yakimovich to the license file. --- License.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/License.txt b/License.txt index e9bf9f52d..124aeba54 100644 --- a/License.txt +++ b/License.txt @@ -1,4 +1,4 @@ -Copyright (c) 2015, Drew McCormack, Brad Larson, Eric Skroch, Barry Wark, Dirkjan Krijnders, Rick Maddy, Vijay Kalusani, Caleb Cannon, Jeff Buck, Thomas Elstner, Jeroen Leenarts, Craig Hockenberry, Hartwig Wiesmann, Koen van der Drift, Nino Ag, Mike Lischke, Trevor Harmon, Travis Fischer, Graham Mueller, Rafał Wójcik, Mike Rossetti, Michael Merickel, Lane Roathe, Ingmar Stein, Sean Holbert, Victor Martin Garcia, Jérôme Morissard, Demitri Muna, and Tim Monzures. +Copyright (c) 2015, Drew McCormack, Brad Larson, Eric Skroch, Barry Wark, Dirkjan Krijnders, Rick Maddy, Vijay Kalusani, Caleb Cannon, Jeff Buck, Thomas Elstner, Jeroen Leenarts, Craig Hockenberry, Hartwig Wiesmann, Koen van der Drift, Nino Ag, Mike Lischke, Trevor Harmon, Travis Fischer, Graham Mueller, Rafał Wójcik, Mike Rossetti, Michael Merickel, Lane Roathe, Ingmar Stein, Sean Holbert, Victor Martin Garcia, Jérôme Morissard, Demitri Muna, Tim Monzures, and Kirill Yakimovich. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: From d367a82ff968d909666afe03f2ab40f14a3621f4 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 9 Apr 2017 10:51:50 -0400 Subject: [PATCH 020/160] Updated the copyright year in the license file. --- License.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/License.txt b/License.txt index 124aeba54..a41fd4796 100644 --- a/License.txt +++ b/License.txt @@ -1,4 +1,4 @@ -Copyright (c) 2015, Drew McCormack, Brad Larson, Eric Skroch, Barry Wark, Dirkjan Krijnders, Rick Maddy, Vijay Kalusani, Caleb Cannon, Jeff Buck, Thomas Elstner, Jeroen Leenarts, Craig Hockenberry, Hartwig Wiesmann, Koen van der Drift, Nino Ag, Mike Lischke, Trevor Harmon, Travis Fischer, Graham Mueller, Rafał Wójcik, Mike Rossetti, Michael Merickel, Lane Roathe, Ingmar Stein, Sean Holbert, Victor Martin Garcia, Jérôme Morissard, Demitri Muna, Tim Monzures, and Kirill Yakimovich. +Copyright (c) 2017, Drew McCormack, Brad Larson, Eric Skroch, Barry Wark, Dirkjan Krijnders, Rick Maddy, Vijay Kalusani, Caleb Cannon, Jeff Buck, Thomas Elstner, Jeroen Leenarts, Craig Hockenberry, Hartwig Wiesmann, Koen van der Drift, Nino Ag, Mike Lischke, Trevor Harmon, Travis Fischer, Graham Mueller, Rafał Wójcik, Mike Rossetti, Michael Merickel, Lane Roathe, Ingmar Stein, Sean Holbert, Victor Martin Garcia, Jérôme Morissard, Demitri Muna, Tim Monzures, and Kirill Yakimovich. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: From 108b72fb139211b5e27176d925011db75919b2f0 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 9 Apr 2017 12:32:03 -0400 Subject: [PATCH 021/160] Cast Swift strings and numbers to NSString and NSNumber for clarity. --- .../CPTTestApp-iPhone/Classes/BarChartController.swift | 6 +++--- .../CPTTestApp-iPhone/Classes/PieChartController.swift | 2 +- .../Classes/ScatterPlotController.swift | 4 ++-- examples/DatePlot/Source/DateController.swift | 10 +++++----- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/examples/CPTTestApp-iPhone/Classes/BarChartController.swift b/examples/CPTTestApp-iPhone/Classes/BarChartController.swift index 8049ece24..6990eb592 100644 --- a/examples/CPTTestApp-iPhone/Classes/BarChartController.swift +++ b/examples/CPTTestApp-iPhone/Classes/BarChartController.swift @@ -89,7 +89,7 @@ class BarChartController : UIViewController, CPTBarPlotDataSource { for tickLocation in customTickLocations { let newLabel = CPTAxisLabel(text:xAxisLabels[labelLocation], textStyle:x.labelTextStyle) labelLocation += 1 - newLabel.tickLocation = NSNumber.init(value: tickLocation) + newLabel.tickLocation = tickLocation as NSNumber newLabel.offset = x.labelOffset + x.majorTickLength newLabel.rotation = CGFloat(.pi / 4.0) customLabels.insert(newLabel) @@ -114,7 +114,7 @@ class BarChartController : UIViewController, CPTBarPlotDataSource { barPlot1.baseValue = 0.0 barPlot1.dataSource = self barPlot1.barOffset = -0.2 - barPlot1.identifier = NSString.init(string: "Bar Plot 1") + barPlot1.identifier = "Bar Plot 1" as NSString newGraph.add(barPlot1, to:plotSpace) // Second bar plot @@ -123,7 +123,7 @@ class BarChartController : UIViewController, CPTBarPlotDataSource { barPlot2.baseValue = 0.0 barPlot2.barOffset = 0.25 barPlot2.barCornerRadius = 2.0 - barPlot2.identifier = NSString.init(string: "Bar Plot 2") + barPlot2.identifier = "Bar Plot 2" as NSString newGraph.add(barPlot2, to:plotSpace) self.barGraph = newGraph diff --git a/examples/CPTTestApp-iPhone/Classes/PieChartController.swift b/examples/CPTTestApp-iPhone/Classes/PieChartController.swift index 841d2d265..a281a4e36 100644 --- a/examples/CPTTestApp-iPhone/Classes/PieChartController.swift +++ b/examples/CPTTestApp-iPhone/Classes/PieChartController.swift @@ -36,7 +36,7 @@ class PieChartController : UIViewController, CPTPieChartDataSource, CPTPieChartD let piePlot = CPTPieChart(frame: .zero) piePlot.dataSource = self piePlot.pieRadius = 131.0 - piePlot.identifier = NSString.init(string: "Pie Chart 1") + piePlot.identifier = "Pie Chart 1" as NSString piePlot.startAngle = CGFloat(.pi / 4.0) piePlot.sliceDirection = .counterClockwise piePlot.centerAnchor = CGPoint(x: 0.5, y: 0.38) diff --git a/examples/CPTTestApp-iPhone/Classes/ScatterPlotController.swift b/examples/CPTTestApp-iPhone/Classes/ScatterPlotController.swift index 63c58dacc..22f5a4918 100644 --- a/examples/CPTTestApp-iPhone/Classes/ScatterPlotController.swift +++ b/examples/CPTTestApp-iPhone/Classes/ScatterPlotController.swift @@ -64,7 +64,7 @@ class ScatterPlotController : UIViewController, CPTScatterPlotDataSource, CPTAxi blueLineStyle.lineWidth = 3.0 blueLineStyle.lineColor = .blue() boundLinePlot.dataLineStyle = blueLineStyle - boundLinePlot.identifier = NSString.init(string: "Blue Plot") + boundLinePlot.identifier = "Blue Plot" as NSString boundLinePlot.dataSource = self newGraph.add(boundLinePlot) @@ -89,7 +89,7 @@ class ScatterPlotController : UIViewController, CPTScatterPlotDataSource, CPTAxi greenLineStyle.lineColor = .green() greenLineStyle.dashPattern = [5.0, 5.0] dataSourceLinePlot.dataLineStyle = greenLineStyle - dataSourceLinePlot.identifier = NSString.init(string: "Green Plot") + dataSourceLinePlot.identifier = "Green Plot" as NSString dataSourceLinePlot.dataSource = self // Put an area gradient under the plot above diff --git a/examples/DatePlot/Source/DateController.swift b/examples/DatePlot/Source/DateController.swift index 450d8ab48..b7f348df0 100644 --- a/examples/DatePlot/Source/DateController.swift +++ b/examples/DatePlot/Source/DateController.swift @@ -34,13 +34,13 @@ class DateController : NSObject, CPTPlotDataSource { // Setup scatter plot space let plotSpace = newGraph.defaultPlotSpace as! CPTXYPlotSpace - plotSpace.xRange = CPTPlotRange(location:0.0, length:NSNumber.init(value: oneDay * 5.0)) - plotSpace.yRange = CPTPlotRange(location:1.0, length:3.0) + plotSpace.xRange = CPTPlotRange(location: 0.0, length: (oneDay * 5.0) as NSNumber) + plotSpace.yRange = CPTPlotRange(location: 1.0, length: 3.0) // Axes let axisSet = newGraph.axisSet as! CPTXYAxisSet if let x = axisSet.xAxis { - x.majorIntervalLength = NSNumber.init(value: oneDay) + x.majorIntervalLength = oneDay as NSNumber x.orthogonalPosition = 2.0 x.minorTicksPerInterval = 0; let dateFormatter = DateFormatter() @@ -53,14 +53,14 @@ class DateController : NSObject, CPTPlotDataSource { if let y = axisSet.yAxis { y.majorIntervalLength = 0.5 y.minorTicksPerInterval = 5 - y.orthogonalPosition = NSNumber.init(value: oneDay) + y.orthogonalPosition = oneDay as NSNumber y.labelingPolicy = .none } // Create a plot that uses the data source method let dataSourceLinePlot = CPTScatterPlot(frame: .zero) - dataSourceLinePlot.identifier = NSString.init(string: "Date Plot") + dataSourceLinePlot.identifier = "Date Plot" as NSString if let lineStyle = dataSourceLinePlot.dataLineStyle?.mutableCopy() as? CPTMutableLineStyle { lineStyle.lineWidth = 3.0 From 18de947724a75fdc56e3f3309de30fd18f4d63ac Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Wed, 7 Jun 2017 15:06:35 -0400 Subject: [PATCH 022/160] Updated all project files to recommended settings for Xcode 9 beta. --- .../CorePlotQCPlugin.xcodeproj/project.pbxproj | 14 +++++++++++++- .../xcshareddata/xcschemes/Build & Copy.xcscheme | 2 +- .../xcschemes/CorePlotQCPlugin.xcscheme | 2 +- examples/AAPLot/AAPLot.xcodeproj/project.pbxproj | 14 +++++++++++++- .../xcshareddata/xcschemes/AAPLot.xcscheme | 2 +- .../CPTTestApp-iPad.xcodeproj/project.pbxproj | 14 +++++++++++++- .../xcschemes/CPTTestApp-iPad.xcscheme | 2 +- .../CPTTestApp-iPhone.xcodeproj/project.pbxproj | 14 +++++++++++++- .../xcschemes/CPTTestApp-iPhone.xcscheme | 2 +- .../CPTTestApp.xcodeproj/project.pbxproj | 14 +++++++++++++- .../xcshareddata/xcschemes/CPTTestApp.xcscheme | 2 +- .../Plot_Gallery.xcodeproj/project.pbxproj | 14 +++++++++++++- .../xcschemes/Plot Gallery-Mac.xcscheme | 2 +- .../xcschemes/Plot Gallery-iOS.xcscheme | 2 +- .../xcschemes/Plot Gallery-tvOS.xcscheme | 2 +- .../DatePlot/DatePlot.xcodeproj/project.pbxproj | 14 +++++++++++++- .../xcshareddata/xcschemes/DatePlot.xcscheme | 2 +- .../DropPlot/DropPlot.xcodeproj/project.pbxproj | 14 +++++++++++++- .../xcshareddata/xcschemes/DropPlot.xcscheme | 2 +- .../minorTickFormatter.xcodeproj/project.pbxproj | 14 +++++++++++++- .../xcschemes/minorTickFormatter.xcscheme | 2 +- .../RangePlot/RangePlot.xcodeproj/project.pbxproj | 14 +++++++++++++- .../xcshareddata/xcschemes/RangePlot.xcscheme | 2 +- .../StockPlot/StockPlot.xcodeproj/project.pbxproj | 14 +++++++++++++- .../xcshareddata/xcschemes/StockPlot.xcscheme | 2 +- framework/CorePlot.xcodeproj/project.pbxproj | 14 +++++++++++++- .../xcshareddata/xcschemes/CorePlot Mac.xcscheme | 2 +- .../xcshareddata/xcschemes/CorePlot iOS.xcscheme | 2 +- .../xcshareddata/xcschemes/CorePlot tvOS.xcscheme | 2 +- .../xcschemes/CorePlot-CocoaTouch.xcscheme | 2 +- .../xcschemes/Documentation-Mac.xcscheme | 2 +- .../xcschemes/Documentation-iOS.xcscheme | 2 +- .../xcschemes/Universal Library.xcscheme | 2 +- .../xcschemes/Universal iOS Framework.xcscheme | 2 +- 34 files changed, 178 insertions(+), 34 deletions(-) diff --git a/QCPlugin/CorePlotQCPlugin.xcodeproj/project.pbxproj b/QCPlugin/CorePlotQCPlugin.xcodeproj/project.pbxproj index 623b73d0c..b2316046b 100644 --- a/QCPlugin/CorePlotQCPlugin.xcodeproj/project.pbxproj +++ b/QCPlugin/CorePlotQCPlugin.xcodeproj/project.pbxproj @@ -262,7 +262,7 @@ 089C1669FE841209C02AAC07 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0810; + LastUpgradeCheck = 0900; }; buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "CorePlotQCPlugin" */; compatibilityVersion = "Xcode 6.3"; @@ -468,12 +468,18 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -498,12 +504,18 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; diff --git a/QCPlugin/CorePlotQCPlugin.xcodeproj/xcshareddata/xcschemes/Build & Copy.xcscheme b/QCPlugin/CorePlotQCPlugin.xcodeproj/xcshareddata/xcschemes/Build & Copy.xcscheme index 7ddbf6873..481059277 100644 --- a/QCPlugin/CorePlotQCPlugin.xcodeproj/xcshareddata/xcschemes/Build & Copy.xcscheme +++ b/QCPlugin/CorePlotQCPlugin.xcodeproj/xcshareddata/xcschemes/Build & Copy.xcscheme @@ -1,6 +1,6 @@ Date: Wed, 7 Jun 2017 15:49:51 -0400 Subject: [PATCH 023/160] Fixed new nullability errors in Xcode 9 beta. Fixed issue #339. --- framework/Source/CPTRangePlot.m | 11 +---------- framework/Source/CPTTradingRangePlot.m | 15 ++++++++++----- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/framework/Source/CPTRangePlot.m b/framework/Source/CPTRangePlot.m index c1fc4d271..8f40b597a 100644 --- a/framework/Source/CPTRangePlot.m +++ b/framework/Source/CPTRangePlot.m @@ -1017,6 +1017,7 @@ -(CPTCoordinate)coordinateForFieldIdentifier:(NSUInteger)field -(void)positionLabelAnnotation:(nonnull CPTPlotSpaceAnnotation *)label forIndex:(NSUInteger)idx { NSNumber *xValue = [self cachedNumberForField:CPTRangePlotFieldX recordIndex:idx]; + NSNumber *yValue = [self cachedNumberForField:CPTRangePlotFieldY recordIndex:idx]; BOOL positiveDirection = YES; CPTPlotRange *yRange = [self.plotSpace plotRangeForCoordinate:CPTCoordinateY]; @@ -1025,16 +1026,6 @@ -(void)positionLabelAnnotation:(nonnull CPTPlotSpaceAnnotation *)label forIndex: positiveDirection = !positiveDirection; } - NSNumber *yValue; - CPTNumberArray *yValues = @[[self cachedNumberForField:CPTRangePlotFieldY recordIndex:idx]]; - CPTNumberArray *yValuesSorted = [yValues sortedArrayUsingSelector:@selector(compare:)]; - if ( positiveDirection ) { - yValue = yValuesSorted.lastObject; - } - else { - yValue = yValuesSorted[0]; - } - label.anchorPlotPoint = @[xValue, yValue]; label.contentLayer.hidden = self.hidden || isnan([xValue doubleValue]) || isnan([yValue doubleValue]); diff --git a/framework/Source/CPTTradingRangePlot.m b/framework/Source/CPTTradingRangePlot.m index 6ec8ce1d3..dc7d4181e 100644 --- a/framework/Source/CPTTradingRangePlot.m +++ b/framework/Source/CPTTradingRangePlot.m @@ -1221,12 +1221,17 @@ -(void)positionLabelAnnotation:(nonnull CPTPlotSpaceAnnotation *)label forIndex: positiveDirection = !positiveDirection; } - NSNumber *xValue = [self cachedNumberForField:CPTTradingRangePlotFieldX recordIndex:idx]; + NSNumber *xValue = [self cachedNumberForField:CPTTradingRangePlotFieldX recordIndex:idx]; + NSNumber *openValue = [self cachedNumberForField:CPTTradingRangePlotFieldOpen recordIndex:idx]; + NSNumber *closeValue = [self cachedNumberForField:CPTTradingRangePlotFieldClose recordIndex:idx]; + NSNumber *highValue = [self cachedNumberForField:CPTTradingRangePlotFieldHigh recordIndex:idx]; + NSNumber *lowValue = [self cachedNumberForField:CPTTradingRangePlotFieldLow recordIndex:idx]; + NSNumber *yValue; - CPTNumberArray *yValues = @[[self cachedNumberForField:CPTTradingRangePlotFieldOpen recordIndex:idx], - [self cachedNumberForField:CPTTradingRangePlotFieldClose recordIndex:idx], - [self cachedNumberForField:CPTTradingRangePlotFieldHigh recordIndex:idx], - [self cachedNumberForField:CPTTradingRangePlotFieldLow recordIndex:idx]]; + CPTNumberArray *yValues = @[openValue, + closeValue, + highValue, + lowValue]; CPTNumberArray *yValuesSorted = [yValues sortedArrayUsingSelector:@selector(compare:)]; if ( positiveDirection ) { yValue = yValuesSorted.lastObject; From 594c41d14d475ecf159031377ddf2c1c660b6ecf Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Wed, 7 Jun 2017 15:50:28 -0400 Subject: [PATCH 024/160] Updated example apps to Swift 4 syntax. --- .../CPTTestApp-iPhone.xcodeproj/project.pbxproj | 6 +++--- .../CPTTestApp-iPhone/Classes/BarChartController.swift | 10 +++++----- examples/DatePlot/DatePlot.xcodeproj/project.pbxproj | 6 +++--- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj index 023ad9b01..3bd302d90 100644 --- a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj +++ b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj @@ -249,7 +249,7 @@ LastUpgradeCheck = 0900; TargetAttributes = { 1D6058900D05DD3D006BFB54 = { - LastSwiftMigration = 0800; + LastSwiftMigration = 0900; }; }; }; @@ -397,7 +397,7 @@ PRODUCT_NAME = "CPTTestApp-iPhone"; "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; SWIFT_OBJC_BRIDGING_HEADER = "CPTTestApp-iPhone-Bridging-Header.h"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.0; USER_HEADER_SEARCH_PATHS = "\"${PROJECT_DIR}/../../framework\"/**"; }; name = Debug; @@ -426,7 +426,7 @@ "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; SWIFT_OBJC_BRIDGING_HEADER = "CPTTestApp-iPhone-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.0; USER_HEADER_SEARCH_PATHS = "\"${PROJECT_DIR}/../../framework\"/**"; }; name = Release; diff --git a/examples/CPTTestApp-iPhone/Classes/BarChartController.swift b/examples/CPTTestApp-iPhone/Classes/BarChartController.swift index 6990eb592..3d5bc8ae8 100644 --- a/examples/CPTTestApp-iPhone/Classes/BarChartController.swift +++ b/examples/CPTTestApp-iPhone/Classes/BarChartController.swift @@ -49,11 +49,11 @@ class BarChartController : UIViewController, CPTBarPlotDataSource { let titleRange1 = NSRange(location: 0, length: lineOne.utf16.count) let titleRange2 = NSRange(location: lineOne.utf16.count + 1, length: lineTwo.utf16.count) - graphTitle.addAttribute(NSForegroundColorAttributeName, value:UIColor.white, range:titleRange1) - graphTitle.addAttribute(NSForegroundColorAttributeName, value:UIColor.gray, range:titleRange2) - graphTitle.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range:NSRange(location: 0, length: graphTitle.length)) - graphTitle.addAttribute(NSFontAttributeName, value:line1Font!, range:titleRange1) - graphTitle.addAttribute(NSFontAttributeName, value:line2Font!, range:titleRange2) + graphTitle.addAttribute(.foregroundColor, value:UIColor.white, range:titleRange1) + graphTitle.addAttribute(.foregroundColor, value:UIColor.gray, range:titleRange2) + graphTitle.addAttribute(.paragraphStyle, value:paragraphStyle, range:NSRange(location: 0, length: graphTitle.length)) + graphTitle.addAttribute(.font, value:line1Font!, range:titleRange1) + graphTitle.addAttribute(.font, value:line2Font!, range:titleRange2) newGraph.attributedTitle = graphTitle diff --git a/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj b/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj index e9b9d22e4..8f1220ba4 100644 --- a/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj +++ b/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj @@ -264,7 +264,7 @@ LastUpgradeCheck = 0900; TargetAttributes = { 8D1107260486CEB800E47090 = { - LastSwiftMigration = 0800; + LastSwiftMigration = 0900; }; }; }; @@ -421,7 +421,7 @@ PRODUCT_NAME = DatePlot; SWIFT_OBJC_BRIDGING_HEADER = "DatePlot-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.0; }; name = Debug; }; @@ -446,7 +446,7 @@ PRODUCT_NAME = DatePlot; SWIFT_OBJC_BRIDGING_HEADER = "DatePlot-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.0; }; name = Release; }; From c7124922d3b43c4a31596d1d98980f03611fda39 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Wed, 7 Jun 2017 15:50:56 -0400 Subject: [PATCH 025/160] Fixed new Xcode 9 beta warnings in the Quartz Composer plugin. --- QCPlugin/CPTBarPlotPlugin.m | 4 ++-- QCPlugin/CPTPieChartPlugin.m | 6 +++--- QCPlugin/CPTScatterPlotPlugin.m | 6 +++--- QCPlugin/CorePlotQCPlugin.m | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/QCPlugin/CPTBarPlotPlugin.m b/QCPlugin/CPTBarPlotPlugin.m index 89ea643f9..14d358b7b 100644 --- a/QCPlugin/CPTBarPlotPlugin.m +++ b/QCPlugin/CPTBarPlotPlugin.m @@ -114,7 +114,7 @@ -(void)addPlotWithIndex:(NSUInteger)index forKey:[NSString stringWithFormat:@"plotDataLineColor%lu", (unsigned long)index] withAttributes:@{ QCPortAttributeNameKey: [NSString stringWithFormat:@"Plot Line Color %lu", (unsigned long)(index + 1)], QCPortAttributeTypeKey: QCPortTypeColor, - QCPortAttributeDefaultValueKey: CFBridgingRelease(lineColor) } + QCPortAttributeDefaultValueKey: (id)CFBridgingRelease(lineColor) } ]; CGColorRef fillColor = [self newDefaultColorForPlot:index alpha:0.25]; @@ -122,7 +122,7 @@ -(void)addPlotWithIndex:(NSUInteger)index forKey:[NSString stringWithFormat:@"plotFillColor%lu", (unsigned long)index] withAttributes:@{ QCPortAttributeNameKey: [NSString stringWithFormat:@"Plot Fill Color %lu", (unsigned long)(index + 1)], QCPortAttributeTypeKey: QCPortTypeColor, - QCPortAttributeDefaultValueKey: CFBridgingRelease(fillColor) } + QCPortAttributeDefaultValueKey: (id)CFBridgingRelease(fillColor) } ]; [self addInputPortWithType:QCPortTypeNumber diff --git a/QCPlugin/CPTPieChartPlugin.m b/QCPlugin/CPTPieChartPlugin.m index a7ca04379..eab948de8 100644 --- a/QCPlugin/CPTPieChartPlugin.m +++ b/QCPlugin/CPTPieChartPlugin.m @@ -108,7 +108,7 @@ +(nullable CPTDictionary *)attributesForPropertyPortWithKey:(nullable NSString * CGColorRef grayColor = CGColorCreateGenericGray(0.0, 1.0); CPTDictionary *result = @{ QCPortAttributeNameKey: @"Border Color", - QCPortAttributeDefaultValueKey: CFBridgingRelease(grayColor) + QCPortAttributeDefaultValueKey: (id)CFBridgingRelease(grayColor) }; return result; } @@ -116,7 +116,7 @@ +(nullable CPTDictionary *)attributesForPropertyPortWithKey:(nullable NSString * CGColorRef grayColor = CGColorCreateGenericGray(1.0, 1.0); CPTDictionary *result = @{ QCPortAttributeNameKey: @"Label Color", - QCPortAttributeDefaultValueKey: CFBridgingRelease(grayColor) + QCPortAttributeDefaultValueKey: (id)CFBridgingRelease(grayColor) }; return result; } @@ -147,7 +147,7 @@ -(void)addPlotWithIndex:(NSUInteger)index forKey:[NSString stringWithFormat:@"plotFillColor%lu", (unsigned long)index] withAttributes:@{ QCPortAttributeNameKey: [NSString stringWithFormat:@"Primary Fill Color %lu", (unsigned long)(index + 1)], QCPortAttributeTypeKey: QCPortTypeColor, - QCPortAttributeDefaultValueKey: CFBridgingRelease(grayColor) } + QCPortAttributeDefaultValueKey: (id)CFBridgingRelease(grayColor) } ]; // Add the new plot to the graph diff --git a/QCPlugin/CPTScatterPlotPlugin.m b/QCPlugin/CPTScatterPlotPlugin.m index de2edc261..e9fa4aacf 100644 --- a/QCPlugin/CPTScatterPlotPlugin.m +++ b/QCPlugin/CPTScatterPlotPlugin.m @@ -51,7 +51,7 @@ -(void)addPlotWithIndex:(NSUInteger)index forKey:[NSString stringWithFormat:@"plotDataLineColor%lu", (unsigned long)index] withAttributes:@{ QCPortAttributeNameKey: [NSString stringWithFormat:@"Plot Line Color %lu", (unsigned long)(index + 1)], QCPortAttributeTypeKey: QCPortTypeColor, - QCPortAttributeDefaultValueKey: CFBridgingRelease(lineColor) } + QCPortAttributeDefaultValueKey: (id)CFBridgingRelease(lineColor) } ]; CGColorRef fillColor = [self newDefaultColorForPlot:index alpha:0.25]; @@ -59,7 +59,7 @@ -(void)addPlotWithIndex:(NSUInteger)index forKey:[NSString stringWithFormat:@"plotFillColor%lu", (unsigned long)index] withAttributes:@{ QCPortAttributeNameKey: [NSString stringWithFormat:@"Plot Fill Color %lu", (unsigned long)(index + 1)], QCPortAttributeTypeKey: QCPortTypeColor, - QCPortAttributeDefaultValueKey: CFBridgingRelease(fillColor) } + QCPortAttributeDefaultValueKey: (id)CFBridgingRelease(fillColor) } ]; [self addInputPortWithType:QCPortTypeNumber @@ -85,7 +85,7 @@ -(void)addPlotWithIndex:(NSUInteger)index forKey:[NSString stringWithFormat:@"plotDataSymbolColor%lu", (unsigned long)index] withAttributes:@{ QCPortAttributeNameKey: [NSString stringWithFormat:@"Data Symbol Color %lu", (unsigned long)(index + 1)], QCPortAttributeTypeKey: QCPortTypeColor, - QCPortAttributeDefaultValueKey: CFBridgingRelease(symbolColor) } + QCPortAttributeDefaultValueKey: (id)CFBridgingRelease(symbolColor) } ]; // Add the new plot to the graph diff --git a/QCPlugin/CorePlotQCPlugin.m b/QCPlugin/CorePlotQCPlugin.m index b29edd32d..ba114174a 100644 --- a/QCPlugin/CorePlotQCPlugin.m +++ b/QCPlugin/CorePlotQCPlugin.m @@ -256,7 +256,7 @@ +(nullable CPTDictionary *)attributesForPropertyPortWithKey:(nullable NSString * CGColorRef axisColor = CGColorCreateGenericRGB(1.0, 1.0, 1.0, 1.0); CPTDictionary *result = @{ QCPortAttributeNameKey: @"Axis Color", - QCPortAttributeDefaultValueKey: CFBridgingRelease(axisColor) + QCPortAttributeDefaultValueKey: (id)CFBridgingRelease(axisColor) }; return result; } @@ -321,7 +321,7 @@ +(nullable CPTDictionary *)attributesForPropertyPortWithKey:(nullable NSString * CGColorRef plotAreaColor = CGColorCreateGenericRGB(0.0, 0.0, 0.0, 0.4); CPTDictionary *result = @{ QCPortAttributeNameKey: @"Plot Area Color", - QCPortAttributeDefaultValueKey: CFBridgingRelease(plotAreaColor) + QCPortAttributeDefaultValueKey: (id)CFBridgingRelease(plotAreaColor) }; return result; } From 99032086f484a6b3b65c13757d249067e8f3c4c2 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Wed, 26 Jul 2017 19:30:01 -0400 Subject: [PATCH 026/160] Updated project settings for the new Xcode 9 build system. Fixed issue #343. --- framework/xcconfig/CorePlot.xcconfig | 2 ++ 1 file changed, 2 insertions(+) diff --git a/framework/xcconfig/CorePlot.xcconfig b/framework/xcconfig/CorePlot.xcconfig index faddc888b..d538f2950 100644 --- a/framework/xcconfig/CorePlot.xcconfig +++ b/framework/xcconfig/CorePlot.xcconfig @@ -25,3 +25,5 @@ RUN_CLANG_STATIC_ANALYZER = YES CLANG_STATIC_ANALYZER_MODE_ON_ANALYZE_ACTION = deep CLANG_STATIC_ANALYZER_MODE = shallow OTHER_LDFLAGS = -ObjC +ALWAYS_SEARCH_USER_PATHS = NO +USE_HEADERMAP = NO From a1348f5a2eb5f58589084b8e6029a4b7c4b77cb9 Mon Sep 17 00:00:00 2001 From: Lane Roathe Date: Mon, 21 Aug 2017 20:26:38 -0700 Subject: [PATCH 027/160] Allow xcode 8 to compile DatePlot on OS X --- examples/DatePlot/DatePlot.xcodeproj/project.pbxproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj b/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj index 8f1220ba4..06eefb1ac 100644 --- a/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj +++ b/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj @@ -421,7 +421,7 @@ PRODUCT_NAME = DatePlot; SWIFT_OBJC_BRIDGING_HEADER = "DatePlot-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 3.0; }; name = Debug; }; @@ -446,7 +446,7 @@ PRODUCT_NAME = DatePlot; SWIFT_OBJC_BRIDGING_HEADER = "DatePlot-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 3.0; }; name = Release; }; From ab573e9ef7a6d604ffb8387eede75cd7cba34672 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Mon, 18 Sep 2017 19:39:00 -0400 Subject: [PATCH 028/160] Added missing header search path for Mac unit tests. --- framework/CorePlot.xcodeproj/project.pbxproj | 2 ++ 1 file changed, 2 insertions(+) diff --git a/framework/CorePlot.xcodeproj/project.pbxproj b/framework/CorePlot.xcodeproj/project.pbxproj index 3b1dc799e..8f4036eab 100644 --- a/framework/CorePlot.xcodeproj/project.pbxproj +++ b/framework/CorePlot.xcodeproj/project.pbxproj @@ -3218,6 +3218,7 @@ MACOSX_DEPLOYMENT_TARGET = 10.8; PRODUCT_NAME = UnitTests; SDKROOT = macosx; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/Source $(SRCROOT)/MacOnly"; }; name = Debug; }; @@ -3230,6 +3231,7 @@ MACOSX_DEPLOYMENT_TARGET = 10.8; PRODUCT_NAME = UnitTests; SDKROOT = macosx; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/Source $(SRCROOT)/MacOnly"; }; name = Release; }; From 456a5cdd44c4cc29bd30278e7a24eed5ecd8bff9 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Mon, 18 Sep 2017 19:58:54 -0400 Subject: [PATCH 029/160] Fixed header search paths in the example apps that use the iOS static library. --- examples/AAPLot/AAPLot.xcodeproj/project.pbxproj | 4 ++-- .../CPTTestApp-iPad.xcodeproj/project.pbxproj | 4 ++-- .../CPTTestApp-iPhone.xcodeproj/project.pbxproj | 6 ++---- examples/StockPlot/StockPlot.xcodeproj/project.pbxproj | 4 ++-- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/examples/AAPLot/AAPLot.xcodeproj/project.pbxproj b/examples/AAPLot/AAPLot.xcodeproj/project.pbxproj index 9e045a990..a04103351 100644 --- a/examples/AAPLot/AAPLot.xcodeproj/project.pbxproj +++ b/examples/AAPLot/AAPLot.xcodeproj/project.pbxproj @@ -502,7 +502,7 @@ ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SYMROOT = "$(SRCROOT)/../../build"; - USER_HEADER_SEARCH_PATHS = "\"${PROJECT_DIR}/../../framework\"/**"; + USER_HEADER_SEARCH_PATHS = "\"${PROJECT_DIR}/../../framework\" \"${PROJECT_DIR}/../../framework/Source\" \"${PROJECT_DIR}/../../framework/iPhoneOnly\""; }; name = Debug; }; @@ -538,7 +538,7 @@ HEADER_SEARCH_PATHS = ""; IPHONEOS_DEPLOYMENT_TARGET = 8.0; SDKROOT = iphoneos; - USER_HEADER_SEARCH_PATHS = "\"${PROJECT_DIR}/../../framework\"/**"; + USER_HEADER_SEARCH_PATHS = "\"${PROJECT_DIR}/../../framework\" \"${PROJECT_DIR}/../../framework/Source\" \"${PROJECT_DIR}/../../framework/iPhoneOnly\""; }; name = Release; }; diff --git a/examples/CPTTestApp-iPad/CPTTestApp-iPad.xcodeproj/project.pbxproj b/examples/CPTTestApp-iPad/CPTTestApp-iPad.xcodeproj/project.pbxproj index 0cc2f3bc1..65eec7da5 100644 --- a/examples/CPTTestApp-iPad/CPTTestApp-iPad.xcodeproj/project.pbxproj +++ b/examples/CPTTestApp-iPad/CPTTestApp-iPad.xcodeproj/project.pbxproj @@ -433,7 +433,7 @@ SDKROOT = iphoneos; SYMROOT = "$(SRCROOT)/../../build"; TARGETED_DEVICE_FAMILY = 2; - USER_HEADER_SEARCH_PATHS = "\"${PROJECT_DIR}/../../framework\"/**"; + USER_HEADER_SEARCH_PATHS = "\"${PROJECT_DIR}/../../framework\" \"${PROJECT_DIR}/../../framework/Source\" \"${PROJECT_DIR}/../../framework/iPhoneOnly\""; }; name = Debug; }; @@ -476,7 +476,7 @@ SDKROOT = iphoneos; SYMROOT = "$(SRCROOT)/../../build"; TARGETED_DEVICE_FAMILY = 2; - USER_HEADER_SEARCH_PATHS = "\"${PROJECT_DIR}/../../framework\"/**"; + USER_HEADER_SEARCH_PATHS = "\"${PROJECT_DIR}/../../framework\" \"${PROJECT_DIR}/../../framework/Source\" \"${PROJECT_DIR}/../../framework/iPhoneOnly\""; }; name = Release; }; diff --git a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj index 3bd302d90..94cb357f4 100644 --- a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj +++ b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj @@ -398,7 +398,6 @@ "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; SWIFT_OBJC_BRIDGING_HEADER = "CPTTestApp-iPhone-Bridging-Header.h"; SWIFT_VERSION = 4.0; - USER_HEADER_SEARCH_PATHS = "\"${PROJECT_DIR}/../../framework\"/**"; }; name = Debug; }; @@ -427,7 +426,6 @@ SWIFT_OBJC_BRIDGING_HEADER = "CPTTestApp-iPhone-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_VERSION = 4.0; - USER_HEADER_SEARCH_PATHS = "\"${PROJECT_DIR}/../../framework\"/**"; }; name = Release; }; @@ -475,7 +473,7 @@ SDKROOT = iphoneos; SYMROOT = "$(SRCROOT)/../../build"; TARGETED_DEVICE_FAMILY = 1; - USER_HEADER_SEARCH_PATHS = "\"${PROJECT_DIR}/../../framework\"/**"; + USER_HEADER_SEARCH_PATHS = "\"${PROJECT_DIR}/../../framework\" \"${PROJECT_DIR}/../../framework/Source\" \"${PROJECT_DIR}/../../framework/iPhoneOnly\""; }; name = Debug; }; @@ -522,7 +520,7 @@ SDKROOT = iphoneos; SYMROOT = "$(SRCROOT)/../../build"; TARGETED_DEVICE_FAMILY = 1; - USER_HEADER_SEARCH_PATHS = "\"${PROJECT_DIR}/../../framework\"/**"; + USER_HEADER_SEARCH_PATHS = "\"${PROJECT_DIR}/../../framework\" \"${PROJECT_DIR}/../../framework/Source\" \"${PROJECT_DIR}/../../framework/iPhoneOnly\""; }; name = Release; }; diff --git a/examples/StockPlot/StockPlot.xcodeproj/project.pbxproj b/examples/StockPlot/StockPlot.xcodeproj/project.pbxproj index 73851d557..17f41cc3f 100644 --- a/examples/StockPlot/StockPlot.xcodeproj/project.pbxproj +++ b/examples/StockPlot/StockPlot.xcodeproj/project.pbxproj @@ -471,7 +471,7 @@ ); SDKROOT = iphoneos; SYMROOT = "$(SRCROOT)/../../build"; - USER_HEADER_SEARCH_PATHS = "\"${PROJECT_DIR}/../../framework\"/**"; + USER_HEADER_SEARCH_PATHS = "\"${PROJECT_DIR}/../../framework\" \"${PROJECT_DIR}/../../framework/Source\" \"${PROJECT_DIR}/../../framework/iPhoneOnly\""; }; name = Debug; }; @@ -511,7 +511,7 @@ "-ObjC", ); SDKROOT = iphoneos; - USER_HEADER_SEARCH_PATHS = "\"${PROJECT_DIR}/../../framework\"/**"; + USER_HEADER_SEARCH_PATHS = "\"${PROJECT_DIR}/../../framework\" \"${PROJECT_DIR}/../../framework/Source\" \"${PROJECT_DIR}/../../framework/iPhoneOnly\""; }; name = Release; }; From d8ebec2ee5bb5e763507ee736db423e591f982bf Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Mon, 18 Sep 2017 19:59:34 -0400 Subject: [PATCH 030/160] Fixed framework references in the Plot Gallery example app. --- .../CorePlotGallery/Plot_Gallery.xcodeproj/project.pbxproj | 4 ++-- examples/CorePlotGallery/Plot_Gallery_Prefix.pch | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/CorePlotGallery/Plot_Gallery.xcodeproj/project.pbxproj b/examples/CorePlotGallery/Plot_Gallery.xcodeproj/project.pbxproj index 8b2616032..9a42c8cc3 100644 --- a/examples/CorePlotGallery/Plot_Gallery.xcodeproj/project.pbxproj +++ b/examples/CorePlotGallery/Plot_Gallery.xcodeproj/project.pbxproj @@ -36,7 +36,6 @@ C30D8AFA1BCAF99D0003BB70 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C30D8AF91BCAF99D0003BB70 /* main.m */; }; C30D8AFD1BCAF99D0003BB70 /* AppDelegateTV.m in Sources */ = {isa = PBXBuildFile; fileRef = C30D8AFC1BCAF99D0003BB70 /* AppDelegateTV.m */; }; C30D8B081BCAF99D0003BB70 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C30D8B071BCAF99D0003BB70 /* Assets.xcassets */; }; - C30D8B201BCAFC140003BB70 /* CorePlot.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F4892891290FFCD00EDB93F /* CorePlot.framework */; }; C30D8B211BCAFD3E0003BB70 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C3D2FE6219FF1D03002CD4D6 /* Images.xcassets */; }; C30D8B221BCAFD3E0003BB70 /* PlotItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F22FFAE12342DB1006BF615 /* PlotItem.m */; }; C30D8B231BCAFD3E0003BB70 /* PlotGallery.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F22FFAC12342DB1006BF615 /* PlotGallery.m */; }; @@ -102,6 +101,7 @@ C34CB5901BC9B1C1009270A0 /* VerticalBarChart.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F22FFA312342D7C006BF615 /* VerticalBarChart.m */; }; C354C0D713C7CDBE00DA8822 /* RealTimePlot.m in Sources */ = {isa = PBXBuildFile; fileRef = C354C0D613C7CDBE00DA8822 /* RealTimePlot.m */; }; C35597961437E07800B41DA7 /* ControlChart.m in Sources */ = {isa = PBXBuildFile; fileRef = C35597951437E07800B41DA7 /* ControlChart.m */; }; + C357EA9D1F708E870060CF48 /* CorePlot.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C30D8B181BCAF99D0003BB70 /* CorePlot.framework */; }; C360E1C613B18AAF007994B6 /* OHLCPlot.m in Sources */ = {isa = PBXBuildFile; fileRef = C360E1C513B18AAF007994B6 /* OHLCPlot.m */; }; C360E1E013B18CAF007994B6 /* CandlestickPlot.m in Sources */ = {isa = PBXBuildFile; fileRef = C360E1DF13B18CAE007994B6 /* CandlestickPlot.m */; }; C367249313E103910070F47A /* LineCapDemo.m in Sources */ = {isa = PBXBuildFile; fileRef = C367249213E103910070F47A /* LineCapDemo.m */; }; @@ -364,10 +364,10 @@ buildActionMask = 2147483647; files = ( C30D8B3D1BCAFFB50003BB70 /* CoreGraphics.framework in Frameworks */, - C30D8B201BCAFC140003BB70 /* CorePlot.framework in Frameworks */, C30D8B411BCAFFC10003BB70 /* Foundation.framework in Frameworks */, C30D8B3F1BCAFFBB0003BB70 /* QuartzCore.framework in Frameworks */, C30D8B431BCAFFCB0003BB70 /* UIKit.framework in Frameworks */, + C357EA9D1F708E870060CF48 /* CorePlot.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/examples/CorePlotGallery/Plot_Gallery_Prefix.pch b/examples/CorePlotGallery/Plot_Gallery_Prefix.pch index 2176bd04d..e76705a48 100644 --- a/examples/CorePlotGallery/Plot_Gallery_Prefix.pch +++ b/examples/CorePlotGallery/Plot_Gallery_Prefix.pch @@ -4,7 +4,7 @@ #ifdef __OBJC__ #import - #if TARGET_OS_SIMULATOR || TARGET_OS_IPHONE + #if TARGET_OS_SIMULATOR || TARGET_OS_IPHONE || TARGET_OS_TV #import #import #else From c0aae0fedf1e9854b437568a6a63476f90bb7ee6 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Mon, 18 Sep 2017 19:59:51 -0400 Subject: [PATCH 031/160] Updated the example workspace for Xcode 9. --- .../xcshareddata/WorkspaceSettings.xcsettings | 8 ++++++++ .../xcshareddata/xcschemes/CorePlot Mac.xcscheme | 2 ++ 2 files changed, 10 insertions(+) create mode 100644 examples/CorePlotExamples.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings diff --git a/examples/CorePlotExamples.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/examples/CorePlotExamples.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..3ddf867a1 --- /dev/null +++ b/examples/CorePlotExamples.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + BuildSystemType + Latest + + diff --git a/framework/CorePlot.xcodeproj/xcshareddata/xcschemes/CorePlot Mac.xcscheme b/framework/CorePlot.xcodeproj/xcshareddata/xcschemes/CorePlot Mac.xcscheme index 3532ae2b3..02aa945c2 100644 --- a/framework/CorePlot.xcodeproj/xcshareddata/xcschemes/CorePlot Mac.xcscheme +++ b/framework/CorePlot.xcodeproj/xcshareddata/xcschemes/CorePlot Mac.xcscheme @@ -26,6 +26,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + language = "" shouldUseLaunchSchemeArgsEnv = "YES" codeCoverageEnabled = "YES"> @@ -47,6 +48,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" From a0d0ca1348053daf46700fcdfbf98643915c6e85 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Fri, 22 Sep 2017 17:25:39 -0400 Subject: [PATCH 032/160] Added Carthage badge to the readme file. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 02b35d618..790755053 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ *Cocoa plotting framework for macOS, iOS, and tvOS.* -[![Build Status](https://secure.travis-ci.org/core-plot/core-plot.svg)](http://travis-ci.org/core-plot/core-plot) [![Version Status](https://img.shields.io/cocoapods/v/CorePlot.svg)](https://cocoapods.org/pods/CorePlot) [![license MIT](https://img.shields.io/cocoapods/l/CorePlot.svg)](http://opensource.org/licenses/BSD-3-Clause) [![Platform](https://img.shields.io/cocoapods/p/CorePlot.svg)](http://core-plot.github.io) +[![Build Status](https://secure.travis-ci.org/core-plot/core-plot.svg)](http://travis-ci.org/core-plot/core-plot) [![Version Status](https://img.shields.io/cocoapods/v/CorePlot.svg)](https://cocoapods.org/pods/CorePlot) [![license MIT](https://img.shields.io/cocoapods/l/CorePlot.svg)](http://opensource.org/licenses/BSD-3-Clause) [![Platform](https://img.shields.io/cocoapods/p/CorePlot.svg)](http://core-plot.github.io) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) # Introduction From 7b31cd90e3b4d19c17b8c7cdfb7e0ff146f44926 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 24 Sep 2017 12:15:52 -0400 Subject: [PATCH 033/160] Use the standard Xcode build system. --- .../xcshareddata/WorkspaceSettings.xcsettings | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/examples/CorePlotExamples.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/examples/CorePlotExamples.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings index 3ddf867a1..0c67376eb 100644 --- a/examples/CorePlotExamples.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ b/examples/CorePlotExamples.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -1,8 +1,5 @@ - - BuildSystemType - Latest - + From d76ddd1d2e0ee3d7c34abce033ad776286e89e2e Mon Sep 17 00:00:00 2001 From: Matt Brenneke Date: Thu, 28 Sep 2017 09:44:24 -0500 Subject: [PATCH 034/160] Use self to allocate classes in factory methods --- framework/Source/CPTBarPlot.m | 2 +- framework/Source/CPTColor.m | 52 ++++++++++++++++---------------- framework/Source/CPTColorSpace.m | 2 +- framework/Source/CPTLimitBand.m | 2 +- 4 files changed, 29 insertions(+), 29 deletions(-) diff --git a/framework/Source/CPTBarPlot.m b/framework/Source/CPTBarPlot.m index 6bdaaf8a5..f1530f031 100644 --- a/framework/Source/CPTBarPlot.m +++ b/framework/Source/CPTBarPlot.m @@ -170,7 +170,7 @@ @implementation CPTBarPlot **/ +(nonnull instancetype)tubularBarPlotWithColor:(nonnull CPTColor *)color horizontalBars:(BOOL)horizontal { - CPTBarPlot *barPlot = [[CPTBarPlot alloc] init]; + CPTBarPlot *barPlot = [[self alloc] init]; CPTMutableLineStyle *barLineStyle = [[CPTMutableLineStyle alloc] init]; barLineStyle.lineWidth = CPTFloat(1.0); diff --git a/framework/Source/CPTColor.m b/framework/Source/CPTColor.m index 7c47d318b..cbd60db2b 100644 --- a/framework/Source/CPTColor.m +++ b/framework/Source/CPTColor.m @@ -41,7 +41,7 @@ +(nonnull instancetype)clearColor CGColorRef clear = CGColorCreate([CPTColorSpace genericRGBSpace].cgColorSpace, values); - color = [[CPTColor alloc] initWithCGColor:clear]; + color = [[self alloc] initWithCGColor:clear]; CGColorRelease(clear); }); @@ -139,10 +139,10 @@ +(nonnull instancetype)redColor static dispatch_once_t onceToken = 0; dispatch_once(&onceToken, ^{ - color = [[CPTColor alloc] initWithComponentRed:CPTFloat(1.0) - green:CPTFloat(0.0) - blue:CPTFloat(0.0) - alpha:CPTFloat(1.0)]; + color = [[self alloc] initWithComponentRed:CPTFloat(1.0) + green:CPTFloat(0.0) + blue:CPTFloat(0.0) + alpha:CPTFloat(1.0)]; }); return color; @@ -158,10 +158,10 @@ +(nonnull instancetype)greenColor static dispatch_once_t onceToken = 0; dispatch_once(&onceToken, ^{ - color = [[CPTColor alloc] initWithComponentRed:CPTFloat(0.0) - green:CPTFloat(1.0) - blue:CPTFloat(0.0) - alpha:CPTFloat(1.0)]; + color = [[self alloc] initWithComponentRed:CPTFloat(0.0) + green:CPTFloat(1.0) + blue:CPTFloat(0.0) + alpha:CPTFloat(1.0)]; }); return color; @@ -177,10 +177,10 @@ +(nonnull instancetype)blueColor static dispatch_once_t onceToken = 0; dispatch_once(&onceToken, ^{ - color = [[CPTColor alloc] initWithComponentRed:CPTFloat(0.0) - green:CPTFloat(0.0) - blue:CPTFloat(1.0) - alpha:CPTFloat(1.0)]; + color = [[self alloc] initWithComponentRed:CPTFloat(0.0) + green:CPTFloat(0.0) + blue:CPTFloat(1.0) + alpha:CPTFloat(1.0)]; }); return color; @@ -196,10 +196,10 @@ +(nonnull instancetype)cyanColor static dispatch_once_t onceToken = 0; dispatch_once(&onceToken, ^{ - color = [[CPTColor alloc] initWithComponentRed:CPTFloat(0.0) - green:CPTFloat(1.0) - blue:CPTFloat(1.0) - alpha:CPTFloat(1.0)]; + color = [[self alloc] initWithComponentRed:CPTFloat(0.0) + green:CPTFloat(1.0) + blue:CPTFloat(1.0) + alpha:CPTFloat(1.0)]; }); return color; @@ -215,7 +215,7 @@ +(nonnull instancetype)yellowColor static dispatch_once_t onceToken = 0; dispatch_once(&onceToken, ^{ - color = [[CPTColor alloc] initWithComponentRed:CPTFloat(1.0) green:CPTFloat(1.0) blue:CPTFloat(0.0) alpha:CPTFloat(1.0)]; + color = [[self alloc] initWithComponentRed:CPTFloat(1.0) green:CPTFloat(1.0) blue:CPTFloat(0.0) alpha:CPTFloat(1.0)]; }); return color; @@ -230,7 +230,7 @@ +(nonnull instancetype)magentaColor static CPTColor *color = nil; if ( nil == color ) { - color = [[CPTColor alloc] initWithComponentRed:CPTFloat(1.0) green:CPTFloat(0.0) blue:CPTFloat(1.0) alpha:CPTFloat(1.0)]; + color = [[self alloc] initWithComponentRed:CPTFloat(1.0) green:CPTFloat(0.0) blue:CPTFloat(1.0) alpha:CPTFloat(1.0)]; } return color; } @@ -245,7 +245,7 @@ +(nonnull instancetype)orangeColor static dispatch_once_t onceToken = 0; dispatch_once(&onceToken, ^{ - color = [[CPTColor alloc] initWithComponentRed:CPTFloat(1.0) green:CPTFloat(0.5) blue:CPTFloat(0.0) alpha:CPTFloat(1.0)]; + color = [[self alloc] initWithComponentRed:CPTFloat(1.0) green:CPTFloat(0.5) blue:CPTFloat(0.0) alpha:CPTFloat(1.0)]; }); return color; @@ -261,7 +261,7 @@ +(nonnull instancetype)purpleColor static dispatch_once_t onceToken = 0; dispatch_once(&onceToken, ^{ - color = [[CPTColor alloc] initWithComponentRed:CPTFloat(0.5) green:CPTFloat(0.0) blue:CPTFloat(0.5) alpha:CPTFloat(1.0)]; + color = [[self alloc] initWithComponentRed:CPTFloat(0.5) green:CPTFloat(0.0) blue:CPTFloat(0.5) alpha:CPTFloat(1.0)]; }); return color; @@ -277,7 +277,7 @@ +(nonnull instancetype)brownColor static dispatch_once_t onceToken = 0; dispatch_once(&onceToken, ^{ - color = [[CPTColor alloc] initWithComponentRed:CPTFloat(0.6) green:CPTFloat(0.4) blue:CPTFloat(0.2) alpha:CPTFloat(1.0)]; + color = [[self alloc] initWithComponentRed:CPTFloat(0.6) green:CPTFloat(0.4) blue:CPTFloat(0.2) alpha:CPTFloat(1.0)]; }); return color; @@ -289,7 +289,7 @@ +(nonnull instancetype)brownColor **/ +(nonnull instancetype)colorWithCGColor:(nonnull CGColorRef)newCGColor { - return [[CPTColor alloc] initWithCGColor:newCGColor]; + return [[self alloc] initWithCGColor:newCGColor]; } /** @brief Creates and returns a new CPTColor instance initialized with the provided RGBA color components. @@ -301,7 +301,7 @@ +(nonnull instancetype)colorWithCGColor:(nonnull CGColorRef)newCGColor **/ +(nonnull instancetype)colorWithComponentRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha { - return [[CPTColor alloc] initWithComponentRed:red green:green blue:blue alpha:alpha]; + return [[self alloc] initWithComponentRed:red green:green blue:blue alpha:alpha]; } /** @brief Creates and returns a new CPTColor instance initialized with the provided gray level. @@ -312,7 +312,7 @@ +(nonnull instancetype)colorWithGenericGray:(CGFloat)gray { CGFloat values[4] = { gray, gray, gray, CPTFloat(1.0) }; CGColorRef colorRef = CGColorCreate([CPTColorSpace genericRGBSpace].cgColorSpace, values); - CPTColor *color = [[CPTColor alloc] initWithCGColor:colorRef]; + CPTColor *color = [[self alloc] initWithCGColor:colorRef]; CGColorRelease(colorRef); return color; @@ -382,7 +382,7 @@ -(void)dealloc -(nonnull instancetype)colorWithAlphaComponent:(CGFloat)alpha { CGColorRef newCGColor = CGColorCreateCopyWithAlpha(self.cgColor, alpha); - CPTColor *newColor = [CPTColor colorWithCGColor:newCGColor]; + CPTColor *newColor = [[self class] colorWithCGColor:newCGColor]; CGColorRelease(newCGColor); return newColor; diff --git a/framework/Source/CPTColorSpace.m b/framework/Source/CPTColorSpace.m index 22816b351..de9e3522b 100644 --- a/framework/Source/CPTColorSpace.m +++ b/framework/Source/CPTColorSpace.m @@ -37,7 +37,7 @@ +(nonnull instancetype)genericRGBSpace #else cgSpace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB); #endif - space = [[CPTColorSpace alloc] initWithCGColorSpace:cgSpace]; + space = [[self alloc] initWithCGColorSpace:cgSpace]; CGColorSpaceRelease(cgSpace); }); diff --git a/framework/Source/CPTLimitBand.m b/framework/Source/CPTLimitBand.m index d8ee6e061..67541c01d 100644 --- a/framework/Source/CPTLimitBand.m +++ b/framework/Source/CPTLimitBand.m @@ -28,7 +28,7 @@ @implementation CPTLimitBand **/ +(nonnull instancetype)limitBandWithRange:(nullable CPTPlotRange *)newRange fill:(nullable CPTFill *)newFill { - return [[CPTLimitBand alloc] initWithRange:newRange fill:newFill]; + return [[self alloc] initWithRange:newRange fill:newFill]; } /** @brief Initializes a newly allocated CPTLimitBand object with the provided range and fill. From 31d2f6c2320a74f9889acbf0143375cc1e2a5ac2 Mon Sep 17 00:00:00 2001 From: Tom Izaks Date: Wed, 1 Nov 2017 11:31:38 +1100 Subject: [PATCH 035/160] Turn off code coverage in schemes to resolve Xcode 9 issue --- .../xcshareddata/xcschemes/CorePlot Mac.xcscheme | 3 +-- .../xcshareddata/xcschemes/CorePlot iOS.xcscheme | 5 +++-- .../xcshareddata/xcschemes/CorePlot tvOS.xcscheme | 5 +++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/framework/CorePlot.xcodeproj/xcshareddata/xcschemes/CorePlot Mac.xcscheme b/framework/CorePlot.xcodeproj/xcshareddata/xcschemes/CorePlot Mac.xcscheme index 02aa945c2..0a5cdf643 100644 --- a/framework/CorePlot.xcodeproj/xcshareddata/xcschemes/CorePlot Mac.xcscheme +++ b/framework/CorePlot.xcodeproj/xcshareddata/xcschemes/CorePlot Mac.xcscheme @@ -27,8 +27,7 @@ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" language = "" - shouldUseLaunchSchemeArgsEnv = "YES" - codeCoverageEnabled = "YES"> + shouldUseLaunchSchemeArgsEnv = "YES"> diff --git a/framework/CorePlot.xcodeproj/xcshareddata/xcschemes/CorePlot iOS.xcscheme b/framework/CorePlot.xcodeproj/xcshareddata/xcschemes/CorePlot iOS.xcscheme index 7f05eca2e..3d44894c9 100644 --- a/framework/CorePlot.xcodeproj/xcshareddata/xcschemes/CorePlot iOS.xcscheme +++ b/framework/CorePlot.xcodeproj/xcshareddata/xcschemes/CorePlot iOS.xcscheme @@ -40,8 +40,8 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES" - codeCoverageEnabled = "YES"> + language = "" + shouldUseLaunchSchemeArgsEnv = "YES"> @@ -70,6 +70,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/framework/CorePlot.xcodeproj/xcshareddata/xcschemes/CorePlot tvOS.xcscheme b/framework/CorePlot.xcodeproj/xcshareddata/xcschemes/CorePlot tvOS.xcscheme index 55ea89f03..e440a5819 100644 --- a/framework/CorePlot.xcodeproj/xcshareddata/xcschemes/CorePlot tvOS.xcscheme +++ b/framework/CorePlot.xcodeproj/xcshareddata/xcschemes/CorePlot tvOS.xcscheme @@ -40,8 +40,8 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES" - codeCoverageEnabled = "YES"> + language = "" + shouldUseLaunchSchemeArgsEnv = "YES"> @@ -70,6 +70,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" From 92096ee581396b6d1e2f7099856accf69b2c7fdb Mon Sep 17 00:00:00 2001 From: Tom Izaks Date: Wed, 1 Nov 2017 12:30:21 +1100 Subject: [PATCH 036/160] Disable Code Coverage on extra scheme --- .../xcshareddata/xcschemes/CorePlot-CocoaTouch.xcscheme | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/framework/CorePlot.xcodeproj/xcshareddata/xcschemes/CorePlot-CocoaTouch.xcscheme b/framework/CorePlot.xcodeproj/xcshareddata/xcschemes/CorePlot-CocoaTouch.xcscheme index 5e9c63eb8..80d7944f2 100644 --- a/framework/CorePlot.xcodeproj/xcshareddata/xcschemes/CorePlot-CocoaTouch.xcscheme +++ b/framework/CorePlot.xcodeproj/xcshareddata/xcschemes/CorePlot-CocoaTouch.xcscheme @@ -40,8 +40,8 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES" - codeCoverageEnabled = "YES"> + language = "" + shouldUseLaunchSchemeArgsEnv = "YES"> @@ -70,6 +70,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" From b53c2e0b53fbd43906a16b66fed4cdbb5fbe7576 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Fri, 3 Nov 2017 15:24:11 -0400 Subject: [PATCH 037/160] Fixed documentation typo. --- framework/Source/CPTTextStyle.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/Source/CPTTextStyle.m b/framework/Source/CPTTextStyle.m index 3213df8f6..61e6b28d6 100644 --- a/framework/Source/CPTTextStyle.m +++ b/framework/Source/CPTTextStyle.m @@ -88,7 +88,7 @@ +(nonnull instancetype)textStyleWithStyle:(nullable CPTTextStyle *)textStyle /// @name Initialization /// @{ -/** @brief Initializes a newly allocated CPTAnnotation object. +/** @brief Initializes a newly allocated CPTTextStyle object. * * The initialized object will have the following properties: * - @ref fontName = Helvetica From 3500c358325b832eb4d1f4bcd620e28373b864a6 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Fri, 3 Nov 2017 15:27:23 -0400 Subject: [PATCH 038/160] Added Tom Izaks to the license. --- License.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/License.txt b/License.txt index a41fd4796..0466e3b45 100644 --- a/License.txt +++ b/License.txt @@ -1,4 +1,4 @@ -Copyright (c) 2017, Drew McCormack, Brad Larson, Eric Skroch, Barry Wark, Dirkjan Krijnders, Rick Maddy, Vijay Kalusani, Caleb Cannon, Jeff Buck, Thomas Elstner, Jeroen Leenarts, Craig Hockenberry, Hartwig Wiesmann, Koen van der Drift, Nino Ag, Mike Lischke, Trevor Harmon, Travis Fischer, Graham Mueller, Rafał Wójcik, Mike Rossetti, Michael Merickel, Lane Roathe, Ingmar Stein, Sean Holbert, Victor Martin Garcia, Jérôme Morissard, Demitri Muna, Tim Monzures, and Kirill Yakimovich. +Copyright (c) 2017, Drew McCormack, Brad Larson, Eric Skroch, Barry Wark, Dirkjan Krijnders, Rick Maddy, Vijay Kalusani, Caleb Cannon, Jeff Buck, Thomas Elstner, Jeroen Leenarts, Craig Hockenberry, Hartwig Wiesmann, Koen van der Drift, Nino Ag, Mike Lischke, Trevor Harmon, Travis Fischer, Graham Mueller, Rafał Wójcik, Mike Rossetti, Michael Merickel, Lane Roathe, Ingmar Stein, Sean Holbert, Victor Martin Garcia, Jérôme Morissard, Demitri Muna, Tim Monzures, Kirill Yakimovich, and Tom Izaks. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: From 89033ce8f092567c227c8d74bac348104725a14e Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 5 Nov 2017 11:55:42 -0500 Subject: [PATCH 039/160] Added unit test and fix for NSDecimalNumber rounding bug for long and long long values (radar #32520109). Fixed issue #345. --- framework/Source/CPTUtilities.m | 72 +++++++++++++++++++++++++--- framework/Source/CPTUtilitiesTests.m | 39 +++++++++++++++ 2 files changed, 105 insertions(+), 6 deletions(-) diff --git a/framework/Source/CPTUtilities.m b/framework/Source/CPTUtilities.m index 373f11b5b..097075d9b 100644 --- a/framework/Source/CPTUtilities.m +++ b/framework/Source/CPTUtilities.m @@ -40,7 +40,17 @@ int16_t CPTDecimalShortValue(NSDecimal decimalNumber) **/ int32_t CPTDecimalLongValue(NSDecimal decimalNumber) { - return (int32_t)[NSDecimalNumber decimalNumberWithDecimal:decimalNumber].longValue; + NSDecimalNumber *d = [NSDecimalNumber decimalNumberWithDecimal:decimalNumber]; + + d = [d decimalNumberByRoundingAccordingToBehavior: + [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundDown + scale:0 + raiseOnExactness:NO + raiseOnOverflow:NO + raiseOnUnderflow:NO + raiseOnDivideByZero:NO]]; + + return (int32_t)d.longValue; } /** @@ -50,7 +60,17 @@ int32_t CPTDecimalLongValue(NSDecimal decimalNumber) **/ int64_t CPTDecimalLongLongValue(NSDecimal decimalNumber) { - return (int64_t)[NSDecimalNumber decimalNumberWithDecimal:decimalNumber].longLongValue; + NSDecimalNumber *d = [NSDecimalNumber decimalNumberWithDecimal:decimalNumber]; + + d = [d decimalNumberByRoundingAccordingToBehavior: + [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundDown + scale:0 + raiseOnExactness:NO + raiseOnOverflow:NO + raiseOnUnderflow:NO + raiseOnDivideByZero:NO]]; + + return (int64_t)d.longLongValue; } /** @@ -70,7 +90,17 @@ int CPTDecimalIntValue(NSDecimal decimalNumber) **/ NSInteger CPTDecimalIntegerValue(NSDecimal decimalNumber) { - return (NSInteger)[NSDecimalNumber decimalNumberWithDecimal:decimalNumber].integerValue; + NSDecimalNumber *d = [NSDecimalNumber decimalNumberWithDecimal:decimalNumber]; + + d = [d decimalNumberByRoundingAccordingToBehavior: + [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundDown + scale:0 + raiseOnExactness:NO + raiseOnOverflow:NO + raiseOnUnderflow:NO + raiseOnDivideByZero:NO]]; + + return (NSInteger)d.integerValue; } /** @@ -100,7 +130,17 @@ uint16_t CPTDecimalUnsignedShortValue(NSDecimal decimalNumber) **/ uint32_t CPTDecimalUnsignedLongValue(NSDecimal decimalNumber) { - return (uint32_t)[NSDecimalNumber decimalNumberWithDecimal:decimalNumber].unsignedLongValue; + NSDecimalNumber *d = [NSDecimalNumber decimalNumberWithDecimal:decimalNumber]; + + d = [d decimalNumberByRoundingAccordingToBehavior: + [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundDown + scale:0 + raiseOnExactness:NO + raiseOnOverflow:NO + raiseOnUnderflow:NO + raiseOnDivideByZero:NO]]; + + return (uint32_t)d.unsignedLongValue; } /** @@ -110,7 +150,17 @@ uint32_t CPTDecimalUnsignedLongValue(NSDecimal decimalNumber) **/ uint64_t CPTDecimalUnsignedLongLongValue(NSDecimal decimalNumber) { - return (uint64_t)[NSDecimalNumber decimalNumberWithDecimal:decimalNumber].unsignedLongLongValue; + NSDecimalNumber *d = [NSDecimalNumber decimalNumberWithDecimal:decimalNumber]; + + d = [d decimalNumberByRoundingAccordingToBehavior: + [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundDown + scale:0 + raiseOnExactness:NO + raiseOnOverflow:NO + raiseOnUnderflow:NO + raiseOnDivideByZero:NO]]; + + return (uint64_t)d.unsignedLongLongValue; } /** @@ -130,7 +180,17 @@ unsigned int CPTDecimalUnsignedIntValue(NSDecimal decimalNumber) **/ NSUInteger CPTDecimalUnsignedIntegerValue(NSDecimal decimalNumber) { - return (NSUInteger)[NSDecimalNumber decimalNumberWithDecimal:decimalNumber].unsignedIntegerValue; + NSDecimalNumber *d = [NSDecimalNumber decimalNumberWithDecimal:decimalNumber]; + + d = [d decimalNumberByRoundingAccordingToBehavior: + [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundDown + scale:0 + raiseOnExactness:NO + raiseOnOverflow:NO + raiseOnUnderflow:NO + raiseOnDivideByZero:NO]]; + + return (NSUInteger)d.unsignedIntegerValue; } /** diff --git a/framework/Source/CPTUtilitiesTests.m b/framework/Source/CPTUtilitiesTests.m index c9c613c6d..3afaf46b4 100644 --- a/framework/Source/CPTUtilitiesTests.m +++ b/framework/Source/CPTUtilitiesTests.m @@ -122,6 +122,45 @@ -(void)testConvertNegativeOne XCTAssertTrue(NSDecimalCompare(&testValue, &negativeOne) == NSOrderedSame, @"%@", errMessage); } +#pragma mark - +#pragma mark NSDecimalNumber tests + +// Fix issues with incorrect values when converting NSDecimalNumber to non-double values (due to bugs in NSDecimalNumber, see radar #32520109) +-(void)testNSDecimalNumberBugFix +{ + NSArray *strings = + @[ + @"0", // validation tests + @"1", + @"1.8446744073709551615", // 64/65 bit tests (radar 32520109) + @"1.8446744073709551616", + @"9.821426272392280061", // radar 25465729 tests + @"9.821426272392280060", + ]; + + for ( NSString *string in strings ) { + NSDecimalNumber *v = [NSDecimalNumber decimalNumberWithString:string]; + NSDecimal d = v.decimalValue; + double expectedDouble = v.doubleValue; + + XCTAssertEqual(CPTDecimalCharValue(d), (char)expectedDouble); + XCTAssertEqual(CPTDecimalUnsignedCharValue(d), (unsigned char)expectedDouble); + XCTAssertEqual(CPTDecimalShortValue(d), (short)expectedDouble); + XCTAssertEqual(CPTDecimalUnsignedShortValue(d), (unsigned short)expectedDouble); + XCTAssertEqual(CPTDecimalIntValue(d), (int)expectedDouble); + XCTAssertEqual(CPTDecimalUnsignedIntValue(d), (unsigned int)expectedDouble); + XCTAssertEqual(CPTDecimalLongValue(d), (long)expectedDouble); + XCTAssertEqual(CPTDecimalUnsignedLongValue(d), (unsigned long)expectedDouble); + XCTAssertEqual(CPTDecimalLongLongValue(d), (long long)expectedDouble); + XCTAssertEqual(CPTDecimalUnsignedLongLongValue(d), (unsigned long long)expectedDouble); + + XCTAssertEqual(CPTDecimalFloatValue(d), (float)expectedDouble); + + XCTAssertEqual(CPTDecimalIntegerValue(d), (NSInteger)expectedDouble); + XCTAssertEqual(CPTDecimalUnsignedIntegerValue(d), (NSUInteger)expectedDouble); + } +} + #pragma mark - #pragma mark Cached values From da01f0875156f25b9241215c8faf68b44bb3d644 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Fri, 24 Nov 2017 10:29:31 -0500 Subject: [PATCH 040/160] Updated the Uncrustify configuration file for version 0.66.1. --- scripts/uncrustify.cfg | 1124 ++++++++++++++++++++++------------------ 1 file changed, 610 insertions(+), 514 deletions(-) diff --git a/scripts/uncrustify.cfg b/scripts/uncrustify.cfg index 9a72e033e..220356a82 100644 --- a/scripts/uncrustify.cfg +++ b/scripts/uncrustify.cfg @@ -1,516 +1,612 @@ -# Uncrustify 0.63 -newlines = auto -input_tab_size = 4 -output_tab_size = 4 -string_escape_char = 92 -string_escape_char2 = 0 -string_replace_tab_chars = false -tok_split_gte = false -disable_processing_cmt = "" -enable_processing_cmt = "" -enable_digraphs = false -utf8_bom = remove -utf8_byte = false -utf8_force = false -indent_columns = 4 -indent_continue = 0 -indent_with_tabs = 0 -indent_cmt_with_tabs = false -indent_align_string = true -indent_xml_string = 4 -indent_brace = 0 -indent_braces = false -indent_braces_no_func = false -indent_braces_no_class = false -indent_braces_no_struct = false -indent_brace_parent = false -indent_paren_open_brace = false -indent_namespace = false -indent_namespace_single_indent = false -indent_namespace_level = 0 -indent_namespace_limit = 0 -indent_extern = false -indent_class = true -indent_class_colon = false -indent_class_on_colon = false -indent_constr_colon = false -indent_ctor_init_leading = 2 -indent_ctor_init = 0 -indent_else_if = false -indent_var_def_blk = 0 -indent_var_def_cont = false -indent_shift = false -indent_func_def_force_col1 = false -indent_func_call_param = false -indent_func_def_param = false -indent_func_proto_param = false -indent_func_class_param = false -indent_func_ctor_var_param = false -indent_template_param = false -indent_func_param_double = false -indent_func_const = 1 -indent_func_throw = 1 -indent_member = 1 -indent_sing_line_comments = 0 -indent_relative_single_line_comments = true -indent_switch_case = 4 -indent_case_shift = 0 -indent_case_brace = 0 -indent_col1_comment = false -indent_label = 1 -indent_access_spec = 1 -indent_access_spec_body = false -indent_paren_nl = false -indent_paren_close = 1 -indent_comma_paren = false -indent_bool_paren = false -indent_first_bool_expr = false -indent_square_nl = false -indent_preserve_sql = true -indent_align_assign = true -indent_oc_block = true -indent_oc_block_msg = 0 -indent_oc_msg_colon = 0 -indent_oc_msg_prioritize_first_colon = true -indent_oc_block_msg_xcode_style = false -indent_oc_block_msg_from_keyword = false -indent_oc_block_msg_from_colon = false -indent_oc_block_msg_from_caret = false -indent_oc_block_msg_from_brace = false -indent_min_vbrace_open = 0 -indent_vbrace_open_on_tabstop = false -sp_arith = force -sp_assign = force -sp_cpp_lambda_assign = ignore -sp_cpp_lambda_paren = ignore -sp_assign_default = force -sp_before_assign = ignore -sp_after_assign = ignore -sp_enum_paren = force -sp_enum_assign = force -sp_enum_before_assign = ignore -sp_enum_after_assign = ignore -sp_pp_concat = force -sp_pp_stringify = remove -sp_before_pp_stringify = ignore -sp_bool = force -sp_compare = force -sp_inside_paren = remove -sp_paren_paren = remove -sp_cparen_oparen = remove -sp_balance_nested_parens = true -sp_paren_brace = force -sp_before_ptr_star = force -sp_before_unnamed_ptr_star = force -sp_between_ptr_star = remove -sp_after_ptr_star = remove -sp_after_ptr_star_qualifier = remove -sp_after_ptr_star_func = remove -sp_ptr_star_paren = remove -sp_before_ptr_star_func = force -sp_before_byref = force -sp_before_unnamed_byref = force -sp_after_byref = remove -sp_after_byref_func = remove -sp_before_byref_func = force -sp_after_type = force -sp_before_template_paren = ignore -sp_template_angle = force -sp_before_angle = remove -sp_inside_angle = remove -sp_after_angle = remove -sp_angle_paren = remove -sp_angle_word = force -sp_angle_shift = add -sp_permit_cpp11_shift = false -sp_before_sparen = force -sp_inside_sparen = force -sp_inside_sparen_close = ignore -sp_inside_sparen_open = ignore -sp_after_sparen = force -sp_sparen_brace = force -sp_invariant_paren = ignore -sp_after_invariant_paren = ignore -sp_special_semi = force -sp_before_semi = remove -sp_before_semi_for = remove -sp_before_semi_for_empty = remove -sp_after_semi = force -sp_after_semi_for = force -sp_after_semi_for_empty = force -sp_before_square = remove -sp_before_squares = remove -sp_inside_square = remove -sp_after_comma = force -sp_before_comma = remove -sp_after_mdatype_commas = remove -sp_before_mdatype_commas = remove -sp_between_mdatype_commas = remove -sp_paren_comma = force -sp_before_ellipsis = remove -sp_after_class_colon = force -sp_before_class_colon = force -sp_after_constr_colon = remove -sp_before_constr_colon = remove -sp_before_case_colon = remove -sp_after_operator = remove -sp_after_operator_sym = force -sp_after_cast = remove -sp_inside_paren_cast = remove -sp_cpp_cast_paren = remove -sp_sizeof_paren = remove -sp_after_tag = ignore -sp_inside_braces_enum = remove -sp_inside_braces_struct = remove -sp_inside_braces = force -sp_inside_braces_empty = remove -sp_type_func = force -sp_func_proto_paren = remove -sp_func_def_paren = remove -sp_inside_fparens = remove -sp_inside_fparen = remove -sp_inside_tparen = remove -sp_after_tparen_close = remove -sp_square_fparen = remove -sp_fparen_brace = force -sp_fparen_dbrace = ignore -sp_func_call_paren = remove -sp_func_call_paren_empty = ignore -sp_func_call_user_paren = remove -sp_func_class_paren = remove -sp_return_paren = force -sp_attribute_paren = remove -sp_defined_paren = remove -sp_throw_paren = force -sp_after_throw = force -sp_catch_paren = force -sp_version_paren = ignore -sp_scope_paren = ignore -sp_macro = force -sp_macro_func = force -sp_else_brace = force -sp_brace_else = force -sp_brace_typedef = force -sp_catch_brace = force -sp_brace_catch = force -sp_finally_brace = force -sp_brace_finally = force -sp_try_brace = force -sp_getset_brace = force -sp_word_brace = add -sp_word_brace_ns = add -sp_before_dc = remove -sp_after_dc = remove -sp_d_array_colon = remove -sp_not = remove -sp_inv = remove -sp_addr = remove -sp_member = remove -sp_deref = remove -sp_sign = remove -sp_incdec = remove -sp_before_nl_cont = force -sp_after_oc_scope = remove -sp_after_oc_colon = remove -sp_before_oc_colon = remove -sp_after_oc_dict_colon = force -sp_before_oc_dict_colon = remove -sp_after_send_oc_colon = remove -sp_before_send_oc_colon = remove -sp_after_oc_type = remove -sp_after_oc_return_type = remove -sp_after_oc_at_sel = remove -sp_after_oc_at_sel_parens = force -sp_inside_oc_at_sel_parens = remove -sp_before_oc_block_caret = force -sp_after_oc_block_caret = remove -sp_after_oc_msg_receiver = force -sp_after_oc_property = force -sp_cond_colon = force -sp_cond_colon_before = ignore -sp_cond_colon_after = ignore -sp_cond_question = force -sp_cond_question_before = ignore -sp_cond_question_after = ignore -sp_cond_ternary_short = ignore -sp_case_label = force -sp_range = ignore -sp_after_for_colon = ignore -sp_before_for_colon = ignore -sp_extern_paren = remove -sp_cmt_cpp_start = force -sp_cmt_cpp_doxygen = true -sp_cmt_cpp_qttr = false -sp_endif_cmt = force -sp_after_new = force -sp_between_new_paren = ignore -sp_before_tr_emb_cmt = force -sp_num_before_tr_emb_cmt = 1 -sp_annotation_paren = ignore -align_keep_tabs = false -align_with_tabs = false -align_on_tabstop = false -align_number_left = false -align_keep_extra_space = false -align_func_params = true -align_same_func_call_params = false -align_var_def_span = 0 -align_var_def_star_style = 1 -align_var_def_amp_style = 1 -align_var_def_thresh = 0 -align_var_def_gap = 0 -align_var_def_colon = true -align_var_def_attribute = true -align_var_def_inline = true -align_assign_span = 1 -align_assign_thresh = 0 -align_enum_equ_span = 1 -align_enum_equ_thresh = 0 -align_var_struct_span = 1 -align_var_struct_thresh = 0 -align_var_struct_gap = 1 -align_struct_init_span = 2 -align_typedef_gap = 1 -align_typedef_span = 2 -align_typedef_func = 0 -align_typedef_star_style = 1 -align_typedef_amp_style = 1 -align_right_cmt_span = 2 -align_right_cmt_mix = false -align_right_cmt_gap = 1 -align_right_cmt_at_col = 1 -align_func_proto_span = 2 -align_func_proto_gap = 1 -align_on_operator = true -align_mix_var_proto = true -align_single_line_func = true -align_single_line_brace = true -align_single_line_brace_gap = 1 -align_oc_msg_spec_span = 0 -align_nl_cont = false -align_pp_define_together = false -align_pp_define_gap = 1 -align_pp_define_span = 2 -align_left_shift = true -align_asm_colon = false -align_oc_msg_colon_span = 16 -align_oc_msg_colon_first = false -align_oc_decl_colon = true -nl_collapse_empty_body = false -nl_assign_leave_one_liners = true -nl_class_leave_one_liners = false -nl_enum_leave_one_liners = true -nl_getset_leave_one_liners = false -nl_func_leave_one_liners = true -nl_cpp_lambda_leave_one_liners = false -nl_if_leave_one_liners = false -nl_while_leave_one_liners = false -nl_oc_msg_leave_one_liner = false -nl_start_of_file = remove -nl_start_of_file_min = 0 -nl_end_of_file = force -nl_end_of_file_min = 1 -nl_assign_brace = remove -nl_assign_square = ignore -nl_after_square_assign = ignore -nl_func_var_def_blk = 1 -nl_typedef_blk_start = 0 -nl_typedef_blk_end = 0 -nl_typedef_blk_in = 0 -nl_var_def_blk_start = 0 -nl_var_def_blk_end = 0 -nl_var_def_blk_in = 0 -nl_fcall_brace = force -nl_enum_brace = remove -nl_struct_brace = remove -nl_union_brace = remove -nl_if_brace = remove -nl_brace_else = force -nl_elseif_brace = remove -nl_else_brace = remove -nl_else_if = remove -nl_brace_finally = force -nl_finally_brace = remove -nl_try_brace = remove -nl_getset_brace = force -nl_for_brace = remove -nl_catch_brace = remove -nl_brace_catch = force -nl_brace_square = ignore -nl_brace_fparen = ignore -nl_while_brace = remove -nl_scope_brace = ignore -nl_unittest_brace = ignore -nl_version_brace = ignore -nl_using_brace = ignore -nl_brace_brace = force -nl_do_brace = remove -nl_brace_while = force -nl_switch_brace = remove -nl_synchronized_brace = remove -nl_multi_line_cond = false -nl_multi_line_define = false -nl_before_case = true -nl_before_throw = force -nl_after_case = true -nl_case_colon_brace = force -nl_namespace_brace = force -nl_template_class = force -nl_class_brace = force -nl_class_init_args = force -nl_constr_init_args = ignore -nl_func_type_name = remove -nl_func_type_name_class = ignore -nl_func_scope_name = remove -nl_func_proto_type_name = remove -nl_func_paren = remove -nl_func_def_paren = remove -nl_func_decl_start = remove -nl_func_def_start = remove -nl_func_decl_start_single = ignore -nl_func_def_start_single = ignore -nl_func_decl_args = ignore -nl_func_def_args = ignore -nl_func_decl_end = remove -nl_func_def_end = remove -nl_func_decl_end_single = ignore -nl_func_def_end_single = ignore -nl_func_decl_empty = remove -nl_func_def_empty = remove -nl_oc_msg_args = false -nl_fdef_brace = force -nl_cpp_ldef_brace = ignore -nl_return_expr = remove -nl_after_semicolon = true -nl_paren_dbrace_open = ignore -nl_after_brace_open = true -nl_after_brace_open_cmt = false -nl_after_vbrace_open = true -nl_after_vbrace_open_empty = false -nl_after_brace_close = false -nl_after_vbrace_close = false -nl_brace_struct_var = force -nl_define_macro = false -nl_squeeze_ifdef = true -nl_before_if = ignore -nl_after_if = ignore -nl_before_for = ignore -nl_after_for = ignore -nl_before_while = ignore -nl_after_while = ignore -nl_before_switch = ignore -nl_after_switch = ignore -nl_before_synchronized = ignore -nl_after_synchronized = ignore -nl_before_do = ignore -nl_after_do = ignore -nl_ds_struct_enum_cmt = false -nl_ds_struct_enum_close_brace = false -nl_before_func_class_def = 0 -nl_before_func_class_proto = 0 -nl_class_colon = remove -nl_constr_colon = ignore -nl_create_if_one_liner = true -nl_create_for_one_liner = false -nl_create_while_one_liner = false -pos_arith = trail -pos_assign = trail -pos_bool = trail -pos_compare = trail -pos_conditional = trail -pos_comma = trail -pos_class_comma = trail -pos_constr_comma = ignore -pos_class_colon = trail -pos_constr_colon = ignore -code_width = 0 -ls_for_split_full = true -ls_func_split_full = true -ls_code_width = false -nl_max = 2 -nl_after_func_proto = 1 -nl_after_func_proto_group = 2 -nl_before_func_body_def = 0 -nl_before_func_body_proto = 0 -nl_after_func_body = 2 -nl_after_func_body_class = 0 -nl_after_func_body_one_liner = 1 -nl_before_block_comment = 2 -nl_before_c_comment = 2 -nl_before_cpp_comment = 1 -nl_after_multiline_comment = false -nl_after_label_colon = false -nl_after_struct = 0 -nl_after_class = 0 -nl_before_access_spec = 2 -nl_after_access_spec = 1 -nl_comment_func_def = 1 -nl_after_try_catch_finally = 1 -nl_around_cs_property = 1 -nl_between_get_set = 1 -nl_property_brace = ignore -eat_blanks_after_open_brace = true -eat_blanks_before_close_brace = true -nl_remove_extra_newlines = 0 -nl_before_return = false -nl_after_return = true -nl_after_annotation = ignore -nl_between_annotation = ignore -mod_full_brace_do = force -mod_full_brace_for = force -mod_full_brace_function = force -mod_full_brace_if = force -mod_full_brace_if_chain = false -mod_full_brace_nl = 1 -mod_full_brace_while = force -mod_full_brace_using = ignore -mod_paren_on_return = remove -mod_pawn_semicolon = true -mod_full_paren_if_bool = true -mod_remove_extra_semicolon = true -mod_add_long_function_closebrace_comment = 0 +# Uncrustify-0.66.1 +newlines = auto +input_tab_size = 4 +output_tab_size = 4 +string_escape_char = 92 +string_escape_char2 = 0 +string_replace_tab_chars = false +tok_split_gte = false +disable_processing_cmt = "" +enable_processing_cmt = "" +enable_digraphs = false +utf8_bom = remove +utf8_byte = false +utf8_force = false +sp_arith = force +sp_arith_additive = ignore +sp_assign = force +sp_cpp_lambda_assign = ignore +sp_cpp_lambda_paren = ignore +sp_assign_default = force +sp_before_assign = ignore +sp_after_assign = ignore +sp_enum_paren = force +sp_enum_assign = force +sp_enum_before_assign = ignore +sp_enum_after_assign = ignore +sp_enum_colon = ignore +sp_pp_concat = force +sp_pp_stringify = remove +sp_before_pp_stringify = ignore +sp_bool = force +sp_compare = force +sp_inside_paren = remove +sp_paren_paren = remove +sp_cparen_oparen = remove +sp_balance_nested_parens = true +sp_paren_brace = force +sp_before_ptr_star = force +sp_before_unnamed_ptr_star = force +sp_between_ptr_star = remove +sp_after_ptr_star = remove +sp_after_ptr_star_qualifier = remove +sp_after_ptr_star_func = remove +sp_ptr_star_paren = remove +sp_before_ptr_star_func = force +sp_before_byref = force +sp_before_unnamed_byref = force +sp_after_byref = remove +sp_after_byref_func = remove +sp_before_byref_func = force +sp_after_type = force +sp_before_template_paren = ignore +sp_template_angle = force +sp_before_angle = remove +sp_inside_angle = remove +sp_angle_colon = ignore +sp_after_angle = remove +sp_angle_paren = remove +sp_angle_paren_empty = ignore +sp_angle_word = force +sp_angle_shift = add +sp_permit_cpp11_shift = false +sp_before_sparen = force +sp_inside_sparen = force +sp_inside_sparen_close = ignore +sp_inside_sparen_open = ignore +sp_after_sparen = force +sp_sparen_brace = force +sp_invariant_paren = ignore +sp_after_invariant_paren = ignore +sp_special_semi = force +sp_before_semi = remove +sp_before_semi_for = remove +sp_before_semi_for_empty = remove +sp_after_semi = force +sp_after_semi_for = force +sp_after_semi_for_empty = force +sp_before_square = remove +sp_before_squares = remove +sp_inside_square = remove +sp_after_comma = force +sp_before_comma = remove +sp_after_mdatype_commas = remove +sp_before_mdatype_commas = remove +sp_between_mdatype_commas = remove +sp_paren_comma = force +sp_before_ellipsis = remove +sp_after_class_colon = force +sp_before_class_colon = force +sp_after_constr_colon = remove +sp_before_constr_colon = remove +sp_before_case_colon = remove +sp_after_operator = remove +sp_after_operator_sym = force +sp_after_operator_sym_empty = ignore +sp_after_cast = remove +sp_inside_paren_cast = remove +sp_cpp_cast_paren = remove +sp_sizeof_paren = remove +sp_after_tag = ignore +sp_inside_braces_enum = remove +sp_inside_braces_struct = remove +sp_after_type_brace_init_lst_open = ignore +sp_before_type_brace_init_lst_close = ignore +sp_inside_type_brace_init_lst = ignore +sp_inside_braces = force +sp_inside_braces_empty = remove +sp_type_func = force +sp_type_brace_init_lst = ignore +sp_func_proto_paren = remove +sp_func_proto_paren_empty = ignore +sp_func_def_paren = remove +sp_func_def_paren_empty = ignore +sp_inside_fparens = remove +sp_inside_fparen = remove +sp_inside_tparen = remove +sp_after_tparen_close = remove +sp_square_fparen = remove +sp_fparen_brace = force +sp_fparen_dbrace = ignore +sp_func_call_paren = remove +sp_func_call_paren_empty = ignore +sp_func_call_user_paren = remove +sp_func_class_paren = remove +sp_func_class_paren_empty = ignore +sp_return_paren = force +sp_attribute_paren = remove +sp_defined_paren = remove +sp_throw_paren = force +sp_after_throw = force +sp_catch_paren = force +sp_version_paren = ignore +sp_scope_paren = ignore +sp_super_paren = remove +sp_this_paren = remove +sp_macro = force +sp_macro_func = force +sp_else_brace = force +sp_brace_else = force +sp_brace_typedef = force +sp_catch_brace = force +sp_brace_catch = force +sp_finally_brace = force +sp_brace_finally = force +sp_try_brace = force +sp_getset_brace = force +sp_word_brace = add +sp_word_brace_ns = add +sp_before_dc = remove +sp_after_dc = remove +sp_d_array_colon = remove +sp_not = remove +sp_inv = remove +sp_addr = remove +sp_member = remove +sp_deref = remove +sp_sign = remove +sp_incdec = remove +sp_before_nl_cont = force +sp_after_oc_scope = remove +sp_after_oc_colon = remove +sp_before_oc_colon = remove +sp_after_oc_dict_colon = force +sp_before_oc_dict_colon = remove +sp_after_send_oc_colon = remove +sp_before_send_oc_colon = remove +sp_after_oc_type = remove +sp_after_oc_return_type = remove +sp_after_oc_at_sel = remove +sp_after_oc_at_sel_parens = force +sp_inside_oc_at_sel_parens = remove +sp_before_oc_block_caret = force +sp_after_oc_block_caret = remove +sp_after_oc_msg_receiver = force +sp_after_oc_property = force +sp_cond_colon = force +sp_cond_colon_before = ignore +sp_cond_colon_after = ignore +sp_cond_question = force +sp_cond_question_before = ignore +sp_cond_question_after = ignore +sp_cond_ternary_short = ignore +sp_case_label = force +sp_range = ignore +sp_after_for_colon = ignore +sp_before_for_colon = ignore +sp_extern_paren = remove +sp_cmt_cpp_start = force +sp_cmt_cpp_doxygen = true +sp_cmt_cpp_qttr = false +sp_endif_cmt = force +sp_after_new = force +sp_between_new_paren = ignore +sp_after_newop_paren = ignore +sp_inside_newop_paren = ignore +sp_inside_newop_paren_open = ignore +sp_inside_newop_paren_close = ignore +sp_before_tr_emb_cmt = force +sp_num_before_tr_emb_cmt = 1 +sp_annotation_paren = ignore +sp_skip_vbrace_tokens = false +force_tab_after_define = false +indent_columns = 4 +indent_continue = 0 +indent_param = 0 +indent_with_tabs = 0 +indent_cmt_with_tabs = false +indent_align_string = true +indent_xml_string = 4 +indent_brace = 0 +indent_braces = false +indent_braces_no_func = false +indent_braces_no_class = false +indent_braces_no_struct = false +indent_brace_parent = false +indent_paren_open_brace = false +indent_cs_delegate_brace = false +indent_namespace = false +indent_namespace_single_indent = false +indent_namespace_level = 0 +indent_namespace_limit = 0 +indent_extern = false +indent_class = true +indent_class_colon = false +indent_class_on_colon = false +indent_constr_colon = false +indent_ctor_init_leading = 2 +indent_ctor_init = 0 +indent_else_if = false +indent_var_def_blk = 0 +indent_var_def_cont = false +indent_shift = false +indent_func_def_force_col1 = false +indent_func_call_param = false +indent_func_def_param = false +indent_func_proto_param = false +indent_func_class_param = false +indent_func_ctor_var_param = false +indent_template_param = false +indent_func_param_double = false +indent_func_const = 1 +indent_func_throw = 1 +indent_member = 1 +indent_sing_line_comments = 0 +indent_relative_single_line_comments = true +indent_switch_case = 4 +indent_switch_pp = true +indent_case_shift = 0 +indent_case_brace = 0 +indent_col1_comment = false +indent_label = 1 +indent_access_spec = 1 +indent_access_spec_body = false +indent_paren_nl = false +indent_paren_close = 1 +indent_paren_after_func_def = false +indent_paren_after_func_decl = false +indent_paren_after_func_call = false +indent_comma_paren = false +indent_bool_paren = false +indent_first_bool_expr = false +indent_square_nl = false +indent_preserve_sql = true +indent_align_assign = true +indent_oc_block = true +indent_oc_block_msg = 0 +indent_oc_msg_colon = 0 +indent_oc_msg_prioritize_first_colon = true +indent_oc_block_msg_xcode_style = false +indent_oc_block_msg_from_keyword = false +indent_oc_block_msg_from_colon = false +indent_oc_block_msg_from_caret = false +indent_oc_block_msg_from_brace = false +indent_min_vbrace_open = 0 +indent_vbrace_open_on_tabstop = false +indent_token_after_brace = true +indent_cpp_lambda_body = false +indent_using_block = true +indent_ternary_operator = 0 +indent_ignore_asm_block = false +nl_collapse_empty_body = false +nl_assign_leave_one_liners = true +nl_class_leave_one_liners = false +nl_enum_leave_one_liners = true +nl_getset_leave_one_liners = false +nl_func_leave_one_liners = true +nl_cpp_lambda_leave_one_liners = false +nl_if_leave_one_liners = false +nl_while_leave_one_liners = false +nl_oc_msg_leave_one_liner = false +nl_oc_block_brace = ignore +nl_start_of_file = remove +nl_start_of_file_min = 0 +nl_end_of_file = force +nl_end_of_file_min = 1 +nl_assign_brace = remove +nl_assign_square = ignore +nl_after_square_assign = ignore +nl_func_var_def_blk = 1 +nl_typedef_blk_start = 0 +nl_typedef_blk_end = 0 +nl_typedef_blk_in = 0 +nl_var_def_blk_start = 0 +nl_var_def_blk_end = 0 +nl_var_def_blk_in = 0 +nl_fcall_brace = force +nl_enum_brace = remove +nl_enum_class = ignore +nl_enum_class_identifier = ignore +nl_enum_identifier_colon = ignore +nl_enum_colon_type = ignore +nl_struct_brace = remove +nl_union_brace = remove +nl_if_brace = remove +nl_brace_else = force +nl_elseif_brace = remove +nl_else_brace = remove +nl_else_if = remove +nl_before_if_closing_paren = ignore +nl_brace_finally = force +nl_finally_brace = remove +nl_try_brace = remove +nl_getset_brace = force +nl_for_brace = remove +nl_catch_brace = remove +nl_brace_catch = force +nl_brace_square = ignore +nl_brace_fparen = ignore +nl_while_brace = remove +nl_scope_brace = ignore +nl_unittest_brace = ignore +nl_version_brace = ignore +nl_using_brace = ignore +nl_brace_brace = force +nl_do_brace = remove +nl_brace_while = force +nl_switch_brace = remove +nl_synchronized_brace = remove +nl_multi_line_cond = false +nl_multi_line_define = false +nl_before_case = true +nl_before_throw = force +nl_after_case = true +nl_case_colon_brace = force +nl_namespace_brace = force +nl_template_class = force +nl_class_brace = force +nl_class_init_args = force +nl_constr_init_args = ignore +nl_enum_own_lines = ignore +nl_func_type_name = remove +nl_func_type_name_class = ignore +nl_func_class_scope = ignore +nl_func_scope_name = remove +nl_func_proto_type_name = remove +nl_func_paren = remove +nl_func_paren_empty = ignore +nl_func_def_paren = remove +nl_func_def_paren_empty = ignore +nl_func_call_paren = ignore +nl_func_call_paren_empty = ignore +nl_func_decl_start = remove +nl_func_def_start = remove +nl_func_decl_start_single = ignore +nl_func_def_start_single = ignore +nl_func_decl_start_multi_line = false +nl_func_def_start_multi_line = false +nl_func_decl_args = ignore +nl_func_def_args = ignore +nl_func_decl_args_multi_line = false +nl_func_def_args_multi_line = false +nl_func_decl_end = remove +nl_func_def_end = remove +nl_func_decl_end_single = ignore +nl_func_def_end_single = ignore +nl_func_decl_end_multi_line = false +nl_func_def_end_multi_line = false +nl_func_decl_empty = remove +nl_func_def_empty = remove +nl_func_call_empty = ignore +nl_func_call_start_multi_line = false +nl_func_call_args_multi_line = false +nl_func_call_end_multi_line = false +nl_oc_msg_args = false +nl_fdef_brace = force +nl_cpp_ldef_brace = ignore +nl_return_expr = remove +nl_after_semicolon = true +nl_paren_dbrace_open = ignore +nl_type_brace_init_lst = ignore +nl_type_brace_init_lst_open = ignore +nl_type_brace_init_lst_close = ignore +nl_after_brace_open = true +nl_after_brace_open_cmt = false +nl_after_vbrace_open = true +nl_after_vbrace_open_empty = false +nl_after_brace_close = false +nl_after_vbrace_close = false +nl_brace_struct_var = force +nl_define_macro = false +nl_squeeze_ifdef = true +nl_squeeze_ifdef_top_level = false +nl_before_if = ignore +nl_after_if = ignore +nl_before_for = ignore +nl_after_for = ignore +nl_before_while = ignore +nl_after_while = ignore +nl_before_switch = ignore +nl_after_switch = ignore +nl_before_synchronized = ignore +nl_after_synchronized = ignore +nl_before_do = ignore +nl_after_do = ignore +nl_ds_struct_enum_cmt = false +nl_ds_struct_enum_close_brace = false +nl_before_func_class_def = 0 +nl_before_func_class_proto = 0 +nl_class_colon = remove +nl_constr_colon = ignore +nl_create_if_one_liner = true +nl_create_for_one_liner = false +nl_create_while_one_liner = false +nl_split_if_one_liner = false +nl_split_for_one_liner = false +nl_split_while_one_liner = false +nl_max = 2 +nl_max_blank_in_func = 0 +nl_after_func_proto = 1 +nl_after_func_proto_group = 2 +nl_after_func_class_proto = 0 +nl_after_func_class_proto_group = 0 +nl_before_func_body_def = 0 +nl_before_func_body_proto = 0 +nl_after_func_body = 2 +nl_after_func_body_class = 0 +nl_after_func_body_one_liner = 1 +nl_before_block_comment = 2 +nl_before_c_comment = 2 +nl_before_cpp_comment = 1 +nl_after_multiline_comment = false +nl_after_label_colon = false +nl_after_struct = 0 +nl_before_class = 0 +nl_after_class = 0 +nl_before_access_spec = 2 +nl_after_access_spec = 1 +nl_comment_func_def = 1 +nl_after_try_catch_finally = 1 +nl_around_cs_property = 1 +nl_between_get_set = 1 +nl_property_brace = ignore +eat_blanks_after_open_brace = true +eat_blanks_before_close_brace = true +nl_remove_extra_newlines = 0 +nl_before_return = false +nl_after_return = true +nl_after_annotation = ignore +nl_between_annotation = ignore +pos_arith = trail +pos_assign = trail +pos_bool = trail +pos_compare = trail +pos_conditional = trail +pos_comma = trail +pos_enum_comma = ignore +pos_class_comma = trail +pos_constr_comma = ignore +pos_class_colon = trail +pos_constr_colon = ignore +code_width = 0 +ls_for_split_full = true +ls_func_split_full = true +ls_code_width = false +align_keep_tabs = false +align_with_tabs = false +align_on_tabstop = false +align_number_right = false +align_keep_extra_space = false +align_func_params = true +align_func_params_span = 0 +align_func_params_thresh = 0 +align_func_params_gap = 0 +align_same_func_call_params = false +align_var_def_span = 0 +align_var_def_star_style = 1 +align_var_def_amp_style = 1 +align_var_def_thresh = 0 +align_var_def_gap = 0 +align_var_def_colon = true +align_var_def_colon_gap = 0 +align_var_def_attribute = true +align_var_def_inline = true +align_assign_span = 1 +align_assign_thresh = 0 +align_enum_equ_span = 1 +align_enum_equ_thresh = 0 +align_var_class_span = 0 +align_var_class_thresh = 0 +align_var_class_gap = 0 +align_var_struct_span = 1 +align_var_struct_thresh = 0 +align_var_struct_gap = 1 +align_struct_init_span = 2 +align_typedef_gap = 1 +align_typedef_span = 2 +align_typedef_func = 0 +align_typedef_star_style = 1 +align_typedef_amp_style = 1 +align_right_cmt_span = 2 +align_right_cmt_mix = false +align_right_cmt_gap = 1 +align_right_cmt_at_col = 1 +align_func_proto_span = 2 +align_func_proto_gap = 1 +align_on_operator = true +align_mix_var_proto = true +align_single_line_func = true +align_single_line_brace = true +align_single_line_brace_gap = 1 +align_oc_msg_spec_span = 0 +align_nl_cont = false +align_pp_define_together = false +align_pp_define_gap = 1 +align_pp_define_span = 2 +align_left_shift = true +align_asm_colon = false +align_oc_msg_colon_span = 16 +align_oc_msg_colon_first = false +align_oc_decl_colon = true +cmt_width = 0 +cmt_reflow_mode = 0 +cmt_convert_tab_to_spaces = true +cmt_indent_multi = true +cmt_c_group = true +cmt_c_nl_start = true +cmt_c_nl_end = true +cmt_cpp_group = true +cmt_cpp_nl_start = true +cmt_cpp_nl_end = true +cmt_cpp_to_c = false +cmt_star_cont = true +cmt_sp_before_star_cont = 0 +cmt_sp_after_star_cont = 0 +cmt_multi_check_last = true +cmt_multi_first_len_minimum = 4 +cmt_insert_file_header = "" +cmt_insert_file_footer = "" +cmt_insert_func_header = "" +cmt_insert_class_header = "" +cmt_insert_oc_msg_header = "" +cmt_insert_before_preproc = false +cmt_insert_before_inlines = true +cmt_insert_before_ctor_dtor = false +mod_full_brace_do = force +mod_full_brace_for = force +mod_full_brace_function = force +mod_full_brace_if = force +mod_full_brace_if_chain = false +mod_full_brace_if_chain_only = false +mod_full_brace_nl = 1 +mod_full_brace_nl_block_rem_mlcond = false +mod_full_brace_while = force +mod_full_brace_using = ignore +mod_paren_on_return = remove +mod_pawn_semicolon = true +mod_full_paren_if_bool = true +mod_remove_extra_semicolon = true +mod_add_long_function_closebrace_comment = 0 mod_add_long_namespace_closebrace_comment = 0 -mod_add_long_switch_closebrace_comment = 0 -mod_add_long_ifdef_endif_comment = 0 -mod_add_long_ifdef_else_comment = 0 -mod_sort_import = true -mod_sort_using = false -mod_sort_include = true -mod_move_case_break = false -mod_case_brace = remove -mod_remove_empty_return = true -cmt_width = 0 -cmt_reflow_mode = 0 -cmt_convert_tab_to_spaces = true -cmt_indent_multi = true -cmt_c_group = true -cmt_c_nl_start = true -cmt_c_nl_end = true -cmt_cpp_group = true -cmt_cpp_nl_start = true -cmt_cpp_nl_end = true -cmt_cpp_to_c = false -cmt_star_cont = true -cmt_sp_before_star_cont = 0 -cmt_sp_after_star_cont = 0 -cmt_multi_check_last = true -cmt_insert_file_header = "" -cmt_insert_file_footer = "" -cmt_insert_func_header = "" -cmt_insert_class_header = "" -cmt_insert_oc_msg_header = "" -cmt_insert_before_preproc = false -pp_indent = force -pp_indent_at_level = false -pp_indent_count = 0 -pp_space = remove -pp_space_count = 0 -pp_indent_region = 0 -pp_region_indent_code = false -pp_indent_if = 0 -pp_if_indent_code = false -pp_define_at_level = false -use_indent_func_call_param = true -use_indent_continue_only_once = false -# option(s) with 'not default' value: 0 +mod_add_long_class_closebrace_comment = 0 +mod_add_long_switch_closebrace_comment = 0 +mod_add_long_ifdef_endif_comment = 0 +mod_add_long_ifdef_else_comment = 0 +mod_sort_import = true +mod_sort_using = false +mod_sort_include = true +mod_move_case_break = false +mod_case_brace = remove +mod_remove_empty_return = true +mod_sort_oc_properties = false +mod_sort_oc_property_class_weight = 0 +mod_sort_oc_property_thread_safe_weight = 0 +mod_sort_oc_property_readwrite_weight = 0 +mod_sort_oc_property_reference_weight = 0 +mod_sort_oc_property_getter_weight = 0 +mod_sort_oc_property_setter_weight = 0 +mod_sort_oc_property_nullability_weight = 0 +pp_indent = force +pp_indent_at_level = false +pp_indent_count = 0 +pp_space = remove +pp_space_count = 0 +pp_indent_region = 0 +pp_region_indent_code = false +pp_indent_if = 0 +pp_if_indent_code = false +pp_define_at_level = false +pp_ignore_define_body = false +pp_indent_case = true +pp_indent_func_def = true +pp_indent_extern = true +pp_indent_brace = true +include_category_0 = "" +include_category_1 = "" +include_category_2 = "" +use_indent_func_call_param = true +use_indent_continue_only_once = false +use_options_overriding_for_qt_macros = true +warn_level_tabs_found_in_verbatim_string_literals = 2 +# option(s) with 'not default' value: 278 # From 36aaf2634cc4584f471192fbb596f6965d5c4822 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Fri, 24 Nov 2017 10:29:56 -0500 Subject: [PATCH 041/160] Updated code formatting with Uncrustify 0.66.1. --- QCPlugin/CPTScatterPlotPlugin.m | 2 +- QCPlugin/CorePlotQCPlugin.m | 12 +- examples/AAPLot/Classes/FlipsideView.h | 3 +- .../AAPLot/Classes/FlipsideViewController.h | 3 +- examples/AAPLot/Classes/MainViewController.m | 7 +- examples/AAPLot/NSDateFormatterExtensions.m | 2 +- .../Classes/CPTTestApp_iPadViewController.m | 2 +- .../Source/CPTPlotSymbolTestController.m | 6 +- examples/CPTTestApp/Source/RotationView.m | 8 +- .../Source/SelectionDemoController.m | 1 + examples/CorePlotGallery/src/ios/main.m | 2 +- .../src/mac/PlotGalleryController.m | 2 +- .../src/plots/CandlestickPlot.m | 8 +- .../src/plots/ColoredBarChart.m | 4 +- .../CorePlotGallery/src/plots/CompositePlot.m | 70 +++++------ .../CorePlotGallery/src/plots/ControlChart.m | 4 +- .../src/plots/CurvedInterpolationDemo.m | 4 +- .../src/plots/CurvedScatterPlot.m | 4 +- examples/CorePlotGallery/src/plots/DatePlot.m | 2 +- .../CorePlotGallery/src/plots/DonutChart.m | 10 +- .../CorePlotGallery/src/plots/FunctionPlot.m | 3 +- examples/CorePlotGallery/src/plots/OHLCPlot.m | 8 +- .../CorePlotGallery/src/plots/RangePlot.m | 2 +- .../src/plots/SimplePieChart.m | 14 +-- .../src/plots/VerticalBarChart.m | 6 +- .../src/shared/PiNumberFormatter.m | 4 +- .../CorePlotGallery/src/shared/PlotItem.m | 9 +- examples/CorePlotGallery/src/tvOS/main.m | 2 +- examples/DropPlot/CPTPlotDocument.m | 14 +-- .../Classes/NSDictionary+APFinancialData.m | 2 +- framework/CocoaPods/CorePlot.h | 8 +- framework/CorePlot-CocoaTouch.h | 8 +- framework/MacOnly/CPTGraphHostingView.m | 8 +- .../MacOnly/CPTPlatformSpecificCategories.m | 2 +- .../MacOnly/CPTPlatformSpecificFunctions.m | 2 +- framework/Source/CPTAnimation.h | 4 +- framework/Source/CPTAnimation.m | 2 +- framework/Source/CPTAnimationPeriod.m | 6 +- framework/Source/CPTAxis.m | 44 +++---- framework/Source/CPTAxisLabel.m | 10 +- framework/Source/CPTAxisLabelTests.m | 28 ++--- framework/Source/CPTAxisTitle.m | 6 +- framework/Source/CPTBarPlot.m | 33 ++--- framework/Source/CPTBorderedLayer.m | 8 +- framework/Source/CPTCalendarFormatter.m | 8 +- framework/Source/CPTColor.m | 3 +- framework/Source/CPTConstraints.m | 4 +- framework/Source/CPTDarkGradientThemeTests.m | 2 +- framework/Source/CPTDataSourceTestCase.m | 6 +- framework/Source/CPTDebugQuickLook.h | 3 +- framework/Source/CPTDefinitions.h | 6 +- framework/Source/CPTFill.m | 6 +- framework/Source/CPTFillTests.m | 6 +- framework/Source/CPTFunctionDataSource.m | 18 +-- framework/Source/CPTGradient.h | 4 +- framework/Source/CPTGradient.m | 33 +++-- framework/Source/CPTGraph.m | 1 + framework/Source/CPTImage.m | 50 ++++---- framework/Source/CPTLayer.h | 4 +- framework/Source/CPTLayer.m | 51 ++++---- framework/Source/CPTLayerAnnotation.m | 2 +- framework/Source/CPTLegend.m | 14 +-- framework/Source/CPTLegendEntry.m | 4 +- framework/Source/CPTLineCap.m | 40 +++--- framework/Source/CPTLineStyle.m | 4 +- framework/Source/CPTMutableNumericData.h | 2 +- framework/Source/CPTMutableNumericData.m | 2 +- framework/Source/CPTMutableNumericDataTests.m | 24 ++-- ...CPTMutableNumericDataTypeConversionTests.m | 26 ++-- framework/Source/CPTMutablePlotRange.m | 6 +- .../Source/CPTNumericData+TypeConversion.m | 36 +++--- framework/Source/CPTNumericData.h | 2 +- framework/Source/CPTNumericData.m | 30 ++--- framework/Source/CPTNumericDataTests.m | 26 ++-- framework/Source/CPTNumericDataType.h | 4 +- framework/Source/CPTNumericDataType.m | 4 +- ...umericDataTypeConversionPerformanceTests.m | 8 +- .../CPTNumericDataTypeConversionTests.m | 26 ++-- framework/Source/CPTPathExtensions.m | 2 +- framework/Source/CPTPieChart.m | 33 ++--- framework/Source/CPTPlot.h | 4 +- framework/Source/CPTPlot.m | 9 +- framework/Source/CPTPlotArea.m | 8 +- framework/Source/CPTPlotRange.m | 6 +- framework/Source/CPTPlotRangeTests.m | 4 +- framework/Source/CPTPlotSpace.m | 5 +- framework/Source/CPTPlotSpaceAnnotation.m | 2 +- framework/Source/CPTPlotSymbol.m | 62 ++++----- framework/Source/CPTRangePlot.m | 119 +++++++++--------- framework/Source/CPTScatterPlot.m | 105 ++++++++-------- framework/Source/CPTShadow.m | 2 +- framework/Source/CPTTextLayer.m | 2 +- framework/Source/CPTThemeTests.m | 6 +- framework/Source/CPTTradingRangePlot.m | 25 ++-- framework/Source/CPTUtilities.m | 23 ++-- framework/Source/CPTUtilitiesTests.m | 8 +- framework/Source/CPTXYAxis.m | 36 +++--- framework/Source/CPTXYPlotSpace.m | 33 ++--- framework/Source/CPTXYPlotSpaceTests.m | 26 ++-- framework/Source/NSCoderExtensions.m | 3 +- framework/Source/NSNumberExtensions.m | 2 - framework/Source/_CPTAnimationCGFloatPeriod.m | 2 +- .../Source/_CPTAnimationNSDecimalPeriod.m | 6 +- .../Source/_CPTAnimationNSNumberPeriod.m | 6 +- .../Source/_CPTAnimationPlotRangePeriod.m | 8 +- .../Source/_CPTAnimationTimingFunctions.m | 40 +++--- framework/Source/_CPTMaskLayer.m | 2 +- framework/iPhoneOnly/CPTGraphHostingView.m | 4 +- .../CPTPlatformSpecificCategories.m | 4 +- .../iPhoneOnly/CPTPlatformSpecificFunctions.m | 2 +- 110 files changed, 734 insertions(+), 719 deletions(-) diff --git a/QCPlugin/CPTScatterPlotPlugin.m b/QCPlugin/CPTScatterPlotPlugin.m index e9fa4aacf..d8833570b 100644 --- a/QCPlugin/CPTScatterPlotPlugin.m +++ b/QCPlugin/CPTScatterPlotPlugin.m @@ -197,7 +197,7 @@ -(BOOL)configurePlots if ( fillColor ) { plot.areaFill = [CPTFill fillWithColor:[CPTColor colorWithCGColor:fillColor]]; } - plot.areaBaseValue = @( MAX( self.inputYMin, MIN(self.inputYMax, 0.0) ) ); + plot.areaBaseValue = @(MAX(self.inputYMin, MIN(self.inputYMax, 0.0) ) ); [plot reloadData]; } diff --git a/QCPlugin/CorePlotQCPlugin.m b/QCPlugin/CorePlotQCPlugin.m index ba114174a..673bbd0a4 100644 --- a/QCPlugin/CorePlotQCPlugin.m +++ b/QCPlugin/CorePlotQCPlugin.m @@ -451,11 +451,11 @@ -(BOOL)configureAxis set.xAxis.labelTextStyle = textStyle; double xrange = self.inputXMax - self.inputXMin; - set.xAxis.majorIntervalLength = @( xrange / (self.inputXMajorIntervals) ); + set.xAxis.majorIntervalLength = @(xrange / (self.inputXMajorIntervals) ); set.xAxis.minorTicksPerInterval = self.inputXMinorIntervals; double yrange = self.inputYMax - self.inputYMin; - set.yAxis.majorIntervalLength = @( yrange / (self.inputYMajorIntervals) ); + set.yAxis.majorIntervalLength = @(yrange / (self.inputYMajorIntervals) ); set.yAxis.minorTicksPerInterval = self.inputYMinorIntervals; set.xAxis.minorTickLength = self.inputAxisMinorTickLength; @@ -750,7 +750,7 @@ -(BOOL)configureGraph */ // Configure the graph area - CGRect frame = CPTRectMake( 0.0, 0.0, MAX(1, self.inputPixelsWide), MAX(1, self.inputPixelsHigh) ); + CGRect frame = CPTRectMake(0.0, 0.0, MAX(1, self.inputPixelsWide), MAX(1, self.inputPixelsHigh) ); self.graph.bounds = frame; @@ -811,9 +811,9 @@ -(BOOL)execute:(nonnull id)context atTime:(NSTimeInterval)time // Draw the plot ... CGSize boundsSize = self.graph.bounds.size; CGContextRef bmContext = self.bitmapContext; - CGContextClearRect( bmContext, CPTRectMake(0.0, 0.0, boundsSize.width, boundsSize.height) ); + CGContextClearRect(bmContext, CPTRectMake(0.0, 0.0, boundsSize.width, boundsSize.height) ); CGContextSetRGBFillColor(bmContext, 0.0, 0.0, 0.0, 0.0); - CGContextFillRect( bmContext, CPTRectMake(0, 0, boundsSize.width, boundsSize.height) ); + CGContextFillRect(bmContext, CPTRectMake(0, 0, boundsSize.width, boundsSize.height) ); CGContextSetAllowsAntialiasing(bmContext, true); if ( configurationCheck ) { @@ -821,7 +821,7 @@ -(BOOL)execute:(nonnull id)context atTime:(NSTimeInterval)time [self.graph recursivelyRenderInContext:bmContext]; } else { - drawErrorText( bmContext, CPTRectMake(0, 0, self.inputPixelsWide, self.inputPixelsHigh) ); + drawErrorText(bmContext, CPTRectMake(0, 0, self.inputPixelsWide, self.inputPixelsHigh) ); } // CGContextSetAllowsAntialiasing(bitmapContext, false); diff --git a/examples/AAPLot/Classes/FlipsideView.h b/examples/AAPLot/Classes/FlipsideView.h index 26746ed6f..51e2d3dff 100644 --- a/examples/AAPLot/Classes/FlipsideView.h +++ b/examples/AAPLot/Classes/FlipsideView.h @@ -8,7 +8,8 @@ #import -@interface FlipsideView : UIView { +@interface FlipsideView : UIView +{ } @end diff --git a/examples/AAPLot/Classes/FlipsideViewController.h b/examples/AAPLot/Classes/FlipsideViewController.h index ae62c708e..7aa887c03 100644 --- a/examples/AAPLot/Classes/FlipsideViewController.h +++ b/examples/AAPLot/Classes/FlipsideViewController.h @@ -8,7 +8,8 @@ #import -@interface FlipsideViewController : UIViewController { +@interface FlipsideViewController : UIViewController +{ } @end diff --git a/examples/AAPLot/Classes/MainViewController.m b/examples/AAPLot/Classes/MainViewController.m index 4f4424ff9..d47ff32ef 100644 --- a/examples/AAPLot/Classes/MainViewController.m +++ b/examples/AAPLot/Classes/MainViewController.m @@ -155,7 +155,7 @@ -(nullable CPTNumericData *)dataForPlot:(nonnull CPTPlot *)plot recordIndexRange numFields = 2; } - NSMutableData *data = [[NSMutableData alloc] initWithLength:indexRange.length * numFields * ( useDoubles ? sizeof(double) : sizeof(NSDecimal) )]; + NSMutableData *data = [[NSMutableData alloc] initWithLength:indexRange.length * numFields * (useDoubles ? sizeof(double) : sizeof(NSDecimal) )]; const NSUInteger maxIndex = NSMaxRange(indexRange); @@ -376,7 +376,7 @@ -(nullable CPTNumericData *)dataForPlot:(nonnull CPTPlot *)plot recordIndexRange numFields = 2; } - NSMutableData *data = [[NSMutableData alloc] initWithLength:indexRange.length * numFields * ( useDoubles ? sizeof(double) : sizeof(NSDecimal) )]; + NSMutableData *data = [[NSMutableData alloc] initWithLength:indexRange.length * numFields * (useDoubles ? sizeof(double) : sizeof(NSDecimal) )]; const NSUInteger maxIndex = NSMaxRange(indexRange); @@ -581,6 +581,7 @@ -(nullable CPTNumericData *)dataForPlot:(nonnull CPTPlot *)plot recordIndexRange return numericData; } + #endif -(nullable CPTLayer *)dataLabelForPlot:(nonnull CPTPlot *)plot recordIndex:(NSUInteger)index @@ -651,7 +652,7 @@ -(void)dataPullerDidFinishFetch:(nonnull APYahooDataPuller *)dp animationOperation = [CPTAnimation animate:volumePlotSpace property:@"yRange" fromPlotRange:[CPTPlotRange plotRangeWithLocationDecimal:volumeLowDisplayLocation.decimalValue - lengthDecimal:CPTDecimalMultiply( volumeLengthDisplayLocation.decimalValue, CPTDecimalFromInteger(10) )] + lengthDecimal:CPTDecimalMultiply(volumeLengthDisplayLocation.decimalValue, CPTDecimalFromInteger(10) )] toPlotRange:[CPTPlotRange plotRangeWithLocation:volumeLowDisplayLocation length:volumeLengthDisplayLocation] duration:2.5]; diff --git a/examples/AAPLot/NSDateFormatterExtensions.m b/examples/AAPLot/NSDateFormatterExtensions.m index 53e754d36..f78a74686 100644 --- a/examples/AAPLot/NSDateFormatterExtensions.m +++ b/examples/AAPLot/NSDateFormatterExtensions.m @@ -8,7 +8,7 @@ +(nonnull NSDateFormatter *)csvDateFormatter static dispatch_once_t onceToken = 0; dispatch_once(&onceToken, ^{ - df = [[NSDateFormatter alloc] init]; + df = [[NSDateFormatter alloc] init]; df.dateFormat = @"yyyy-MM-dd"; }); diff --git a/examples/CPTTestApp-iPad/Classes/CPTTestApp_iPadViewController.m b/examples/CPTTestApp-iPad/Classes/CPTTestApp_iPadViewController.m index d68f56137..10025f1ae 100644 --- a/examples/CPTTestApp-iPad/Classes/CPTTestApp_iPadViewController.m +++ b/examples/CPTTestApp-iPad/Classes/CPTTestApp_iPadViewController.m @@ -410,7 +410,7 @@ -(nullable CPTLayer *)dataLabelForPlot:(nonnull CPTPlot *)plot recordIndex:(NSUI static dispatch_once_t onceToken = 0; dispatch_once(&onceToken, ^{ - whiteText = [[CPTMutableTextStyle alloc] init]; + whiteText = [[CPTMutableTextStyle alloc] init]; whiteText.color = [CPTColor whiteColor]; }); diff --git a/examples/CPTTestApp/Source/CPTPlotSymbolTestController.m b/examples/CPTTestApp/Source/CPTPlotSymbolTestController.m index 9cb1fa30c..b16f2a5a9 100644 --- a/examples/CPTTestApp/Source/CPTPlotSymbolTestController.m +++ b/examples/CPTTestApp/Source/CPTPlotSymbolTestController.m @@ -116,9 +116,9 @@ -(nullable CPTPlotSymbol *)symbolForScatterPlot:(nonnull CPTScatterPlot *)plot r CGMutablePathRef path = CGPathCreateMutable(); CGPathMoveToPoint(path, NULL, 0., 0.); - CGPathAddEllipseInRect( path, NULL, CGRectMake(0., 0., 10., 10.) ); - CGPathAddEllipseInRect( path, NULL, CGRectMake(1.5, 4., 3., 3.) ); - CGPathAddEllipseInRect( path, NULL, CGRectMake(5.5, 4., 3., 3.) ); + CGPathAddEllipseInRect(path, NULL, CGRectMake(0., 0., 10., 10.) ); + CGPathAddEllipseInRect(path, NULL, CGRectMake(1.5, 4., 3., 3.) ); + CGPathAddEllipseInRect(path, NULL, CGRectMake(5.5, 4., 3., 3.) ); CGPathMoveToPoint(path, NULL, 5., 2.); CGPathAddArc(path, NULL, 5., 3.3, 2.8, 0., M_PI, TRUE); CGPathCloseSubpath(path); diff --git a/examples/CPTTestApp/Source/RotationView.m b/examples/CPTTestApp/Source/RotationView.m index f65a18c17..2c145a4b6 100644 --- a/examples/CPTTestApp/Source/RotationView.m +++ b/examples/CPTTestApp/Source/RotationView.m @@ -50,10 +50,10 @@ -(void)mouseDragged:(nonnull NSEvent *)theEvent CGFloat totalRotation = sqrt(displacementInX * displacementInX + displacementInY * displacementInY); CATransform3D oldTransform = self.rotationTransform; - CATransform3D newTransform = CATransform3DRotate( oldTransform, totalRotation * M_PI / 180.0, - ( (displacementInX / totalRotation) * oldTransform.m12 + (displacementInY / totalRotation) * oldTransform.m11 ), - ( (displacementInX / totalRotation) * oldTransform.m22 + (displacementInY / totalRotation) * oldTransform.m21 ), - ( (displacementInX / totalRotation) * oldTransform.m32 + (displacementInY / totalRotation) * oldTransform.m31 ) ); + CATransform3D newTransform = CATransform3DRotate(oldTransform, totalRotation * M_PI / 180.0, + ( (displacementInX / totalRotation) * oldTransform.m12 + (displacementInY / totalRotation) * oldTransform.m11 ), + ( (displacementInX / totalRotation) * oldTransform.m22 + (displacementInY / totalRotation) * oldTransform.m21 ), + ( (displacementInX / totalRotation) * oldTransform.m32 + (displacementInY / totalRotation) * oldTransform.m31 ) ); id theDelegate = self.rotationDelegate; [theDelegate rotateObjectUsingTransform:newTransform]; diff --git a/examples/CPTTestApp/Source/SelectionDemoController.m b/examples/CPTTestApp/Source/SelectionDemoController.m index 088ca6cd9..95616bec1 100644 --- a/examples/CPTTestApp/Source/SelectionDemoController.m +++ b/examples/CPTTestApp/Source/SelectionDemoController.m @@ -296,6 +296,7 @@ -(BOOL)plotSpace:(nonnull CPTPlotSpace *)space shouldHandlePointingDeviceDownEve self.selectedIndex = NSUIntegerMax; return YES; } + #endif #pragma mark - diff --git a/examples/CorePlotGallery/src/ios/main.m b/examples/CorePlotGallery/src/ios/main.m index da456e0b4..12709130c 100644 --- a/examples/CorePlotGallery/src/ios/main.m +++ b/examples/CorePlotGallery/src/ios/main.m @@ -8,6 +8,6 @@ int main(int argc, char *argv[]) { @autoreleasepool { - return UIApplicationMain( argc, argv, nil, NSStringFromClass([AppDelegate class]) ); + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]) ); } } diff --git a/examples/CorePlotGallery/src/mac/PlotGalleryController.m b/examples/CorePlotGallery/src/mac/PlotGalleryController.m index 64467f939..1b0650ea8 100644 --- a/examples/CorePlotGallery/src/mac/PlotGalleryController.m +++ b/examples/CorePlotGallery/src/mac/PlotGalleryController.m @@ -190,7 +190,7 @@ -(void)exportTVImageWithSize:(CGSize)size toURL:(NSURL *)url showPlots:(BOOL)sho NSGraphicsContext *bitmapContext = [NSGraphicsContext graphicsContextWithBitmapImageRep:layerImage]; CGContextRef context = (CGContextRef)bitmapContext.graphicsPort; - CGContextClearRect( context, CGRectMake(0.0, 0.0, boundsSize.width, boundsSize.height) ); + CGContextClearRect(context, CGRectMake(0.0, 0.0, boundsSize.width, boundsSize.height) ); CGContextSetAllowsAntialiasing(context, true); CGContextSetShouldSmoothFonts(context, false); [imageView.layer renderInContext:context]; diff --git a/examples/CorePlotGallery/src/plots/CandlestickPlot.m b/examples/CorePlotGallery/src/plots/CandlestickPlot.m index d4aa96b91..4bc33610d 100644 --- a/examples/CorePlotGallery/src/plots/CandlestickPlot.m +++ b/examples/CorePlotGallery/src/plots/CandlestickPlot.m @@ -46,8 +46,8 @@ -(void)generateData double rOpen = 3.0 * arc4random() / (double)UINT32_MAX + 1.0; double rClose = (arc4random() / (double)UINT32_MAX - 0.5) * 0.125 + rOpen; - double rHigh = MAX( rOpen, MAX(rClose, (arc4random() / (double)UINT32_MAX - 0.5) * 0.5 + rOpen) ); - double rLow = MIN( rOpen, MIN(rClose, (arc4random() / (double)UINT32_MAX - 0.5) * 0.5 + rOpen) ); + double rHigh = MAX(rOpen, MAX(rClose, (arc4random() / (double)UINT32_MAX - 0.5) * 0.5 + rOpen) ); + double rLow = MIN(rOpen, MIN(rClose, (arc4random() / (double)UINT32_MAX - 0.5) * 0.5 + rOpen) ); [newData addObject: @{ @(CPTTradingRangePlotFieldX): @(x), @@ -105,7 +105,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT CPTLineCap *lineCap = [[CPTLineCap alloc] init]; lineCap.lineStyle = xAxis.axisLineStyle; lineCap.lineCapType = CPTLineCapTypeSweptArrow; - lineCap.size = CGSizeMake( self.titleSize * CPTFloat(0.5), self.titleSize * CPTFloat(0.625) ); + lineCap.size = CGSizeMake(self.titleSize * CPTFloat(0.5), self.titleSize * CPTFloat(0.625) ); CPTColor *lineColor = xAxis.axisLineStyle.lineColor; if ( lineColor ) { @@ -175,7 +175,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT newGraph.legend.swatchLayout = CPTLegendSwatchLayoutRight; newGraph.legendAnchor = CPTRectAnchorBottom; - newGraph.legendDisplacement = CGPointMake( 0.0, self.titleSize * CPTFloat(3.0) ); + newGraph.legendDisplacement = CGPointMake(0.0, self.titleSize * CPTFloat(3.0) ); // Set plot ranges CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)newGraph.defaultPlotSpace; diff --git a/examples/CorePlotGallery/src/plots/ColoredBarChart.m b/examples/CorePlotGallery/src/plots/ColoredBarChart.m index b5e7ffa6d..5d91fb8f1 100644 --- a/examples/CorePlotGallery/src/plots/ColoredBarChart.m +++ b/examples/CorePlotGallery/src/plots/ColoredBarChart.m @@ -133,7 +133,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT graph.legend = theLegend; graph.legendAnchor = CPTRectAnchorTop; - graph.legendDisplacement = CGPointMake( 0.0, self.titleSize * CPTFloat(-2.625) ); + graph.legendDisplacement = CGPointMake(0.0, self.titleSize * CPTFloat(-2.625) ); } #pragma mark - @@ -152,7 +152,7 @@ -(nullable NSArray *)numbersForPlot:(nonnull CPTPlot *)plot field:(NSUInteger)fi case CPTBarPlotFieldBarLocation: nums = [NSMutableArray arrayWithCapacity:indexRange.length]; for ( NSUInteger i = indexRange.location; i < NSMaxRange(indexRange); i++ ) { - [(NSMutableArray < NSNumber * > *) nums addObject:@(i)]; + [(NSMutableArray *) nums addObject:@(i)]; } break; diff --git a/examples/CorePlotGallery/src/plots/CompositePlot.m b/examples/CorePlotGallery/src/plots/CompositePlot.m index 2195d0c6e..60e7b7670 100644 --- a/examples/CorePlotGallery/src/plots/CompositePlot.m +++ b/examples/CorePlotGallery/src/plots/CompositePlot.m @@ -58,25 +58,26 @@ -(nonnull instancetype)init -(void)setFrameSize:(NSSize)newSize { - self.scatterPlotView.frame = NSMakeRect( 0.0, - 0.0, - newSize.width, - newSize.height * CPTFloat(0.5) ); + self.scatterPlotView.frame = NSMakeRect(0.0, + 0.0, + newSize.width, + newSize.height * CPTFloat(0.5) ); - self.barChartView.frame = NSMakeRect( 0.0, - newSize.height * CPTFloat(0.5), - newSize.width * CPTFloat(0.5), - newSize.height * CPTFloat(0.5) ); + self.barChartView.frame = NSMakeRect(0.0, + newSize.height * CPTFloat(0.5), + newSize.width * CPTFloat(0.5), + newSize.height * CPTFloat(0.5) ); - self.pieChartView.frame = NSMakeRect( newSize.width * CPTFloat(0.5), - newSize.height * CPTFloat(0.5), - newSize.width * CPTFloat(0.5), - newSize.height * CPTFloat(0.5) ); + self.pieChartView.frame = NSMakeRect(newSize.width * CPTFloat(0.5), + newSize.height * CPTFloat(0.5), + newSize.width * CPTFloat(0.5), + newSize.height * CPTFloat(0.5) ); [self.scatterPlotView setNeedsDisplay:YES]; [self.barChartView setNeedsDisplay:YES]; [self.pieChartView setNeedsDisplay:YES]; } + #endif -(void)renderInView:(nonnull PlotGalleryNativeView *)hostingView withTheme:(nullable CPTTheme *)theme animated:(BOOL)animated @@ -166,24 +167,23 @@ -(void)renderInView:(nonnull PlotGalleryNativeView *)hostingView withTheme:(null attribute:NSLayoutAttributeTop multiplier:1.0 constant:0.0]]; - #else NSRect viewRect = hostingView.bounds; - scatterView.frame = NSMakeRect( 0.0, - 0.0, - viewRect.size.width, - viewRect.size.height * CPTFloat(0.5) ); + scatterView.frame = NSMakeRect(0.0, + 0.0, + viewRect.size.width, + viewRect.size.height * CPTFloat(0.5) ); - barView.frame = NSMakeRect( 0.0, - viewRect.size.height * CPTFloat(0.5), - viewRect.size.width * CPTFloat(0.5), - viewRect.size.height * CPTFloat(0.5) ); + barView.frame = NSMakeRect(0.0, + viewRect.size.height * CPTFloat(0.5), + viewRect.size.width * CPTFloat(0.5), + viewRect.size.height * CPTFloat(0.5) ); - pieView.frame = NSMakeRect( viewRect.size.width * CPTFloat(0.5), - viewRect.size.height * CPTFloat(0.5), - viewRect.size.width * CPTFloat(0.5), - viewRect.size.height * CPTFloat(0.5) ); + pieView.frame = NSMakeRect(viewRect.size.width * CPTFloat(0.5), + viewRect.size.height * CPTFloat(0.5), + viewRect.size.width * CPTFloat(0.5), + viewRect.size.height * CPTFloat(0.5) ); for ( NSView *view in @[scatterView, barView, pieView] ) { [view setAutoresizesSubviews:YES]; @@ -422,8 +422,8 @@ -(void)renderPieChartInHostingView:(nonnull CPTGraphHostingView *)hostingView wi // Add pie chart CPTPieChart *piePlot = [[CPTPieChart alloc] init]; piePlot.dataSource = self; - piePlot.pieRadius = MIN( CPTFloat(0.7) * (hostingView.frame.size.height - CPTFloat(2.0) * self.pieChart.paddingLeft) / CPTFloat(2.0), - CPTFloat(0.7) * (hostingView.frame.size.width - CPTFloat(2.0) * self.pieChart.paddingTop) / CPTFloat(2.0) ); + piePlot.pieRadius = MIN(CPTFloat(0.7) * (hostingView.frame.size.height - CPTFloat(2.0) * self.pieChart.paddingLeft) / CPTFloat(2.0), + CPTFloat(0.7) * (hostingView.frame.size.width - CPTFloat(2.0) * self.pieChart.paddingTop) / CPTFloat(2.0) ); piePlot.identifier = @"Pie Chart 1"; piePlot.startAngle = CPTFloat(M_PI_4); piePlot.sliceDirection = CPTPieDirectionCounterClockwise; @@ -534,8 +534,8 @@ -(nullable CPTLayer *)dataLabelForPlot:(nonnull CPTPlot *)plot recordIndex:(NSUI static dispatch_once_t whiteOnceToken = 0; dispatch_once(&whiteOnceToken, ^{ - whiteText = [[CPTMutableTextStyle alloc] init]; - whiteText.color = [CPTColor whiteColor]; + whiteText = [[CPTMutableTextStyle alloc] init]; + whiteText.color = [CPTColor whiteColor]; whiteText.fontSize = self.titleSize * CPTFloat(0.5); }); @@ -543,8 +543,8 @@ -(nullable CPTLayer *)dataLabelForPlot:(nonnull CPTPlot *)plot recordIndex:(NSUI static dispatch_once_t blackOnceToken = 0; dispatch_once(&blackOnceToken, ^{ - redText = [[CPTMutableTextStyle alloc] init]; - redText.color = [CPTColor redColor]; + redText = [[CPTMutableTextStyle alloc] init]; + redText.color = [CPTColor redColor]; redText.fontSize = self.titleSize * CPTFloat(0.5); }); @@ -577,11 +577,11 @@ -(nullable CPTPlotSymbol *)symbolForScatterPlot:(nonnull CPTScatterPlot *)plot r if ( [(NSString *) plot.identifier isEqualToString:@"Blue Plot"] && ( (NSInteger)index == self.selectedIndex ) ) { dispatch_once(&onceToken, ^{ - redDot = [[CPTPlotSymbol alloc] init]; + redDot = [[CPTPlotSymbol alloc] init]; redDot.symbolType = CPTPlotSymbolTypeEllipse; - redDot.size = CGSizeMake(10.0, 10.0); - redDot.fill = [CPTFill fillWithColor:[CPTColor redColor]]; - redDot.lineStyle = [CPTLineStyle lineStyle]; + redDot.size = CGSizeMake(10.0, 10.0); + redDot.fill = [CPTFill fillWithColor:[CPTColor redColor]]; + redDot.lineStyle = [CPTLineStyle lineStyle]; }); symbol = redDot; diff --git a/examples/CorePlotGallery/src/plots/ControlChart.m b/examples/CorePlotGallery/src/plots/ControlChart.m index 836d26dec..bb41290eb 100644 --- a/examples/CorePlotGallery/src/plots/ControlChart.m +++ b/examples/CorePlotGallery/src/plots/ControlChart.m @@ -58,7 +58,7 @@ -(void)generateData double error = value.doubleValue - self.meanValue; sum += error * error; } - double stdDev = sqrt( ( 1.0 / (numberOfPoints - 1) ) * sum ); + double stdDev = sqrt( (1.0 / (numberOfPoints - 1) ) * sum ); self.standardError = stdDev / sqrt(numberOfPoints); } } @@ -207,7 +207,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT graph.legend.cornerRadius = 5.0; graph.legend.numberOfRows = 1; graph.legendAnchor = CPTRectAnchorBottom; - graph.legendDisplacement = CGPointMake( 0.0, self.titleSize * CPTFloat(4.0) ); + graph.legendDisplacement = CGPointMake(0.0, self.titleSize * CPTFloat(4.0) ); } #pragma mark - diff --git a/examples/CorePlotGallery/src/plots/CurvedInterpolationDemo.m b/examples/CorePlotGallery/src/plots/CurvedInterpolationDemo.m index 1a49cef92..d577f7a6b 100644 --- a/examples/CorePlotGallery/src/plots/CurvedInterpolationDemo.m +++ b/examples/CorePlotGallery/src/plots/CurvedInterpolationDemo.m @@ -106,7 +106,7 @@ -(void)renderInGraphHostingView:(CPTGraphHostingView *)hostingView withTheme:(CP redLineStyle.lineColor = [[CPTColor redColor] colorWithAlphaComponent:0.5]; CPTLineCap *lineCap = [CPTLineCap sweptArrowPlotLineCap]; - lineCap.size = CGSizeMake( self.titleSize * CPTFloat(0.625), self.titleSize * CPTFloat(0.625) ); + lineCap.size = CGSizeMake(self.titleSize * CPTFloat(0.625), self.titleSize * CPTFloat(0.625) ); // Axes // Label x axis with a fixed interval policy @@ -243,7 +243,7 @@ -(void)renderInGraphHostingView:(CPTGraphHostingView *)hostingView withTheme:(CP graph.legend.borderLineStyle = x.axisLineStyle; graph.legend.cornerRadius = 5.0; graph.legendAnchor = CPTRectAnchorBottom; - graph.legendDisplacement = CGPointMake( 0.0, self.titleSize * CPTFloat(2.0) ); + graph.legendDisplacement = CGPointMake(0.0, self.titleSize * CPTFloat(2.0) ); } #pragma mark - diff --git a/examples/CorePlotGallery/src/plots/CurvedScatterPlot.m b/examples/CorePlotGallery/src/plots/CurvedScatterPlot.m index 9fc12f118..862886784 100644 --- a/examples/CorePlotGallery/src/plots/CurvedScatterPlot.m +++ b/examples/CorePlotGallery/src/plots/CurvedScatterPlot.m @@ -169,7 +169,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT redLineStyle.lineColor = [[CPTColor redColor] colorWithAlphaComponent:0.5]; CPTLineCap *lineCap = [CPTLineCap sweptArrowPlotLineCap]; - lineCap.size = CGSizeMake( self.titleSize * CPTFloat(0.625), self.titleSize * CPTFloat(0.625) ); + lineCap.size = CGSizeMake(self.titleSize * CPTFloat(0.625), self.titleSize * CPTFloat(0.625) ); // Axes // Label x axis with a fixed interval policy @@ -291,7 +291,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT graph.legend.borderLineStyle = x.axisLineStyle; graph.legend.cornerRadius = 5.0; graph.legendAnchor = CPTRectAnchorBottom; - graph.legendDisplacement = CGPointMake( 0.0, self.titleSize * CPTFloat(2.0) ); + graph.legendDisplacement = CGPointMake(0.0, self.titleSize * CPTFloat(2.0) ); } #pragma mark - diff --git a/examples/CorePlotGallery/src/plots/DatePlot.m b/examples/CorePlotGallery/src/plots/DatePlot.m index 7179dadb6..e311b1afd 100644 --- a/examples/CorePlotGallery/src/plots/DatePlot.m +++ b/examples/CorePlotGallery/src/plots/DatePlot.m @@ -100,7 +100,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace; NSTimeInterval xLow = 0.0; - plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:@(xLow) length:@( oneDay * (kNumPoints - 1) )]; + plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:@(xLow) length:@(oneDay * (kNumPoints - 1) )]; plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:@1.0 length:@2.0]; plotSpace.allowsUserInteraction = YES; diff --git a/examples/CorePlotGallery/src/plots/DonutChart.m b/examples/CorePlotGallery/src/plots/DonutChart.m index d889b83ce..e6c3d94a7 100644 --- a/examples/CorePlotGallery/src/plots/DonutChart.m +++ b/examples/CorePlotGallery/src/plots/DonutChart.m @@ -59,8 +59,8 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT whiteShadow.shadowColor = [[CPTColor whiteColor] colorWithAlphaComponent:0.25]; // Add pie chart - const CGFloat outerRadius = MIN( CPTFloat(0.7) * (hostingView.frame.size.height - CPTFloat(2.0) * graph.paddingLeft) / CPTFloat(2.0), - CPTFloat(0.7) * (hostingView.frame.size.width - CPTFloat(2.0) * graph.paddingTop) / CPTFloat(2.0) ); + const CGFloat outerRadius = MIN(CPTFloat(0.7) * (hostingView.frame.size.height - CPTFloat(2.0) * graph.paddingLeft) / CPTFloat(2.0), + CPTFloat(0.7) * (hostingView.frame.size.width - CPTFloat(2.0) * graph.paddingTop) / CPTFloat(2.0) ); const CGFloat innerRadius = outerRadius / CPTFloat(2.0); CPTPieChart *piePlot = [[CPTPieChart alloc] init]; @@ -92,7 +92,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT // Add another pie chart piePlot = [[CPTPieChart alloc] init]; piePlot.dataSource = self; - piePlot.pieRadius = ( animated ? CPTFloat(0.0) : ( innerRadius - CPTFloat(5.0) ) ); + piePlot.pieRadius = (animated ? CPTFloat(0.0) : (innerRadius - CPTFloat(5.0) ) ); piePlot.identifier = innerChartName; piePlot.borderLineStyle = whiteLineStyle; piePlot.startAngle = CPTFloat(M_PI_4); @@ -149,8 +149,8 @@ -(nullable CPTLayer *)dataLabelForPlot:(nonnull CPTPlot *)plot recordIndex:(NSUI if ( [(NSString *) plot.identifier isEqualToString:outerChartName] ) { dispatch_once(&onceToken, ^{ - whiteText = [[CPTMutableTextStyle alloc] init]; - whiteText.color = [CPTColor whiteColor]; + whiteText = [[CPTMutableTextStyle alloc] init]; + whiteText.color = [CPTColor whiteColor]; whiteText.fontSize = self.titleSize * CPTFloat(0.5); }); diff --git a/examples/CorePlotGallery/src/plots/FunctionPlot.m b/examples/CorePlotGallery/src/plots/FunctionPlot.m index 24d94d2a5..e8d75e10c 100644 --- a/examples/CorePlotGallery/src/plots/FunctionPlot.m +++ b/examples/CorePlotGallery/src/plots/FunctionPlot.m @@ -201,7 +201,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT graph.legend.numberOfRows = 1; graph.legend.delegate = self; graph.legendAnchor = CPTRectAnchorBottom; - graph.legendDisplacement = CGPointMake( 0.0, self.titleSize * CPTFloat(1.25) ); + graph.legendDisplacement = CGPointMake(0.0, self.titleSize * CPTFloat(1.25) ); } #if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE @@ -242,6 +242,7 @@ -(nullable NSFont *)italicFontForFont:(nonnull NSFont *)oldFont return [[NSFontManager sharedFontManager] convertFont:oldFont toHaveTrait:NSFontItalicTrait]; } + #endif #pragma mark - Legend delegate diff --git a/examples/CorePlotGallery/src/plots/OHLCPlot.m b/examples/CorePlotGallery/src/plots/OHLCPlot.m index a2ce2ac9a..002265bdf 100644 --- a/examples/CorePlotGallery/src/plots/OHLCPlot.m +++ b/examples/CorePlotGallery/src/plots/OHLCPlot.m @@ -46,8 +46,8 @@ -(void)generateData double rOpen = 3.0 * arc4random() / (double)UINT32_MAX + 1.0; double rClose = (arc4random() / (double)UINT32_MAX - 0.5) * 0.125 + rOpen; - double rHigh = MAX( rOpen, MAX(rClose, (arc4random() / (double)UINT32_MAX - 0.5) * 0.5 + rOpen) ); - double rLow = MIN( rOpen, MIN(rClose, (arc4random() / (double)UINT32_MAX - 0.5) * 0.5 + rOpen) ); + double rHigh = MAX(rOpen, MAX(rClose, (arc4random() / (double)UINT32_MAX - 0.5) * 0.5 + rOpen) ); + double rLow = MIN(rOpen, MIN(rClose, (arc4random() / (double)UINT32_MAX - 0.5) * 0.5 + rOpen) ); [newData addObject: @{ @(CPTTradingRangePlotFieldX): @(x), @@ -105,7 +105,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT CPTLineCap *lineCap = [[CPTLineCap alloc] init]; lineCap.lineStyle = xAxis.axisLineStyle; lineCap.lineCapType = CPTLineCapTypeOpenArrow; - lineCap.size = CGSizeMake( self.titleSize * CPTFloat(0.5), self.titleSize * CPTFloat(0.5) ); + lineCap.size = CGSizeMake(self.titleSize * CPTFloat(0.5), self.titleSize * CPTFloat(0.5) ); xAxis.axisLineCapMax = lineCap; CPTXYAxis *yAxis = xyAxisSet.yAxis; @@ -170,7 +170,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT newGraph.legend.cornerRadius = 5.0; newGraph.legend.swatchCornerRadius = 5.0; newGraph.legendAnchor = CPTRectAnchorBottom; - newGraph.legendDisplacement = CGPointMake( 0.0, self.titleSize * CPTFloat(3.0) ); + newGraph.legendDisplacement = CGPointMake(0.0, self.titleSize * CPTFloat(3.0) ); // Set plot ranges CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)newGraph.defaultPlotSpace; diff --git a/examples/CorePlotGallery/src/plots/RangePlot.m b/examples/CorePlotGallery/src/plots/RangePlot.m index 5fa05060e..4845d4246 100644 --- a/examples/CorePlotGallery/src/plots/RangePlot.m +++ b/examples/CorePlotGallery/src/plots/RangePlot.m @@ -171,7 +171,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT newGraph.legend.cornerRadius = 5.0; newGraph.legend.swatchCornerRadius = 3.0; newGraph.legendAnchor = CPTRectAnchorTop; - newGraph.legendDisplacement = CGPointMake( 0.0, self.titleSize * CPTFloat(-2.0) - CPTFloat(12.0) ); + newGraph.legendDisplacement = CGPointMake(0.0, self.titleSize * CPTFloat(-2.0) - CPTFloat(12.0) ); } #pragma mark - diff --git a/examples/CorePlotGallery/src/plots/SimplePieChart.m b/examples/CorePlotGallery/src/plots/SimplePieChart.m index 375b4f8e5..402b1b63a 100644 --- a/examples/CorePlotGallery/src/plots/SimplePieChart.m +++ b/examples/CorePlotGallery/src/plots/SimplePieChart.m @@ -68,8 +68,8 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT // Add pie chart CPTPieChart *piePlot = [[CPTPieChart alloc] init]; piePlot.dataSource = self; - piePlot.pieRadius = MIN( CPTFloat(0.7) * (hostingView.frame.size.height - CPTFloat(2.0) * graph.paddingLeft) / CPTFloat(2.0), - CPTFloat(0.7) * (hostingView.frame.size.width - CPTFloat(2.0) * graph.paddingTop) / CPTFloat(2.0) ); + piePlot.pieRadius = MIN(CPTFloat(0.7) * (hostingView.frame.size.height - CPTFloat(2.0) * graph.paddingLeft) / CPTFloat(2.0), + CPTFloat(0.7) * (hostingView.frame.size.width - CPTFloat(2.0) * graph.paddingTop) / CPTFloat(2.0) ); piePlot.identifier = self.title; piePlot.startAngle = CPTFloat(M_PI_4); piePlot.sliceDirection = CPTPieDirectionCounterClockwise; @@ -111,8 +111,8 @@ -(nullable CPTLayer *)dataLabelForPlot:(nonnull CPTPlot *)plot recordIndex:(NSUI static dispatch_once_t onceToken = 0; dispatch_once(&onceToken, ^{ - whiteText = [[CPTMutableTextStyle alloc] init]; - whiteText.color = [CPTColor whiteColor]; + whiteText = [[CPTMutableTextStyle alloc] init]; + whiteText.color = [CPTColor whiteColor]; whiteText.fontSize = self.titleSize * CPTFloat(0.5); }); @@ -136,7 +136,7 @@ -(void)pieChart:(nonnull CPTPieChart *)plot sliceWasSelectedAtRecordIndex:(NSUIn self.offsetIndex = NSNotFound; CPTMutableNumberArray *newData = [[NSMutableArray alloc] init]; - NSUInteger dataCount = (NSUInteger)lrint( ceil(10.0 * arc4random() / (double)UINT32_MAX) ) + 1; + NSUInteger dataCount = (NSUInteger)lrint(ceil(10.0 * arc4random() / (double)UINT32_MAX) ) + 1; for ( NSUInteger i = 1; i < dataCount; i++ ) { [newData addObject:@(100.0 * arc4random() / (double)UINT32_MAX)]; } @@ -156,8 +156,8 @@ -(void)legend:(nonnull CPTLegend *)legend legendEntryForPlot:(nonnull CPTPlot *) [CPTAnimation animate:self property:@"sliceOffset" - from:( idx == self.offsetIndex ? CPTNAN : CPTFloat(0.0) ) - to:( idx == self.offsetIndex ? CPTFloat(0.0) : CPTFloat(35.0) ) + from:(idx == self.offsetIndex ? CPTNAN : CPTFloat(0.0) ) + to:(idx == self.offsetIndex ? CPTFloat(0.0) : CPTFloat(35.0) ) duration:0.5 animationCurve:CPTAnimationCurveCubicOut delegate:nil]; diff --git a/examples/CorePlotGallery/src/plots/VerticalBarChart.m b/examples/CorePlotGallery/src/plots/VerticalBarChart.m index 175748319..d6a817946 100644 --- a/examples/CorePlotGallery/src/plots/VerticalBarChart.m +++ b/examples/CorePlotGallery/src/plots/VerticalBarChart.m @@ -130,7 +130,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT { y.majorIntervalLength = (kUseHorizontalBars ? @1.0 : @10.0); y.minorTicksPerInterval = (kUseHorizontalBars ? 0 : 9); - y.orthogonalPosition = ( kUseHorizontalBars ? @0.0 : @(-0.5) ); + y.orthogonalPosition = (kUseHorizontalBars ? @0.0 : @(-0.5) ); y.preferredNumberOfMajorTicks = 8; y.majorGridLineStyle = majorGridLineStyle; @@ -211,7 +211,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT theLegend.fill = [CPTFill fillWithColor:[CPTColor colorWithGenericGray:CPTFloat(0.15)]]; theLegend.borderLineStyle = barLineStyle; theLegend.cornerRadius = textSize * CPTFloat(0.25); - theLegend.swatchSize = CGSizeMake( textSize * CPTFloat(0.75), textSize * CPTFloat(0.75) ); + theLegend.swatchSize = CGSizeMake(textSize * CPTFloat(0.75), textSize * CPTFloat(0.75) ); whiteTextStyle.fontSize = textSize * CPTFloat(0.5); theLegend.textStyle = whiteTextStyle; theLegend.rowMargin = textSize * CPTFloat(0.25); @@ -226,7 +226,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT CPTPlotSpaceAnnotation *legendAnnotation = [[CPTPlotSpaceAnnotation alloc] initWithPlotSpace:barPlotSpace anchorPlotPoint:plotPoint]; legendAnnotation.contentLayer = theLegend; - legendAnnotation.contentAnchorPoint = ( kUseHorizontalBars ? CGPointMake(1.0, 0.0) : CGPointMake(0.0, 1.0) ); + legendAnnotation.contentAnchorPoint = (kUseHorizontalBars ? CGPointMake(1.0, 0.0) : CGPointMake(0.0, 1.0) ); [graph.plotAreaFrame.plotArea addAnnotation:legendAnnotation]; } diff --git a/examples/CorePlotGallery/src/shared/PiNumberFormatter.m b/examples/CorePlotGallery/src/shared/PiNumberFormatter.m index f8cfe1e59..8f9fd1e72 100644 --- a/examples/CorePlotGallery/src/shared/PiNumberFormatter.m +++ b/examples/CorePlotGallery/src/shared/PiNumberFormatter.m @@ -32,7 +32,7 @@ -(nullable NSString *)stringForObjectValue:(nullable id)coordinateValue double numerator = round(value * factor); double denominator = factor; double fraction = numerator / denominator; - double divisor = ABS( gcd(numerator, denominator) ); + double divisor = ABS(gcd(numerator, denominator) ); if ( fraction == 0.0 ) { string = @"0"; @@ -70,7 +70,7 @@ -(nullable NSString *)stringForObjectValue:(nullable id)coordinateValue while ( a != 0.0 ) { c = a; - a = round( fmod(b, a) ); + a = round(fmod(b, a) ); b = c; } diff --git a/examples/CorePlotGallery/src/shared/PlotItem.m b/examples/CorePlotGallery/src/shared/PlotItem.m index 414d26910..c508b2690 100644 --- a/examples/CorePlotGallery/src/shared/PlotItem.m +++ b/examples/CorePlotGallery/src/shared/PlotItem.m @@ -174,7 +174,7 @@ -(void)formatAllGraphs graph.title = (self.graphs.count == 1 ? self.title : nil); graph.titleTextStyle = textStyle; - graph.titleDisplacement = CPTPointMake( 0.0, textStyle.fontSize * CPTFloat(1.5) ); + graph.titleDisplacement = CPTPointMake(0.0, textStyle.fontSize * CPTFloat(1.5) ); graph.titlePlotAreaFrameAnchor = CPTRectAnchorTop; // Padding @@ -228,7 +228,7 @@ -(void)formatAllGraphs textStyle.fontSize = labelSize; theLegend.textStyle = textStyle; - theLegend.swatchSize = CGSizeMake( labelSize * CPTFloat(1.5), labelSize * CPTFloat(1.5) ); + theLegend.swatchSize = CGSizeMake(labelSize * CPTFloat(1.5), labelSize * CPTFloat(1.5) ); theLegend.rowMargin = labelSize * CPTFloat(0.75); theLegend.columnMargin = labelSize * CPTFloat(0.75); @@ -314,7 +314,7 @@ -(nonnull NSImage *)image NSGraphicsContext *bitmapContext = [NSGraphicsContext graphicsContextWithBitmapImageRep:layerImage]; CGContextRef context = (CGContextRef)bitmapContext.graphicsPort; - CGContextClearRect( context, CGRectMake(0.0, 0.0, boundsSize.width, boundsSize.height) ); + CGContextClearRect(context, CGRectMake(0.0, 0.0, boundsSize.width, boundsSize.height) ); CGContextSetAllowsAntialiasing(context, true); CGContextSetShouldSmoothFonts(context, false); [imageView.layer renderInContext:context]; @@ -326,6 +326,7 @@ -(nonnull NSImage *)image return self.cachedImage; } + #endif -(void)applyTheme:(nullable CPTTheme *)theme toGraph:(nonnull CPTGraph *)graph withDefault:(nullable CPTTheme *)defaultTheme @@ -343,6 +344,7 @@ -(void)applyTheme:(nullable CPTTheme *)theme toGraph:(nonnull CPTGraph *)graph w -(void)setFrameSize:(NSSize)size { } + #endif -(void)renderInView:(nonnull PlotGalleryNativeView *)inView withTheme:(nullable CPTTheme *)theme animated:(BOOL)animated @@ -433,6 +435,7 @@ -(NSString *)imageTitle { return self.title; } + #endif @end diff --git a/examples/CorePlotGallery/src/tvOS/main.m b/examples/CorePlotGallery/src/tvOS/main.m index cee796cdf..240881c5c 100644 --- a/examples/CorePlotGallery/src/tvOS/main.m +++ b/examples/CorePlotGallery/src/tvOS/main.m @@ -4,6 +4,6 @@ int main(int argc, char *argv[]) { @autoreleasepool { - return UIApplicationMain( argc, argv, nil, NSStringFromClass([AppDelegateTV class]) ); + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegateTV class]) ); } } diff --git a/examples/DropPlot/CPTPlotDocument.m b/examples/DropPlot/CPTPlotDocument.m index 22bcfec78..85efdfb3f 100644 --- a/examples/DropPlot/CPTPlotDocument.m +++ b/examples/DropPlot/CPTPlotDocument.m @@ -201,13 +201,13 @@ -(BOOL)readFromData:(nonnull NSData *)data ofType:(NSString *)typeName error:(NS double intervalX = (maxX - minX) / 5.0; if ( intervalX > 0.0 ) { - intervalX = pow( 10.0, ceil( log10(intervalX) ) ); + intervalX = pow(10.0, ceil(log10(intervalX) ) ); } self.majorIntervalLengthForX = intervalX; double intervalY = (maxY - minY) / 10.0; if ( intervalY > 0.0 ) { - intervalY = pow( 10.0, ceil( log10(intervalY) ) ); + intervalY = pow(10.0, ceil(log10(intervalY) ) ); } self.majorIntervalLengthForY = intervalY; @@ -374,11 +374,11 @@ -(BOOL)plotSpace:(nonnull CPTPlotSpace *)space shouldHandlePointingDeviceDragged CGPoint dragEndInPlotArea = [self.graph convertPoint:interactionPoint toLayer:plotArea]; // create the dragrect from dragStart to the current location - CGFloat endX = MAX( MIN( dragEndInPlotArea.x, CGRectGetMaxX(plotBounds) ), CGRectGetMinX(plotBounds) ); - CGFloat endY = MAX( MIN( dragEndInPlotArea.y, CGRectGetMaxY(plotBounds) ), CGRectGetMinY(plotBounds) ); - CGRect borderRect = CGRectMake( dragStartInPlotArea.x, dragStartInPlotArea.y, - (endX - dragStartInPlotArea.x), - (endY - dragStartInPlotArea.y) ); + CGFloat endX = MAX(MIN(dragEndInPlotArea.x, CGRectGetMaxX(plotBounds) ), CGRectGetMinX(plotBounds) ); + CGFloat endY = MAX(MIN(dragEndInPlotArea.y, CGRectGetMaxY(plotBounds) ), CGRectGetMinY(plotBounds) ); + CGRect borderRect = CGRectMake(dragStartInPlotArea.x, dragStartInPlotArea.y, + (endX - dragStartInPlotArea.x), + (endY - dragStartInPlotArea.y) ); annotation.contentAnchorPoint = CGPointMake(dragEndInPlotArea.x >= dragStartInPlotArea.x ? 0.0 : 1.0, dragEndInPlotArea.y >= dragStartInPlotArea.y ? 0.0 : 1.0); diff --git a/examples/StockPlot/Classes/NSDictionary+APFinancialData.m b/examples/StockPlot/Classes/NSDictionary+APFinancialData.m index 9e30fe133..552727e9a 100644 --- a/examples/StockPlot/Classes/NSDictionary+APFinancialData.m +++ b/examples/StockPlot/Classes/NSDictionary+APFinancialData.m @@ -16,7 +16,7 @@ +(nonnull NSDateFormatter *)yahooCSVDateFormatter static dispatch_once_t onceToken = 0; dispatch_once(&onceToken, ^{ - df = [[NSDateFormatter alloc] init]; + df = [[NSDateFormatter alloc] init]; df.dateFormat = @"yyyy-MM-dd"; }); diff --git a/framework/CocoaPods/CorePlot.h b/framework/CocoaPods/CorePlot.h index dafae2ff7..c3660a97e 100644 --- a/framework/CocoaPods/CorePlot.h +++ b/framework/CocoaPods/CorePlot.h @@ -38,19 +38,19 @@ #import "CPTLineCap.h" #import "CPTLineStyle.h" #import "CPTMutableLineStyle.h" -#import "CPTMutableNumericData.h" #import "CPTMutableNumericData+TypeConversion.h" +#import "CPTMutableNumericData.h" #import "CPTMutablePlotRange.h" #import "CPTMutableShadow.h" #import "CPTMutableTextStyle.h" -#import "CPTNumericData.h" #import "CPTNumericData+TypeConversion.h" +#import "CPTNumericData.h" #import "CPTNumericDataType.h" +#import "CPTPathExtensions.h" #import "CPTPieChart.h" +#import "CPTPlatformSpecificCategories.h" #import "CPTPlatformSpecificDefines.h" #import "CPTPlatformSpecificFunctions.h" -#import "CPTPlatformSpecificCategories.h" -#import "CPTPathExtensions.h" #import "CPTPlot.h" #import "CPTPlotArea.h" #import "CPTPlotAreaFrame.h" diff --git a/framework/CorePlot-CocoaTouch.h b/framework/CorePlot-CocoaTouch.h index 9be2b42d5..5b8bd9349 100644 --- a/framework/CorePlot-CocoaTouch.h +++ b/framework/CorePlot-CocoaTouch.h @@ -32,19 +32,19 @@ #import "CPTLineCap.h" #import "CPTLineStyle.h" #import "CPTMutableLineStyle.h" -#import "CPTMutableNumericData.h" #import "CPTMutableNumericData+TypeConversion.h" +#import "CPTMutableNumericData.h" #import "CPTMutablePlotRange.h" #import "CPTMutableShadow.h" #import "CPTMutableTextStyle.h" -#import "CPTNumericData.h" #import "CPTNumericData+TypeConversion.h" +#import "CPTNumericData.h" #import "CPTNumericDataType.h" +#import "CPTPathExtensions.h" #import "CPTPieChart.h" +#import "CPTPlatformSpecificCategories.h" #import "CPTPlatformSpecificDefines.h" #import "CPTPlatformSpecificFunctions.h" -#import "CPTPlatformSpecificCategories.h" -#import "CPTPathExtensions.h" #import "CPTPlot.h" #import "CPTPlotArea.h" #import "CPTPlotAreaFrame.h" diff --git a/framework/MacOnly/CPTGraphHostingView.m b/framework/MacOnly/CPTGraphHostingView.m index 70c1a73bc..e691e3b63 100644 --- a/framework/MacOnly/CPTGraphHostingView.m +++ b/framework/MacOnly/CPTGraphHostingView.m @@ -186,14 +186,14 @@ -(void)drawRect:(NSRect)dirtyRect } // scale the view isotropically so that it fits on the printed page - CGFloat widthScale = ( sourceRect.size.width != CPTFloat(0.0) ) ? destinationRect.size.width / sourceRect.size.width : CPTFloat(1.0); - CGFloat heightScale = ( sourceRect.size.height != CPTFloat(0.0) ) ? destinationRect.size.height / sourceRect.size.height : CPTFloat(1.0); + CGFloat widthScale = (sourceRect.size.width != CPTFloat(0.0) ) ? destinationRect.size.width / sourceRect.size.width : CPTFloat(1.0); + CGFloat heightScale = (sourceRect.size.height != CPTFloat(0.0) ) ? destinationRect.size.height / sourceRect.size.height : CPTFloat(1.0); CGFloat scale = MIN(widthScale, heightScale); // position the view so that its centered on the printed page CGPoint offset = destinationRect.origin; - offset.x += ( ( destinationRect.size.width - (sourceRect.size.width * scale) ) / CPTFloat(2.0) ); - offset.y += ( ( destinationRect.size.height - (sourceRect.size.height * scale) ) / CPTFloat(2.0) ); + offset.x += ( (destinationRect.size.width - (sourceRect.size.width * scale) ) / CPTFloat(2.0) ); + offset.y += ( (destinationRect.size.height - (sourceRect.size.height * scale) ) / CPTFloat(2.0) ); NSAffineTransform *transform = [NSAffineTransform transform]; [transform translateXBy:offset.x yBy:offset.y]; diff --git a/framework/MacOnly/CPTPlatformSpecificCategories.m b/framework/MacOnly/CPTPlatformSpecificCategories.m index 3261e9cff..82b37a8a3 100644 --- a/framework/MacOnly/CPTPlatformSpecificCategories.m +++ b/framework/MacOnly/CPTPlatformSpecificCategories.m @@ -52,7 +52,7 @@ -(nonnull CPTNativeImage *)imageOfLayer NSGraphicsContext *bitmapContext = [NSGraphicsContext graphicsContextWithBitmapImageRep:layerImage]; CGContextRef context = (CGContextRef)bitmapContext.graphicsPort; - CGContextClearRect( context, CPTRectMake(0.0, 0.0, boundsSize.width, boundsSize.height) ); + CGContextClearRect(context, CPTRectMake(0.0, 0.0, boundsSize.width, boundsSize.height) ); CGContextSetAllowsAntialiasing(context, true); CGContextSetShouldSmoothFonts(context, false); [self layoutAndRenderInContext:context]; diff --git a/framework/MacOnly/CPTPlatformSpecificFunctions.m b/framework/MacOnly/CPTPlatformSpecificFunctions.m index e32552b18..4e5668a58 100644 --- a/framework/MacOnly/CPTPlatformSpecificFunctions.m +++ b/framework/MacOnly/CPTPlatformSpecificFunctions.m @@ -109,7 +109,7 @@ CPTRGBAColor CPTRGBAColorFromNSColor(NSColor *__nonnull nsColor) #pragma mark - #pragma mark Debugging -CPTNativeImage * __nonnull CPTQuickLookImage(CGRect rect, __nonnull CPTQuickLookImageBlock renderBlock) +CPTNativeImage *__nonnull CPTQuickLookImage(CGRect rect, __nonnull CPTQuickLookImageBlock renderBlock) { NSBitmapImageRep *layerImage = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL diff --git a/framework/Source/CPTAnimation.h b/framework/Source/CPTAnimation.h index 3ed23488e..fed97c656 100644 --- a/framework/Source/CPTAnimation.h +++ b/framework/Source/CPTAnimation.h @@ -46,8 +46,8 @@ typedef NS_ENUM (NSInteger, CPTAnimationCurve) { /** * @brief Animation delegate. **/ -#if ( ( TARGET_OS_SIMULATOR || TARGET_OS_IPHONE || TARGET_OS_TV) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= 100000 ) ) \ - || (TARGET_OS_MAC && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101200 ) ) +#if ( ( TARGET_OS_SIMULATOR || TARGET_OS_IPHONE || TARGET_OS_TV) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= 100000) ) \ + || (TARGET_OS_MAC && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101200) ) // CAAnimationDelegate is defined by Core Animation in iOS 10.0+, macOS 10.12+, and tvOS 10.0+ @protocol CPTAnimationDelegate #else diff --git a/framework/Source/CPTAnimation.m b/framework/Source/CPTAnimation.m index b4ff5f3e6..9aeb0f3db 100644 --- a/framework/Source/CPTAnimation.m +++ b/framework/Source/CPTAnimation.m @@ -1,10 +1,10 @@ #import "CPTAnimation.h" +#import "_CPTAnimationTimingFunctions.h" #import "CPTAnimationOperation.h" #import "CPTAnimationPeriod.h" #import "CPTDefinitions.h" #import "CPTPlotRange.h" -#import "_CPTAnimationTimingFunctions.h" static const CGFloat kCPTAnimationFrameRate = CPTFloat(1.0 / 60.0); // 60 frames per second diff --git a/framework/Source/CPTAnimationPeriod.m b/framework/Source/CPTAnimationPeriod.m index 4fac622c7..30c947dbf 100644 --- a/framework/Source/CPTAnimationPeriod.m +++ b/framework/Source/CPTAnimationPeriod.m @@ -1,8 +1,5 @@ #import "CPTAnimationPeriod.h" -#import "CPTAnimationOperation.h" -#import "CPTPlotRange.h" -#import "NSNumberExtensions.h" #import "_CPTAnimationCGFloatPeriod.h" #import "_CPTAnimationCGPointPeriod.h" #import "_CPTAnimationCGRectPeriod.h" @@ -10,6 +7,9 @@ #import "_CPTAnimationNSDecimalPeriod.h" #import "_CPTAnimationNSNumberPeriod.h" #import "_CPTAnimationPlotRangePeriod.h" +#import "CPTAnimationOperation.h" +#import "CPTPlotRange.h" +#import "NSNumberExtensions.h" /// @cond @interface CPTAnimationPeriod() diff --git a/framework/Source/CPTAxis.m b/framework/Source/CPTAxis.m index 5e1391d0a..116ea5aa0 100644 --- a/framework/Source/CPTAxis.m +++ b/framework/Source/CPTAxis.m @@ -954,7 +954,7 @@ -(void)generateFixedIntervalMajorTickLocations:(CPTNumberSet *__autoreleasing *) NSDecimal minorInterval; NSUInteger minorTickCount = self.minorTicksPerInterval; if ( minorTickCount > 0 ) { - minorInterval = CPTDecimalDivide( majorInterval, CPTDecimalFromUnsignedInteger(minorTickCount + 1) ); + minorInterval = CPTDecimalDivide(majorInterval, CPTDecimalFromUnsignedInteger(minorTickCount + 1) ); } else { minorInterval = zero; @@ -1091,16 +1091,16 @@ -(void)autoGenerateMajorTickLocations:(CPTNumberSet *__autoreleasing *)newMajorL majorInterval = CPTNiceLength(range.lengthDecimal); } else { - majorInterval = CPTDecimalDivide( range.lengthDecimal, CPTDecimalFromUnsignedInteger(numTicks - 1) ); + majorInterval = CPTDecimalDivide(range.lengthDecimal, CPTDecimalFromUnsignedInteger(numTicks - 1) ); majorInterval = CPTNiceNum(majorInterval); } if ( CPTDecimalLessThan(majorInterval, zero) ) { - majorInterval = CPTDecimalMultiply( majorInterval, CPTDecimalFromInteger(-1) ); + majorInterval = CPTDecimalMultiply(majorInterval, CPTDecimalFromInteger(-1) ); } NSDecimal minorInterval; if ( minorTicks > 1 ) { - minorInterval = CPTDecimalDivide( majorInterval, CPTDecimalFromUnsignedInteger(minorTicks) ); + minorInterval = CPTDecimalDivide(majorInterval, CPTDecimalFromUnsignedInteger(minorTicks) ); } else { minorInterval = zero; @@ -1155,14 +1155,14 @@ -(void)autoGenerateMajorTickLocations:(CPTNumberSet *__autoreleasing *)newMajorL length = log10(maxLimit / minLimit); double interval = signbit(length) ? -1.0 : 1.0; - double intervalStep = pow( 10.0, fabs(interval) ); + double intervalStep = pow(10.0, fabs(interval) ); // Determine minor interval - double minorInterval = intervalStep * 0.9 * pow( 10.0, floor( log10(minLimit) ) ) / minorTicks; + double minorInterval = intervalStep * 0.9 * pow(10.0, floor(log10(minLimit) ) ) / minorTicks; // Determine the initial and final major indexes for the actual visible range - NSInteger initialIndex = (NSInteger)lrint( floor( log10( minLimit / fabs(interval) ) ) ); // can be negative - NSInteger finalIndex = (NSInteger)lrint( ceil( log10( maxLimit / fabs(interval) ) ) ); // can be negative + NSInteger initialIndex = (NSInteger)lrint(floor(log10(minLimit / fabs(interval) ) ) ); // can be negative + NSInteger finalIndex = (NSInteger)lrint(ceil(log10(maxLimit / fabs(interval) ) ) ); // can be negative // Iterate through the indexes with visible ticks and build the locations sets for ( NSInteger i = initialIndex; i <= finalIndex; i++ ) { @@ -1200,14 +1200,14 @@ -(void)autoGenerateMajorTickLocations:(CPTNumberSet *__autoreleasing *)newMajorL double modMinLimit = CPTLogModulus(minLimit); double modMaxLimit = CPTLogModulus(maxLimit); - double multiplier = pow( 10.0, floor( log10(length) ) ); + double multiplier = pow(10.0, floor(log10(length) ) ); multiplier = (multiplier < 1.0) ? multiplier : 1.0; double intervalStep = 10.0; // Determine the initial and final major indexes for the actual visible range - NSInteger initialIndex = (NSInteger)lrint( floor(modMinLimit / multiplier) ); // can be negative - NSInteger finalIndex = (NSInteger)lrint( ceil(modMaxLimit / multiplier) ); // can be negative + NSInteger initialIndex = (NSInteger)lrint(floor(modMinLimit / multiplier) ); // can be negative + NSInteger finalIndex = (NSInteger)lrint(ceil(modMaxLimit / multiplier) ); // can be negative if ( initialIndex < 0 ) { // Determine minor interval @@ -1221,7 +1221,7 @@ -(void)autoGenerateMajorTickLocations:(CPTNumberSet *__autoreleasing *)newMajorL pointLocation = sign * pow(10.0, fabs( (double)i ) - 1.0); } else { - pointLocation = sign * pow( 10.0, fabs( (double)i ) ); + pointLocation = sign * pow(10.0, fabs( (double)i ) ); } for ( NSUInteger j = 1; j < minorTicks; j++ ) { @@ -1261,7 +1261,7 @@ -(void)autoGenerateMajorTickLocations:(CPTNumberSet *__autoreleasing *)newMajorL pointLocation = sign * pow(10.0, fabs( (double)i ) - 1.0); } else { - pointLocation = sign * pow( 10.0, fabs( (double)i ) ); + pointLocation = sign * pow(10.0, fabs( (double)i ) ); } for ( NSUInteger j = 1; j < minorTicks; j++ ) { @@ -1330,15 +1330,15 @@ -(void)generateEqualMajorTickLocations:(CPTNumberSet *__autoreleasing *)newMajor if ( majorTickCount < 2 ) { majorTickCount = 2; } - NSDecimal majorInterval = CPTDecimalDivide( range.lengthDecimal, CPTDecimalFromUnsignedInteger(majorTickCount - 1) ); + NSDecimal majorInterval = CPTDecimalDivide(range.lengthDecimal, CPTDecimalFromUnsignedInteger(majorTickCount - 1) ); if ( CPTDecimalLessThan(majorInterval, zero) ) { - majorInterval = CPTDecimalMultiply( majorInterval, CPTDecimalFromInteger(-1) ); + majorInterval = CPTDecimalMultiply(majorInterval, CPTDecimalFromInteger(-1) ); } NSDecimal minorInterval; NSUInteger minorTickCount = self.minorTicksPerInterval; if ( minorTickCount > 0 ) { - minorInterval = CPTDecimalDivide( majorInterval, CPTDecimalFromUnsignedInteger(minorTickCount + 1) ); + minorInterval = CPTDecimalDivide(majorInterval, CPTDecimalFromUnsignedInteger(minorTickCount + 1) ); } else { minorInterval = zero; @@ -1393,20 +1393,20 @@ NSDecimal CPTNiceNum(NSDecimal x) x = CPTDecimalMultiply(x, minusOne); } - short exponent = (short)lrint( floor( log10( CPTDecimalDoubleValue(x) ) ) ); + short exponent = (short)lrint(floor(log10(CPTDecimalDoubleValue(x) ) ) ); NSDecimal fractionPart; NSDecimalMultiplyByPowerOf10(&fractionPart, &x, -exponent, NSRoundPlain); NSDecimal roundedFraction; - if ( CPTDecimalLessThan( fractionPart, CPTDecimalFromDouble(1.5) ) ) { + if ( CPTDecimalLessThan(fractionPart, CPTDecimalFromDouble(1.5) ) ) { roundedFraction = CPTDecimalFromInteger(1); } - else if ( CPTDecimalLessThan( fractionPart, CPTDecimalFromInteger(3) ) ) { + else if ( CPTDecimalLessThan(fractionPart, CPTDecimalFromInteger(3) ) ) { roundedFraction = CPTDecimalFromInteger(2); } - else if ( CPTDecimalLessThan( fractionPart, CPTDecimalFromInteger(7) ) ) { + else if ( CPTDecimalLessThan(fractionPart, CPTDecimalFromInteger(7) ) ) { roundedFraction = CPTDecimalFromInteger(5); } else { @@ -1445,11 +1445,11 @@ NSDecimal CPTNiceLength(NSDecimal length) NSDecimal roundedNumber; - if ( CPTDecimalGreaterThan( length, CPTDecimalFromInteger(10) ) ) { + if ( CPTDecimalGreaterThan(length, CPTDecimalFromInteger(10) ) ) { NSDecimalRound(&roundedNumber, &length, 0, NSRoundDown); } else { - short exponent = (short)lrint( floor( log10( CPTDecimalDoubleValue(length) ) ) ) - 1; + short exponent = (short)lrint(floor(log10(CPTDecimalDoubleValue(length) ) ) ) - 1; NSDecimalRound(&roundedNumber, &length, -exponent, NSRoundDown); } diff --git a/framework/Source/CPTAxisLabel.m b/framework/Source/CPTAxisLabel.m index 48d201421..576ca0077 100644 --- a/framework/Source/CPTAxisLabel.m +++ b/framework/Source/CPTAxisLabel.m @@ -151,14 +151,14 @@ -(void)positionRelativeToViewPoint:(CGPoint)point forCoordinate:(CPTCoordinate)c } CGPoint newPosition = point; - CGFloat *value = ( coordinate == CPTCoordinateX ? &(newPosition.x) : &(newPosition.y) ); + CGFloat *value = (coordinate == CPTCoordinateX ? &(newPosition.x) : &(newPosition.y) ); CGFloat angle = CPTFloat(0.0); CGFloat labelRotation = self.rotation; if ( isnan(labelRotation) ) { - labelRotation = ( coordinate == CPTCoordinateX ? CPTFloat(M_PI_2) : CPTFloat(0.0) ); + labelRotation = (coordinate == CPTCoordinateX ? CPTFloat(M_PI_2) : CPTFloat(0.0) ); } - content.transform = CATransform3DMakeRotation( labelRotation, CPTFloat(0.0), CPTFloat(0.0), CPTFloat(1.0) ); + content.transform = CATransform3DMakeRotation(labelRotation, CPTFloat(0.0), CPTFloat(0.0), CPTFloat(1.0) ); CGRect contentFrame = content.frame; // Position the anchor point along the closest edge. @@ -280,7 +280,7 @@ -(void)positionRelativeToViewPoint:(CGPoint)point forCoordinate:(CPTCoordinate)c newAnchorY /= ABS(newAnchorX); newAnchorX = signbit(newAnchorX) ? CPTFloat(-1.0) : CPTFloat(1.0); } - CGPoint anchor = CPTPointMake( ( newAnchorX + CPTFloat(1.0) ) / CPTFloat(2.0), ( newAnchorY + CPTFloat(1.0) ) / CPTFloat(2.0) ); + CGPoint anchor = CPTPointMake( (newAnchorX + CPTFloat(1.0) ) / CPTFloat(2.0), (newAnchorY + CPTFloat(1.0) ) / CPTFloat(2.0) ); content.anchorPoint = anchor; content.position = newPosition; @@ -355,7 +355,7 @@ -(NSUInteger)hash double tickLocationAsDouble = self.tickLocation.doubleValue; if ( !isnan(tickLocationAsDouble) ) { - hashValue = (NSUInteger)lrint( fmod(ABS(tickLocationAsDouble), (double)NSUIntegerMax) ); + hashValue = (NSUInteger)lrint(fmod(ABS(tickLocationAsDouble), (double)NSUIntegerMax) ); } return hashValue; diff --git a/framework/Source/CPTAxisLabelTests.m b/framework/Source/CPTAxisLabelTests.m index eee894a7f..21efacd1c 100644 --- a/framework/Source/CPTAxisLabelTests.m +++ b/framework/Source/CPTAxisLabelTests.m @@ -19,8 +19,8 @@ static CGPoint roundPoint(CGPoint position, CGSize contentSize, CGPoint anchor) CGPoint newAnchor = CGPointMake(contentSize.width * anchor.x, contentSize.height * anchor.y); - newPosition.x = ceil( position.x - newAnchor.x - CPTFloat(0.5) ) + newAnchor.x; - newPosition.y = ceil( position.y - newAnchor.y - CPTFloat(0.5) ) + newAnchor.y; + newPosition.x = ceil(position.x - newAnchor.x - CPTFloat(0.5) ) + newAnchor.x; + newPosition.y = ceil(position.y - newAnchor.y - CPTFloat(0.5) ) + newAnchor.y; return newPosition; } @@ -60,8 +60,8 @@ -(void)testPositionRelativeToViewPointPositionsForXCoordinate CGPoint newPosition = roundPoint(CGPointMake(start - label.offset, start), contentSize, contentLayer.anchorPoint); - XCTAssertEqualWithAccuracy( contentLayer.position.x, newPosition.x, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); - XCTAssertEqualWithAccuracy( contentLayer.position.y, newPosition.y, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy(contentLayer.position.x, newPosition.x, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy(contentLayer.position.y, newPosition.y, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.x, CPTFloat(1.0), precision, @"Should anchor at (1.0, 0.5)"); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.y, CPTFloat(0.5), precision, @"Should anchor at (1.0, 0.5)"); @@ -73,8 +73,8 @@ -(void)testPositionRelativeToViewPointPositionsForXCoordinate newPosition = roundPoint(CGPointMake(start - label.offset, start), contentSize, contentLayer.anchorPoint); - XCTAssertEqualWithAccuracy( contentLayer.position.x, newPosition.x, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); - XCTAssertEqualWithAccuracy( contentLayer.position.y, newPosition.y, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy(contentLayer.position.x, newPosition.x, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy(contentLayer.position.y, newPosition.y, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.x, CPTFloat(1.0), precision, @"Should anchor at (1.0, 0.5)"); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.y, CPTFloat(0.5), precision, @"Should anchor at (1.0, 0.5)"); @@ -86,8 +86,8 @@ -(void)testPositionRelativeToViewPointPositionsForXCoordinate newPosition = roundPoint(CGPointMake(start + label.offset, start), contentSize, contentLayer.anchorPoint); - XCTAssertEqualWithAccuracy( contentLayer.position.x, newPosition.x, precision, @"Should add positive offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); - XCTAssertEqualWithAccuracy( contentLayer.position.y, newPosition.y, precision, @"Should add positive offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy(contentLayer.position.x, newPosition.x, precision, @"Should add positive offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy(contentLayer.position.y, newPosition.y, precision, @"Should add positive offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.x, CPTFloat(0.0), precision, @"Should anchor at (0.0, 0.5)"); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.y, CPTFloat(0.5), precision, @"Should anchor at (0.0, 0.5)"); } @@ -117,8 +117,8 @@ -(void)testPositionRelativeToViewPointPositionsForYCoordinate CGPoint newPosition = roundPoint(CGPointMake(start, start - label.offset), contentSize, contentLayer.anchorPoint); - XCTAssertEqualWithAccuracy( contentLayer.position.x, newPosition.x, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); - XCTAssertEqualWithAccuracy( contentLayer.position.y, newPosition.y, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy(contentLayer.position.x, newPosition.x, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy(contentLayer.position.y, newPosition.y, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.x, CPTFloat(0.5), precision, @"Should anchor at (0.5, 1.0)"); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.y, CPTFloat(1.0), precision, @"Should anchor at (0.5, 1.0)"); @@ -130,8 +130,8 @@ -(void)testPositionRelativeToViewPointPositionsForYCoordinate newPosition = roundPoint(CGPointMake(start, start - label.offset), contentSize, contentLayer.anchorPoint); - XCTAssertEqualWithAccuracy( contentLayer.position.x, newPosition.x, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); - XCTAssertEqualWithAccuracy( contentLayer.position.y, newPosition.y, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy(contentLayer.position.x, newPosition.x, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy(contentLayer.position.y, newPosition.y, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.x, CPTFloat(0.5), precision, @"Should anchor at (0.5, 1.0)"); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.y, CPTFloat(1.0), precision, @"Should anchor at (0.5, 1.0)"); @@ -143,8 +143,8 @@ -(void)testPositionRelativeToViewPointPositionsForYCoordinate newPosition = roundPoint(CGPointMake(start, start + label.offset), contentSize, contentLayer.anchorPoint); - XCTAssertEqualWithAccuracy( contentLayer.position.x, newPosition.x, precision, @"Should add positive offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); - XCTAssertEqualWithAccuracy( contentLayer.position.y, newPosition.y, precision, @"Should add positive offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy(contentLayer.position.x, newPosition.x, precision, @"Should add positive offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy(contentLayer.position.y, newPosition.y, precision, @"Should add positive offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.x, CPTFloat(0.5), precision, @"Should anchor at (0.5, 0.0)"); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.y, CPTFloat(0.0), precision, @"Should anchor at (0.5, 0.0)"); } diff --git a/framework/Source/CPTAxisTitle.m b/framework/Source/CPTAxisTitle.m index d5d5a97da..d195c8273 100644 --- a/framework/Source/CPTAxisTitle.m +++ b/framework/Source/CPTAxisTitle.m @@ -82,10 +82,10 @@ -(NSUInteger)hash double tickLocationAsDouble = self.tickLocation.doubleValue; if ( !isnan(tickLocationAsDouble) ) { - hashValue = (NSUInteger)lrint( fmod(ABS(tickLocationAsDouble), (double)NSUIntegerMax) ); + hashValue = (NSUInteger)lrint(fmod(ABS(tickLocationAsDouble), (double)NSUIntegerMax) ); } - hashValue += (NSUInteger)lrint( fmod(ABS(self.rotation), (double)NSUIntegerMax) ); - hashValue += (NSUInteger)lrint( fmod(ABS(self.offset), (double)NSUIntegerMax) ); + hashValue += (NSUInteger)lrint(fmod(ABS(self.rotation), (double)NSUIntegerMax) ); + hashValue += (NSUInteger)lrint(fmod(ABS(self.offset), (double)NSUIntegerMax) ); return hashValue; } diff --git a/framework/Source/CPTBarPlot.m b/framework/Source/CPTBarPlot.m index f1530f031..d2bc184b2 100644 --- a/framework/Source/CPTBarPlot.m +++ b/framework/Source/CPTBarPlot.m @@ -207,6 +207,7 @@ +(void)initialize [self exposeBinding:CPTBarPlotBindingBarLineStyles]; } } + #endif /// @endcond @@ -405,7 +406,7 @@ -(void)reloadPlotDataInIndexRange:(NSRange)indexRange CPTMutableNumericData *locationData = nil; if ( self.doublePrecisionCache ) { locationData = [[CPTMutableNumericData alloc] initWithData:[NSData data] - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) shape:nil]; locationData.shape = @[@(indexRange.length)]; @@ -424,13 +425,13 @@ -(void)reloadPlotDataInIndexRange:(NSRange)indexRange } else { locationData = [[CPTMutableNumericData alloc] initWithData:[NSData data] - dataType:CPTDataType( CPTDecimalDataType, sizeof(NSDecimal), CFByteOrderGetCurrent() ) + dataType:CPTDataType(CPTDecimalDataType, sizeof(NSDecimal), CFByteOrderGetCurrent() ) shape:nil]; locationData.shape = @[@(indexRange.length)]; NSDecimal delta = CPTDecimalFromInteger(1); if ( indexRange.length > 1 ) { - delta = CPTDecimalDivide( self.plotRange.lengthDecimal, CPTDecimalFromUnsignedInteger(indexRange.length - 1) ); + delta = CPTDecimalDivide(self.plotRange.lengthDecimal, CPTDecimalFromUnsignedInteger(indexRange.length - 1) ); } NSDecimal locationDecimal = self.plotRange.locationDecimal; @@ -453,7 +454,7 @@ -(void)reloadPlotDataInIndexRange:(NSRange)indexRange CPTMutableNumericData *locationData = nil; if ( self.doublePrecisionCache ) { locationData = [[CPTMutableNumericData alloc] initWithData:[NSData data] - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) shape:nil]; locationData.shape = @[@(indexRange.length)]; @@ -467,7 +468,7 @@ -(void)reloadPlotDataInIndexRange:(NSRange)indexRange } else { locationData = [[CPTMutableNumericData alloc] initWithData:[NSData data] - dataType:CPTDataType( CPTDecimalDataType, sizeof(NSDecimal), CFByteOrderGetCurrent() ) + dataType:CPTDataType(CPTDecimalDataType, sizeof(NSDecimal), CFByteOrderGetCurrent() ) shape:nil]; locationData.shape = @[@(indexRange.length)]; @@ -788,12 +789,12 @@ -(nullable CPTPlotRange *)plotRangeEnclosingBars NSDecimal barOffsetLength = [self lengthInPlotCoordinates:self.barOffset.decimalValue]; NSDecimal barWidthLength = [self lengthInPlotCoordinates:self.barWidth.decimalValue]; - NSDecimal halfBarWidth = CPTDecimalDivide( barWidthLength, CPTDecimalFromInteger(2) ); + NSDecimal halfBarWidth = CPTDecimalDivide(barWidthLength, CPTDecimalFromInteger(2) ); NSDecimal rangeLocation = range.locationDecimal; NSDecimal rangeLength = range.lengthDecimal; - if ( CPTDecimalGreaterThanOrEqualTo( rangeLength, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalGreaterThanOrEqualTo(rangeLength, CPTDecimalFromInteger(0) ) ) { rangeLocation = CPTDecimalSubtract(rangeLocation, halfBarWidth); range.locationDecimal = CPTDecimalAdd(rangeLocation, barOffsetLength); @@ -992,14 +993,14 @@ -(nonnull CGMutablePathRef)newBarPathWithContext:(nullable CGContextRef)context } } - CGFloat radius = MIN( MIN( self.barCornerRadius, ABS(barRect.size.width) * CPTFloat(0.5) ), ABS(barRect.size.height) * CPTFloat(0.5) ); - CGFloat baseRadius = MIN( MIN( self.barBaseCornerRadius, ABS(barRect.size.width) * CPTFloat(0.5) ), ABS(barRect.size.height) * CPTFloat(0.5) ); + CGFloat radius = MIN(MIN(self.barCornerRadius, ABS(barRect.size.width) * CPTFloat(0.5) ), ABS(barRect.size.height) * CPTFloat(0.5) ); + CGFloat baseRadius = MIN(MIN(self.barBaseCornerRadius, ABS(barRect.size.width) * CPTFloat(0.5) ), ABS(barRect.size.height) * CPTFloat(0.5) ); - if ( widthNegative && ( barRect.size.width > CPTFloat(0.0) ) ) { + if ( widthNegative && (barRect.size.width > CPTFloat(0.0) ) ) { barRect.origin.x += barRect.size.width; barRect.size.width = -barRect.size.width; } - if ( heightNegative && ( barRect.size.height > CPTFloat(0.0) ) ) { + if ( heightNegative && (barRect.size.height > CPTFloat(0.0) ) ) { barRect.origin.y += barRect.size.height; barRect.size.height = -barRect.size.height; } @@ -1052,14 +1053,14 @@ -(nonnull CGMutablePathRef)newBarPathWithContext:(nullable CGContextRef)context else { // rounded at both ends if ( horizontalBars ) { - CGPathMoveToPoint( path, NULL, barRect.origin.x, CGRectGetMidY(barRect) ); + CGPathMoveToPoint(path, NULL, barRect.origin.x, CGRectGetMidY(barRect) ); CGPathAddArcToPoint(path, NULL, barRect.origin.x, tipY, CGRectGetMidX(barRect), tipY, baseRadius); CGPathAddArcToPoint(path, NULL, tipX, tipY, tipX, CGRectGetMidY(barRect), radius); CGPathAddArcToPoint(path, NULL, tipX, barRect.origin.y, CGRectGetMidX(barRect), barRect.origin.y, radius); CGPathAddArcToPoint(path, NULL, barRect.origin.x, barRect.origin.y, barRect.origin.x, CGRectGetMidY(barRect), baseRadius); } else { - CGPathMoveToPoint( path, NULL, barRect.origin.x, CGRectGetMidY(barRect) ); + CGPathMoveToPoint(path, NULL, barRect.origin.x, CGRectGetMidY(barRect) ); CGPathAddArcToPoint(path, NULL, barRect.origin.x, tipY, CGRectGetMidX(barRect), tipY, radius); CGPathAddArcToPoint(path, NULL, tipX, tipY, tipX, CGRectGetMidY(barRect), radius); CGPathAddArcToPoint(path, NULL, tipX, barRect.origin.y, CGRectGetMidX(barRect), barRect.origin.y, baseRadius); @@ -1080,8 +1081,8 @@ -(BOOL)barIsVisibleWithBasePoint:(CGPoint)basePoint CPTPlotArea *thePlotArea = self.plotArea; - CGFloat lowerBound = ( horizontalBars ? CGRectGetMinY(thePlotArea.bounds) : CGRectGetMinX(thePlotArea.bounds) ); - CGFloat upperBound = ( horizontalBars ? CGRectGetMaxY(thePlotArea.bounds) : CGRectGetMaxX(thePlotArea.bounds) ); + CGFloat lowerBound = (horizontalBars ? CGRectGetMinY(thePlotArea.bounds) : CGRectGetMinX(thePlotArea.bounds) ); + CGFloat upperBound = (horizontalBars ? CGRectGetMaxY(thePlotArea.bounds) : CGRectGetMaxX(thePlotArea.bounds) ); CGFloat base = (horizontalBars ? basePoint.y : basePoint.x); return (base + halfBarWidth >= lowerBound) && (base - halfBarWidth <= upperBound); @@ -1230,7 +1231,7 @@ -(void)positionLabelAnnotation:(nonnull CPTPlotSpaceAnnotation *)label forIndex: BOOL horizontalBars = self.barsAreHorizontal; CPTCoordinate coordinate = (horizontalBars ? CPTCoordinateX : CPTCoordinateY); CPTPlotRange *lengthRange = [self.plotSpace plotRangeForCoordinate:coordinate]; - if ( CPTDecimalLessThan( lengthRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalLessThan(lengthRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { positiveDirection = !positiveDirection; } diff --git a/framework/Source/CPTBorderedLayer.m b/framework/Source/CPTBorderedLayer.m index 8113f5ba8..4087581d0 100644 --- a/framework/Source/CPTBorderedLayer.m +++ b/framework/Source/CPTBorderedLayer.m @@ -1,10 +1,10 @@ #import "CPTBorderedLayer.h" +#import "_CPTBorderLayer.h" +#import "_CPTMaskLayer.h" #import "CPTFill.h" #import "CPTLineStyle.h" #import "CPTPathExtensions.h" -#import "_CPTBorderLayer.h" -#import "_CPTMaskLayer.h" /// @cond @@ -271,7 +271,7 @@ -(nullable CGPathRef)sublayerMaskingPath CGFloat lineWidth = self.borderLineStyle.lineWidth; CGRect selfBounds = CGRectInset(self.bounds, lineWidth, lineWidth); - path = CPTCreateRoundedRectPath( selfBounds, self.cornerRadius - lineWidth * CPTFloat(0.5) ); + path = CPTCreateRoundedRectPath(selfBounds, self.cornerRadius - lineWidth * CPTFloat(0.5) ); self.innerBorderPath = path; CGPathRelease(path); @@ -306,7 +306,7 @@ -(void)removeFromSuperlayer -(void)updateOpacity { - BOOL opaqueLayer = ( self.cornerRadius <= CPTFloat(0.0) ); + BOOL opaqueLayer = (self.cornerRadius <= CPTFloat(0.0) ); CPTFill *theFill = self.fill; diff --git a/framework/Source/CPTCalendarFormatter.m b/framework/Source/CPTCalendarFormatter.m index 73ee6ec0b..a197159ac 100644 --- a/framework/Source/CPTCalendarFormatter.m +++ b/framework/Source/CPTCalendarFormatter.m @@ -189,7 +189,7 @@ -(nullable NSString *)stringForObjectValue:(nullable id)coordinateValue dateComponents.weekdayOrdinal = componentIncrement; break; -#if MAC_OS_X_VERSION_10_5 1 ) { - range.lengthDecimal = CPTDecimalAdd( range.lengthDecimal, CPTDecimalFromUnsignedInteger(self.plots.count) ); + range.lengthDecimal = CPTDecimalAdd(range.lengthDecimal, CPTDecimalFromUnsignedInteger(self.plots.count) ); } return range; @@ -122,7 +122,7 @@ -(nullable CPTNumberArray *)numbersForPlot:(nonnull CPTPlot *)plot XCTAssertTrue([[self plots] containsObject:plot], @"Plot missing"); CPTMutableNumberArray *shiftedResult = [NSMutableArray arrayWithCapacity:result.count]; for ( NSDecimalNumber *d in result ) { - [shiftedResult addObject:[d decimalNumberByAdding:[NSDecimalNumber decimalNumberWithDecimal:CPTDecimalFromCGFloat( CPTDataSourceTestCasePlotOffset * ([self.plots indexOfObject:plot] + 1) )]]]; + [shiftedResult addObject:[d decimalNumberByAdding:[NSDecimalNumber decimalNumberWithDecimal:CPTDecimalFromCGFloat(CPTDataSourceTestCasePlotOffset * ([self.plots indexOfObject:plot] + 1) )]]]; } result = shiftedResult; diff --git a/framework/Source/CPTDebugQuickLook.h b/framework/Source/CPTDebugQuickLook.h index 4779168e7..62afb37c9 100644 --- a/framework/Source/CPTDebugQuickLook.h +++ b/framework/Source/CPTDebugQuickLook.h @@ -20,7 +20,8 @@ /** @category NSObject(CPTDebugQuickLookExtension) * @brief Debugging extensions to NSObject. **/ -@interface NSObject(CPTDebugQuickLookExtension) { +@interface NSObject(CPTDebugQuickLookExtension) +{ } @end diff --git a/framework/Source/CPTDefinitions.h b/framework/Source/CPTDefinitions.h index 38da64fcf..6668c85a8 100644 --- a/framework/Source/CPTDefinitions.h +++ b/framework/Source/CPTDefinitions.h @@ -49,14 +49,14 @@ * @hideinitializer * @brief Marks a type definition to be imported into Swift as an enumeration. **/ -#define cpt_swift_enum __attribute__( ( swift_wrapper(enum) ) ) +#define cpt_swift_enum __attribute__( (swift_wrapper(enum) ) ) /** * @def cpt_swift_struct * @hideinitializer * @brief Marks a type definition to be imported into Swift as a structure. **/ -#define cpt_swift_struct __attribute__( ( swift_wrapper(struct) ) ) +#define cpt_swift_struct __attribute__( (swift_wrapper(struct) ) ) // Type safety defines @@ -105,7 +105,7 @@ * @param dy The y-offset. * @brief A replacement for @ref CGRectInset(), casting each offset parameter to @ref CGFloat. **/ -#define CPTRectInset(rect, dx, dy) CGRectInset( rect, (CGFloat)(dx), (CGFloat)(dy) ) +#define CPTRectInset(rect, dx, dy) CGRectInset(rect, (CGFloat)(dx), (CGFloat)(dy) ) /** * @def CPTNAN diff --git a/framework/Source/CPTFill.m b/framework/Source/CPTFill.m index d833e5e9e..d2d88890c 100644 --- a/framework/Source/CPTFill.m +++ b/framework/Source/CPTFill.m @@ -1,12 +1,12 @@ #import "CPTFill.h" +#import "_CPTFillColor.h" +#import "_CPTFillGradient.h" +#import "_CPTFillImage.h" #import "CPTColor.h" #import "CPTGradient.h" #import "CPTImage.h" #import "CPTPlatformSpecificFunctions.h" -#import "_CPTFillColor.h" -#import "_CPTFillGradient.h" -#import "_CPTFillImage.h" /** @brief Draws area fills. * diff --git a/framework/Source/CPTFillTests.m b/framework/Source/CPTFillTests.m index 3bc0d7bb3..8029b0a73 100644 --- a/framework/Source/CPTFillTests.m +++ b/framework/Source/CPTFillTests.m @@ -1,12 +1,12 @@ #import "CPTFillTests.h" +#import "_CPTFillColor.h" +#import "_CPTFillGradient.h" +#import "_CPTFillImage.h" #import "CPTColor.h" #import "CPTFill.h" #import "CPTGradient.h" #import "CPTImage.h" -#import "_CPTFillColor.h" -#import "_CPTFillGradient.h" -#import "_CPTFillImage.h" @interface _CPTFillColor() diff --git a/framework/Source/CPTFunctionDataSource.m b/framework/Source/CPTFunctionDataSource.m index 1aede27c1..5a682aaf2 100644 --- a/framework/Source/CPTFunctionDataSource.m +++ b/framework/Source/CPTFunctionDataSource.m @@ -176,7 +176,7 @@ -(void)dealloc -(void)setResolution:(CGFloat)newResolution { - NSParameterAssert( newResolution > CPTFloat(0.0) ); + NSParameterAssert(newResolution > CPTFloat(0.0) ); if ( newResolution != resolution ) { resolution = newResolution; @@ -222,7 +222,7 @@ -(void)plotBoundsChanged if ( plotSpace ) { CGFloat width = plot.bounds.size.width; if ( width > CPTFloat(0.0) ) { - NSUInteger count = (NSUInteger)lrint( ceil(width / self.resolution) ) + 1; + NSUInteger count = (NSUInteger)lrint(ceil(width / self.resolution) ) + 1; if ( count > self.cachedCount ) { self.dataCount = count; @@ -271,7 +271,7 @@ -(void)plotSpaceChanged if ( step > 0.0 ) { double minLimit = plotRange.minLimitDouble; if ( ![cachedRange containsDouble:minLimit] ) { - NSUInteger numPoints = (NSUInteger)lrint( ( ceil( (cachedRange.minLimitDouble - minLimit) / step ) ) ); + NSUInteger numPoints = (NSUInteger)lrint( (ceil( (cachedRange.minLimitDouble - minLimit) / step ) ) ); NSDecimal offset = CPTDecimalFromDouble(step * numPoints); cachedRange.locationDecimal = CPTDecimalSubtract(cachedRange.locationDecimal, offset); @@ -284,7 +284,7 @@ -(void)plotSpaceChanged double maxLimit = plotRange.maxLimitDouble; if ( ![cachedRange containsDouble:maxLimit] ) { - NSUInteger numPoints = (NSUInteger)lrint( ceil( (maxLimit - cachedRange.maxLimitDouble) / step ) ); + NSUInteger numPoints = (NSUInteger)lrint(ceil( (maxLimit - cachedRange.maxLimitDouble) / step ) ); NSDecimal offset = CPTDecimalFromDouble(step * numPoints); cachedRange.lengthDecimal = CPTDecimalAdd(cachedRange.lengthDecimal, offset); @@ -297,7 +297,7 @@ -(void)plotSpaceChanged else { double maxLimit = plotRange.maxLimitDouble; if ( ![cachedRange containsDouble:maxLimit] ) { - NSUInteger numPoints = (NSUInteger)lrint( ceil( (cachedRange.maxLimitDouble - maxLimit) / step ) ); + NSUInteger numPoints = (NSUInteger)lrint(ceil( (cachedRange.maxLimitDouble - maxLimit) / step ) ); NSDecimal offset = CPTDecimalFromDouble(step * numPoints); cachedRange.locationDecimal = CPTDecimalSubtract(cachedRange.locationDecimal, offset); @@ -310,7 +310,7 @@ -(void)plotSpaceChanged double minLimit = plotRange.minLimitDouble; if ( ![cachedRange containsDouble:minLimit] ) { - NSUInteger numPoints = (NSUInteger)lrint( ceil( (minLimit - cachedRange.minLimitDouble) / step ) ); + NSUInteger numPoints = (NSUInteger)lrint(ceil( (minLimit - cachedRange.minLimitDouble) / step ) ); NSDecimal offset = CPTDecimalFromDouble(step * numPoints); cachedRange.lengthDecimal = CPTDecimalAdd(cachedRange.lengthDecimal, offset); @@ -392,11 +392,11 @@ -(nullable CPTNumericData *)dataForPlot:(nonnull CPTPlot *)plot recordIndexRange NSMutableData *data = [[NSMutableData alloc] initWithLength:indexRange.length * 2 * sizeof(double)]; double *xBytes = data.mutableBytes; - double *yBytes = data.mutableBytes + ( indexRange.length * sizeof(double) ); + double *yBytes = data.mutableBytes + (indexRange.length * sizeof(double) ); double location = xRange.locationDouble; double length = xRange.lengthDouble; - double denom = (double)( count - ( (count > 1) ? 1 : 0 ) ); + double denom = (double)(count - ( (count > 1) ? 1 : 0 ) ); NSUInteger lastIndex = NSMaxRange(indexRange); @@ -424,7 +424,7 @@ -(nullable CPTNumericData *)dataForPlot:(nonnull CPTPlot *)plot recordIndexRange } numericData = [CPTNumericData numericDataWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) shape:@[@(indexRange.length), @2] dataOrder:CPTDataOrderColumnsFirst]; } diff --git a/framework/Source/CPTGradient.h b/framework/Source/CPTGradient.h index c096bf189..b07f6d920 100644 --- a/framework/Source/CPTGradient.h +++ b/framework/Source/CPTGradient.h @@ -9,8 +9,8 @@ * @brief A structure representing one node in a linked list of RGBA colors. **/ typedef struct _CPTGradientElement { - CPTRGBAColor color; ///< Color - CGFloat position; ///< Gradient position (0 ≤ @par{position} ≤ 1) + CPTRGBAColor color; ///< Color + CGFloat position; ///< Gradient position (0 ≤ @par{position} ≤ 1) struct _CPTGradientElement *__nullable nextElement; ///< Pointer to the next CPTGradientElement in the list (last element == @NULL) } diff --git a/framework/Source/CPTGradient.m b/framework/Source/CPTGradient.m index c98d2de58..b996943eb 100644 --- a/framework/Source/CPTGradient.m +++ b/framework/Source/CPTGradient.m @@ -777,7 +777,6 @@ -(CGColorRef)newColorStopAtIndex:(NSUInteger)idx #if TARGET_OS_SIMULATOR || TARGET_OS_IPHONE CGFloat colorComponents[4] = { element->color.red, element->color.green, element->color.blue, element->color.alpha }; return CGColorCreate(self.colorspace.cgColorSpace, colorComponents); - #else return CGColorCreateGenericRGB(element->color.red, element->color.green, element->color.blue, element->color.alpha); #endif @@ -903,7 +902,7 @@ -(BOOL)isOpaque CPTGradientElement *list = self.elementList; while ( opaqueGradient && (list != NULL) ) { - opaqueGradient = opaqueGradient && ( list->color.alpha >= CPTFloat(1.0) ); + opaqueGradient = opaqueGradient && (list->color.alpha >= CPTFloat(1.0) ); list = list->nextElement; } @@ -1035,12 +1034,12 @@ -(nonnull CGShadingRef)newAxialGradientInRect:(CGRect)rect CGPoint startPoint, endPoint; if ( self.angle == CPTFloat(0.0) ) { - startPoint = CPTPointMake( CGRectGetMinX(rect), CGRectGetMinY(rect) ); // right of rect - endPoint = CPTPointMake( CGRectGetMaxX(rect), CGRectGetMinY(rect) ); // left of rect + startPoint = CPTPointMake(CGRectGetMinX(rect), CGRectGetMinY(rect) ); // right of rect + endPoint = CPTPointMake(CGRectGetMaxX(rect), CGRectGetMinY(rect) ); // left of rect } else if ( self.angle == CPTFloat(90.0) ) { - startPoint = CPTPointMake( CGRectGetMinX(rect), CGRectGetMinY(rect) ); // bottom of rect - endPoint = CPTPointMake( CGRectGetMinX(rect), CGRectGetMaxY(rect) ); // top of rect + startPoint = CPTPointMake(CGRectGetMinX(rect), CGRectGetMinY(rect) ); // bottom of rect + endPoint = CPTPointMake(CGRectGetMinX(rect), CGRectGetMaxY(rect) ); // top of rect } else { // ok, we'll do the calculations now CGFloat x, y; @@ -1051,7 +1050,7 @@ -(nonnull CGShadingRef)newAxialGradientInRect:(CGRect)rect CGFloat rAngle = self.angle * CPTFloat(M_PI / 180.0); // convert the angle to radians - if ( fabs( tan(rAngle) ) <= CPTFloat(1.0) ) { // for range [-45,45], [135,225] + if ( fabs(tan(rAngle) ) <= CPTFloat(1.0) ) { // for range [-45,45], [135,225] x = CGRectGetWidth(rect); y = CGRectGetHeight(rect); @@ -1059,7 +1058,7 @@ -(nonnull CGShadingRef)newAxialGradientInRect:(CGRect)rect cosA = cos(rAngle); tanA = tan(rAngle); - length = x / fabs(cosA) + ( y - x * fabs(tanA) ) * fabs(sinA); + length = x / fabs(cosA) + (y - x * fabs(tanA) ) * fabs(sinA); deltaX = length * cosA / CPTFloat(2.0); deltaY = length * sinA / CPTFloat(2.0); @@ -1074,7 +1073,7 @@ -(nonnull CGShadingRef)newAxialGradientInRect:(CGRect)rect cosA = cos(rAngle); tanA = tan(rAngle); - length = x / fabs(cosA) + ( y - x * fabs(tanA) ) * fabs(sinA); + length = x / fabs(cosA) + (y - x * fabs(tanA) ) * fabs(sinA); deltaX = -length * sinA / CPTFloat(2.0); deltaY = length * cosA / CPTFloat(2.0); @@ -1097,12 +1096,12 @@ -(nonnull CGShadingRef)newRadialGradientInRect:(CGRect)rect context:(nonnull CGC CGPoint theStartAnchor = self.startAnchor; - startPoint = CPTPointMake( fma( CGRectGetWidth(rect), theStartAnchor.x, CGRectGetMinX(rect) ), - fma( CGRectGetHeight(rect), theStartAnchor.y, CGRectGetMinY(rect) ) ); + startPoint = CPTPointMake(fma(CGRectGetWidth(rect), theStartAnchor.x, CGRectGetMinX(rect) ), + fma(CGRectGetHeight(rect), theStartAnchor.y, CGRectGetMinY(rect) ) ); CGPoint theEndAnchor = self.endAnchor; - endPoint = CPTPointMake( fma( CGRectGetWidth(rect), theEndAnchor.x, CGRectGetMinX(rect) ), - fma( CGRectGetHeight(rect), theEndAnchor.y, CGRectGetMinY(rect) ) ); + endPoint = CPTPointMake(fma(CGRectGetWidth(rect), theEndAnchor.x, CGRectGetMinX(rect) ), + fma(CGRectGetHeight(rect), theEndAnchor.y, CGRectGetMinY(rect) ) ); startRadius = CPTFloat(-1.0); if ( CGRectGetHeight(rect) > CGRectGetWidth(rect) ) { @@ -1168,7 +1167,7 @@ -(void)addElement:(nonnull CPTGradientElement *)newElement if ( (curElement == NULL) || (newElement->position < curElement->position) ) { CPTGradientElement *tmpNext = curElement; - CPTGradientElement *newElementList = malloc( sizeof(CPTGradientElement) ); + CPTGradientElement *newElementList = malloc(sizeof(CPTGradientElement) ); if ( newElementList ) { *newElementList = *newElement; newElementList->nextElement = tmpNext; @@ -1183,7 +1182,7 @@ -(void)addElement:(nonnull CPTGradientElement *)newElement } CPTGradientElement *tmpNext = curElement->nextElement; - curElement->nextElement = malloc( sizeof(CPTGradientElement) ); + curElement->nextElement = malloc(sizeof(CPTGradientElement) ); *(curElement->nextElement) = *newElement; curElement->nextElement->nextElement = tmpNext; } @@ -1574,11 +1573,11 @@ void CPTTransformRGB_HSV(CGFloat *__nonnull components) // H,S,B -> R,G,B void CPTTransformHSV_RGB(CGFloat *__nonnull components) // H,S,B -> R,G,B { CGFloat R = CPTFloat(0.0), G = CPTFloat(0.0), B = CPTFloat(0.0); - CGFloat H = fmod( components[0], CPTFloat(360.0) ); // map to [0,360) + CGFloat H = fmod(components[0], CPTFloat(360.0) ); // map to [0,360) CGFloat S = components[1]; CGFloat V = components[2]; - int Hi = (int)lrint( floor( H / CPTFloat(60.0) ) ) % 6; + int Hi = (int)lrint(floor(H / CPTFloat(60.0) ) ) % 6; CGFloat f = H / CPTFloat(60.0) - Hi; CGFloat p = V * (CPTFloat(1.0) - S); CGFloat q = V * (CPTFloat(1.0) - f * S); diff --git a/framework/Source/CPTGraph.m b/framework/Source/CPTGraph.m index 4ad900332..0faf1f8cc 100644 --- a/framework/Source/CPTGraph.m +++ b/framework/Source/CPTGraph.m @@ -1322,6 +1322,7 @@ -(BOOL)scrollWheelEvent:(nonnull CPTNativeEvent *)event fromPoint:(CGPoint)fromP return [super scrollWheelEvent:event fromPoint:fromPoint toPoint:toPoint]; } } + #endif /// @} diff --git a/framework/Source/CPTImage.m b/framework/Source/CPTImage.m index b35e35d7b..1ed0e56e9 100644 --- a/framework/Source/CPTImage.m +++ b/framework/Source/CPTImage.m @@ -134,7 +134,7 @@ -(nonnull instancetype)initWithContentsOfFile:(nonnull NSString *)path **/ -(nonnull instancetype)initWithCGImage:(nullable CGImageRef)anImage scale:(CGFloat)newScale { - NSParameterAssert( newScale > CPTFloat(0.0) ); + NSParameterAssert(newScale > CPTFloat(0.0) ); if ( (self = [super init]) ) { CGImageRetain(anImage); @@ -371,35 +371,35 @@ -(BOOL)isEqual:(nullable id)object CGColorSpaceRef otherColorSpace = CGImageGetColorSpace(otherCGImage); if ( equalImages ) { - equalImages = ( CGImageGetWidth(selfCGImage) == CGImageGetWidth(otherCGImage) ); + equalImages = (CGImageGetWidth(selfCGImage) == CGImageGetWidth(otherCGImage) ); } if ( equalImages ) { - equalImages = ( CGImageGetHeight(selfCGImage) == CGImageGetHeight(otherCGImage) ); + equalImages = (CGImageGetHeight(selfCGImage) == CGImageGetHeight(otherCGImage) ); } if ( equalImages ) { - equalImages = ( CGImageGetBitsPerComponent(selfCGImage) == CGImageGetBitsPerComponent(otherCGImage) ); + equalImages = (CGImageGetBitsPerComponent(selfCGImage) == CGImageGetBitsPerComponent(otherCGImage) ); } if ( equalImages ) { - equalImages = ( CGImageGetBitsPerPixel(selfCGImage) == CGImageGetBitsPerPixel(otherCGImage) ); + equalImages = (CGImageGetBitsPerPixel(selfCGImage) == CGImageGetBitsPerPixel(otherCGImage) ); } if ( equalImages ) { - equalImages = ( CGImageGetBytesPerRow(selfCGImage) == CGImageGetBytesPerRow(otherCGImage) ); + equalImages = (CGImageGetBytesPerRow(selfCGImage) == CGImageGetBytesPerRow(otherCGImage) ); } if ( equalImages ) { - equalImages = ( CGImageGetBitmapInfo(selfCGImage) == CGImageGetBitmapInfo(otherCGImage) ); + equalImages = (CGImageGetBitmapInfo(selfCGImage) == CGImageGetBitmapInfo(otherCGImage) ); } if ( equalImages ) { - equalImages = ( CGImageGetShouldInterpolate(selfCGImage) == CGImageGetShouldInterpolate(otherCGImage) ); + equalImages = (CGImageGetShouldInterpolate(selfCGImage) == CGImageGetShouldInterpolate(otherCGImage) ); } if ( equalImages ) { - equalImages = ( CGImageGetRenderingIntent(selfCGImage) == CGImageGetRenderingIntent(otherCGImage) ); + equalImages = (CGImageGetRenderingIntent(selfCGImage) == CGImageGetRenderingIntent(otherCGImage) ); } // decode array @@ -430,8 +430,8 @@ -(BOOL)isEqual:(nullable id)object // color space if ( equalImages ) { - equalImages = ( CGColorSpaceGetModel(selfColorSpace) == CGColorSpaceGetModel(otherColorSpace) ) && - ( CGColorSpaceGetNumberOfComponents(selfColorSpace) == CGColorSpaceGetNumberOfComponents(otherColorSpace) ); + equalImages = (CGColorSpaceGetModel(selfColorSpace) == CGColorSpaceGetModel(otherColorSpace) ) && + (CGColorSpaceGetNumberOfComponents(selfColorSpace) == CGColorSpaceGetNumberOfComponents(otherColorSpace) ); } // data provider @@ -472,7 +472,7 @@ -(NSUInteger)hash // Equal objects must hash the same. CGImageRef selfCGImage = self.image; - return ( CGImageGetWidth(selfCGImage) * CGImageGetHeight(selfCGImage) ) + + return (CGImageGetWidth(selfCGImage) * CGImageGetHeight(selfCGImage) ) + CGImageGetBitsPerComponent(selfCGImage) + CGImageGetBitsPerPixel(selfCGImage) + CGImageGetBytesPerRow(selfCGImage) + @@ -526,7 +526,7 @@ -(nullable CPTNativeImage *)nativeImage #if TARGET_OS_SIMULATOR || TARGET_OS_IPHONE CGFloat theScale = self.scale; - if ( imageRef && ( theScale > CPTFloat(0.0) ) ) { + if ( imageRef && (theScale > CPTFloat(0.0) ) ) { nativeImage = [UIImage imageWithCGImage:imageRef scale:theScale orientation:UIImageOrientationUp]; @@ -536,7 +536,7 @@ -(nullable CPTNativeImage *)nativeImage nativeImage = [[NSImage alloc] initWithCGImage:imageRef size:NSZeroSize]; } else { - CGSize imageSize = CGSizeMake( CGImageGetWidth(imageRef), CGImageGetHeight(imageRef) ); + CGSize imageSize = CGSizeMake(CGImageGetWidth(imageRef), CGImageGetHeight(imageRef) ); NSBitmapImageRep *imageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:(NSInteger)imageSize.width @@ -565,7 +565,7 @@ -(nullable CPTNativeImage *)nativeImage -(void)setScale:(CGFloat)newScale { - NSParameterAssert( newScale > CPTFloat(0.0) ); + NSParameterAssert(newScale > CPTFloat(0.0) ); if ( newScale != scale ) { scale = newScale; @@ -633,17 +633,17 @@ -(void)makeImageSlices // top row if ( capTop > CPTFloat(0.0) ) { if ( capLeft > CPTFloat(0.0) ) { - CGImageRef sliceImage = CGImageCreateWithImageInRect( theImage, CPTRectMake(0.0, 0.0, capLeft, capTop) ); + CGImageRef sliceImage = CGImageCreateWithImageInRect(theImage, CPTRectMake(0.0, 0.0, capLeft, capTop) ); imageSlices.slice[CPTSliceTopLeft] = sliceImage; } if ( centerSize.width > CPTFloat(0.0) ) { - CGImageRef sliceImage = CGImageCreateWithImageInRect( theImage, CPTRectMake(capLeft, 0.0, centerSize.width, capTop) ); + CGImageRef sliceImage = CGImageCreateWithImageInRect(theImage, CPTRectMake(capLeft, 0.0, centerSize.width, capTop) ); imageSlices.slice[CPTSliceTop] = sliceImage; } if ( capRight > CPTFloat(0.0) ) { - CGImageRef sliceImage = CGImageCreateWithImageInRect( theImage, CPTRectMake(width - capRight, 0.0, capRight, capTop) ); + CGImageRef sliceImage = CGImageCreateWithImageInRect(theImage, CPTRectMake(width - capRight, 0.0, capRight, capTop) ); imageSlices.slice[CPTSliceTopRight] = sliceImage; } } @@ -651,17 +651,17 @@ -(void)makeImageSlices // middle row if ( centerSize.height > CPTFloat(0.0) ) { if ( capLeft > CPTFloat(0.0) ) { - CGImageRef sliceImage = CGImageCreateWithImageInRect( theImage, CPTRectMake(0.0, capTop, capLeft, centerSize.height) ); + CGImageRef sliceImage = CGImageCreateWithImageInRect(theImage, CPTRectMake(0.0, capTop, capLeft, centerSize.height) ); imageSlices.slice[CPTSliceLeft] = sliceImage; } if ( centerSize.width > CPTFloat(0.0) ) { - CGImageRef sliceImage = CGImageCreateWithImageInRect( theImage, CPTRectMake(capLeft, capTop, centerSize.width, centerSize.height) ); + CGImageRef sliceImage = CGImageCreateWithImageInRect(theImage, CPTRectMake(capLeft, capTop, centerSize.width, centerSize.height) ); imageSlices.slice[CPTSliceMiddle] = sliceImage; } if ( capRight > CPTFloat(0.0) ) { - CGImageRef sliceImage = CGImageCreateWithImageInRect( theImage, CPTRectMake(width - capRight, capTop, capRight, centerSize.height) ); + CGImageRef sliceImage = CGImageCreateWithImageInRect(theImage, CPTRectMake(width - capRight, capTop, capRight, centerSize.height) ); imageSlices.slice[CPTSliceRight] = sliceImage; } } @@ -669,17 +669,17 @@ -(void)makeImageSlices // bottom row if ( capBottom > CPTFloat(0.0) ) { if ( capLeft > CPTFloat(0.0) ) { - CGImageRef sliceImage = CGImageCreateWithImageInRect( theImage, CPTRectMake(0.0, height - capBottom, capLeft, capBottom) ); + CGImageRef sliceImage = CGImageCreateWithImageInRect(theImage, CPTRectMake(0.0, height - capBottom, capLeft, capBottom) ); imageSlices.slice[CPTSliceBottomLeft] = sliceImage; } if ( centerSize.width > CPTFloat(0.0) ) { - CGImageRef sliceImage = CGImageCreateWithImageInRect( theImage, CPTRectMake(capLeft, height - capBottom, centerSize.width, capBottom) ); + CGImageRef sliceImage = CGImageCreateWithImageInRect(theImage, CPTRectMake(capLeft, height - capBottom, centerSize.width, capBottom) ); imageSlices.slice[CPTSliceBottom] = sliceImage; } if ( capRight > CPTFloat(0.0) ) { - CGImageRef sliceImage = CGImageCreateWithImageInRect( theImage, CPTRectMake(width - capRight, height - capBottom, capRight, capBottom) ); + CGImageRef sliceImage = CGImageCreateWithImageInRect(theImage, CPTRectMake(width - capRight, height - capBottom, capRight, capBottom) ); imageSlices.slice[CPTSliceBottomRight] = sliceImage; } } @@ -692,7 +692,7 @@ -(void)makeImageSlices -(void)drawImage:(nonnull CGImageRef)theImage inContext:(nonnull CGContextRef)context rect:(CGRect)rect scaleRatio:(CGFloat)scaleRatio { - if ( theImage && ( rect.size.width > CPTFloat(0.0) ) && ( rect.size.height > CPTFloat(0.0) ) ) { + if ( theImage && (rect.size.width > CPTFloat(0.0) ) && (rect.size.height > CPTFloat(0.0) ) ) { CGFloat imageScale = self.scale; CGContextSaveGState(context); diff --git a/framework/Source/CPTLayer.h b/framework/Source/CPTLayer.h index 729623938..e3ccd5ff5 100644 --- a/framework/Source/CPTLayer.h +++ b/framework/Source/CPTLayer.h @@ -68,8 +68,8 @@ typedef NSMutableSet CPTMutableSublayerSet; /** * @brief Layer delegate. **/ -#if ( ( TARGET_OS_SIMULATOR || TARGET_OS_IPHONE || TARGET_OS_TV) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= 100000 ) ) \ - || (TARGET_OS_MAC && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101200 ) ) +#if ( ( TARGET_OS_SIMULATOR || TARGET_OS_IPHONE || TARGET_OS_TV) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= 100000) ) \ + || (TARGET_OS_MAC && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101200) ) // CALayerDelegate is defined by Core Animation in iOS 10.0+, macOS 10.12+, and tvOS 10.0+ @protocol CPTLayerDelegate #else diff --git a/framework/Source/CPTLayer.m b/framework/Source/CPTLayer.m index 21129c931..dba21cd69 100644 --- a/framework/Source/CPTLayer.m +++ b/framework/Source/CPTLayer.m @@ -1,12 +1,12 @@ #import "CPTLayer.h" +#import "CorePlotProbes.h" #import "CPTGraph.h" #import "CPTPathExtensions.h" #import "CPTPlatformSpecificCategories.h" #import "CPTPlatformSpecificFunctions.h" #import "CPTShadow.h" #import "CPTUtilities.h" -#import "CorePlotProbes.h" #import "NSCoderExtensions.h" #import #import @@ -421,7 +421,7 @@ -(void)applyTransform:(CATransform3D)transform3D toContext:(nonnull CGContextRef anchorOffset.y = selfBounds.origin.y + anchorPoint.y * selfBounds.size.height); CGAffineTransform affineTransform = CGAffineTransformMakeTranslation(-anchorOffset.x, -anchorOffset.y); - affineTransform = CGAffineTransformConcat( affineTransform, CATransform3DGetAffineTransform(transform3D) ); + affineTransform = CGAffineTransformConcat(affineTransform, CATransform3DGetAffineTransform(transform3D) ); affineTransform = CGAffineTransformTranslate(affineTransform, anchorOffset.x, anchorOffset.y); CGRect transformedBounds = CGRectApplyAffineTransform(selfBounds, affineTransform); @@ -501,6 +501,7 @@ -(BOOL)scrollWheelEvent:(nonnull CPTNativeEvent *)event fromPoint:(CGPoint)fromP { return NO; } + #endif /// @} @@ -528,8 +529,8 @@ -(void)pixelAlign boundsSize.height * anchor.y); if ( scale == CPTFloat(1.0) ) { - newPosition.x = ceil( currentPosition.x - newAnchor.x - CPTFloat(0.5) ) + newAnchor.x; - newPosition.y = ceil( currentPosition.y - newAnchor.y - CPTFloat(0.5) ) + newAnchor.y; + newPosition.x = ceil(currentPosition.x - newAnchor.x - CPTFloat(0.5) ) + newAnchor.x; + newPosition.y = ceil(currentPosition.y - newAnchor.y - CPTFloat(0.5) ) + newAnchor.y; } else { newPosition.x = ceil( (currentPosition.x - newAnchor.x) * scale - CPTFloat(0.5) ) / scale + newAnchor.x; @@ -543,8 +544,8 @@ -(void)pixelAlign boundsSize.width * anchor.x); if ( scale == CPTFloat(1.0) ) { - newPosition.x = ceil( currentPosition.x - newAnchor.x - CPTFloat(0.5) ) + newAnchor.x; - newPosition.y = ceil( currentPosition.y - newAnchor.y - CPTFloat(0.5) ) + newAnchor.y; + newPosition.x = ceil(currentPosition.x - newAnchor.x - CPTFloat(0.5) ) + newAnchor.x; + newPosition.y = ceil(currentPosition.y - newAnchor.y - CPTFloat(0.5) ) + newAnchor.y; } else { newPosition.x = ceil( (currentPosition.x - newAnchor.x) * scale - CPTFloat(0.5) ) / scale + newAnchor.x; @@ -609,7 +610,7 @@ -(CGSize)shadowMargin CGSize shadowOffset = myShadow.shadowOffset; CGFloat shadowRadius = myShadow.shadowBlurRadius; - margin = CGSizeMake( ceil( ABS(shadowOffset.width) + ABS(shadowRadius) ), ceil( ABS(shadowOffset.height) + ABS(shadowRadius) ) ); + margin = CGSizeMake(ceil(ABS(shadowOffset.width) + ABS(shadowRadius) ), ceil(ABS(shadowOffset.height) + ABS(shadowRadius) ) ); } return margin; @@ -639,14 +640,14 @@ -(void)layoutSublayers CGSize subLayerSize = selfBounds.size; subLayerSize.width -= leftPadding + rightPadding; - subLayerSize.width = MAX( subLayerSize.width, CPTFloat(0.0) ); + subLayerSize.width = MAX(subLayerSize.width, CPTFloat(0.0) ); subLayerSize.width = round(subLayerSize.width); subLayerSize.height -= topPadding + bottomPadding; - subLayerSize.height = MAX( subLayerSize.height, CPTFloat(0.0) ); + subLayerSize.height = MAX(subLayerSize.height, CPTFloat(0.0) ); subLayerSize.height = round(subLayerSize.height); CGRect subLayerFrame; - subLayerFrame.origin = CGPointMake( round(leftPadding), round(bottomPadding) ); + subLayerFrame.origin = CGPointMake(round(leftPadding), round(bottomPadding) ); subLayerFrame.size = subLayerSize; CPTSublayerSet *excludedSublayers = self.sublayersExcludedFromAutomaticLayout; @@ -802,7 +803,7 @@ -(void)applySublayerMaskToContext:(nonnull CGContextRef)context forSublayer:(non } CGAffineTransform sublayerTransform = CATransform3DGetAffineTransform(sublayer.transform); - CGContextConcatCTM( context, CGAffineTransformInvert(sublayerTransform) ); + CGContextConcatCTM(context, CGAffineTransformInvert(sublayerTransform) ); CALayer *superlayer = self.superlayer; if ( [superlayer isKindOfClass:[CPTLayer class]] ) { @@ -878,12 +879,12 @@ -(void)setPosition:(CGPoint)newPosition super.position = newPosition; if ( COREPLOT_LAYER_POSITION_CHANGE_ENABLED() ) { CGRect currentFrame = self.frame; - if ( !CGRectEqualToRect( currentFrame, CGRectIntegral(self.frame) ) ) { + if ( !CGRectEqualToRect(currentFrame, CGRectIntegral(self.frame) ) ) { COREPLOT_LAYER_POSITION_CHANGE( (const char *)class_getName([self class]), - (int)lrint( ceil( currentFrame.origin.x * CPTFloat(1000.0) ) ), - (int)lrint( ceil( currentFrame.origin.y * CPTFloat(1000.0) ) ), - (int)lrint( ceil( currentFrame.size.width * CPTFloat(1000.0) ) ), - (int)lrint( ceil( currentFrame.size.height * CPTFloat(1000.0) ) ) ); + (int)lrint(ceil(currentFrame.origin.x * CPTFloat(1000.0) ) ), + (int)lrint(ceil(currentFrame.origin.y * CPTFloat(1000.0) ) ), + (int)lrint(ceil(currentFrame.size.width * CPTFloat(1000.0) ) ), + (int)lrint(ceil(currentFrame.size.height * CPTFloat(1000.0) ) ) ); } } } @@ -900,7 +901,7 @@ -(void)setHidden:(BOOL)newHidden -(void)setContentsScale:(CGFloat)newContentsScale { - NSParameterAssert( newContentsScale > CPTFloat(0.0) ); + NSParameterAssert(newContentsScale > CPTFloat(0.0) ); if ( self.contentsScale != newContentsScale ) { if ( [CALayer instancesRespondToSelector:@selector(setContentsScale:)] ) { @@ -999,14 +1000,14 @@ -(CGPoint)anchorPoint if ( self.shadow ) { CGSize sizeOffset = self.shadowMargin; CGRect selfBounds = self.bounds; - CGSize adjustedSize = CGSizeMake( selfBounds.size.width + sizeOffset.width * CPTFloat(2.0), - selfBounds.size.height + sizeOffset.height * CPTFloat(2.0) ); + CGSize adjustedSize = CGSizeMake(selfBounds.size.width + sizeOffset.width * CPTFloat(2.0), + selfBounds.size.height + sizeOffset.height * CPTFloat(2.0) ); if ( selfBounds.size.width > CPTFloat(0.0) ) { - adjustedAnchor.x = ( adjustedAnchor.x - CPTFloat(0.5) ) * (adjustedSize.width / selfBounds.size.width) + CPTFloat(0.5); + adjustedAnchor.x = (adjustedAnchor.x - CPTFloat(0.5) ) * (adjustedSize.width / selfBounds.size.width) + CPTFloat(0.5); } if ( selfBounds.size.height > CPTFloat(0.0) ) { - adjustedAnchor.y = ( adjustedAnchor.y - CPTFloat(0.5) ) * (adjustedSize.height / selfBounds.size.height) + CPTFloat(0.5); + adjustedAnchor.y = (adjustedAnchor.y - CPTFloat(0.5) ) * (adjustedSize.height / selfBounds.size.height) + CPTFloat(0.5); } } @@ -1018,14 +1019,14 @@ -(void)setAnchorPoint:(CGPoint)newAnchorPoint if ( self.shadow ) { CGSize sizeOffset = self.shadowMargin; CGRect selfBounds = self.bounds; - CGSize adjustedSize = CGSizeMake( selfBounds.size.width + sizeOffset.width * CPTFloat(2.0), - selfBounds.size.height + sizeOffset.height * CPTFloat(2.0) ); + CGSize adjustedSize = CGSizeMake(selfBounds.size.width + sizeOffset.width * CPTFloat(2.0), + selfBounds.size.height + sizeOffset.height * CPTFloat(2.0) ); if ( adjustedSize.width > CPTFloat(0.0) ) { - newAnchorPoint.x = ( newAnchorPoint.x - CPTFloat(0.5) ) * (selfBounds.size.width / adjustedSize.width) + CPTFloat(0.5); + newAnchorPoint.x = (newAnchorPoint.x - CPTFloat(0.5) ) * (selfBounds.size.width / adjustedSize.width) + CPTFloat(0.5); } if ( adjustedSize.height > CPTFloat(0.0) ) { - newAnchorPoint.y = ( newAnchorPoint.y - CPTFloat(0.5) ) * (selfBounds.size.height / adjustedSize.height) + CPTFloat(0.5); + newAnchorPoint.y = (newAnchorPoint.y - CPTFloat(0.5) ) * (selfBounds.size.height / adjustedSize.height) + CPTFloat(0.5); } } diff --git a/framework/Source/CPTLayerAnnotation.m b/framework/Source/CPTLayerAnnotation.m index fd8a065b8..97fbbda30 100644 --- a/framework/Source/CPTLayerAnnotation.m +++ b/framework/Source/CPTLayerAnnotation.m @@ -159,7 +159,7 @@ -(void)positionContentLayer content.anchorPoint = self.contentAnchorPoint; content.position = newPosition; - content.transform = CATransform3DMakeRotation( self.rotation, CPTFloat(0.0), CPTFloat(0.0), CPTFloat(1.0) ); + content.transform = CATransform3DMakeRotation(self.rotation, CPTFloat(0.0), CPTFloat(0.0), CPTFloat(1.0) ); [content pixelAlign]; } } diff --git a/framework/Source/CPTLegend.m b/framework/Source/CPTLegend.m index 61c5f87de..371773629 100644 --- a/framework/Source/CPTLegend.m +++ b/framework/Source/CPTLegend.m @@ -691,7 +691,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context } // draw title - [legendEntry drawTitleInRect:CPTAlignRectToUserSpace( context, CPTRectMake(titleLeft, rowPosition + padBottom, actualColumnWidths[col] + CPTFloat(1.0), actualRowHeights[row]) ) + [legendEntry drawTitleInRect:CPTAlignRectToUserSpace(context, CPTRectMake(titleLeft, rowPosition + padBottom, actualColumnWidths[col] + CPTFloat(1.0), actualRowHeights[row]) ) inContext:context scale:self.contentsScale]; } @@ -763,7 +763,7 @@ -(void)recalculateLayout NSUInteger legendEntryCount = self.legendEntries.count; if ( (rowCount == 0) && (columnCount == 0) ) { - rowCount = (NSUInteger)lrint( sqrt( (double)legendEntryCount ) ); + rowCount = (NSUInteger)lrint(sqrt( (double)legendEntryCount ) ); columnCount = rowCount; if ( rowCount * columnCount < legendEntryCount ) { columnCount++; @@ -788,8 +788,8 @@ -(void)recalculateLayout // compute row heights and column widths NSUInteger row = 0; NSUInteger col = 0; - CGFloat *maxTitleHeight = calloc( rowCount, sizeof(CGFloat) ); - CGFloat *maxTitleWidth = calloc( columnCount, sizeof(CGFloat) ); + CGFloat *maxTitleHeight = calloc(rowCount, sizeof(CGFloat) ); + CGFloat *maxTitleWidth = calloc(columnCount, sizeof(CGFloat) ); CGSize theSwatchSize = self.swatchSize; CPTNumberArray *desiredRowHeights = self.rowHeights; CPTNumberArray *desiredColumnWidths = self.columnWidths; @@ -865,7 +865,7 @@ -(void)recalculateLayout } } if ( columnCount > 0 ) { - legendSize.width += ( (theSwatchSize.width + self.titleOffset + self.entryPaddingLeft + self.entryPaddingRight) * columnCount ) + ( self.columnMargin * (columnCount - 1) ); + legendSize.width += ( (theSwatchSize.width + self.titleOffset + self.entryPaddingLeft + self.entryPaddingRight) * columnCount ) + (self.columnMargin * (columnCount - 1) ); } NSUInteger rows = row; @@ -876,10 +876,10 @@ -(void)recalculateLayout legendSize.height += [height cgFloatValue]; } if ( rows > 0 ) { - legendSize.height += ( (self.entryPaddingBottom + self.entryPaddingTop) * rowCount ) + ( self.rowMargin * (rows - 1) ); + legendSize.height += ( (self.entryPaddingBottom + self.entryPaddingTop) * rowCount ) + (self.rowMargin * (rows - 1) ); } - self.bounds = CPTRectMake( 0.0, 0.0, ceil(legendSize.width), ceil(legendSize.height) ); + self.bounds = CPTRectMake(0.0, 0.0, ceil(legendSize.width), ceil(legendSize.height) ); [self pixelAlign]; self.layoutChanged = NO; diff --git a/framework/Source/CPTLegendEntry.m b/framework/Source/CPTLegendEntry.m index 475f7f9fb..e50c088e3 100644 --- a/framework/Source/CPTLegendEntry.m +++ b/framework/Source/CPTLegendEntry.m @@ -153,8 +153,8 @@ -(void)drawTitleInRect:(CGRect)rect inContext:(nonnull CGContextRef)context scal #if TARGET_OS_SIMULATOR || TARGET_OS_IPHONE CGContextSaveGState(context); CGContextTranslateCTM(context, CPTFloat(0.0), rect.origin.y); - CGContextScaleCTM( context, CPTFloat(1.0), CPTFloat(-1.0) ); - CGContextTranslateCTM( context, CPTFloat(0.0), -CGRectGetMaxY(rect) ); + CGContextScaleCTM(context, CPTFloat(1.0), CPTFloat(-1.0) ); + CGContextTranslateCTM(context, CPTFloat(0.0), -CGRectGetMaxY(rect) ); #endif // center the title vertically CGRect textRect = rect; diff --git a/framework/Source/CPTLineCap.m b/framework/Source/CPTLineCap.m index 1e8130b1b..ac606d7ec 100644 --- a/framework/Source/CPTLineCap.m +++ b/framework/Source/CPTLineCap.m @@ -431,12 +431,12 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context atPoint:(CGPoint)ce if ( theLineStyle || theFill ) { CGContextSaveGState(context); CGContextTranslateCTM(context, center.x, center.y); - CGContextRotateCTM( context, atan2(direction.y, direction.x) - CPTFloat(M_PI_2) ); // standard symbol points up + CGContextRotateCTM(context, atan2(direction.y, direction.x) - CPTFloat(M_PI_2) ); // standard symbol points up if ( theFill ) { // use fillRect instead of fillPath so that images and gradients are properly centered in the symbol CGSize symbolSize = self.size; - CGSize halfSize = CPTSizeMake( symbolSize.width / CPTFloat(2.0), symbolSize.height / CPTFloat(2.0) ); + CGSize halfSize = CPTSizeMake(symbolSize.width / CPTFloat(2.0), symbolSize.height / CPTFloat(2.0) ); CGRect bounds = CPTRectMake(-halfSize.width, -halfSize.height, symbolSize.width, symbolSize.height); CGContextSaveGState(context); @@ -480,7 +480,7 @@ -(nonnull CGPathRef)newLineCapPath { CGFloat dx, dy; CGSize lineCapSize = self.size; - CGSize halfSize = CPTSizeMake( lineCapSize.width / CPTFloat(2.0), lineCapSize.height / CPTFloat(2.0) ); + CGSize halfSize = CPTSizeMake(lineCapSize.width / CPTFloat(2.0), lineCapSize.height / CPTFloat(2.0) ); CGMutablePathRef lineCapPath = CGPathCreateMutable(); @@ -491,47 +491,47 @@ -(nonnull CGPathRef)newLineCapPath case CPTLineCapTypeOpenArrow: CGPathMoveToPoint(lineCapPath, NULL, -halfSize.width, -halfSize.height); - CGPathAddLineToPoint( lineCapPath, NULL, CPTFloat(0.0), CPTFloat(0.0) ); + CGPathAddLineToPoint(lineCapPath, NULL, CPTFloat(0.0), CPTFloat(0.0) ); CGPathAddLineToPoint(lineCapPath, NULL, halfSize.width, -halfSize.height); break; case CPTLineCapTypeSolidArrow: CGPathMoveToPoint(lineCapPath, NULL, -halfSize.width, -halfSize.height); - CGPathAddLineToPoint( lineCapPath, NULL, CPTFloat(0.0), CPTFloat(0.0) ); + CGPathAddLineToPoint(lineCapPath, NULL, CPTFloat(0.0), CPTFloat(0.0) ); CGPathAddLineToPoint(lineCapPath, NULL, halfSize.width, -halfSize.height); CGPathCloseSubpath(lineCapPath); break; case CPTLineCapTypeSweptArrow: CGPathMoveToPoint(lineCapPath, NULL, -halfSize.width, -halfSize.height); - CGPathAddLineToPoint( lineCapPath, NULL, CPTFloat(0.0), CPTFloat(0.0) ); + CGPathAddLineToPoint(lineCapPath, NULL, CPTFloat(0.0), CPTFloat(0.0) ); CGPathAddLineToPoint(lineCapPath, NULL, halfSize.width, -halfSize.height); - CGPathAddLineToPoint( lineCapPath, NULL, CPTFloat(0.0), -lineCapSize.height * CPTFloat(0.375) ); + CGPathAddLineToPoint(lineCapPath, NULL, CPTFloat(0.0), -lineCapSize.height * CPTFloat(0.375) ); CGPathCloseSubpath(lineCapPath); break; case CPTLineCapTypeRectangle: - CGPathAddRect( lineCapPath, NULL, CPTRectMake( -halfSize.width, -halfSize.height, halfSize.width * CPTFloat(2.0), halfSize.height * CPTFloat(2.0) ) ); + CGPathAddRect(lineCapPath, NULL, CPTRectMake(-halfSize.width, -halfSize.height, halfSize.width * CPTFloat(2.0), halfSize.height * CPTFloat(2.0) ) ); break; case CPTLineCapTypeEllipse: - CGPathAddEllipseInRect( lineCapPath, NULL, CPTRectMake( -halfSize.width, -halfSize.height, halfSize.width * CPTFloat(2.0), halfSize.height * CPTFloat(2.0) ) ); + CGPathAddEllipseInRect(lineCapPath, NULL, CPTRectMake(-halfSize.width, -halfSize.height, halfSize.width * CPTFloat(2.0), halfSize.height * CPTFloat(2.0) ) ); break; case CPTLineCapTypeDiamond: CGPathMoveToPoint(lineCapPath, NULL, CPTFloat(0.0), halfSize.height); - CGPathAddLineToPoint( lineCapPath, NULL, halfSize.width, CPTFloat(0.0) ); + CGPathAddLineToPoint(lineCapPath, NULL, halfSize.width, CPTFloat(0.0) ); CGPathAddLineToPoint(lineCapPath, NULL, CPTFloat(0.0), -halfSize.height); - CGPathAddLineToPoint( lineCapPath, NULL, -halfSize.width, CPTFloat(0.0) ); + CGPathAddLineToPoint(lineCapPath, NULL, -halfSize.width, CPTFloat(0.0) ); CGPathCloseSubpath(lineCapPath); break; case CPTLineCapTypePentagon: CGPathMoveToPoint(lineCapPath, NULL, CPTFloat(0.0), halfSize.height); - CGPathAddLineToPoint( lineCapPath, NULL, halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); - CGPathAddLineToPoint( lineCapPath, NULL, halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); - CGPathAddLineToPoint( lineCapPath, NULL, -halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); - CGPathAddLineToPoint( lineCapPath, NULL, -halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); + CGPathAddLineToPoint(lineCapPath, NULL, halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); + CGPathAddLineToPoint(lineCapPath, NULL, halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); + CGPathAddLineToPoint(lineCapPath, NULL, -halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); + CGPathAddLineToPoint(lineCapPath, NULL, -halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); CGPathCloseSubpath(lineCapPath); break; @@ -549,8 +549,8 @@ -(nonnull CGPathRef)newLineCapPath break; case CPTLineCapTypeBar: - CGPathMoveToPoint( lineCapPath, NULL, halfSize.width, CPTFloat(0.0) ); - CGPathAddLineToPoint( lineCapPath, NULL, -halfSize.width, CPTFloat(0.0) ); + CGPathMoveToPoint(lineCapPath, NULL, halfSize.width, CPTFloat(0.0) ); + CGPathAddLineToPoint(lineCapPath, NULL, -halfSize.width, CPTFloat(0.0) ); break; case CPTLineCapTypeCross: @@ -581,8 +581,8 @@ -(nonnull CGPathRef)newLineCapPath CGFloat dy1 = lineCapSize.height / oldBounds.size.height; CGAffineTransform scaleTransform = CGAffineTransformScale(CGAffineTransformIdentity, dx1, dy1); - scaleTransform = CGAffineTransformConcat( scaleTransform, - CGAffineTransformMakeTranslation(-halfSize.width, -halfSize.height) ); + scaleTransform = CGAffineTransformConcat(scaleTransform, + CGAffineTransformMakeTranslation(-halfSize.width, -halfSize.height) ); CGPathAddPath(lineCapPath, &scaleTransform, customPath); } } @@ -601,7 +601,7 @@ -(nonnull CGPathRef)newLineCapPath -(nullable id)debugQuickLookObject { const CGSize symbolSize = self.size; - const CGSize halfSize = CPTSizeMake( symbolSize.width * CPTFloat(0.5), symbolSize.height * CPTFloat(0.5) ); + const CGSize halfSize = CPTSizeMake(symbolSize.width * CPTFloat(0.5), symbolSize.height * CPTFloat(0.5) ); const CGRect rect = CGRectMake(-halfSize.width, -halfSize.height, symbolSize.width, symbolSize.height); const CGPoint centerPoint = CGPointMake(halfSize.width, halfSize.height); diff --git a/framework/Source/CPTLineStyle.m b/framework/Source/CPTLineStyle.m index 27a8e6671..330f4c05b 100644 --- a/framework/Source/CPTLineStyle.m +++ b/framework/Source/CPTLineStyle.m @@ -239,7 +239,7 @@ -(void)setLineStyleInContext:(nonnull CGContextRef)context NSUInteger dashCount = myDashPattern.count; if ( dashCount > 0 ) { - CGFloat *dashLengths = (CGFloat *)calloc( dashCount, sizeof(CGFloat) ); + CGFloat *dashLengths = (CGFloat *)calloc(dashCount, sizeof(CGFloat) ); NSUInteger dashCounter = 0; for ( NSNumber *currentDashLength in myDashPattern ) { @@ -309,7 +309,7 @@ -(void)strokeRect:(CGRect)rect inContext:(nonnull CGContextRef)context -(void)strokePathWithGradient:(nonnull CPTGradient *)gradient inContext:(nonnull CGContextRef)context { if ( gradient ) { - CGRect deviceRect = CGContextConvertRectToDeviceSpace( context, CPTRectMake(0.0, 0.0, 1.0, 1.0) ); + CGRect deviceRect = CGContextConvertRectToDeviceSpace(context, CPTRectMake(0.0, 0.0, 1.0, 1.0) ); CGFloat step = CPTFloat(2.0) / deviceRect.size.height; diff --git a/framework/Source/CPTMutableNumericData.h b/framework/Source/CPTMutableNumericData.h index 6f1768b33..32d299487 100644 --- a/framework/Source/CPTMutableNumericData.h +++ b/framework/Source/CPTMutableNumericData.h @@ -16,7 +16,7 @@ /// @name Samples /// @{ -(nullable void *)mutableSamplePointer:(NSUInteger)sample NS_RETURNS_INNER_POINTER; --(nullable void *)mutableSamplePointerAtIndex:(NSUInteger)idx, ...NS_RETURNS_INNER_POINTER; +-(nullable void *)mutableSamplePointerAtIndex:(NSUInteger)idx, ... NS_RETURNS_INNER_POINTER; /// @} @end diff --git a/framework/Source/CPTMutableNumericData.m b/framework/Source/CPTMutableNumericData.m index 4b6728c2a..0e80d6e71 100644 --- a/framework/Source/CPTMutableNumericData.m +++ b/framework/Source/CPTMutableNumericData.m @@ -62,7 +62,7 @@ -(nullable void *)mutableSamplePointer:(NSUInteger)sample * @return A pointer to the sample or @NULL if any of the sample indices are out of bounds. **/ -(nullable void *)mutableSamplePointerAtIndex:(NSUInteger)idx, ... - { +{ NSUInteger newIndex; if ( self.numberOfDimensions > 1 ) { diff --git a/framework/Source/CPTMutableNumericDataTests.m b/framework/Source/CPTMutableNumericDataTests.m index bd9abf7ac..9a218d5bb 100644 --- a/framework/Source/CPTMutableNumericDataTests.m +++ b/framework/Source/CPTMutableNumericDataTests.m @@ -28,7 +28,7 @@ -(void)testNumberOfDimensionsGivesShapeCount NSMutableData *data = [NSMutableData dataWithLength:nElems * sizeof(float)]; CPTMutableNumericData *nd = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:shape]; XCTAssertEqual(nd.numberOfDimensions, nd.shape.count, @"numberOfDimensions == shape.count == 3"); @@ -64,7 +64,7 @@ -(void)testIllegalShapeRaisesException NSMutableData *data = [NSMutableData dataWithLength:nElems * sizeof(NSUInteger)]; XCTAssertThrowsSpecificNamed(testData = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTUnsignedIntegerDataType, sizeof(NSUInteger), NSHostByteOrder() ) + dataType:CPTDataType(CPTUnsignedIntegerDataType, sizeof(NSUInteger), NSHostByteOrder() ) shape:shape], NSException, CPTNumericDataException, @@ -95,7 +95,7 @@ -(void)testBytesEqualDataBytes } CPTMutableNumericData *nd = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ) + dataType:CPTDataType(CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ) shape:nil]; NSMutableData *expected = data; @@ -113,7 +113,7 @@ -(void)testArchivingRoundTrip } CPTMutableNumericData *nd = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; CPTMutableNumericData *nd2 = [self archiveRoundTrip:nd]; @@ -140,7 +140,7 @@ -(void)testNumberOfSamplesCorrectForDataType } CPTMutableNumericData *nd = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; XCTAssertEqual([nd numberOfSamples], nElems, @"numberOfSamples == nElems"); @@ -153,7 +153,7 @@ -(void)testNumberOfSamplesCorrectForDataType } nd = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTIntegerDataType, sizeof(char), NSHostByteOrder() ) + dataType:CPTDataType(CPTIntegerDataType, sizeof(char), NSHostByteOrder() ) shape:nil]; XCTAssertEqual([nd numberOfSamples], nElems, @"numberOfSamples == nElems"); @@ -170,7 +170,7 @@ -(void)testDataTypeAccessorsCorrectForDataType } CPTMutableNumericData *nd = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; XCTAssertEqual([nd dataTypeFormat], CPTFloatingPointDataType, @"dataTypeFormat"); @@ -189,7 +189,7 @@ -(void)testConvertTypeConvertsType } CPTMutableNumericData *fd = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; CPTNumericData *dd = [fd dataByConvertingToType:CPTFloatingPointDataType @@ -213,7 +213,7 @@ -(void)testSamplePointerCorrect } CPTMutableNumericData *fd = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; XCTAssertEqual( ( (float *)[fd mutableBytes] ) + 4, (float *)[fd mutableSamplePointer:4], @"%p,%p", samples + 4, (float *)[fd mutableSamplePointer:4] ); @@ -233,7 +233,7 @@ -(void)testSampleValueCorrect } CPTMutableNumericData *fd = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; XCTAssertEqualWithAccuracy([[fd sampleValue:0] doubleValue], sin(0), 0.01, @"sample value"); @@ -245,13 +245,13 @@ -(void)testMutableCopy const NSUInteger nElems = 10; NSMutableData *data = [NSMutableData dataWithLength:nElems * sizeof(float)]; CPTNumericData *nd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; CPTMutableNumericData *ndCopy = [nd mutableCopy]; // should be mutable--if not, this will error - ndCopy.dataType = CPTDataType( CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ); + ndCopy.dataType = CPTDataType(CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ); } @end diff --git a/framework/Source/CPTMutableNumericDataTypeConversionTests.m b/framework/Source/CPTMutableNumericDataTypeConversionTests.m index ff8105309..ec1154c87 100644 --- a/framework/Source/CPTMutableNumericDataTypeConversionTests.m +++ b/framework/Source/CPTMutableNumericDataTypeConversionTests.m @@ -18,7 +18,7 @@ -(void)testFloatToDoubleInPlaceConversion } CPTMutableNumericData *numericData = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; numericData.sampleBytes = sizeof(double); @@ -39,7 +39,7 @@ -(void)testDoubleToFloatInPlaceConversion } CPTMutableNumericData *numericData = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ) shape:nil]; numericData.sampleBytes = sizeof(float); @@ -60,10 +60,10 @@ -(void)testFloatToIntegerInPlaceConversion } CPTMutableNumericData *numericData = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; - numericData.dataType = CPTDataType( CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ); + numericData.dataType = CPTDataType(CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ); const NSInteger *intSamples = (const NSInteger *)numericData.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { @@ -81,10 +81,10 @@ -(void)testIntegerToFloatInPlaceConversion } CPTMutableNumericData *numericData = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ) + dataType:CPTDataType(CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ) shape:nil]; - numericData.dataType = CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ); + numericData.dataType = CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ); const float *floatSamples = (const float *)numericData.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { @@ -98,14 +98,14 @@ -(void)testDecimalToDoubleInPlaceConversion NSDecimal *samples = (NSDecimal *)data.mutableBytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - samples[i] = CPTDecimalFromDouble( sin(i) ); + samples[i] = CPTDecimalFromDouble(sin(i) ); } CPTMutableNumericData *numericData = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTDecimalDataType, sizeof(NSDecimal), NSHostByteOrder() ) + dataType:CPTDataType(CPTDecimalDataType, sizeof(NSDecimal), NSHostByteOrder() ) shape:nil]; - numericData.dataType = CPTDataType( CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ); + numericData.dataType = CPTDataType(CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ); const double *doubleSamples = (const double *)numericData.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { @@ -123,14 +123,14 @@ -(void)testDoubleToDecimalInPlaceConversion } CPTMutableNumericData *numericData = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ) shape:nil]; - numericData.dataType = CPTDataType( CPTDecimalDataType, sizeof(NSDecimal), NSHostByteOrder() ); + numericData.dataType = CPTDataType(CPTDecimalDataType, sizeof(NSDecimal), NSHostByteOrder() ); const NSDecimal *decimalSamples = (const NSDecimal *)numericData.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - XCTAssertTrue(CPTDecimalEquals( decimalSamples[i], CPTDecimalFromDouble(samples[i]) ), @"(NSDecimal)%@ != (double)%g", CPTDecimalStringValue(decimalSamples[i]), samples[i]); + XCTAssertTrue(CPTDecimalEquals(decimalSamples[i], CPTDecimalFromDouble(samples[i]) ), @"(NSDecimal)%@ != (double)%g", CPTDecimalStringValue(decimalSamples[i]), samples[i]); } } @@ -177,7 +177,7 @@ -(void)testTypeConversionSwapsByteOrderDoubleInPlace uint64_t end = *(const uint64_t *)numericData.bytes; union swap { - double v; + double v; CFSwappedFloat64 sv; } result; diff --git a/framework/Source/CPTMutablePlotRange.m b/framework/Source/CPTMutablePlotRange.m index 4f17749f1..4a5870f73 100644 --- a/framework/Source/CPTMutablePlotRange.m +++ b/framework/Source/CPTMutablePlotRange.m @@ -80,7 +80,7 @@ -(void)unionPlotRange:(nullable CPTPlotRange *)other NSDecimal maximum = CPTDecimalGreaterThan(max1, max2) ? max1 : max2; NSDecimal newLocation, newLength; - if ( CPTDecimalGreaterThanOrEqualTo( self.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalGreaterThanOrEqualTo(self.lengthDecimal, CPTDecimalFromInteger(0) ) ) { newLocation = minimum; newLength = CPTDecimalSubtract(maximum, minimum); } @@ -112,7 +112,7 @@ -(void)intersectionPlotRange:(nullable CPTPlotRange *)other if ( CPTDecimalGreaterThanOrEqualTo(maximum, minimum) ) { NSDecimal newLocation, newLength; - if ( CPTDecimalGreaterThanOrEqualTo( self.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalGreaterThanOrEqualTo(self.lengthDecimal, CPTDecimalFromInteger(0) ) ) { newLocation = minimum; newLength = CPTDecimalSubtract(maximum, minimum); } @@ -140,7 +140,7 @@ -(void)expandRangeByFactor:(nonnull NSNumber *)factor { NSDecimal oldLength = self.lengthDecimal; NSDecimal newLength = CPTDecimalMultiply(oldLength, factor.decimalValue); - NSDecimal locationOffset = CPTDecimalDivide( CPTDecimalSubtract(oldLength, newLength), CPTDecimalFromInteger(2) ); + NSDecimal locationOffset = CPTDecimalDivide(CPTDecimalSubtract(oldLength, newLength), CPTDecimalFromInteger(2) ); NSDecimal newLocation = CPTDecimalAdd(self.locationDecimal, locationOffset); self.locationDecimal = newLocation; diff --git a/framework/Source/CPTNumericData+TypeConversion.m b/framework/Source/CPTNumericData+TypeConversion.m index 2790710ab..d94742162 100644 --- a/framework/Source/CPTNumericData+TypeConversion.m +++ b/framework/Source/CPTNumericData+TypeConversion.m @@ -1,7 +1,7 @@ #import "CPTNumericData+TypeConversion.h" -#import "CPTUtilities.h" #import "complex.h" +#import "CPTUtilities.h" @implementation CPTNumericData(TypeConversion) @@ -29,7 +29,7 @@ -(nonnull CPTNumericData *)dataByConvertingToDataType:(CPTNumericDataType)newDat NSParameterAssert(myDataType.dataTypeFormat != CPTUndefinedDataType); NSParameterAssert(myDataType.byteOrder != CFByteOrderUnknown); - NSParameterAssert( CPTDataTypeIsSupported(newDataType) ); + NSParameterAssert(CPTDataTypeIsSupported(newDataType) ); NSParameterAssert(newDataType.dataTypeFormat != CPTUndefinedDataType); NSParameterAssert(newDataType.byteOrder != CFByteOrderUnknown); @@ -39,7 +39,7 @@ -(nonnull CPTNumericData *)dataByConvertingToDataType:(CPTNumericDataType)newDat if ( CPTDataTypeEqualToDataType(myDataType, newDataType) ) { newData = self.data; } - else if ( ( myDataType.sampleBytes == sizeof(int8_t) ) && ( newDataType.sampleBytes == sizeof(int8_t) ) ) { + else if ( (myDataType.sampleBytes == sizeof(int8_t) ) && (newDataType.sampleBytes == sizeof(int8_t) ) ) { newData = self.data; } else { @@ -105,7 +105,7 @@ case sizeof(int8_t): switch ( destDataType->sampleBytes ) { case sizeof(int8_t): { // int8_t -> int8_t - memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(int8_t) ); + memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(int8_t) ); } break; @@ -281,7 +281,7 @@ case sizeof(int8_t): case sizeof(int16_t): { // int16_t -> int16_t - memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(int16_t) ); + memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(int16_t) ); } break; @@ -457,7 +457,7 @@ case sizeof(int16_t): case sizeof(int32_t): { // int32_t -> int32_t - memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(int32_t) ); + memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(int32_t) ); } break; @@ -633,7 +633,7 @@ case sizeof(int32_t): case sizeof(int64_t): { // int64_t -> int64_t - memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(int64_t) ); + memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(int64_t) ); } break; } @@ -817,7 +817,7 @@ case sizeof(int64_t): switch ( destDataType->sampleBytes ) { case sizeof(uint8_t): { // uint8_t -> uint8_t - memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(uint8_t) ); + memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(uint8_t) ); } break; @@ -993,7 +993,7 @@ case sizeof(uint8_t): case sizeof(uint16_t): { // uint16_t -> uint16_t - memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(uint16_t) ); + memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(uint16_t) ); } break; @@ -1169,7 +1169,7 @@ case sizeof(uint16_t): case sizeof(uint32_t): { // uint32_t -> uint32_t - memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(uint32_t) ); + memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(uint32_t) ); } break; @@ -1345,7 +1345,7 @@ case sizeof(uint32_t): case sizeof(uint64_t): { // uint64_t -> uint64_t - memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(uint64_t) ); + memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(uint64_t) ); } break; } @@ -1529,7 +1529,7 @@ case sizeof(uint64_t): switch ( destDataType->sampleBytes ) { case sizeof(float): { // float -> float - memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(float) ); + memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(float) ); } break; @@ -1705,7 +1705,7 @@ case sizeof(float): case sizeof(double): { // double -> double - memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(double) ); + memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(double) ); } break; } @@ -1889,7 +1889,7 @@ case sizeof(double): switch ( destDataType->sampleBytes ) { case sizeof(float complex): { // float complex -> float complex - memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(float complex) ); + memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(float complex) ); } break; @@ -1914,7 +1914,7 @@ case sizeof(NSDecimal): const float complex *lastSample = fromBytes + sampleCount; NSDecimal *toBytes = (NSDecimal *)destData.mutableBytes; while ( fromBytes < lastSample ) { - *toBytes++ = CPTDecimalFromFloat( crealf(*fromBytes++) ); + *toBytes++ = CPTDecimalFromFloat(crealf(*fromBytes++) ); } } break; @@ -2065,7 +2065,7 @@ case sizeof(float complex): case sizeof(double complex): { // double complex -> double complex - memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(double complex) ); + memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(double complex) ); } break; } @@ -2079,7 +2079,7 @@ case sizeof(NSDecimal): const double complex *lastSample = fromBytes + sampleCount; NSDecimal *toBytes = (NSDecimal *)destData.mutableBytes; while ( fromBytes < lastSample ) { - *toBytes++ = CPTDecimalFromDouble( creal(*fromBytes++) ); + *toBytes++ = CPTDecimalFromDouble(creal(*fromBytes++) ); } } break; @@ -2249,7 +2249,7 @@ case sizeof(double complex): switch ( destDataType->sampleBytes ) { case sizeof(NSDecimal): { // NSDecimal -> NSDecimal - memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(NSDecimal) ); + memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(NSDecimal) ); } break; } diff --git a/framework/Source/CPTNumericData.h b/framework/Source/CPTNumericData.h index 69002469e..0215482fc 100644 --- a/framework/Source/CPTNumericData.h +++ b/framework/Source/CPTNumericData.h @@ -58,7 +58,7 @@ /// @{ -(NSUInteger)sampleIndex:(NSUInteger)idx, ...; -(nullable const void *)samplePointer:(NSUInteger)sample NS_RETURNS_INNER_POINTER; --(nullable const void *)samplePointerAtIndex:(NSUInteger)idx, ...NS_RETURNS_INNER_POINTER; +-(nullable const void *)samplePointerAtIndex:(NSUInteger)idx, ... NS_RETURNS_INNER_POINTER; -(nullable NSNumber *)sampleValue:(NSUInteger)sample; -(nullable NSNumber *)sampleValueAtIndex:(NSUInteger)idx, ...; -(nonnull CPTNumberArray *)sampleArray; diff --git a/framework/Source/CPTNumericData.m b/framework/Source/CPTNumericData.m index 6bdaa640e..15577b42c 100644 --- a/framework/Source/CPTNumericData.m +++ b/framework/Source/CPTNumericData.m @@ -1,10 +1,10 @@ #import "CPTNumericData.h" +#import "complex.h" #import "CPTExceptions.h" #import "CPTMutableNumericData.h" #import "CPTNumericData+TypeConversion.h" #import "CPTUtilities.h" -#import "complex.h" /// @cond @interface CPTNumericData() @@ -418,7 +418,7 @@ -(nonnull instancetype)initWithArray:(nonnull CPTNumberArray *)newData -(nonnull instancetype)init { return [self initWithData:[NSData data] - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) shape:nil]; } @@ -427,7 +427,7 @@ -(void)commonInitWithData:(nonnull NSData *)newData shape:(nullable CPTNumberArray *)shapeArray dataOrder:(CPTDataOrder)order { - NSParameterAssert( CPTDataTypeIsSupported(newDataType) ); + NSParameterAssert(CPTDataTypeIsSupported(newDataType) ); self.data = newData; self.dataType = newDataType; @@ -515,13 +515,13 @@ -(void)setDataType:(CPTNumericDataType)newDataType return; } - NSParameterAssert( CPTDataTypeIsSupported(newDataType) ); + NSParameterAssert(CPTDataTypeIsSupported(newDataType) ); NSParameterAssert(newDataType.dataTypeFormat != CPTUndefinedDataType); NSParameterAssert(newDataType.byteOrder != CFByteOrderUnknown); dataType = newDataType; - if ( ( oldDataType.sampleBytes == sizeof(int8_t) ) && ( newDataType.sampleBytes == sizeof(int8_t) ) ) { + if ( (oldDataType.sampleBytes == sizeof(int8_t) ) && (newDataType.sampleBytes == sizeof(int8_t) ) ) { return; } @@ -582,7 +582,7 @@ -(void)setShape:(nonnull CPTNumberArray *)newShape * dimension of the data buffer, this method returns @ref NSNotFound. **/ -(NSUInteger)sampleIndex:(NSUInteger)idx, ... - { +{ va_list indices; va_start(indices, idx); @@ -669,11 +669,11 @@ case sizeof(double): case CPTComplexFloatingPointDataType: switch ( self.sampleBytes ) { case sizeof(float complex): - result = @( crealf(*(const float complex *)[self samplePointer:sample]) ); + result = @(crealf(*(const float complex *)[self samplePointer:sample]) ); break; case sizeof(double complex): - result = @( creal(*(const double complex *)[self samplePointer:sample]) ); + result = @(creal(*(const double complex *)[self samplePointer:sample]) ); break; } break; @@ -703,7 +703,7 @@ case sizeof(NSDecimal): * @float or @double before being wrapped in an instance of NSNumber. **/ -(NSNumber *)sampleValueAtIndex:(NSUInteger)idx, ... - { +{ NSUInteger newIndex; if ( self.numberOfDimensions > 1 ) { @@ -741,7 +741,7 @@ -(nullable const void *)samplePointer:(NSUInteger)sample * @return A pointer to the sample or @NULL if any of the sample indices are out of bounds. **/ -(nullable const void *)samplePointerAtIndex:(NSUInteger)idx, ... - { +{ NSUInteger newIndex; if ( self.numberOfDimensions > 1 ) { @@ -802,9 +802,9 @@ -(NSUInteger)sampleIndex:(NSUInteger)idx indexList:(va_list)indexList NSUInteger newIndex = 0; if ( numDims > 1 ) { - NSUInteger *dims = calloc( numDims, sizeof(NSUInteger) ); - NSUInteger *dimProducts = calloc( numDims, sizeof(NSUInteger) ); - NSUInteger *indices = calloc( numDims, sizeof(NSUInteger) ); + NSUInteger *dims = calloc(numDims, sizeof(NSUInteger) ); + NSUInteger *dimProducts = calloc(numDims, sizeof(NSUInteger) ); + NSUInteger *indices = calloc(numDims, sizeof(NSUInteger) ); NSUInteger argIndex = 0; indices[0] = idx; @@ -865,7 +865,7 @@ -(NSUInteger)sampleIndex:(NSUInteger)idx indexList:(va_list)indexList -(nonnull NSData *)dataFromArray:(nonnull CPTNumberArray *)newData dataType:(CPTNumericDataType)newDataType { - NSParameterAssert( CPTDataTypeIsSupported(newDataType) ); + NSParameterAssert(CPTDataTypeIsSupported(newDataType) ); NSParameterAssert(newDataType.dataTypeFormat != CPTUndefinedDataType); NSParameterAssert(newDataType.dataTypeFormat != CPTComplexFloatingPointDataType); @@ -1085,7 +1085,7 @@ case sizeof(NSDecimal): // End of code generated with "CPTNumericData+TypeConversions_Generation.py" // ======================================================================== - if ( ( newDataType.byteOrder != CFByteOrderGetCurrent() ) && (newDataType.byteOrder != CFByteOrderUnknown) ) { + if ( (newDataType.byteOrder != CFByteOrderGetCurrent() ) && (newDataType.byteOrder != CFByteOrderUnknown) ) { [self swapByteOrderForData:sampleData sampleSize:newDataType.sampleBytes]; } diff --git a/framework/Source/CPTNumericDataTests.m b/framework/Source/CPTNumericDataTests.m index be2c41a27..3819fa727 100644 --- a/framework/Source/CPTNumericDataTests.m +++ b/framework/Source/CPTNumericDataTests.m @@ -27,7 +27,7 @@ -(void)testNumberOfDimensionsGivesShapeCount NSMutableData *data = [NSMutableData dataWithLength:nElems * sizeof(float)]; CPTNumericData *nd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:shape]; XCTAssertEqual(nd.numberOfDimensions, nd.shape.count, @"numberOfDimensions == shape.count == 3"); @@ -63,7 +63,7 @@ -(void)testIllegalShapeRaisesException NSMutableData *data = [NSMutableData dataWithLength:nElems * sizeof(NSUInteger)]; XCTAssertThrowsSpecificNamed(testData = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTUnsignedIntegerDataType, sizeof(NSUInteger), NSHostByteOrder() ) + dataType:CPTDataType(CPTUnsignedIntegerDataType, sizeof(NSUInteger), NSHostByteOrder() ) shape:shape], NSException, CPTNumericDataException, @@ -94,7 +94,7 @@ -(void)testBytesEqualDataBytes } CPTNumericData *nd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ) + dataType:CPTDataType(CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ) shape:nil]; NSData *expected = data; @@ -113,7 +113,7 @@ -(void)testArchivingRoundTrip } CPTNumericData *nd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; CPTNumericData *nd2 = [self archiveRoundTrip:nd]; @@ -140,7 +140,7 @@ -(void)testKeyedArchivingRoundTrip } CPTNumericData *nd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; CPTNumericData *nd2 = [self archiveRoundTrip:nd]; @@ -167,7 +167,7 @@ -(void)testNumberOfSamplesCorrectForDataType } CPTNumericData *nd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; XCTAssertEqual([nd numberOfSamples], nElems, @"numberOfSamples == nElems"); @@ -180,7 +180,7 @@ -(void)testNumberOfSamplesCorrectForDataType } nd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTIntegerDataType, sizeof(char), NSHostByteOrder() ) + dataType:CPTDataType(CPTIntegerDataType, sizeof(char), NSHostByteOrder() ) shape:nil]; XCTAssertEqual([nd numberOfSamples], nElems, @"numberOfSamples == nElems"); @@ -197,7 +197,7 @@ -(void)testDataTypeAccessorsCorrectForDataType } CPTNumericData *nd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; XCTAssertEqual([nd dataTypeFormat], CPTFloatingPointDataType, @"dataTypeFormat"); @@ -216,7 +216,7 @@ -(void)testConvertTypeConvertsType } CPTNumericData *fd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; CPTNumericData *dd = [fd dataByConvertingToType:CPTFloatingPointDataType @@ -240,7 +240,7 @@ -(void)testSamplePointerCorrect } CPTNumericData *fd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; XCTAssertEqual( ( (const float *)[fd.data bytes] ) + 4, (const float *)[fd samplePointer:4], @"%p,%p", samples + 4, (const float *)[fd samplePointer:4] ); @@ -260,7 +260,7 @@ -(void)testSampleValueCorrect } CPTNumericData *fd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; XCTAssertEqualWithAccuracy([[fd sampleValue:0] doubleValue], sin(0), 0.01, @"sample value"); @@ -280,7 +280,7 @@ -(void)testSampleIndexRowsFirstOrder } CPTNumericData *fd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(NSUInteger), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(NSUInteger), NSHostByteOrder() ) shape:@[@(rows), @(cols)] dataOrder:CPTDataOrderRowsFirst]; @@ -307,7 +307,7 @@ -(void)testSampleIndexColumnsFirstOrder } CPTNumericData *fd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(NSUInteger), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(NSUInteger), NSHostByteOrder() ) shape:@[@(rows), @(cols)] dataOrder:CPTDataOrderColumnsFirst]; diff --git a/framework/Source/CPTNumericDataType.h b/framework/Source/CPTNumericDataType.h index 51d9017bc..b629c7b50 100644 --- a/framework/Source/CPTNumericDataType.h +++ b/framework/Source/CPTNumericDataType.h @@ -26,8 +26,8 @@ typedef NS_ENUM (NSInteger, CPTDataOrder) { **/ typedef struct _CPTNumericDataType { CPTDataTypeFormat dataTypeFormat; ///< Data type format - size_t sampleBytes; ///< Number of bytes in each sample - CFByteOrder byteOrder; ///< Byte order + size_t sampleBytes; ///< Number of bytes in each sample + CFByteOrder byteOrder; ///< Byte order } CPTNumericDataType; diff --git a/framework/Source/CPTNumericDataType.m b/framework/Source/CPTNumericDataType.m index 6ba0daa5a..e2ab630be 100644 --- a/framework/Source/CPTNumericDataType.m +++ b/framework/Source/CPTNumericDataType.m @@ -161,14 +161,14 @@ case sizeof(double): case sizeof(float complex): case sizeof(double complex): // only the native byte order is supported - valid = ( format.byteOrder == CFByteOrderGetCurrent() ); + valid = (format.byteOrder == CFByteOrderGetCurrent() ); break; } break; case CPTDecimalDataType: // only the native byte order is supported - valid = ( format.sampleBytes == sizeof(NSDecimal) ) && ( format.byteOrder == CFByteOrderGetCurrent() ); + valid = (format.sampleBytes == sizeof(NSDecimal) ) && (format.byteOrder == CFByteOrderGetCurrent() ); break; } diff --git a/framework/Source/CPTNumericDataTypeConversionPerformanceTests.m b/framework/Source/CPTNumericDataTypeConversionPerformanceTests.m index e30e9214a..31f5cf21e 100644 --- a/framework/Source/CPTNumericDataTypeConversionPerformanceTests.m +++ b/framework/Source/CPTNumericDataTypeConversionPerformanceTests.m @@ -17,7 +17,7 @@ -(void)testFloatToDoubleConversion } CPTNumericData *floatNumericData = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), CFByteOrderGetCurrent() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), CFByteOrderGetCurrent() ) shape:nil]; __block CPTNumericData *doubleNumericData = nil; @@ -37,7 +37,7 @@ -(void)testDoubleToFloatConversion } CPTNumericData *doubleNumericData = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) shape:nil]; __block CPTNumericData *floatNumericData = nil; @@ -57,7 +57,7 @@ -(void)testIntegerToDoubleConversion } CPTNumericData *integerNumericData = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTIntegerDataType, sizeof(NSInteger), CFByteOrderGetCurrent() ) + dataType:CPTDataType(CPTIntegerDataType, sizeof(NSInteger), CFByteOrderGetCurrent() ) shape:nil]; __block CPTNumericData *doubleNumericData = nil; @@ -77,7 +77,7 @@ -(void)testDoubleToIntegerConversion } CPTNumericData *doubleNumericData = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) shape:nil]; __block CPTNumericData *integerNumericData = nil; diff --git a/framework/Source/CPTNumericDataTypeConversionTests.m b/framework/Source/CPTNumericDataTypeConversionTests.m index 898559d8f..92fafbab3 100644 --- a/framework/Source/CPTNumericDataTypeConversionTests.m +++ b/framework/Source/CPTNumericDataTypeConversionTests.m @@ -18,7 +18,7 @@ -(void)testFloatToDoubleConversion } CPTNumericData *fd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; CPTNumericData *dd = [fd dataByConvertingToType:CPTFloatingPointDataType @@ -41,7 +41,7 @@ -(void)testDoubleToFloatConversion } CPTNumericData *dd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ) shape:nil]; CPTNumericData *fd = [dd dataByConvertingToType:CPTFloatingPointDataType @@ -64,7 +64,7 @@ -(void)testFloatToIntegerConversion } CPTNumericData *fd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; CPTNumericData *intData = [fd dataByConvertingToType:CPTIntegerDataType @@ -87,7 +87,7 @@ -(void)testIntegerToFloatConversion } CPTNumericData *intData = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ) + dataType:CPTDataType(CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ) shape:nil]; CPTNumericData *fd = [intData dataByConvertingToType:CPTFloatingPointDataType @@ -136,11 +136,11 @@ -(void)testDecimalToDoubleConversion NSDecimal *samples = (NSDecimal *)data.mutableBytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - samples[i] = CPTDecimalFromDouble( sin(i) ); + samples[i] = CPTDecimalFromDouble(sin(i) ); } CPTNumericData *decimalData = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTDecimalDataType, sizeof(NSDecimal), NSHostByteOrder() ) + dataType:CPTDataType(CPTDecimalDataType, sizeof(NSDecimal), NSHostByteOrder() ) shape:nil]; CPTNumericData *doubleData = [decimalData dataByConvertingToType:CPTFloatingPointDataType @@ -163,7 +163,7 @@ -(void)testDoubleToDecimalConversion } CPTNumericData *doubleData = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ) shape:nil]; CPTNumericData *decimalData = [doubleData dataByConvertingToType:CPTDecimalDataType @@ -172,7 +172,7 @@ -(void)testDoubleToDecimalConversion const NSDecimal *decimalSamples = (const NSDecimal *)decimalData.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - XCTAssertTrue(CPTDecimalEquals( decimalSamples[i], CPTDecimalFromDouble(samples[i]) ), @"(NSDecimal)%@ != (double)%g", CPTDecimalStringValue(decimalSamples[i]), samples[i]); + XCTAssertTrue(CPTDecimalEquals(decimalSamples[i], CPTDecimalFromDouble(samples[i]) ), @"(NSDecimal)%@ != (double)%g", CPTDecimalStringValue(decimalSamples[i]), samples[i]); } } @@ -196,7 +196,7 @@ -(void)testTypeConversionSwapsByteOrderDouble uint64_t end = *(const uint64_t *)swappedData.bytes; union swap { - double v; + double v; CFSwappedFloat64 sv; } result; @@ -220,7 +220,7 @@ -(void)testRoundTripToDoubleArray for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { samples[i] = sin(i); } - CPTNumericDataType theDataType = CPTDataType( CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ); + CPTNumericDataType theDataType = CPTDataType(CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ); CPTNumericData *doubleData = [[CPTNumericData alloc] initWithData:data dataType:theDataType @@ -248,7 +248,7 @@ -(void)testRoundTripToIntegerArray for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { samples[i] = (NSInteger)(sin(i) * 1000.0); } - CPTNumericDataType theDataType = CPTDataType( CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ); + CPTNumericDataType theDataType = CPTDataType(CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ); CPTNumericData *intData = [[CPTNumericData alloc] initWithData:data dataType:theDataType @@ -274,9 +274,9 @@ -(void)testRoundTripToDecimalArray NSDecimal *samples = (NSDecimal *)data.mutableBytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - samples[i] = CPTDecimalFromDouble( sin(i) ); + samples[i] = CPTDecimalFromDouble(sin(i) ); } - CPTNumericDataType theDataType = CPTDataType( CPTDecimalDataType, sizeof(NSDecimal), NSHostByteOrder() ); + CPTNumericDataType theDataType = CPTDataType(CPTDecimalDataType, sizeof(NSDecimal), NSHostByteOrder() ); CPTNumericData *decimalData = [[CPTNumericData alloc] initWithData:data dataType:theDataType diff --git a/framework/Source/CPTPathExtensions.m b/framework/Source/CPTPathExtensions.m index 91a749b35..62ab59699 100644 --- a/framework/Source/CPTPathExtensions.m +++ b/framework/Source/CPTPathExtensions.m @@ -11,7 +11,7 @@ __nonnull CGPathRef CPTCreateRoundedRectPath(CGRect rect, CGFloat cornerRadius) { if ( cornerRadius > CPTFloat(0.0) ) { - cornerRadius = MIN( MIN( cornerRadius, rect.size.width * CPTFloat(0.5) ), rect.size.height * CPTFloat(0.5) ); + cornerRadius = MIN(MIN(cornerRadius, rect.size.width * CPTFloat(0.5) ), rect.size.height * CPTFloat(0.5) ); // CGPathCreateWithRoundedRect() is available in macOS 10.9 and iOS 7 but not marked in the header file #pragma clang diagnostic push diff --git a/framework/Source/CPTPieChart.m b/framework/Source/CPTPieChart.m index 6d884cc42..c21110217 100644 --- a/framework/Source/CPTPieChart.m +++ b/framework/Source/CPTPieChart.m @@ -160,9 +160,9 @@ @implementation CPTPieChart +(nonnull CPTColor *)defaultPieSliceColorForIndex:(NSUInteger)pieSliceIndex { - return [CPTColor colorWithComponentRed:( colorLookupTable[pieSliceIndex % 10][0] + (CGFloat)(pieSliceIndex / 10) * CPTFloat(0.1) ) - green:( colorLookupTable[pieSliceIndex % 10][1] + (CGFloat)(pieSliceIndex / 10) * CPTFloat(0.1) ) - blue:( colorLookupTable[pieSliceIndex % 10][2] + (CGFloat)(pieSliceIndex / 10) * CPTFloat(0.1) ) + return [CPTColor colorWithComponentRed:(colorLookupTable[pieSliceIndex % 10][0] + (CGFloat)(pieSliceIndex / 10) * CPTFloat(0.1) ) + green:(colorLookupTable[pieSliceIndex % 10][1] + (CGFloat)(pieSliceIndex / 10) * CPTFloat(0.1) ) + blue:(colorLookupTable[pieSliceIndex % 10][2] + (CGFloat)(pieSliceIndex / 10) * CPTFloat(0.1) ) alpha:CPTFloat(1.0)]; } @@ -181,6 +181,7 @@ +(void)initialize [self exposeBinding:CPTPieChartBindingPieSliceRadialOffsets]; } } + #endif /// @endcond @@ -209,7 +210,7 @@ +(void)initialize -(nonnull instancetype)initWithFrame:(CGRect)newFrame { if ( (self = [super initWithFrame:newFrame]) ) { - pieRadius = CPTFloat(0.8) * ( MIN(newFrame.size.width, newFrame.size.height) / CPTFloat(2.0) ); + pieRadius = CPTFloat(0.8) * (MIN(newFrame.size.width, newFrame.size.height) / CPTFloat(2.0) ); pieInnerRadius = CPTFloat(0.0); startAngle = CPTFloat(M_PI_2); // pi/2 endAngle = CPTNAN; @@ -389,7 +390,7 @@ -(void)updateNormalizedData } } - CPTNumericDataType dataType = CPTDataType( CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ); + CPTNumericDataType dataType = CPTDataType(CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ); CPTMutableNumericData *normalizedSliceValues = [[CPTMutableNumericData alloc] initWithData:[NSData data] dataType:dataType shape:nil]; normalizedSliceValues.shape = @[@(sampleCount)]; @@ -426,7 +427,7 @@ -(void)updateNormalizedData } } - CPTNumericDataType dataType = CPTDataType( CPTDecimalDataType, sizeof(NSDecimal), CFByteOrderGetCurrent() ); + CPTNumericDataType dataType = CPTDataType(CPTDecimalDataType, sizeof(NSDecimal), CFByteOrderGetCurrent() ); CPTMutableNumericData *normalizedSliceValues = [[CPTMutableNumericData alloc] initWithData:[NSData data] dataType:dataType shape:nil]; normalizedSliceValues.shape = @[@(sampleCount)]; @@ -606,7 +607,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context if ( overlay && hasNonZeroOffsets ) { CGFloat radius = self.pieRadius + borderStyle.lineWidth * CPTFloat(0.5); - bounds = CPTRectMake( centerPoint.x - radius, centerPoint.y - radius, radius * CPTFloat(2.0), radius * CPTFloat(2.0) ); + bounds = CPTRectMake(centerPoint.x - radius, centerPoint.y - radius, radius * CPTFloat(2.0), radius * CPTFloat(2.0) ); } else { bounds = CGRectZero; @@ -723,7 +724,7 @@ -(CGFloat)radiansForPieSliceValue:(CGFloat)pieSliceValue angle += pieSliceValue * pieRange; break; } - return isnan(endingAngle) ? angle : fmod( angle, CPTFloat(2.0 * M_PI) ); + return isnan(endingAngle) ? angle : fmod(angle, CPTFloat(2.0 * M_PI) ); } -(void)addSliceToPath:(nonnull CGMutablePathRef)slicePath centerPoint:(CGPoint)center startingAngle:(CGFloat)startingAngle finishingAngle:(CGFloat)finishingAngle width:(CGFloat)currentWidth @@ -744,7 +745,7 @@ -(void)addSliceToPath:(nonnull CGMutablePathRef)slicePath centerPoint:(CGPoint)c } else { if ( currentWidth >= CPTFloat(1.0) ) { - CGPathAddEllipseInRect( slicePath, NULL, CGRectMake( center.x - outerRadius, center.y - outerRadius, outerRadius * CPTFloat(2.0), outerRadius * CPTFloat(2.0) ) ); + CGPathAddEllipseInRect(slicePath, NULL, CGRectMake(center.x - outerRadius, center.y - outerRadius, outerRadius * CPTFloat(2.0), outerRadius * CPTFloat(2.0) ) ); } else { CGPathMoveToPoint(slicePath, NULL, center.x, center.y); @@ -952,11 +953,11 @@ -(void)positionLabelAnnotation:(nonnull CPTPlotSpaceAnnotation *)label forIndex: } CGFloat labelAngle = [self radiansForPieSliceValue:startingWidth + currentWidth / CPTFloat(2.0)]; - label.displacement = CPTPointMake( labelRadius * cos(labelAngle), labelRadius * sin(labelAngle) ); + label.displacement = CPTPointMake(labelRadius * cos(labelAngle), labelRadius * sin(labelAngle) ); if ( self.labelRotationRelativeToRadius ) { CGFloat rotation = [self normalizedPosition:self.labelRotation + labelAngle]; - if ( ( rotation > CPTFloat(0.25) ) && ( rotation < CPTFloat(0.75) ) ) { + if ( (rotation > CPTFloat(0.25) ) && (rotation < CPTFloat(0.75) ) ) { rotation -= CPTFloat(0.5); } @@ -1043,7 +1044,7 @@ -(CGFloat)normalizedPosition:(CGFloat)rawPosition CGFloat result = rawPosition; result /= (CGFloat)(2.0 * M_PI); - result = fmod( result, CPTFloat(1.0) ); + result = fmod(result, CPTFloat(1.0) ); if ( result < CPTFloat(0.0) ) { result += CPTFloat(1.0); } @@ -1058,7 +1059,7 @@ -(BOOL)angle:(CGFloat)touchedAngle betweenStartAngle:(CGFloat)startingAngle endA if ( (touchedAngle <= startingAngle) && (touchedAngle >= endingAngle) ) { return YES; } - else if ( ( endingAngle < CPTFloat(0.0) ) && (touchedAngle - CPTFloat(1.0) >= endingAngle) ) { + else if ( (endingAngle < CPTFloat(0.0) ) && (touchedAngle - CPTFloat(1.0) >= endingAngle) ) { return YES; } break; @@ -1067,7 +1068,7 @@ -(BOOL)angle:(CGFloat)touchedAngle betweenStartAngle:(CGFloat)startingAngle endA if ( (touchedAngle >= startingAngle) && (touchedAngle <= endingAngle) ) { return YES; } - else if ( ( endingAngle > CPTFloat(1.0) ) && (touchedAngle + CPTFloat(1.0) <= endingAngle) ) { + else if ( (endingAngle > CPTFloat(1.0) ) && (touchedAngle + CPTFloat(1.0) <= endingAngle) ) { return YES; } break; @@ -1259,11 +1260,11 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point switch ( self.sliceDirection ) { case CPTPieDirectionClockwise: - if ( isnan(theEndAngle) || ( CPTFloat(2.0 * M_PI) == ABS(theEndAngle - theStartAngle) ) ) { + if ( isnan(theEndAngle) || (CPTFloat(2.0 * M_PI) == ABS(theEndAngle - theStartAngle) ) ) { widthFactor = CPTFloat(1.0); } else { - widthFactor = CPTFloat(2.0 * M_PI) / ( CPTFloat(2.0 * M_PI) - ABS(theEndAngle - theStartAngle) ); + widthFactor = CPTFloat(2.0 * M_PI) / (CPTFloat(2.0 * M_PI) - ABS(theEndAngle - theStartAngle) ); } for ( NSUInteger currentIndex = 0; currentIndex < sampleCount; currentIndex++ ) { diff --git a/framework/Source/CPTPlot.h b/framework/Source/CPTPlot.h index 5a5e87fc3..7e4b8a4de 100644 --- a/framework/Source/CPTPlot.h +++ b/framework/Source/CPTPlot.h @@ -332,9 +332,9 @@ typedef NSMutableArray<__kindof CPTPlot *> CPTMutablePlotArray; -(void)reloadDataInIndexRange:(NSRange)indexRange; -(void)insertDataAtIndex:(NSUInteger)idx numberOfRecords:(NSUInteger)numberOfRecords; -(void)deleteDataInIndexRange:(NSRange)indexRange; --(void)reloadPlotData NS_SWIFT_NAME( CPTPlot.reloadPlotData() ); +-(void)reloadPlotData NS_SWIFT_NAME(CPTPlot.reloadPlotData() ); --(void)reloadPlotDataInIndexRange:(NSRange)indexRange NS_SWIFT_NAME( CPTPlot.reloadPlotData(inIndexRange:) ); +-(void)reloadPlotDataInIndexRange:(NSRange)indexRange NS_SWIFT_NAME(CPTPlot.reloadPlotData(inIndexRange:) ); /// @} diff --git a/framework/Source/CPTPlot.m b/framework/Source/CPTPlot.m index 2a92fa6a7..590ad66be 100644 --- a/framework/Source/CPTPlot.m +++ b/framework/Source/CPTPlot.m @@ -255,6 +255,7 @@ +(void)initialize [self exposeBinding:CPTPlotBindingDataLabels]; } } + #endif /// @endcond @@ -1191,7 +1192,7 @@ -(nonnull CPTMutableNumericData *)numericDataForNumbers:(nonnull id)numbers if ( ( (CPTNumberArray *)numbers ).count == 0 ) { loadedDataType = self.doubleDataType; } - else if ( [( (NSArray < NSNumber * > *)numbers )[0] isKindOfClass:[NSDecimalNumber class]] ) { + else if ( [( (NSArray *)numbers )[0] isKindOfClass:[NSDecimalNumber class]] ) { loadedDataType = self.decimalDataType; } else { @@ -1357,7 +1358,7 @@ -(CPTNumericDataType)doubleDataType static dispatch_once_t onceToken = 0; dispatch_once(&onceToken, ^{ - dataType = CPTDataType( CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ); + dataType = CPTDataType(CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ); }); return dataType; @@ -1369,7 +1370,7 @@ -(CPTNumericDataType)decimalDataType static dispatch_once_t onceToken = 0; dispatch_once(&onceToken, ^{ - dataType = CPTDataType( CPTDecimalDataType, sizeof(NSDecimal), CFByteOrderGetCurrent() ); + dataType = CPTDataType(CPTDecimalDataType, sizeof(NSDecimal), CFByteOrderGetCurrent() ); }); return dataType; @@ -1755,7 +1756,7 @@ -(void)updateContentAnchorForLabel:(nonnull CPTPlotSpaceAnnotation *)label newAnchorX = signbit(newAnchorX) ? CPTFloat(-1.0) : CPTFloat(1.0); } - label.contentAnchorPoint = CPTPointMake( ( newAnchorX + CPTFloat(1.0) ) / CPTFloat(2.0), ( newAnchorY + CPTFloat(1.0) ) / CPTFloat(2.0) ); + label.contentAnchorPoint = CPTPointMake( (newAnchorX + CPTFloat(1.0) ) / CPTFloat(2.0), (newAnchorY + CPTFloat(1.0) ) / CPTFloat(2.0) ); } } diff --git a/framework/Source/CPTPlotArea.m b/framework/Source/CPTPlotArea.m index 7263da862..e3ff1f1a5 100644 --- a/framework/Source/CPTPlotArea.m +++ b/framework/Source/CPTPlotArea.m @@ -162,7 +162,7 @@ -(nonnull instancetype)initWithFrame:(CGRect)newFrame fill = nil; touchedPoint = CPTPointMake(NAN, NAN); topDownLayerOrder = nil; - bottomUpLayerOrder = malloc( kCPTNumberOfLayers * sizeof(CPTGraphLayerType) ); + bottomUpLayerOrder = malloc(kCPTNumberOfLayers * sizeof(CPTGraphLayerType) ); [self updateLayerOrder]; CPTPlotGroup *newPlotGroup = [[CPTPlotGroup alloc] initWithFrame:newFrame]; @@ -195,8 +195,8 @@ -(nonnull instancetype)initWithLayer:(nonnull id)layer fill = theLayer->fill; touchedPoint = theLayer->touchedPoint; topDownLayerOrder = theLayer->topDownLayerOrder; - bottomUpLayerOrder = malloc( kCPTNumberOfLayers * sizeof(CPTGraphLayerType) ); - memcpy( bottomUpLayerOrder, theLayer->bottomUpLayerOrder, kCPTNumberOfLayers * sizeof(CPTGraphLayerType) ); + bottomUpLayerOrder = malloc(kCPTNumberOfLayers * sizeof(CPTGraphLayerType) ); + memcpy(bottomUpLayerOrder, theLayer->bottomUpLayerOrder, kCPTNumberOfLayers * sizeof(CPTGraphLayerType) ); widthDecimal = theLayer->widthDecimal; heightDecimal = theLayer->heightDecimal; } @@ -256,7 +256,7 @@ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder topDownLayerOrder = [coder decodeObjectOfClasses:[NSSet setWithArray:@[[NSArray class], [NSNumber class]]] forKey:@"CPTPlotArea.topDownLayerOrder"]; - bottomUpLayerOrder = malloc( kCPTNumberOfLayers * sizeof(CPTGraphLayerType) ); + bottomUpLayerOrder = malloc(kCPTNumberOfLayers * sizeof(CPTGraphLayerType) ); [self updateLayerOrder]; touchedPoint = CPTPointMake(NAN, NAN); diff --git a/framework/Source/CPTPlotRange.m b/framework/Source/CPTPlotRange.m index df3932021..ef2e047d1 100644 --- a/framework/Source/CPTPlotRange.m +++ b/framework/Source/CPTPlotRange.m @@ -276,7 +276,7 @@ -(NSDecimal)minLimitDecimal NSDecimal loc = self.locationDecimal; NSDecimal len = self.lengthDecimal; - if ( CPTDecimalLessThan( len, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalLessThan(len, CPTDecimalFromInteger(0) ) ) { return CPTDecimalAdd(loc, len); } else { @@ -304,7 +304,7 @@ -(NSNumber *)midPoint -(NSDecimal)midPointDecimal { - return CPTDecimalAdd( self.locationDecimal, CPTDecimalDivide( self.lengthDecimal, CPTDecimalFromInteger(2) ) ); + return CPTDecimalAdd(self.locationDecimal, CPTDecimalDivide(self.lengthDecimal, CPTDecimalFromInteger(2) ) ); } -(double)midPointDouble @@ -322,7 +322,7 @@ -(NSDecimal)maxLimitDecimal NSDecimal loc = self.locationDecimal; NSDecimal len = self.lengthDecimal; - if ( CPTDecimalGreaterThan( len, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalGreaterThan(len, CPTDecimalFromInteger(0) ) ) { return CPTDecimalAdd(loc, len); } else { diff --git a/framework/Source/CPTPlotRangeTests.m b/framework/Source/CPTPlotRangeTests.m index 0701a3d48..bb32866c2 100644 --- a/framework/Source/CPTPlotRangeTests.m +++ b/framework/Source/CPTPlotRangeTests.m @@ -423,11 +423,11 @@ -(void)checkRangeWithLocation:(double)loc length:(double)len NSDecimal newLocation = self.plotRange.locationDecimal; errMessage = [NSString stringWithFormat:@"expected location = %g, was %@", loc, NSDecimalString(&newLocation, nil)]; - XCTAssertTrue(CPTDecimalEquals( newLocation, CPTDecimalFromDouble(loc) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals(newLocation, CPTDecimalFromDouble(loc) ), @"%@", errMessage); NSDecimal newLength = self.plotRange.lengthDecimal; errMessage = [NSString stringWithFormat:@"expected location = %g, was %@", loc, NSDecimalString(&newLength, nil)]; - XCTAssertTrue(CPTDecimalEquals( newLength, CPTDecimalFromDouble(len) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals(newLength, CPTDecimalFromDouble(len) ), @"%@", errMessage); } @end diff --git a/framework/Source/CPTPlotSpace.m b/framework/Source/CPTPlotSpace.m index e6a518d9b..628d25555 100644 --- a/framework/Source/CPTPlotSpace.m +++ b/framework/Source/CPTPlotSpace.m @@ -481,6 +481,7 @@ -(BOOL)scrollWheelEvent:(nonnull CPTNativeEvent *)event fromPoint:(CGPoint)fromP } return handledByDelegate; } + #endif /// @} @@ -665,7 +666,7 @@ -(void)scaleToFitPlots:(nullable CPTPlotArray *)plots forCoordinate:(CPTCoordina // Set range if ( unionRange ) { - if ( CPTDecimalEquals( unionRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalEquals(unionRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { [unionRange unionPlotRange:[self plotRangeForCoordinate:coordinate]]; } [self setPlotRange:unionRange forCoordinate:coordinate]; @@ -701,7 +702,7 @@ -(void)scaleToFitEntirePlots:(nullable CPTPlotArray *)plots forCoordinate:(CPTCo // Set range if ( unionRange ) { - if ( CPTDecimalEquals( unionRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalEquals(unionRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { [unionRange unionPlotRange:[self plotRangeForCoordinate:coordinate]]; } [self setPlotRange:unionRange forCoordinate:coordinate]; diff --git a/framework/Source/CPTPlotSpaceAnnotation.m b/framework/Source/CPTPlotSpaceAnnotation.m index 9cebb758b..ef9ab788b 100644 --- a/framework/Source/CPTPlotSpaceAnnotation.m +++ b/framework/Source/CPTPlotSpaceAnnotation.m @@ -175,7 +175,7 @@ -(void)positionContentLayer content.anchorPoint = self.contentAnchorPoint; content.position = newPosition; - content.transform = CATransform3DMakeRotation( self.rotation, CPTFloat(0.0), CPTFloat(0.0), CPTFloat(1.0) ); + content.transform = CATransform3DMakeRotation(self.rotation, CPTFloat(0.0), CPTFloat(0.0), CPTFloat(1.0) ); [content pixelAlign]; } } diff --git a/framework/Source/CPTPlotSymbol.m b/framework/Source/CPTPlotSymbol.m index b37dd0359..d8b603043 100644 --- a/framework/Source/CPTPlotSymbol.m +++ b/framework/Source/CPTPlotSymbol.m @@ -488,7 +488,7 @@ -(void)renderInContext:(nonnull CGContextRef)context atPoint:(CGPoint)center sca CGContextRef layerContext = CGLayerGetContext(newLayer); [self renderAsVectorInContext:layerContext - atPoint:CPTPointMake( layerSize.width * CPTFloat(0.5), layerSize.height * CPTFloat(0.5) ) + atPoint:CPTPointMake(layerSize.width * CPTFloat(0.5), layerSize.height * CPTFloat(0.5) ) scale:scale]; self.cachedLayer = newLayer; @@ -507,8 +507,8 @@ -(void)renderInContext:(nonnull CGContextRef)context atPoint:(CGPoint)center sca CGSize symbolSize = self.size; - CGPoint origin = CPTPointMake( center.x - layerSize.width * CPTFloat(0.5) - symbolSize.width * ( symbolAnchor.x - CPTFloat(0.5) ), - center.y - layerSize.height * CPTFloat(0.5) - symbolSize.height * ( symbolAnchor.y - CPTFloat(0.5) ) ); + CGPoint origin = CPTPointMake(center.x - layerSize.width * CPTFloat(0.5) - symbolSize.width * (symbolAnchor.x - CPTFloat(0.5) ), + center.y - layerSize.height * CPTFloat(0.5) - symbolSize.height * (symbolAnchor.y - CPTFloat(0.5) ) ); if ( alignToPixels ) { if ( scale == CPTFloat(1.0) ) { @@ -599,12 +599,12 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context atPoint:(CGPoint)ce CPTShadow *myShadow = self.shadow; CGContextSaveGState(context); - CGContextTranslateCTM(context, center.x + ( symbolAnchor.x - CPTFloat(0.5) ) * symbolSize.width, center.y + ( symbolAnchor.y - CPTFloat(0.5) ) * symbolSize.height); + CGContextTranslateCTM(context, center.x + (symbolAnchor.x - CPTFloat(0.5) ) * symbolSize.width, center.y + (symbolAnchor.y - CPTFloat(0.5) ) * symbolSize.height); CGContextScaleCTM(context, scale, scale); [myShadow setShadowInContext:context]; // redraw only symbol rectangle - CGSize halfSize = CPTSizeMake( symbolSize.width * CPTFloat(0.5), symbolSize.height * CPTFloat(0.5) ); + CGSize halfSize = CPTSizeMake(symbolSize.width * CPTFloat(0.5), symbolSize.height * CPTFloat(0.5) ); CGRect bounds = CPTRectMake(-halfSize.width, -halfSize.height, symbolSize.width, symbolSize.height); CGRect symbolRect = bounds; @@ -612,7 +612,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context atPoint:(CGPoint)ce if ( myShadow ) { CGFloat shadowRadius = myShadow.shadowBlurRadius; CGSize shadowOffset = myShadow.shadowOffset; - symbolRect = CGRectInset( symbolRect, -( ABS(shadowOffset.width) + ABS(shadowRadius) ), -( ABS(shadowOffset.height) + ABS(shadowRadius) ) ); + symbolRect = CGRectInset(symbolRect, -(ABS(shadowOffset.width) + ABS(shadowRadius) ), -(ABS(shadowOffset.height) + ABS(shadowRadius) ) ); } if ( theLineStyle ) { CGFloat lineWidth = ABS(theLineStyle.lineWidth); @@ -666,7 +666,7 @@ -(nonnull CGPathRef)newSymbolPath { CGFloat dx, dy; CGSize symbolSize = self.size; - CGSize halfSize = CPTSizeMake( symbolSize.width * CPTFloat(0.5), symbolSize.height * CPTFloat(0.5) ); + CGSize halfSize = CPTSizeMake(symbolSize.width * CPTFloat(0.5), symbolSize.height * CPTFloat(0.5) ); CGMutablePathRef symbolPath = CGPathCreateMutable(); @@ -676,11 +676,11 @@ -(nonnull CGPathRef)newSymbolPath break; case CPTPlotSymbolTypeRectangle: - CGPathAddRect( symbolPath, NULL, CPTRectMake(-halfSize.width, -halfSize.height, symbolSize.width, symbolSize.height) ); + CGPathAddRect(symbolPath, NULL, CPTRectMake(-halfSize.width, -halfSize.height, symbolSize.width, symbolSize.height) ); break; case CPTPlotSymbolTypeEllipse: - CGPathAddEllipseInRect( symbolPath, NULL, CPTRectMake(-halfSize.width, -halfSize.height, symbolSize.width, symbolSize.height) ); + CGPathAddEllipseInRect(symbolPath, NULL, CPTRectMake(-halfSize.width, -halfSize.height, symbolSize.width, symbolSize.height) ); break; case CPTPlotSymbolTypeCross: @@ -693,38 +693,38 @@ -(nonnull CGPathRef)newSymbolPath case CPTPlotSymbolTypePlus: CGPathMoveToPoint(symbolPath, NULL, CPTFloat(0.0), halfSize.height); CGPathAddLineToPoint(symbolPath, NULL, CPTFloat(0.0), -halfSize.height); - CGPathMoveToPoint( symbolPath, NULL, -halfSize.width, CPTFloat(0.0) ); - CGPathAddLineToPoint( symbolPath, NULL, halfSize.width, CPTFloat(0.0) ); + CGPathMoveToPoint(symbolPath, NULL, -halfSize.width, CPTFloat(0.0) ); + CGPathAddLineToPoint(symbolPath, NULL, halfSize.width, CPTFloat(0.0) ); break; case CPTPlotSymbolTypePentagon: CGPathMoveToPoint(symbolPath, NULL, CPTFloat(0.0), halfSize.height); - CGPathAddLineToPoint( symbolPath, NULL, halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); - CGPathAddLineToPoint( symbolPath, NULL, halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); - CGPathAddLineToPoint( symbolPath, NULL, -halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); - CGPathAddLineToPoint( symbolPath, NULL, -halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); + CGPathAddLineToPoint(symbolPath, NULL, halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); + CGPathAddLineToPoint(symbolPath, NULL, halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); + CGPathAddLineToPoint(symbolPath, NULL, -halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); + CGPathAddLineToPoint(symbolPath, NULL, -halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); CGPathCloseSubpath(symbolPath); break; case CPTPlotSymbolTypeStar: CGPathMoveToPoint(symbolPath, NULL, CPTFloat(0.0), halfSize.height); - CGPathAddLineToPoint( symbolPath, NULL, halfSize.width * CPTFloat(0.22451398829), halfSize.height * CPTFloat(0.30901699437) ); - CGPathAddLineToPoint( symbolPath, NULL, halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); - CGPathAddLineToPoint( symbolPath, NULL, halfSize.width * CPTFloat(0.36327126400), -halfSize.height * CPTFloat(0.11803398875) ); - CGPathAddLineToPoint( symbolPath, NULL, halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); - CGPathAddLineToPoint( symbolPath, NULL, CPTFloat(0.0), -halfSize.height * CPTFloat(0.38196601125) ); - CGPathAddLineToPoint( symbolPath, NULL, -halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); - CGPathAddLineToPoint( symbolPath, NULL, -halfSize.width * CPTFloat(0.36327126400), -halfSize.height * CPTFloat(0.11803398875) ); - CGPathAddLineToPoint( symbolPath, NULL, -halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); - CGPathAddLineToPoint( symbolPath, NULL, -halfSize.width * CPTFloat(0.22451398829), halfSize.height * CPTFloat(0.30901699437) ); + CGPathAddLineToPoint(symbolPath, NULL, halfSize.width * CPTFloat(0.22451398829), halfSize.height * CPTFloat(0.30901699437) ); + CGPathAddLineToPoint(symbolPath, NULL, halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); + CGPathAddLineToPoint(symbolPath, NULL, halfSize.width * CPTFloat(0.36327126400), -halfSize.height * CPTFloat(0.11803398875) ); + CGPathAddLineToPoint(symbolPath, NULL, halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); + CGPathAddLineToPoint(symbolPath, NULL, CPTFloat(0.0), -halfSize.height * CPTFloat(0.38196601125) ); + CGPathAddLineToPoint(symbolPath, NULL, -halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); + CGPathAddLineToPoint(symbolPath, NULL, -halfSize.width * CPTFloat(0.36327126400), -halfSize.height * CPTFloat(0.11803398875) ); + CGPathAddLineToPoint(symbolPath, NULL, -halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); + CGPathAddLineToPoint(symbolPath, NULL, -halfSize.width * CPTFloat(0.22451398829), halfSize.height * CPTFloat(0.30901699437) ); CGPathCloseSubpath(symbolPath); break; case CPTPlotSymbolTypeDiamond: CGPathMoveToPoint(symbolPath, NULL, CPTFloat(0.0), halfSize.height); - CGPathAddLineToPoint( symbolPath, NULL, halfSize.width, CPTFloat(0.0) ); + CGPathAddLineToPoint(symbolPath, NULL, halfSize.width, CPTFloat(0.0) ); CGPathAddLineToPoint(symbolPath, NULL, CPTFloat(0.0), -halfSize.height); - CGPathAddLineToPoint( symbolPath, NULL, -halfSize.width, CPTFloat(0.0) ); + CGPathAddLineToPoint(symbolPath, NULL, -halfSize.width, CPTFloat(0.0) ); CGPathCloseSubpath(symbolPath); break; @@ -739,8 +739,8 @@ -(nonnull CGPathRef)newSymbolPath break; case CPTPlotSymbolTypeDash: - CGPathMoveToPoint( symbolPath, NULL, halfSize.width, CPTFloat(0.0) ); - CGPathAddLineToPoint( symbolPath, NULL, -halfSize.width, CPTFloat(0.0) ); + CGPathMoveToPoint(symbolPath, NULL, halfSize.width, CPTFloat(0.0) ); + CGPathAddLineToPoint(symbolPath, NULL, -halfSize.width, CPTFloat(0.0) ); break; case CPTPlotSymbolTypeHexagon: @@ -777,8 +777,8 @@ -(nonnull CGPathRef)newSymbolPath CGFloat dy1 = symbolSize.height / oldBounds.size.height; CGAffineTransform scaleTransform = CGAffineTransformScale(CGAffineTransformIdentity, dx1, dy1); - scaleTransform = CGAffineTransformConcat( scaleTransform, - CGAffineTransformMakeTranslation(-halfSize.width, -halfSize.height) ); + scaleTransform = CGAffineTransformConcat(scaleTransform, + CGAffineTransformMakeTranslation(-halfSize.width, -halfSize.height) ); CGPathAddPath(symbolPath, &scaleTransform, customPath); } } @@ -808,7 +808,7 @@ -(nullable id)debugQuickLookObject self.anchorPoint = CPTPointMake(0.5, 0.5); - [self renderAsVectorInContext:context atPoint:CGPointMake( CGRectGetMidX(bounds), CGRectGetMidY(bounds) ) scale:scale]; + [self renderAsVectorInContext:context atPoint:CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds) ) scale:scale]; self.anchorPoint = symbolAnchor; }); diff --git a/framework/Source/CPTRangePlot.m b/framework/Source/CPTRangePlot.m index 8f40b597a..0c11453da 100644 --- a/framework/Source/CPTRangePlot.m +++ b/framework/Source/CPTRangePlot.m @@ -152,6 +152,7 @@ +(void)initialize [self exposeBinding:CPTRangePlotBindingBarLineStyles]; } } + #endif /// @endcond @@ -273,9 +274,9 @@ -(void)calculatePointsToDraw:(nonnull BOOL *)pointDrawFlags numberOfPoints:(NSUI } } else { - CPTPlotRangeComparisonResult *xRangeFlags = malloc( dataCount * sizeof(CPTPlotRangeComparisonResult) ); - CPTPlotRangeComparisonResult *yRangeFlags = malloc( dataCount * sizeof(CPTPlotRangeComparisonResult) ); - BOOL *nanFlags = malloc( dataCount * sizeof(BOOL) ); + CPTPlotRangeComparisonResult *xRangeFlags = malloc(dataCount * sizeof(CPTPlotRangeComparisonResult) ); + CPTPlotRangeComparisonResult *yRangeFlags = malloc(dataCount * sizeof(CPTPlotRangeComparisonResult) ); + BOOL *nanFlags = malloc(dataCount * sizeof(BOOL) ); CPTPlotRange *xRange = xyPlotSpace.xRange; CPTPlotRange *yRange = xyPlotSpace.yRange; @@ -291,7 +292,7 @@ -(void)calculatePointsToDraw:(nonnull BOOL *)pointDrawFlags numberOfPoints:(NSUI xRangeFlags[i] = [xRange compareToDouble:x]; yRangeFlags[i] = [yRange compareToDouble:y]; - nanFlags[i] = isnan(x) || isnan(y); + nanFlags[i] = isnan(x) || isnan(y); }); } else { @@ -304,7 +305,7 @@ -(void)calculatePointsToDraw:(nonnull BOOL *)pointDrawFlags numberOfPoints:(NSUI xRangeFlags[i] = [xRange compareToDecimal:x]; yRangeFlags[i] = [yRange compareToDecimal:y]; - nanFlags[i] = NSDecimalIsNotANumber(&x); + nanFlags[i] = NSDecimalIsNotANumber(&x); }); } @@ -336,11 +337,11 @@ -(void)calculateViewPoints:(nonnull CGPointError *)viewPoints withDrawPointFlags const double *rightBytes = (const double *)[self cachedNumbersForField:CPTRangePlotFieldRight].data.bytes; dispatch_apply(dataCount, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(size_t i) { - const double x = xBytes[i]; - const double y = yBytes[i]; - const double high = highBytes[i]; - const double low = lowBytes[i]; - const double left = leftBytes[i]; + const double x = xBytes[i]; + const double y = yBytes[i]; + const double high = highBytes[i]; + const double low = lowBytes[i]; + const double left = leftBytes[i]; const double right = rightBytes[i]; if ( !drawPointFlags[i] || isnan(x) || isnan(y) ) { viewPoints[i].x = CPTNAN; // depending coordinates @@ -356,23 +357,23 @@ -(void)calculateViewPoints:(nonnull CGPointError *)viewPoints withDrawPointFlags plotPoint[CPTCoordinateX] = x; plotPoint[CPTCoordinateY] = y + high; - pos = [thePlotSpace plotAreaViewPointForDoublePrecisionPlotPoint:plotPoint numberOfCoordinates:2]; - viewPoints[i].high = pos.y; + pos = [thePlotSpace plotAreaViewPointForDoublePrecisionPlotPoint:plotPoint numberOfCoordinates:2]; + viewPoints[i].high = pos.y; plotPoint[CPTCoordinateX] = x; plotPoint[CPTCoordinateY] = y - low; - pos = [thePlotSpace plotAreaViewPointForDoublePrecisionPlotPoint:plotPoint numberOfCoordinates:2]; - viewPoints[i].low = pos.y; + pos = [thePlotSpace plotAreaViewPointForDoublePrecisionPlotPoint:plotPoint numberOfCoordinates:2]; + viewPoints[i].low = pos.y; plotPoint[CPTCoordinateX] = x - left; plotPoint[CPTCoordinateY] = y; - pos = [thePlotSpace plotAreaViewPointForDoublePrecisionPlotPoint:plotPoint numberOfCoordinates:2]; - viewPoints[i].left = pos.x; + pos = [thePlotSpace plotAreaViewPointForDoublePrecisionPlotPoint:plotPoint numberOfCoordinates:2]; + viewPoints[i].left = pos.x; plotPoint[CPTCoordinateX] = x + right; plotPoint[CPTCoordinateY] = y; - pos = [thePlotSpace plotAreaViewPointForDoublePrecisionPlotPoint:plotPoint numberOfCoordinates:2]; - viewPoints[i].right = pos.x; + pos = [thePlotSpace plotAreaViewPointForDoublePrecisionPlotPoint:plotPoint numberOfCoordinates:2]; + viewPoints[i].right = pos.x; } }); } @@ -385,11 +386,11 @@ -(void)calculateViewPoints:(nonnull CGPointError *)viewPoints withDrawPointFlags const NSDecimal *rightBytes = (const NSDecimal *)[self cachedNumbersForField:CPTRangePlotFieldRight].data.bytes; dispatch_apply(dataCount, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(size_t i) { - const NSDecimal x = xBytes[i]; - const NSDecimal y = yBytes[i]; - const NSDecimal high = highBytes[i]; - const NSDecimal low = lowBytes[i]; - const NSDecimal left = leftBytes[i]; + const NSDecimal x = xBytes[i]; + const NSDecimal y = yBytes[i]; + const NSDecimal high = highBytes[i]; + const NSDecimal low = lowBytes[i]; + const NSDecimal left = leftBytes[i]; const NSDecimal right = rightBytes[i]; if ( !drawPointFlags[i] || NSDecimalIsNotANumber(&x) || NSDecimalIsNotANumber(&y) ) { @@ -409,8 +410,8 @@ -(void)calculateViewPoints:(nonnull CGPointError *)viewPoints withDrawPointFlags NSDecimal yh; NSDecimalAdd(&yh, &y, &high, NSRoundPlain); plotPoint[CPTCoordinateY] = yh; - pos = [thePlotSpace plotAreaViewPointForPlotPoint:plotPoint numberOfCoordinates:2]; - viewPoints[i].high = pos.y; + pos = [thePlotSpace plotAreaViewPointForPlotPoint:plotPoint numberOfCoordinates:2]; + viewPoints[i].high = pos.y; } else { viewPoints[i].high = CPTNAN; @@ -421,8 +422,8 @@ -(void)calculateViewPoints:(nonnull CGPointError *)viewPoints withDrawPointFlags NSDecimal yl; NSDecimalSubtract(&yl, &y, &low, NSRoundPlain); plotPoint[CPTCoordinateY] = yl; - pos = [thePlotSpace plotAreaViewPointForPlotPoint:plotPoint numberOfCoordinates:2]; - viewPoints[i].low = pos.y; + pos = [thePlotSpace plotAreaViewPointForPlotPoint:plotPoint numberOfCoordinates:2]; + viewPoints[i].low = pos.y; } else { viewPoints[i].low = CPTNAN; @@ -433,8 +434,8 @@ -(void)calculateViewPoints:(nonnull CGPointError *)viewPoints withDrawPointFlags NSDecimalSubtract(&xl, &x, &left, NSRoundPlain); plotPoint[CPTCoordinateX] = xl; plotPoint[CPTCoordinateY] = y; - pos = [thePlotSpace plotAreaViewPointForPlotPoint:plotPoint numberOfCoordinates:2]; - viewPoints[i].left = pos.x; + pos = [thePlotSpace plotAreaViewPointForPlotPoint:plotPoint numberOfCoordinates:2]; + viewPoints[i].left = pos.x; } else { viewPoints[i].left = CPTNAN; @@ -444,8 +445,8 @@ -(void)calculateViewPoints:(nonnull CGPointError *)viewPoints withDrawPointFlags NSDecimalAdd(&xr, &x, &right, NSRoundPlain); plotPoint[CPTCoordinateX] = xr; plotPoint[CPTCoordinateY] = y; - pos = [thePlotSpace plotAreaViewPointForPlotPoint:plotPoint numberOfCoordinates:2]; - viewPoints[i].right = pos.x; + pos = [thePlotSpace plotAreaViewPointForPlotPoint:plotPoint numberOfCoordinates:2]; + viewPoints[i].right = pos.x; } else { viewPoints[i].right = CPTNAN; @@ -462,19 +463,19 @@ -(void)alignViewPointsToUserSpace:(nonnull CGPointError *)viewPoints withContext if ( self.barLineStyle.lineWidth > CPTFloat(0.0) ) { dispatch_apply(dataCount, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(size_t i) { if ( drawPointFlags[i] ) { - CGFloat x = viewPoints[i].x; - CGFloat y = viewPoints[i].y; - CGPoint pos = CPTAlignPointToUserSpace( context, CPTPointMake(viewPoints[i].x, viewPoints[i].y) ); + CGFloat x = viewPoints[i].x; + CGFloat y = viewPoints[i].y; + CGPoint pos = CPTAlignPointToUserSpace(context, CPTPointMake(viewPoints[i].x, viewPoints[i].y) ); viewPoints[i].x = pos.x; viewPoints[i].y = pos.y; - pos = CPTAlignPointToUserSpace( context, CPTPointMake(x, viewPoints[i].high) ); - viewPoints[i].high = pos.y; - pos = CPTAlignPointToUserSpace( context, CPTPointMake(x, viewPoints[i].low) ); - viewPoints[i].low = pos.y; - pos = CPTAlignPointToUserSpace( context, CPTPointMake(viewPoints[i].left, y) ); - viewPoints[i].left = pos.x; - pos = CPTAlignPointToUserSpace( context, CPTPointMake(viewPoints[i].right, y) ); + pos = CPTAlignPointToUserSpace(context, CPTPointMake(x, viewPoints[i].high) ); + viewPoints[i].high = pos.y; + pos = CPTAlignPointToUserSpace(context, CPTPointMake(x, viewPoints[i].low) ); + viewPoints[i].low = pos.y; + pos = CPTAlignPointToUserSpace(context, CPTPointMake(viewPoints[i].left, y) ); + viewPoints[i].left = pos.x; + pos = CPTAlignPointToUserSpace(context, CPTPointMake(viewPoints[i].right, y) ); viewPoints[i].right = pos.x; } }); @@ -482,19 +483,19 @@ -(void)alignViewPointsToUserSpace:(nonnull CGPointError *)viewPoints withContext else { dispatch_apply(dataCount, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(size_t i) { if ( drawPointFlags[i] ) { - CGFloat x = viewPoints[i].x; - CGFloat y = viewPoints[i].y; - CGPoint pos = CPTAlignIntegralPointToUserSpace( context, CPTPointMake(viewPoints[i].x, viewPoints[i].y) ); + CGFloat x = viewPoints[i].x; + CGFloat y = viewPoints[i].y; + CGPoint pos = CPTAlignIntegralPointToUserSpace(context, CPTPointMake(viewPoints[i].x, viewPoints[i].y) ); viewPoints[i].x = pos.x; viewPoints[i].y = pos.y; - pos = CPTAlignIntegralPointToUserSpace( context, CPTPointMake(x, viewPoints[i].high) ); - viewPoints[i].high = pos.y; - pos = CPTAlignIntegralPointToUserSpace( context, CPTPointMake(x, viewPoints[i].low) ); - viewPoints[i].low = pos.y; - pos = CPTAlignIntegralPointToUserSpace( context, CPTPointMake(viewPoints[i].left, y) ); - viewPoints[i].left = pos.x; - pos = CPTAlignIntegralPointToUserSpace( context, CPTPointMake(viewPoints[i].right, y) ); + pos = CPTAlignIntegralPointToUserSpace(context, CPTPointMake(x, viewPoints[i].high) ); + viewPoints[i].high = pos.y; + pos = CPTAlignIntegralPointToUserSpace(context, CPTPointMake(x, viewPoints[i].low) ); + viewPoints[i].low = pos.y; + pos = CPTAlignIntegralPointToUserSpace(context, CPTPointMake(viewPoints[i].left, y) ); + viewPoints[i].left = pos.x; + pos = CPTAlignIntegralPointToUserSpace(context, CPTPointMake(viewPoints[i].right, y) ); viewPoints[i].right = pos.x; } }); @@ -650,8 +651,8 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context [super renderAsVectorInContext:context]; // Calculate view points, and align to user space - CGPointError *viewPoints = calloc( dataCount, sizeof(CGPointError) ); - BOOL *drawPointFlags = calloc( dataCount, sizeof(BOOL) ); + CGPointError *viewPoints = calloc(dataCount, sizeof(CGPointError) ); + BOOL *drawPointFlags = calloc(dataCount, sizeof(BOOL) ); CPTXYPlotSpace *thePlotSpace = (CPTXYPlotSpace *)self.plotSpace; [self calculatePointsToDraw:drawPointFlags numberOfPoints:dataCount forPlotSpace:thePlotSpace includeVisiblePointsOnly:NO]; @@ -723,7 +724,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context CGPathRelease(fillPath); } - CGSize halfGapSize = CPTSizeMake( self.gapWidth * CPTFloat(0.5), self.gapHeight * CPTFloat(0.5) ); + CGSize halfGapSize = CPTSizeMake(self.gapWidth * CPTFloat(0.5), self.gapHeight * CPTFloat(0.5) ); CGFloat halfBarWidth = self.barWidth * CPTFloat(0.5); BOOL alignPoints = self.alignsPointsToPixels; @@ -752,7 +753,7 @@ -(void)drawRangeInContext:(nonnull CGContextRef)context CPTAlignPointFunction alignmentFunction = CPTAlignPointToUserSpace; CGFloat lineWidth = lineStyle.lineWidth; - if ( ( self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { + if ( (self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { alignmentFunction = CPTAlignIntegralPointToUserSpace; } @@ -897,7 +898,7 @@ -(void)drawSwatchForLegend:(nonnull CPTLegend *)legend atIndex:(NSUInteger)idx i [self drawRangeInContext:context lineStyle:theBarLineStyle viewPoint:&viewPoint - halfGapSize:CPTSizeMake( MIN( self.gapWidth, rect.size.width / CPTFloat(2.0) ) * CPTFloat(0.5), MIN( self.gapHeight, rect.size.height / CPTFloat(2.0) ) * CPTFloat(0.5) ) + halfGapSize:CPTSizeMake(MIN(self.gapWidth, rect.size.width / CPTFloat(2.0) ) * CPTFloat(0.5), MIN(self.gapHeight, rect.size.height / CPTFloat(2.0) ) * CPTFloat(0.5) ) halfBarWidth:MIN(MIN(self.barWidth, rect.size.width), rect.size.height) * CPTFloat(0.5) alignPoints:YES]; } @@ -1022,7 +1023,7 @@ -(void)positionLabelAnnotation:(nonnull CPTPlotSpaceAnnotation *)label forIndex: BOOL positiveDirection = YES; CPTPlotRange *yRange = [self.plotSpace plotRangeForCoordinate:CPTCoordinateY]; - if ( CPTDecimalLessThan( yRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalLessThan(yRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { positiveDirection = !positiveDirection; } @@ -1047,8 +1048,8 @@ -(void)positionLabelAnnotation:(nonnull CPTPlotSpaceAnnotation *)label forIndex: -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point { NSUInteger dataCount = self.cachedDataCount; - CGPointError *viewPoints = calloc( dataCount, sizeof(CGPointError) ); - BOOL *drawPointFlags = malloc( dataCount * sizeof(BOOL) ); + CGPointError *viewPoints = calloc(dataCount, sizeof(CGPointError) ); + BOOL *drawPointFlags = malloc(dataCount * sizeof(BOOL) ); [self calculatePointsToDraw:drawPointFlags numberOfPoints:dataCount forPlotSpace:(id)self.plotSpace includeVisiblePointsOnly:YES]; [self calculateViewPoints:viewPoints withDrawPointFlags:drawPointFlags numberOfPoints:dataCount]; diff --git a/framework/Source/CPTScatterPlot.m b/framework/Source/CPTScatterPlot.m index e101e18b3..9e875aeb8 100644 --- a/framework/Source/CPTScatterPlot.m +++ b/framework/Source/CPTScatterPlot.m @@ -206,6 +206,7 @@ +(void)initialize [self exposeBinding:CPTScatterPlotBindingPlotSymbols]; } } + #endif /// @endcond @@ -482,9 +483,9 @@ -(void)calculatePointsToDraw:(nonnull BOOL *)pointDrawFlags forPlotSpace:(nonnul } } else { - CPTPlotRangeComparisonResult *xRangeFlags = malloc( dataCount * sizeof(CPTPlotRangeComparisonResult) ); - CPTPlotRangeComparisonResult *yRangeFlags = malloc( dataCount * sizeof(CPTPlotRangeComparisonResult) ); - BOOL *nanFlags = malloc( dataCount * sizeof(BOOL) ); + CPTPlotRangeComparisonResult *xRangeFlags = malloc(dataCount * sizeof(CPTPlotRangeComparisonResult) ); + CPTPlotRangeComparisonResult *yRangeFlags = malloc(dataCount * sizeof(CPTPlotRangeComparisonResult) ); + BOOL *nanFlags = malloc(dataCount * sizeof(BOOL) ); CPTPlotRange *xRange = xyPlotSpace.xRange; CPTPlotRange *yRange = xyPlotSpace.yRange; @@ -535,7 +536,7 @@ -(void)calculatePointsToDraw:(nonnull BOOL *)pointDrawFlags forPlotSpace:(nonnul // are included. This ensures no lines are left out that shouldn't be. CPTScatterPlotInterpolation theInterpolation = self.interpolation; - memset( pointDrawFlags, NO, dataCount * sizeof(BOOL) ); + memset(pointDrawFlags, NO, dataCount * sizeof(BOOL) ); if ( dataCount > 0 ) { pointDrawFlags[0] = (xRangeFlags[0] == CPTPlotRangeComparisonResultNumberInRange && yRangeFlags[0] == CPTPlotRangeComparisonResultNumberInRange && @@ -717,8 +718,8 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point -(NSUInteger)indexOfVisiblePointClosestToPlotAreaPoint:(CGPoint)viewPoint { NSUInteger dataCount = self.cachedDataCount; - CGPoint *viewPoints = calloc( dataCount, sizeof(CGPoint) ); - BOOL *drawPointFlags = calloc( dataCount, sizeof(BOOL) ); + CGPoint *viewPoints = calloc(dataCount, sizeof(CGPoint) ); + BOOL *drawPointFlags = calloc(dataCount, sizeof(BOOL) ); [self calculatePointsToDraw:drawPointFlags forPlotSpace:(id)self.plotSpace includeVisiblePointsOnly:YES numberOfPoints:dataCount]; [self calculateViewPoints:viewPoints withDrawPointFlags:drawPointFlags numberOfPoints:dataCount]; @@ -803,8 +804,8 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context [super renderAsVectorInContext:context]; // Calculate view points, and align to user space - CGPoint *viewPoints = malloc( dataCount * sizeof(CGPoint) ); - BOOL *drawPointFlags = malloc( dataCount * sizeof(BOOL) ); + CGPoint *viewPoints = malloc(dataCount * sizeof(CGPoint) ); + BOOL *drawPointFlags = malloc(dataCount * sizeof(BOOL) ); CPTXYPlotSpace *thePlotSpace = (CPTXYPlotSpace *)self.plotSpace; [self calculatePointsToDraw:drawPointFlags forPlotSpace:thePlotSpace includeVisiblePointsOnly:NO numberOfPoints:dataCount]; @@ -873,7 +874,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context // Draw fill bands if ( (i == 0) && fillBands ) { - CGFloat height = CPTFloat( CGBitmapContextGetHeight(context) ); + CGFloat height = CPTFloat(CGBitmapContextGetHeight(context) ); for ( CPTLimitBand *band in fillBands ) { CGContextSaveGState(context); @@ -891,7 +892,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context maxPoint = CPTAlignIntegralPointToUserSpace(context, maxPoint); } - CGContextClipToRect( context, CGRectMake(minPoint.x, 0.0, maxPoint.x - minPoint.x, height) ); + CGContextClipToRect(context, CGRectMake(minPoint.x, 0.0, maxPoint.x - minPoint.x, height) ); CGContextBeginPath(context); CGContextAddPath(context, dataLinePath); @@ -1053,8 +1054,8 @@ -(nonnull CGPathRef)newCurvedDataLinePathForViewPoints:(nonnull CGPoint *)viewPo CPTScatterPlotCurvedInterpolationOption interpolationOption = self.curvedInterpolationOption; if ( lastDrawnPointIndex > 0 ) { - CGPoint *controlPoints1 = calloc( lastDrawnPointIndex, sizeof(CGPoint) ); - CGPoint *controlPoints2 = calloc( lastDrawnPointIndex, sizeof(CGPoint) ); + CGPoint *controlPoints1 = calloc(lastDrawnPointIndex, sizeof(CGPoint) ); + CGPoint *controlPoints2 = calloc(lastDrawnPointIndex, sizeof(CGPoint) ); lastDrawnPointIndex--; @@ -1207,13 +1208,13 @@ -(nonnull CGPathRef)newCurvedDataLinePathForViewPoints:(nonnull CGPoint *)viewPo // add the control points CGPathMoveToPoint(dataLinePath, NULL, cp1.x - CPTFloat(5.0), cp1.y); CGPathAddLineToPoint(dataLinePath, NULL, cp1.x + CPTFloat(5.0), cp1.y); - CGPathMoveToPoint( dataLinePath, NULL, cp1.x, cp1.y - CPTFloat(5.0) ); - CGPathAddLineToPoint( dataLinePath, NULL, cp1.x, cp1.y + CPTFloat(5.0) ); + CGPathMoveToPoint(dataLinePath, NULL, cp1.x, cp1.y - CPTFloat(5.0) ); + CGPathAddLineToPoint(dataLinePath, NULL, cp1.x, cp1.y + CPTFloat(5.0) ); - CGPathMoveToPoint( dataLinePath, NULL, cp2.x - CPTFloat(3.5), cp2.y - CPTFloat(3.5) ); - CGPathAddLineToPoint( dataLinePath, NULL, cp2.x + CPTFloat(3.5), cp2.y + CPTFloat(3.5) ); - CGPathMoveToPoint( dataLinePath, NULL, cp2.x + CPTFloat(3.5), cp2.y - CPTFloat(3.5) ); - CGPathAddLineToPoint( dataLinePath, NULL, cp2.x - CPTFloat(3.5), cp2.y + CPTFloat(3.5) ); + CGPathMoveToPoint(dataLinePath, NULL, cp2.x - CPTFloat(3.5), cp2.y - CPTFloat(3.5) ); + CGPathAddLineToPoint(dataLinePath, NULL, cp2.x + CPTFloat(3.5), cp2.y + CPTFloat(3.5) ); + CGPathMoveToPoint(dataLinePath, NULL, cp2.x + CPTFloat(3.5), cp2.y - CPTFloat(3.5) ); + CGPathAddLineToPoint(dataLinePath, NULL, cp2.x - CPTFloat(3.5), cp2.y + CPTFloat(3.5) ); // add a line connecting the control points CGPathMoveToPoint(dataLinePath, NULL, cp1.x, cp1.y); @@ -1284,12 +1285,12 @@ -(void)computeCatmullRomControlPoints:(nonnull CGPoint *)points points2:(nonnull CGFloat d2 = hypot(p2.x - p1.x, p2.y - p1.y); CGFloat d3 = hypot(p3.x - p2.x, p3.y - p2.y); // constants - CGFloat d1_a = pow(d1, alpha); // d1^alpha - CGFloat d2_a = pow(d2, alpha); // d2^alpha - CGFloat d3_a = pow(d3, alpha); // d3^alpha - CGFloat d1_2a = pow( d1_a, CPTFloat(2.0) ); // d1^alpha^2 = d1^2*alpha - CGFloat d2_2a = pow( d2_a, CPTFloat(2.0) ); // d2^alpha^2 = d2^2*alpha - CGFloat d3_2a = pow( d3_a, CPTFloat(2.0) ); // d3^alpha^2 = d3^2*alpha + CGFloat d1_a = pow(d1, alpha); // d1^alpha + CGFloat d2_a = pow(d2, alpha); // d2^alpha + CGFloat d3_a = pow(d3, alpha); // d3^alpha + CGFloat d1_2a = pow(d1_a, CPTFloat(2.0) ); // d1^alpha^2 = d1^2*alpha + CGFloat d2_2a = pow(d2_a, CPTFloat(2.0) ); // d2^alpha^2 = d2^2*alpha + CGFloat d3_2a = pow(d3_a, CPTFloat(2.0) ); // d3^alpha^2 = d3^2*alpha // calculate the control points // see : http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf under point 3. @@ -1483,10 +1484,10 @@ -(void)computeBezierControlPoints:(nonnull CGPoint *)cp1 points2:(nonnull CGPoin NSUInteger n = indexRange.length - 1; // rhs vector - CGPoint *a = malloc( n * sizeof(CGPoint) ); - CGPoint *b = malloc( n * sizeof(CGPoint) ); - CGPoint *c = malloc( n * sizeof(CGPoint) ); - CGPoint *r = malloc( n * sizeof(CGPoint) ); + CGPoint *a = malloc(n * sizeof(CGPoint) ); + CGPoint *b = malloc(n * sizeof(CGPoint) ); + CGPoint *c = malloc(n * sizeof(CGPoint) ); + CGPoint *r = malloc(n * sizeof(CGPoint) ); // left most segment a[0] = CGPointZero; @@ -1546,8 +1547,8 @@ -(void)computeBezierControlPoints:(nonnull CGPoint *)cp1 points2:(nonnull CGPoin CPTFloat(2.0) * viewPoints[i].y - cp1[i + 1].y); } - cp2[rangeEnd] = CGPointMake( CPTFloat(0.5) * (viewPoints[rangeEnd].x + cp1[rangeEnd].x), - CPTFloat(0.5) * (viewPoints[rangeEnd].y + cp1[rangeEnd].y) ); + cp2[rangeEnd] = CGPointMake(CPTFloat(0.5) * (viewPoints[rangeEnd].x + cp1[rangeEnd].x), + CPTFloat(0.5) * (viewPoints[rangeEnd].y + cp1[rangeEnd].y) ); // clean up free(a); @@ -1567,8 +1568,8 @@ -(void)drawSwatchForLegend:(nonnull CPTLegend *)legend atIndex:(NSUInteger)idx i if ( theLineStyle ) { [theLineStyle setLineStyleInContext:context]; - CGPoint alignedStartPoint = CPTAlignPointToUserSpace( context, CPTPointMake( CGRectGetMinX(rect), CGRectGetMidY(rect) ) ); - CGPoint alignedEndPoint = CPTAlignPointToUserSpace( context, CPTPointMake( CGRectGetMaxX(rect), CGRectGetMidY(rect) ) ); + CGPoint alignedStartPoint = CPTAlignPointToUserSpace(context, CPTPointMake(CGRectGetMinX(rect), CGRectGetMidY(rect) ) ); + CGPoint alignedEndPoint = CPTAlignPointToUserSpace(context, CPTPointMake(CGRectGetMaxX(rect), CGRectGetMidY(rect) ) ); CGContextMoveToPoint(context, alignedStartPoint.x, alignedStartPoint.y); CGContextAddLineToPoint(context, alignedEndPoint.x, alignedEndPoint.y); @@ -1579,7 +1580,7 @@ -(void)drawSwatchForLegend:(nonnull CPTLegend *)legend atIndex:(NSUInteger)idx i if ( thePlotSymbol ) { [thePlotSymbol renderInContext:context - atPoint:CPTPointMake( CGRectGetMidX(rect), CGRectGetMidY(rect) ) + atPoint:CPTPointMake(CGRectGetMidX(rect), CGRectGetMidY(rect) ) scale:self.contentsScale alignToPixels:YES]; } @@ -1608,12 +1609,12 @@ -(void)drawSwatchForLegend:(nonnull CPTLegend *)legend atIndex:(NSUInteger)idx i CGContextClip(context); if ( CPTDecimalGreaterThanOrEqualTo(self.areaBaseValue2.decimalValue, self.areaBaseValue.decimalValue) ) { - [fill1 fillRect:CPTRectMake( CGRectGetMinX(rect), CGRectGetMinY(rect), rect.size.width, rect.size.height / CPTFloat(2.0) ) inContext:context]; - [fill2 fillRect:CPTRectMake( CGRectGetMinX(rect), CGRectGetMidY(rect), rect.size.width, rect.size.height / CPTFloat(2.0) ) inContext:context]; + [fill1 fillRect:CPTRectMake(CGRectGetMinX(rect), CGRectGetMinY(rect), rect.size.width, rect.size.height / CPTFloat(2.0) ) inContext:context]; + [fill2 fillRect:CPTRectMake(CGRectGetMinX(rect), CGRectGetMidY(rect), rect.size.width, rect.size.height / CPTFloat(2.0) ) inContext:context]; } else { - [fill2 fillRect:CPTRectMake( CGRectGetMinX(rect), CGRectGetMinY(rect), rect.size.width, rect.size.height / CPTFloat(2.0) ) inContext:context]; - [fill1 fillRect:CPTRectMake( CGRectGetMinX(rect), CGRectGetMidY(rect), rect.size.width, rect.size.height / CPTFloat(2.0) ) inContext:context]; + [fill2 fillRect:CPTRectMake(CGRectGetMinX(rect), CGRectGetMinY(rect), rect.size.width, rect.size.height / CPTFloat(2.0) ) inContext:context]; + [fill1 fillRect:CPTRectMake(CGRectGetMinX(rect), CGRectGetMidY(rect), rect.size.width, rect.size.height / CPTFloat(2.0) ) inContext:context]; } CGContextRestoreGState(context); @@ -1635,8 +1636,8 @@ -(nonnull CGPathRef)newDataLinePath } // Calculate view points - CGPoint *viewPoints = malloc( dataCount * sizeof(CGPoint) ); - BOOL *drawPointFlags = malloc( dataCount * sizeof(BOOL) ); + CGPoint *viewPoints = malloc(dataCount * sizeof(CGPoint) ); + BOOL *drawPointFlags = malloc(dataCount * sizeof(BOOL) ); for ( NSUInteger i = 0; i < dataCount; i++ ) { drawPointFlags[i] = YES; @@ -1702,8 +1703,8 @@ -(nullable CPTPlotRange *)plotRangeEnclosingField:(NSUInteger)fieldEnum CGPathRelease(dataLinePath); CPTNumberArray *lowerLeft = [space plotPointForPlotAreaViewPoint:boundingBox.origin]; - CPTNumberArray *upperRight = [space plotPointForPlotAreaViewPoint:CGPointMake( CGRectGetMaxX(boundingBox), - CGRectGetMaxY(boundingBox) )]; + CPTNumberArray *upperRight = [space plotPointForPlotAreaViewPoint:CGPointMake(CGRectGetMaxX(boundingBox), + CGRectGetMaxY(boundingBox) )]; switch ( fieldEnum ) { case CPTScatterPlotFieldX: @@ -1807,7 +1808,7 @@ -(void)positionLabelAnnotation:(nonnull CPTPlotSpaceAnnotation *)label forIndex: BOOL positiveDirection = YES; CPTPlotRange *yRange = [self.plotSpace plotRangeForCoordinate:CPTCoordinateY]; - if ( CPTDecimalLessThan( yRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalLessThan(yRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { positiveDirection = !positiveDirection; } @@ -1938,7 +1939,7 @@ -(BOOL)pointingDeviceDownEvent:(nonnull CPTNativeEvent *)event atPoint:(CGPoint) CGFloat margin = self.plotSymbolMarginForHitDetection * CPTFloat(2.0); symbolRect.size.width += margin; symbolRect.size.height += margin; - symbolRect.origin = CPTPointMake( center.x - CPTFloat(0.5) * CGRectGetWidth(symbolRect), center.y - CPTFloat(0.5) * CGRectGetHeight(symbolRect) ); + symbolRect.origin = CPTPointMake(center.x - CPTFloat(0.5) * CGRectGetWidth(symbolRect), center.y - CPTFloat(0.5) * CGRectGetHeight(symbolRect) ); if ( CGRectContainsPoint(symbolRect, plotAreaPoint) ) { self.pointingDeviceDownIndex = idx; @@ -2055,7 +2056,7 @@ -(BOOL)pointingDeviceUpEvent:(nonnull CPTNativeEvent *)event atPoint:(CGPoint)in CGFloat margin = self.plotSymbolMarginForHitDetection * CPTFloat(2.0); symbolRect.size.width += margin; symbolRect.size.height += margin; - symbolRect.origin = CPTPointMake( center.x - CPTFloat(0.5) * CGRectGetWidth(symbolRect), center.y - CPTFloat(0.5) * CGRectGetHeight(symbolRect) ); + symbolRect.origin = CPTPointMake(center.x - CPTFloat(0.5) * CGRectGetWidth(symbolRect), center.y - CPTFloat(0.5) * CGRectGetHeight(symbolRect) ); if ( CGRectContainsPoint(symbolRect, plotAreaPoint) ) { self.pointingDeviceDownIndex = idx; @@ -2136,8 +2137,8 @@ -(BOOL)plotWasLineHitByInteractionPoint:(CGPoint)interactionPoint NSUInteger dataCount = self.cachedDataCount; if ( theGraph && thePlotArea && !self.hidden && dataCount ) { - CGPoint *viewPoints = malloc( dataCount * sizeof(CGPoint) ); - BOOL *drawPointFlags = malloc( dataCount * sizeof(BOOL) ); + CGPoint *viewPoints = malloc(dataCount * sizeof(CGPoint) ); + BOOL *drawPointFlags = malloc(dataCount * sizeof(BOOL) ); CPTXYPlotSpace *thePlotSpace = (CPTXYPlotSpace *)self.plotSpace; [self calculatePointsToDraw:drawPointFlags forPlotSpace:thePlotSpace includeVisiblePointsOnly:NO numberOfPoints:dataCount]; @@ -2149,12 +2150,12 @@ -(BOOL)plotWasLineHitByInteractionPoint:(CGPoint)interactionPoint NSRange viewIndexRange = NSMakeRange( (NSUInteger)firstDrawnPointIndex, (NSUInteger)(lastDrawnPointIndex - firstDrawnPointIndex + 1) ); CGPathRef dataLinePath = [self newDataLinePathForViewPoints:viewPoints indexRange:viewIndexRange baselineYValue:CPTNAN]; - CGPathRef path = CGPathCreateCopyByStrokingPath( dataLinePath, - NULL, - self.plotLineMarginForHitDetection * CPTFloat(2.0), - kCGLineCapRound, - kCGLineJoinRound, - CPTFloat(3.0) ); + CGPathRef path = CGPathCreateCopyByStrokingPath(dataLinePath, + NULL, + self.plotLineMarginForHitDetection * CPTFloat(2.0), + kCGLineCapRound, + kCGLineJoinRound, + CPTFloat(3.0) ); CGPoint plotAreaPoint = [theGraph convertPoint:interactionPoint toLayer:thePlotArea]; diff --git a/framework/Source/CPTShadow.m b/framework/Source/CPTShadow.m index bd26fc5bf..cf42dc2fd 100644 --- a/framework/Source/CPTShadow.m +++ b/framework/Source/CPTShadow.m @@ -174,7 +174,7 @@ -(nonnull id)mutableCopyWithZone:(nullable NSZone *)zone -(void)setShadowBlurRadius:(CGFloat)newShadowBlurRadius { - NSParameterAssert( newShadowBlurRadius >= CPTFloat(0.0) ); + NSParameterAssert(newShadowBlurRadius >= CPTFloat(0.0) ); if ( newShadowBlurRadius != shadowBlurRadius ) { shadowBlurRadius = newShadowBlurRadius; diff --git a/framework/Source/CPTTextLayer.m b/framework/Source/CPTTextLayer.m index 97a475e77..50073d834 100644 --- a/framework/Source/CPTTextLayer.m +++ b/framework/Source/CPTTextLayer.m @@ -381,7 +381,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context #if TARGET_OS_SIMULATOR || TARGET_OS_IPHONE CGContextSaveGState(context); CGContextTranslateCTM(context, CPTFloat(0.0), self.bounds.size.height); - CGContextScaleCTM( context, CPTFloat(1.0), CPTFloat(-1.0) ); + CGContextScaleCTM(context, CPTFloat(1.0), CPTFloat(-1.0) ); #endif CGRect newBounds = CGRectInset(self.bounds, kCPTTextLayerMarginWidth, kCPTTextLayerMarginWidth); diff --git a/framework/Source/CPTThemeTests.m b/framework/Source/CPTThemeTests.m index 04486cebc..d0007cb38 100644 --- a/framework/Source/CPTThemeTests.m +++ b/framework/Source/CPTThemeTests.m @@ -1,13 +1,13 @@ #import "CPTThemeTests.h" -#import "CPTDerivedXYGraph.h" -#import "CPTExceptions.h" -#import "CPTTheme.h" #import "_CPTDarkGradientTheme.h" #import "_CPTPlainBlackTheme.h" #import "_CPTPlainWhiteTheme.h" #import "_CPTSlateTheme.h" #import "_CPTStocksTheme.h" +#import "CPTDerivedXYGraph.h" +#import "CPTExceptions.h" +#import "CPTTheme.h" @implementation CPTThemeTests diff --git a/framework/Source/CPTTradingRangePlot.m b/framework/Source/CPTTradingRangePlot.m index dc7d4181e..70bedd26a 100644 --- a/framework/Source/CPTTradingRangePlot.m +++ b/framework/Source/CPTTradingRangePlot.m @@ -176,6 +176,7 @@ +(void)initialize [self exposeBinding:CPTTradingRangePlotBindingDecreaseLineStyles]; } } + #endif /// @endcond @@ -815,13 +816,13 @@ -(void)drawCandleStickInContext:(nonnull CGContextRef)context [theBorderLineStyle setLineStyleInContext:context]; CGFloat lineWidth = theBorderLineStyle.lineWidth; - if ( ( self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { + if ( (self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { alignmentFunction = CPTAlignIntegralPointToUserSpace; } } // high - low only - if ( hasLineStyle && !isnan(highValue) && !isnan(lowValue) && ( isnan(openValue) || isnan(closeValue) ) ) { + if ( hasLineStyle && !isnan(highValue) && !isnan(lowValue) && (isnan(openValue) || isnan(closeValue) ) ) { CGPoint alignedHighPoint = CPTPointMake(x, highValue); CGPoint alignedLowPoint = CPTPointMake(x, lowValue); if ( alignPoints ) { @@ -844,7 +845,7 @@ -(void)drawCandleStickInContext:(nonnull CGContextRef)context if ( !isnan(openValue) && !isnan(closeValue) ) { if ( currentBarFill || hasLineStyle ) { CGFloat radius = MIN(self.barCornerRadius, halfBarWidth); - radius = MIN( radius, ABS(closeValue - openValue) ); + radius = MIN(radius, ABS(closeValue - openValue) ); CGPoint alignedPoint1 = CPTPointMake(x + halfBarWidth, openValue); CGPoint alignedPoint2 = CPTPointMake(x + halfBarWidth, closeValue); @@ -900,7 +901,7 @@ -(void)drawCandleStickInContext:(nonnull CGContextRef)context if ( !isnan(lowValue) ) { if ( lowValue < MIN(openValue, closeValue) ) { - CGPoint alignedStartPoint = CPTPointMake( x, MIN(openValue, closeValue) ); + CGPoint alignedStartPoint = CPTPointMake(x, MIN(openValue, closeValue) ); CGPoint alignedLowPoint = CPTPointMake(x, lowValue); if ( alignPoints ) { alignedStartPoint = alignmentFunction(context, alignedStartPoint); @@ -913,7 +914,7 @@ -(void)drawCandleStickInContext:(nonnull CGContextRef)context } if ( !isnan(highValue) ) { if ( highValue > MAX(openValue, closeValue) ) { - CGPoint alignedStartPoint = CPTPointMake( x, MAX(openValue, closeValue) ); + CGPoint alignedStartPoint = CPTPointMake(x, MAX(openValue, closeValue) ); CGPoint alignedHighPoint = CPTPointMake(x, highValue); if ( alignPoints ) { alignedStartPoint = alignmentFunction(context, alignedStartPoint); @@ -967,7 +968,7 @@ -(void)drawOHLCInContext:(nonnull CGContextRef)context CPTAlignPointFunction alignmentFunction = CPTAlignPointToUserSpace; CGFloat lineWidth = theLineStyle.lineWidth; - if ( ( self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { + if ( (self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { alignmentFunction = CPTAlignIntegralPointToUserSpace; } @@ -1217,7 +1218,7 @@ -(void)positionLabelAnnotation:(nonnull CPTPlotSpaceAnnotation *)label forIndex: BOOL positiveDirection = YES; CPTPlotRange *yRange = [self.plotSpace plotRangeForCoordinate:CPTCoordinateY]; - if ( CPTDecimalLessThan( yRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalLessThan(yRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { positiveDirection = !positiveDirection; } @@ -1369,8 +1370,8 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point lastViewX = closePoint.x; } - lastViewMin = MIN( MIN(openPoint.y, closePoint.y), MIN(highPoint.y, lowPoint.y) ); - lastViewMax = MAX( MAX(openPoint.y, closePoint.y), MAX(highPoint.y, lowPoint.y) ); + lastViewMin = MIN(MIN(openPoint.y, closePoint.y), MIN(highPoint.y, lowPoint.y) ); + lastViewMax = MAX(MAX(openPoint.y, closePoint.y), MAX(highPoint.y, lowPoint.y) ); } } } @@ -1462,8 +1463,8 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point lastViewX = closePoint.x; } - lastViewMin = MIN( MIN(openPoint.y, closePoint.y), MIN(highPoint.y, lowPoint.y) ); - lastViewMax = MAX( MAX(openPoint.y, closePoint.y), MAX(highPoint.y, lowPoint.y) ); + lastViewMin = MIN(MIN(openPoint.y, closePoint.y), MIN(highPoint.y, lowPoint.y) ); + lastViewMax = MAX(MAX(openPoint.y, closePoint.y), MAX(highPoint.y, lowPoint.y) ); } } } @@ -1481,7 +1482,7 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point break; } - if ( ( point.x < (lastViewX - offset) ) || ( point.x > (lastViewX + offset) ) ) { + if ( (point.x < (lastViewX - offset) ) || (point.x > (lastViewX + offset) ) ) { result = NSNotFound; } if ( (point.y < lastViewMin) || (point.y > lastViewMax) ) { diff --git a/framework/Source/CPTUtilities.m b/framework/Source/CPTUtilities.m index 097075d9b..a2ee90bad 100644 --- a/framework/Source/CPTUtilities.m +++ b/framework/Source/CPTUtilities.m @@ -222,7 +222,6 @@ CGFloat CPTDecimalCGFloatValue(NSDecimal decimalNumber) { #if CGFLOAT_IS_DOUBLE return (CGFloat)[NSDecimalNumber decimalNumberWithDecimal:decimalNumber].doubleValue; - #else return (CGFloat)[[NSDecimalNumber decimalNumberWithDecimal:decimalNumber] floatValue]; #endif @@ -775,11 +774,11 @@ NSDecimal CPTDecimalMax(NSDecimal leftOperand, NSDecimal rightOperand) **/ NSDecimal CPTDecimalAbs(NSDecimal value) { - if ( CPTDecimalGreaterThanOrEqualTo( value, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalGreaterThanOrEqualTo(value, CPTDecimalFromInteger(0) ) ) { return value; } else { - return CPTDecimalMultiply( value, CPTDecimalFromInteger(-1) ); + return CPTDecimalMultiply(value, CPTDecimalFromInteger(-1) ); } } @@ -876,7 +875,7 @@ CGPoint CPTAlignPointToUserSpace(__nonnull CGContextRef context, CGPoint point) // Ensure that coordinates are at exactly the corner // of a device pixel. - point.x = round( point.x - CPTFloat(0.5) ) + CPTFloat(0.5); + point.x = round(point.x - CPTFloat(0.5) ) + CPTFloat(0.5); point.y = ceil(point.y) - CPTFloat(0.5); // Convert the device aligned coordinate back to user space. @@ -923,11 +922,11 @@ CGRect CPTAlignRectToUserSpace(__nonnull CGContextRef context, CGRect rect) CGPoint oldOrigin = rect.origin; - rect.origin.x = round( rect.origin.x - CPTFloat(0.5) ); - rect.size.width = round( oldOrigin.x + rect.size.width - CPTFloat(0.5) ) - rect.origin.x; + rect.origin.x = round(rect.origin.x - CPTFloat(0.5) ); + rect.size.width = round(oldOrigin.x + rect.size.width - CPTFloat(0.5) ) - rect.origin.x; rect.origin.x += CPTFloat(0.5); - rect.origin.y = ceil( CGRectGetMaxY(rect) ) - CPTFloat(0.5); + rect.origin.y = ceil(CGRectGetMaxY(rect) ) - CPTFloat(0.5); rect.size.height = ceil(oldOrigin.y - CPTFloat(0.5) - rect.origin.y); return CGContextConvertRectToUserSpace(context, rect); @@ -950,7 +949,7 @@ CGPoint CPTAlignIntegralPointToUserSpace(__nonnull CGContextRef context, CGPoint point = CGContextConvertPointToDeviceSpace(context, point); point.x = round(point.x); - point.y = ceil( point.y - CPTFloat(0.5) ); + point.y = ceil(point.y - CPTFloat(0.5) ); return CGContextConvertPointToUserSpace(context, point); } @@ -974,7 +973,7 @@ CGRect CPTAlignIntegralRectToUserSpace(__nonnull CGContextRef context, CGRect re rect.origin.x = round(rect.origin.x); rect.size.width = round(oldOrigin.x + rect.size.width) - rect.origin.x; - rect.origin.y = ceil( CGRectGetMaxY(rect) - CPTFloat(0.5) ); + rect.origin.y = ceil(CGRectGetMaxY(rect) - CPTFloat(0.5) ); rect.size.height = ceil(oldOrigin.y - CPTFloat(0.5) - rect.origin.y); return CGContextConvertRectToUserSpace(context, rect); @@ -992,7 +991,7 @@ CGRect CPTAlignBorderedRectToUserSpace(__nonnull CGContextRef context, CGRect re if ( contextScale != CPTFloat(1.0) ) { CGFloat borderWidth = borderLineStyle.lineWidth; - if ( ( borderWidth > CPTFloat(0.0) ) && ( borderWidth == round(borderWidth) ) ) { + if ( (borderWidth > CPTFloat(0.0) ) && (borderWidth == round(borderWidth) ) ) { borderRect = CPTAlignIntegralRectToUserSpace(context, rect); } else { @@ -1013,7 +1012,7 @@ CGRect CPTAlignBorderedRectToUserSpace(__nonnull CGContextRef context, CGRect re * @param point The point. * @return A string with the format {x, y}. **/ -NSString * __nonnull CPTStringFromPoint(CGPoint point) +NSString *__nonnull CPTStringFromPoint(CGPoint point) { return [NSString stringWithFormat:@"{%g, %g}", (double)point.x, (double)point.y]; } @@ -1126,7 +1125,7 @@ BOOL CPTEdgeInsetsEqualToEdgeInsets(CPTEdgeInsets insets1, CPTEdgeInsets insets2 if ( value != 0.0 ) { double sign = (signbit(value) ? -1.0 : +1.0); - return sign * (pow( 10.0, fabs(value) ) - 1.0); + return sign * (pow(10.0, fabs(value) ) - 1.0); } else { return 0.0; diff --git a/framework/Source/CPTUtilitiesTests.m b/framework/Source/CPTUtilitiesTests.m index 3afaf46b4..5a4283f30 100644 --- a/framework/Source/CPTUtilitiesTests.m +++ b/framework/Source/CPTUtilitiesTests.m @@ -634,11 +634,11 @@ -(void)testInverseLogModulus { XCTAssertEqual(CPTInverseLogModulus(0.0), 0.0, @"CPTInverseLogModulus(0.0)"); - XCTAssertEqualWithAccuracy(CPTInverseLogModulus( log10(11.0) ), 10.0, 1.0e-7, @"CPTInverseLogModulus(log10(11.0))"); - XCTAssertEqualWithAccuracy(CPTInverseLogModulus( -log10(11.0) ), -10.0, 1.0e-7, @"CPTInverseLogModulus(-log10(11.0))"); + XCTAssertEqualWithAccuracy(CPTInverseLogModulus(log10(11.0) ), 10.0, 1.0e-7, @"CPTInverseLogModulus(log10(11.0))"); + XCTAssertEqualWithAccuracy(CPTInverseLogModulus(-log10(11.0) ), -10.0, 1.0e-7, @"CPTInverseLogModulus(-log10(11.0))"); - XCTAssertEqualWithAccuracy(CPTInverseLogModulus( log10(101.0) ), 100.0, 1.0e-7, @"CPTInverseLogModulus(log10(101.0))"); - XCTAssertEqualWithAccuracy(CPTInverseLogModulus( -log10(101.0) ), -100.0, 1.0e-7, @"CPTInverseLogModulus(-log10(101.0))"); + XCTAssertEqualWithAccuracy(CPTInverseLogModulus(log10(101.0) ), 100.0, 1.0e-7, @"CPTInverseLogModulus(log10(101.0))"); + XCTAssertEqualWithAccuracy(CPTInverseLogModulus(-log10(101.0) ), -100.0, 1.0e-7, @"CPTInverseLogModulus(-log10(101.0))"); } /// @endcond diff --git a/framework/Source/CPTXYAxis.m b/framework/Source/CPTXYAxis.m index 42f001c20..42a055cfa 100644 --- a/framework/Source/CPTXYAxis.m +++ b/framework/Source/CPTXYAxis.m @@ -206,7 +206,7 @@ -(CGPoint)viewPointForCoordinateValue:(nullable NSNumber *)coordinateValue } if ( isnan(point.x) || isnan(point.y) ) { - NSLog( @"[CPTXYAxis viewPointForCoordinateValue:%@] was %@", coordinateValue, CPTStringFromPoint(point) ); + NSLog(@"[CPTXYAxis viewPointForCoordinateValue:%@] was %@", coordinateValue, CPTStringFromPoint(point) ); if ( isnan(point.x) ) { point.x = CPTFloat(0.0); @@ -237,7 +237,7 @@ -(void)drawTicksInContext:(nonnull CGContextRef)context atLocations:(nullable CP CGFloat lineWidth = lineStyle.lineWidth; CPTAlignPointFunction alignmentFunction = NULL; - if ( ( self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { + if ( (self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { alignmentFunction = CPTAlignIntegralPointToUserSpace; } else { @@ -348,7 +348,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context CPTAlignPointFunction alignmentFunction = CPTAlignPointToUserSpace; if ( theLineStyle ) { CGFloat lineWidth = theLineStyle.lineWidth; - if ( ( self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { + if ( (self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { alignmentFunction = CPTAlignIntegralPointToUserSpace; } @@ -443,7 +443,7 @@ -(void)drawGridLinesInContext:(nonnull CGContextRef)context isMajor:(BOOL)major CGFloat lineWidth = lineStyle.lineWidth; CPTAlignPointFunction alignmentFunction = NULL; - if ( ( self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { + if ( (self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { alignmentFunction = CPTAlignIntegralPointToUserSpace; } else { @@ -673,10 +673,10 @@ -(void)drawBackgroundBandsInContext:(nonnull CGContextRef)context CGPoint endViewPoint = [thePlotSpace plotAreaViewPointForPlotPoint:endPlotPoint numberOfCoordinates:2]; // Fill band - CGRect fillRect = CPTRectMake( MIN(startViewPoint.x, endViewPoint.x), - MIN(startViewPoint.y, endViewPoint.y), - ABS(endViewPoint.x - startViewPoint.x), - ABS(endViewPoint.y - startViewPoint.y) ); + CGRect fillRect = CPTRectMake(MIN(startViewPoint.x, endViewPoint.x), + MIN(startViewPoint.y, endViewPoint.y), + ABS(endViewPoint.x - startViewPoint.x), + ABS(endViewPoint.y - startViewPoint.y) ); [bandFill fillRect:CPTAlignIntegralRectToUserSpace(context, fillRect) inContext:context]; } } @@ -705,10 +705,10 @@ -(void)drawBackgroundBandsInContext:(nonnull CGContextRef)context CGPoint endViewPoint = [thePlotSpace plotAreaViewPointForPlotPoint:endPlotPoint numberOfCoordinates:2]; // Fill band - CGRect fillRect = CPTRectMake( MIN(startViewPoint.x, endViewPoint.x), - MIN(startViewPoint.y, endViewPoint.y), - ABS(endViewPoint.x - startViewPoint.x), - ABS(endViewPoint.y - startViewPoint.y) ); + CGRect fillRect = CPTRectMake(MIN(startViewPoint.x, endViewPoint.x), + MIN(startViewPoint.y, endViewPoint.y), + ABS(endViewPoint.x - startViewPoint.x), + ABS(endViewPoint.y - startViewPoint.y) ); [bandFill fillRect:CPTAlignIntegralRectToUserSpace(context, fillRect) inContext:context]; } } @@ -763,10 +763,10 @@ -(void)drawBackgroundLimitsInContext:(nonnull CGContextRef)context CGPoint endViewPoint = [thePlotSpace plotAreaViewPointForPlotPoint:endPlotPoint numberOfCoordinates:2]; // Fill band - CGRect fillRect = CPTRectMake( MIN(startViewPoint.x, endViewPoint.x), - MIN(startViewPoint.y, endViewPoint.y), - ABS(endViewPoint.x - startViewPoint.x), - ABS(endViewPoint.y - startViewPoint.y) ); + CGRect fillRect = CPTRectMake(MIN(startViewPoint.x, endViewPoint.x), + MIN(startViewPoint.y, endViewPoint.y), + ABS(endViewPoint.x - startViewPoint.x), + ABS(endViewPoint.y - startViewPoint.y) ); [bandFill fillRect:CPTAlignIntegralRectToUserSpace(context, fillRect) inContext:context]; } } @@ -825,7 +825,7 @@ -(nonnull NSNumber *)defaultTitleLocation double end = axisRange.endDouble; if ( (loc > 0.0) && (end >= 0.0) ) { - location = @( pow(10.0, ( log10(loc) + log10(end) ) / 2.0) ); + location = @(pow(10.0, (log10(loc) + log10(end) ) / 2.0) ); } else { location = axisRange.midPoint; @@ -838,7 +838,7 @@ -(nonnull NSNumber *)defaultTitleLocation double loc = axisRange.locationDouble; double end = axisRange.endDouble; - location = @( CPTInverseLogModulus( ( CPTLogModulus(loc) + CPTLogModulus(end) ) / 2.0 ) ); + location = @(CPTInverseLogModulus( (CPTLogModulus(loc) + CPTLogModulus(end) ) / 2.0 ) ); } break; diff --git a/framework/Source/CPTXYPlotSpace.m b/framework/Source/CPTXYPlotSpace.m index e1cd65691..c759074c0 100644 --- a/framework/Source/CPTXYPlotSpace.m +++ b/framework/Source/CPTXYPlotSpace.m @@ -418,14 +418,14 @@ -(void)setXRange:(nonnull CPTPlotRange *)range if ( xRange && constrainedRange ) { isScrolling = !CPTDecimalEquals(constrainedRange.locationDecimal, xRange.locationDecimal) && CPTDecimalEquals(constrainedRange.lengthDecimal, xRange.lengthDecimal); - if ( isScrolling && ( displacement == CPTFloat(0.0) ) ) { + if ( isScrolling && (displacement == CPTFloat(0.0) ) ) { CPTGraph *theGraph = self.graph; CPTPlotArea *plotArea = theGraph.plotAreaFrame.plotArea; if ( plotArea ) { NSDecimal rangeLength = constrainedRange.lengthDecimal; - if ( !CPTDecimalEquals( rangeLength, CPTDecimalFromInteger(0) ) ) { + if ( !CPTDecimalEquals(rangeLength, CPTDecimalFromInteger(0) ) ) { NSDecimal diff = CPTDecimalDivide(CPTDecimalSubtract(constrainedRange.locationDecimal, xRange.locationDecimal), rangeLength); displacement = plotArea.bounds.size.width * CPTDecimalCGFloatValue(diff); @@ -482,14 +482,14 @@ -(void)setYRange:(nonnull CPTPlotRange *)range if ( yRange && constrainedRange ) { isScrolling = !CPTDecimalEquals(constrainedRange.locationDecimal, yRange.locationDecimal) && CPTDecimalEquals(constrainedRange.lengthDecimal, yRange.lengthDecimal); - if ( isScrolling && ( displacement == CPTFloat(0.0) ) ) { + if ( isScrolling && (displacement == CPTFloat(0.0) ) ) { CPTGraph *theGraph = self.graph; CPTPlotArea *plotArea = theGraph.plotAreaFrame.plotArea; if ( plotArea ) { NSDecimal rangeLength = constrainedRange.lengthDecimal; - if ( !CPTDecimalEquals( rangeLength, CPTDecimalFromInteger(0) ) ) { + if ( !CPTDecimalEquals(rangeLength, CPTDecimalFromInteger(0) ) ) { NSDecimal diff = CPTDecimalDivide(CPTDecimalSubtract(constrainedRange.locationDecimal, yRange.locationDecimal), rangeLength); displacement = plotArea.bounds.size.height * CPTDecimalCGFloatValue(diff); @@ -595,8 +595,8 @@ -(void)animateRangeForCoordinate:(CPTCoordinate)coordinate shift:(NSDecimal)shif CPTPlotRange *constrainedRange = [self constrainRange:newRange toGlobalRange:globalRange]; if ( ![newRange isEqualToRange:constrainedRange] && ![globalRange containsRange:newRange] ) { - BOOL direction = ( CPTDecimalGreaterThan(shift, zero) && CPTDecimalGreaterThan(oldRange.lengthDecimal, zero) ) || - ( CPTDecimalLessThan(shift, zero) && CPTDecimalLessThan(oldRange.lengthDecimal, zero) ); + BOOL direction = (CPTDecimalGreaterThan(shift, zero) && CPTDecimalGreaterThan(oldRange.lengthDecimal, zero) ) || + (CPTDecimalLessThan(shift, zero) && CPTDecimalLessThan(oldRange.lengthDecimal, zero) ); // decelerate at the global range if ( hasShift ) { @@ -654,7 +654,7 @@ -(void)animateRangeForCoordinate:(CPTCoordinate)coordinate shift:(NSDecimal)shif while ( momentumTime > CPTFloat(0.1) ) { momentumTime *= CPTFloat(0.5); - shift = CPTDecimalDivide( shift, CPTDecimalFromInteger(2) ); + shift = CPTDecimalDivide(shift, CPTDecimalFromInteger(2) ); } newRange = [oldRange mutableCopy]; @@ -740,7 +740,7 @@ CGFloat CPTFirstPositiveRoot(CGFloat a, CGFloat b, CGFloat c) if ( root1 >= CPTFloat(0.0) ) { root = root1; } - if ( ( root2 >= CPTFloat(0.0) ) && ( isnan(root) || (root2 < root) ) ) { + if ( (root2 >= CPTFloat(0.0) ) && (isnan(root) || (root2 < root) ) ) { root = root2; } } @@ -1418,7 +1418,7 @@ -(void)scaleBy:(CGFloat)interactionScale aboutPoint:(CGPoint)plotAreaPoint CPTGraph *theGraph = self.graph; CPTPlotArea *plotArea = theGraph.plotAreaFrame.plotArea; - if ( !plotArea || ( interactionScale <= CPTFloat(1.e-6) ) ) { + if ( !plotArea || (interactionScale <= CPTFloat(1.e-6) ) ) { return; } if ( ![plotArea containsPoint:plotAreaPoint] ) { @@ -1451,7 +1451,7 @@ -(void)scaleBy:(CGFloat)interactionScale aboutPoint:(CGPoint)plotAreaPoint // New locations NSDecimal newLocationX; - if ( CPTDecimalGreaterThanOrEqualTo( oldRangeX.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalGreaterThanOrEqualTo(oldRangeX.lengthDecimal, CPTDecimalFromInteger(0) ) ) { NSDecimal oldFirstLengthX = CPTDecimalSubtract(plotInteractionPoint[CPTCoordinateX], oldRangeX.minLimitDecimal); // x - minX NSDecimal newFirstLengthX = CPTDecimalDivide(oldFirstLengthX, decimalScale); // (x - minX) / scale newLocationX = CPTDecimalSubtract(plotInteractionPoint[CPTCoordinateX], newFirstLengthX); @@ -1463,7 +1463,7 @@ -(void)scaleBy:(CGFloat)interactionScale aboutPoint:(CGPoint)plotAreaPoint } NSDecimal newLocationY; - if ( CPTDecimalGreaterThanOrEqualTo( oldRangeY.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalGreaterThanOrEqualTo(oldRangeY.lengthDecimal, CPTDecimalFromInteger(0) ) ) { NSDecimal oldFirstLengthY = CPTDecimalSubtract(plotInteractionPoint[CPTCoordinateY], oldRangeY.minLimitDecimal); // y - minY NSDecimal newFirstLengthY = CPTDecimalDivide(oldFirstLengthY, decimalScale); // (y - minY) / scale newLocationY = CPTDecimalSubtract(plotInteractionPoint[CPTCoordinateY], newFirstLengthY); @@ -1609,7 +1609,7 @@ -(BOOL)pointingDeviceUpEvent:(nonnull CPTNativeEvent *)event atPoint:(CGPoint)in speed = sqrt(displacement.x * displacement.x + displacement.y * displacement.y) / CPTFloat(lastDeltaT); momentumTime = speed / (CPTFloat(2.0) * acceleration); CGFloat distanceTraveled = speed * momentumTime - CPTFloat(0.5) * acceleration * momentumTime * momentumTime; - distanceTraveled = MAX( distanceTraveled, CPTFloat(0.0) ); + distanceTraveled = MAX(distanceTraveled, CPTFloat(0.0) ); CGFloat theta = atan2(displacement.y, displacement.x); scaleX = cos(theta); @@ -1755,13 +1755,13 @@ -(nullable CPTPlotRange *)shiftRange:(nonnull CPTPlotRange *)oldRange by:(NSDeci // reduce the shift as we get farther outside the global range NSDecimal rangeLength = newRange.lengthDecimal; - if ( !CPTDecimalEquals( rangeLength, CPTDecimalFromInteger(0) ) ) { + if ( !CPTDecimalEquals(rangeLength, CPTDecimalFromInteger(0) ) ) { NSDecimal diff = CPTDecimalDivide(CPTDecimalSubtract(constrainedRange.locationDecimal, newRange.locationDecimal), rangeLength); - diff = CPTDecimalMax( CPTDecimalMin( CPTDecimalMultiply( diff, CPTDecimalFromDouble(2.5) ), CPTDecimalFromInteger(1) ), CPTDecimalFromInteger(-1) ); + diff = CPTDecimalMax(CPTDecimalMin(CPTDecimalMultiply(diff, CPTDecimalFromDouble(2.5) ), CPTDecimalFromInteger(1) ), CPTDecimalFromInteger(-1) ); - newRange.locationDecimal = CPTDecimalSubtract( newRange.locationDecimal, CPTDecimalMultiply( shift, CPTDecimalAbs(diff) ) ); + newRange.locationDecimal = CPTDecimalSubtract(newRange.locationDecimal, CPTDecimalMultiply(shift, CPTDecimalAbs(diff) ) ); - *displacement = *displacement * ( CPTFloat(1.0) - ABS( CPTDecimalCGFloatValue(diff) ) ); + *displacement = *displacement * (CPTFloat(1.0) - ABS(CPTDecimalCGFloatValue(diff) ) ); } } } @@ -1845,6 +1845,7 @@ -(BOOL)scrollWheelEvent:(nonnull CPTNativeEvent *)event fromPoint:(CGPoint)fromP return YES; } + #endif /** diff --git a/framework/Source/CPTXYPlotSpaceTests.m b/framework/Source/CPTXYPlotSpaceTests.m index 8b0075245..ec2a206d5 100644 --- a/framework/Source/CPTXYPlotSpaceTests.m +++ b/framework/Source/CPTXYPlotSpaceTests.m @@ -146,7 +146,7 @@ -(void)testViewPointForPlotPointArrayLog plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:@1.0 length:@9.0]; - CPTNumberArray *plotPoint = @[@( sqrt(10.0) ), @( sqrt(10.0) )]; + CPTNumberArray *plotPoint = @[@(sqrt(10.0) ), @(sqrt(10.0) )]; CGPoint viewPoint = [plotSpace plotAreaViewPointForPlotPoint:plotPoint]; @@ -177,8 +177,8 @@ -(void)testViewPointForPlotPointLog length:@9.0]; NSDecimal plotPoint[2]; - plotPoint[CPTCoordinateX] = CPTDecimalFromDouble( sqrt(10.0) ); - plotPoint[CPTCoordinateY] = CPTDecimalFromDouble( sqrt(10.0) ); + plotPoint[CPTCoordinateX] = CPTDecimalFromDouble(sqrt(10.0) ); + plotPoint[CPTCoordinateY] = CPTDecimalFromDouble(sqrt(10.0) ); CGPoint viewPoint = [plotSpace plotAreaViewPointForPlotPoint:plotPoint numberOfCoordinates:2]; @@ -315,9 +315,9 @@ -(void)testPlotPointArrayForViewPointLinear NSString *errMessage; errMessage = [NSString stringWithFormat:@"plotPoint[CPTCoordinateX] was %@", plotPoint[CPTCoordinateX]]; - XCTAssertTrue(CPTDecimalEquals( [plotPoint[CPTCoordinateX] decimalValue], CPTDecimalFromDouble(5.0) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals([plotPoint[CPTCoordinateX] decimalValue], CPTDecimalFromDouble(5.0) ), @"%@", errMessage); errMessage = [NSString stringWithFormat:@"plotPoint[CPTCoordinateY] was %@", plotPoint[CPTCoordinateY]]; - XCTAssertTrue(CPTDecimalEquals( [plotPoint[CPTCoordinateY] decimalValue], CPTDecimalFromDouble(5.0) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals([plotPoint[CPTCoordinateY] decimalValue], CPTDecimalFromDouble(5.0) ), @"%@", errMessage); } -(void)testPlotPointForViewPointLinear @@ -339,9 +339,9 @@ -(void)testPlotPointForViewPointLinear [plotSpace plotPoint:plotPoint numberOfCoordinates:2 forPlotAreaViewPoint:viewPoint]; errMessage = [NSString stringWithFormat:@"plotPoint[CPTCoordinateX] was %@", NSDecimalString(&plotPoint[CPTCoordinateX], nil)]; - XCTAssertTrue(CPTDecimalEquals( plotPoint[CPTCoordinateX], CPTDecimalFromDouble(5.0) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals(plotPoint[CPTCoordinateX], CPTDecimalFromDouble(5.0) ), @"%@", errMessage); errMessage = [NSString stringWithFormat:@"plotPoint[CPTCoordinateY] was %@", NSDecimalString(&plotPoint[CPTCoordinateY], nil)]; - XCTAssertTrue(CPTDecimalEquals( plotPoint[CPTCoordinateY], CPTDecimalFromDouble(5.0) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals(plotPoint[CPTCoordinateY], CPTDecimalFromDouble(5.0) ), @"%@", errMessage); } -(void)testDoublePrecisionPlotPointForViewPointLinear @@ -414,9 +414,9 @@ -(void)testPlotPointForViewPointLog [plotSpace plotPoint:plotPoint numberOfCoordinates:2 forPlotAreaViewPoint:viewPoint]; errMessage = [NSString stringWithFormat:@"plotPoint[CPTCoordinateX] was %@", NSDecimalString(&plotPoint[CPTCoordinateX], nil)]; - XCTAssertTrue(CPTDecimalEquals( plotPoint[CPTCoordinateX], CPTDecimalFromDouble( sqrt(10.0) ) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals(plotPoint[CPTCoordinateX], CPTDecimalFromDouble(sqrt(10.0) ) ), @"%@", errMessage); errMessage = [NSString stringWithFormat:@"plotPoint[CPTCoordinateY] was %@", NSDecimalString(&plotPoint[CPTCoordinateY], nil)]; - XCTAssertTrue(CPTDecimalEquals( plotPoint[CPTCoordinateY], CPTDecimalFromDouble( sqrt(10.0) ) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals(plotPoint[CPTCoordinateY], CPTDecimalFromDouble(sqrt(10.0) ) ), @"%@", errMessage); } -(void)testDoublePrecisionPlotPointForViewPointLog @@ -489,9 +489,9 @@ -(void)testPlotPointForViewPointLogModulus [plotSpace plotPoint:plotPoint numberOfCoordinates:2 forPlotAreaViewPoint:viewPoint]; errMessage = [NSString stringWithFormat:@"plotPoint[CPTCoordinateX] was %@", NSDecimalString(&plotPoint[CPTCoordinateX], nil)]; - XCTAssertTrue(CPTDecimalEquals( plotPoint[CPTCoordinateX], CPTDecimalFromInteger(0) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals(plotPoint[CPTCoordinateX], CPTDecimalFromInteger(0) ), @"%@", errMessage); errMessage = [NSString stringWithFormat:@"plotPoint[CPTCoordinateY] was %@", NSDecimalString(&plotPoint[CPTCoordinateY], nil)]; - XCTAssertTrue(CPTDecimalEquals( plotPoint[CPTCoordinateY], CPTDecimalFromInteger(0) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals(plotPoint[CPTCoordinateY], CPTDecimalFromInteger(0) ), @"%@", errMessage); } -(void)testDoublePrecisionPlotPointForViewPointLogModulus @@ -610,7 +610,7 @@ -(void)testScaleByAboutPoint1 CGRect myBounds = self.graph.bounds; - [plotSpace scaleBy:0.5 aboutPoint:CGPointMake( CGRectGetMidX(myBounds), CGRectGetMidY(myBounds) )]; + [plotSpace scaleBy:0.5 aboutPoint:CGPointMake(CGRectGetMidX(myBounds), CGRectGetMidY(myBounds) )]; CPTPlotRange *expectedRangeX = [CPTPlotRange plotRangeWithLocation:@(-5.0) length:@20.0]; @@ -637,7 +637,7 @@ -(void)testScaleByAboutPoint2 CGRect myBounds = self.graph.bounds; - [plotSpace scaleBy:2.0 aboutPoint:CGPointMake( CGRectGetMidX(myBounds), CGRectGetMidY(myBounds) )]; + [plotSpace scaleBy:2.0 aboutPoint:CGPointMake(CGRectGetMidX(myBounds), CGRectGetMidY(myBounds) )]; CPTPlotRange *expectedRangeX = [CPTPlotRange plotRangeWithLocation:@2.5 length:@5.0]; diff --git a/framework/Source/NSCoderExtensions.m b/framework/Source/NSCoderExtensions.m index a527f68c7..7e539c058 100644 --- a/framework/Source/NSCoderExtensions.m +++ b/framework/Source/NSCoderExtensions.m @@ -253,7 +253,6 @@ -(CGFloat)decodeCGFloatForKey:(nonnull NSString *)key { #if CGFLOAT_IS_DOUBLE return [self decodeDoubleForKey:key]; - #else return [self decodeFloatForKey:key]; #endif @@ -455,7 +454,7 @@ -(nullable CGImageRef)newCGImageDecodeForKey:(nonnull NSString *)key CGFloat *decodeArray = NULL; if ( numberOfComponents ) { - decodeArray = malloc( numberOfComponents * 2 * sizeof(CGFloat) ); + decodeArray = malloc(numberOfComponents * 2 * sizeof(CGFloat) ); for ( size_t i = 0; i < numberOfComponents; i++ ) { newKey = [[NSString alloc] initWithFormat:@"%@.decode[%zu].lower", key, i]; diff --git a/framework/Source/NSNumberExtensions.m b/framework/Source/NSNumberExtensions.m index 3f49c824f..a9ee47ab0 100644 --- a/framework/Source/NSNumberExtensions.m +++ b/framework/Source/NSNumberExtensions.m @@ -18,7 +18,6 @@ -(CGFloat)cgFloatValue { #if CGFLOAT_IS_DOUBLE return self.doubleValue; - #else return [self floatValue]; #endif @@ -32,7 +31,6 @@ -(nonnull instancetype)initWithCGFloat:(CGFloat)number { #if CGFLOAT_IS_DOUBLE return [self initWithDouble:number]; - #else return [self initWithFloat:number]; #endif diff --git a/framework/Source/_CPTAnimationCGFloatPeriod.m b/framework/Source/_CPTAnimationCGFloatPeriod.m index 3d5cde004..bab4e9e98 100644 --- a/framework/Source/_CPTAnimationCGFloatPeriod.m +++ b/framework/Source/_CPTAnimationCGFloatPeriod.m @@ -31,7 +31,7 @@ CGFloat CPTCurrentFloatValue(id __nonnull boundObject, SEL __nonnull boundGetter -(void)setStartValueFromObject:(nonnull id)boundObject propertyGetter:(nonnull SEL)boundGetter { - self.startValue = @( CPTCurrentFloatValue(boundObject, boundGetter) ); + self.startValue = @(CPTCurrentFloatValue(boundObject, boundGetter) ); } -(BOOL)canStartWithValueFromObject:(nonnull id)boundObject propertyGetter:(nonnull SEL)boundGetter diff --git a/framework/Source/_CPTAnimationNSDecimalPeriod.m b/framework/Source/_CPTAnimationNSDecimalPeriod.m index f70877093..78541abc2 100644 --- a/framework/Source/_CPTAnimationNSDecimalPeriod.m +++ b/framework/Source/_CPTAnimationNSDecimalPeriod.m @@ -46,8 +46,8 @@ -(BOOL)canStartWithValueFromObject:(nonnull id)boundObject propertyGetter:(nonnu NSDecimal start = ( (NSDecimalNumber *)self.startValue ).decimalValue; NSDecimal end = ( (NSDecimalNumber *)self.endValue ).decimalValue; - return ( CPTDecimalGreaterThanOrEqualTo(current, start) && CPTDecimalLessThanOrEqualTo(current, end) ) || - ( CPTDecimalGreaterThanOrEqualTo(current, end) && CPTDecimalLessThanOrEqualTo(current, start) ); + return (CPTDecimalGreaterThanOrEqualTo(current, start) && CPTDecimalLessThanOrEqualTo(current, end) ) || + (CPTDecimalGreaterThanOrEqualTo(current, end) && CPTDecimalLessThanOrEqualTo(current, start) ); } -(nonnull NSValue *)tweenedValueForProgress:(CGFloat)progress @@ -56,7 +56,7 @@ -(nonnull NSValue *)tweenedValueForProgress:(CGFloat)progress NSDecimal end = ( (NSDecimalNumber *)self.endValue ).decimalValue; NSDecimal length = CPTDecimalSubtract(end, start); - NSDecimal tweenedValue = CPTDecimalAdd( start, CPTDecimalMultiply(CPTDecimalFromCGFloat(progress), length) ); + NSDecimal tweenedValue = CPTDecimalAdd(start, CPTDecimalMultiply(CPTDecimalFromCGFloat(progress), length) ); return [NSDecimalNumber decimalNumberWithDecimal:tweenedValue]; } diff --git a/framework/Source/_CPTAnimationNSNumberPeriod.m b/framework/Source/_CPTAnimationNSNumberPeriod.m index 362e4a309..75f437b32 100644 --- a/framework/Source/_CPTAnimationNSNumberPeriod.m +++ b/framework/Source/_CPTAnimationNSNumberPeriod.m @@ -32,8 +32,8 @@ -(BOOL)canStartWithValueFromObject:(id)boundObject propertyGetter:(SEL)boundGett NSDecimal startDecimal = start.decimalValue; NSDecimal endDecimal = end.decimalValue; - return ( CPTDecimalGreaterThanOrEqualTo(currentDecimal, startDecimal) && CPTDecimalLessThanOrEqualTo(currentDecimal, endDecimal) ) || - ( CPTDecimalGreaterThanOrEqualTo(currentDecimal, endDecimal) && CPTDecimalLessThanOrEqualTo(currentDecimal, startDecimal) ); + return (CPTDecimalGreaterThanOrEqualTo(currentDecimal, startDecimal) && CPTDecimalLessThanOrEqualTo(currentDecimal, endDecimal) ) || + (CPTDecimalGreaterThanOrEqualTo(currentDecimal, endDecimal) && CPTDecimalLessThanOrEqualTo(currentDecimal, startDecimal) ); } else { double currentDouble = current.doubleValue; @@ -57,7 +57,7 @@ -(NSValue *)tweenedValueForProgress:(CGFloat)progress NSDecimal endDecimal = end.decimalValue; NSDecimal length = CPTDecimalSubtract(endDecimal, startDecimal); - NSDecimal tweenedValue = CPTDecimalAdd( startDecimal, CPTDecimalMultiply(CPTDecimalFromCGFloat(progress), length) ); + NSDecimal tweenedValue = CPTDecimalAdd(startDecimal, CPTDecimalMultiply(CPTDecimalFromCGFloat(progress), length) ); return [NSDecimalNumber decimalNumberWithDecimal:tweenedValue]; } diff --git a/framework/Source/_CPTAnimationPlotRangePeriod.m b/framework/Source/_CPTAnimationPlotRangePeriod.m index fdcabbb21..4bcf492f2 100644 --- a/framework/Source/_CPTAnimationPlotRangePeriod.m +++ b/framework/Source/_CPTAnimationPlotRangePeriod.m @@ -30,8 +30,8 @@ -(BOOL)canStartWithValueFromObject:(nonnull id)boundObject propertyGetter:(nonnu NSDecimal startLoc = start.locationDecimal; NSDecimal endLoc = end.locationDecimal; - return ( CPTDecimalGreaterThanOrEqualTo(currentLoc, startLoc) && CPTDecimalLessThanOrEqualTo(currentLoc, endLoc) ) || - ( CPTDecimalGreaterThanOrEqualTo(currentLoc, endLoc) && CPTDecimalLessThanOrEqualTo(currentLoc, startLoc) ); + return (CPTDecimalGreaterThanOrEqualTo(currentLoc, startLoc) && CPTDecimalLessThanOrEqualTo(currentLoc, endLoc) ) || + (CPTDecimalGreaterThanOrEqualTo(currentLoc, endLoc) && CPTDecimalLessThanOrEqualTo(currentLoc, startLoc) ); } -(nonnull NSValue *)tweenedValueForProgress:(CGFloat)progress @@ -42,10 +42,10 @@ -(nonnull NSValue *)tweenedValueForProgress:(CGFloat)progress NSDecimal progressDecimal = CPTDecimalFromCGFloat(progress); NSDecimal locationDiff = CPTDecimalSubtract(end.locationDecimal, start.locationDecimal); - NSDecimal tweenedLocation = CPTDecimalAdd( start.locationDecimal, CPTDecimalMultiply(progressDecimal, locationDiff) ); + NSDecimal tweenedLocation = CPTDecimalAdd(start.locationDecimal, CPTDecimalMultiply(progressDecimal, locationDiff) ); NSDecimal lengthDiff = CPTDecimalSubtract(end.lengthDecimal, start.lengthDecimal); - NSDecimal tweenedLength = CPTDecimalAdd( start.lengthDecimal, CPTDecimalMultiply(progressDecimal, lengthDiff) ); + NSDecimal tweenedLength = CPTDecimalAdd(start.lengthDecimal, CPTDecimalMultiply(progressDecimal, lengthDiff) ); return (NSValue *)[CPTPlotRange plotRangeWithLocationDecimal:tweenedLocation lengthDecimal:tweenedLength]; } diff --git a/framework/Source/_CPTAnimationTimingFunctions.m b/framework/Source/_CPTAnimationTimingFunctions.m index a50417ad6..a01d533f0 100644 --- a/framework/Source/_CPTAnimationTimingFunctions.m +++ b/framework/Source/_CPTAnimationTimingFunctions.m @@ -51,7 +51,7 @@ CGFloat CPTAnimationTimingFunctionBackIn(CGFloat elapsedTime, CGFloat duration) return CPTFloat(1.0); } - return elapsedTime * elapsedTime * ( ( s + CPTFloat(1.0) ) * elapsedTime - s ); + return elapsedTime * elapsedTime * ( (s + CPTFloat(1.0) ) * elapsedTime - s ); } /** @@ -74,7 +74,7 @@ CGFloat CPTAnimationTimingFunctionBackOut(CGFloat elapsedTime, CGFloat duration) return CPTFloat(1.0); } - return elapsedTime * elapsedTime * ( ( s + CPTFloat(1.0) ) * elapsedTime + s ) + CPTFloat(1.0); + return elapsedTime * elapsedTime * ( (s + CPTFloat(1.0) ) * elapsedTime + s ) + CPTFloat(1.0); } /** @@ -98,12 +98,12 @@ CGFloat CPTAnimationTimingFunctionBackInOut(CGFloat elapsedTime, CGFloat duratio } if ( elapsedTime < CPTFloat(1.0) ) { - return CPTFloat(0.5) * ( elapsedTime * elapsedTime * ( ( s + CPTFloat(1.0) ) * elapsedTime - s ) ); + return CPTFloat(0.5) * (elapsedTime * elapsedTime * ( (s + CPTFloat(1.0) ) * elapsedTime - s ) ); } else { elapsedTime -= CPTFloat(2.0); - return CPTFloat(0.5) * ( elapsedTime * elapsedTime * ( ( s + CPTFloat(1.0) ) * elapsedTime + s ) + CPTFloat(2.0) ); + return CPTFloat(0.5) * (elapsedTime * elapsedTime * ( (s + CPTFloat(1.0) ) * elapsedTime + s ) + CPTFloat(2.0) ); } } @@ -197,7 +197,7 @@ CGFloat CPTAnimationTimingFunctionCircularIn(CGFloat elapsedTime, CGFloat durati return CPTFloat(1.0); } - return -( sqrt(CPTFloat(1.0) - elapsedTime * elapsedTime) - CPTFloat(1.0) ); + return -(sqrt(CPTFloat(1.0) - elapsedTime * elapsedTime) - CPTFloat(1.0) ); } /** @@ -240,12 +240,12 @@ CGFloat CPTAnimationTimingFunctionCircularInOut(CGFloat elapsedTime, CGFloat dur } if ( elapsedTime < CPTFloat(1.0) ) { - return CPTFloat(-0.5) * ( sqrt(CPTFloat(1.0) - elapsedTime * elapsedTime) - CPTFloat(1.0) ); + return CPTFloat(-0.5) * (sqrt(CPTFloat(1.0) - elapsedTime * elapsedTime) - CPTFloat(1.0) ); } else { elapsedTime -= CPTFloat(2.0); - return CPTFloat(0.5) * ( sqrt(CPTFloat(1.0) - elapsedTime * elapsedTime) + CPTFloat(1.0) ); + return CPTFloat(0.5) * (sqrt(CPTFloat(1.0) - elapsedTime * elapsedTime) + CPTFloat(1.0) ); } } @@ -275,7 +275,7 @@ CGFloat CPTAnimationTimingFunctionElasticIn(CGFloat elapsedTime, CGFloat duratio elapsedTime -= CPTFloat(1.0); - return -( pow(CPTFloat(2.0), CPTFloat(10.0) * elapsedTime) * sin( (elapsedTime * duration - s) * CPTFloat(2.0 * M_PI) / period ) ); + return -(pow(CPTFloat(2.0), CPTFloat(10.0) * elapsedTime) * sin( (elapsedTime * duration - s) * CPTFloat(2.0 * M_PI) / period ) ); } /** @@ -326,7 +326,7 @@ CGFloat CPTAnimationTimingFunctionElasticInOut(CGFloat elapsedTime, CGFloat dura elapsedTime -= CPTFloat(1.0); if ( elapsedTime < CPTFloat(0.0) ) { - return CPTFloat(-0.5) * ( pow(CPTFloat(2.0), CPTFloat(10.0) * elapsedTime) * sin( (elapsedTime * duration - s) * CPTFloat(2.0 * M_PI) / period ) ); + return CPTFloat(-0.5) * (pow(CPTFloat(2.0), CPTFloat(10.0) * elapsedTime) * sin( (elapsedTime * duration - s) * CPTFloat(2.0 * M_PI) / period ) ); } else { return pow(CPTFloat(2.0), CPTFloat(-10.0) * elapsedTime) * sin( (elapsedTime * duration - s) * CPTFloat(2.0 * M_PI) / period ) * CPTFloat(0.5) + CPTFloat(1.0); @@ -354,7 +354,7 @@ CGFloat CPTAnimationTimingFunctionExponentialIn(CGFloat elapsedTime, CGFloat dur return CPTFloat(1.0); } - return pow( CPTFloat(2.0), CPTFloat(10.0) * ( elapsedTime - CPTFloat(1.0) ) ); + return pow(CPTFloat(2.0), CPTFloat(10.0) * (elapsedTime - CPTFloat(1.0) ) ); } /** @@ -401,7 +401,7 @@ CGFloat CPTAnimationTimingFunctionExponentialInOut(CGFloat elapsedTime, CGFloat return CPTFloat(0.5) * pow(CPTFloat(2.0), CPTFloat(10.0) * elapsedTime); } else { - return CPTFloat(0.5) * ( -pow(CPTFloat(2.0), CPTFloat(-10.0) * elapsedTime) + CPTFloat(2.0) ); + return CPTFloat(0.5) * (-pow(CPTFloat(2.0), CPTFloat(-10.0) * elapsedTime) + CPTFloat(2.0) ); } } @@ -426,7 +426,7 @@ CGFloat CPTAnimationTimingFunctionSinusoidalIn(CGFloat elapsedTime, CGFloat dura return CPTFloat(1.0); } - return -cos( elapsedTime * CPTFloat(M_PI_2) ) + CPTFloat(1.0); + return -cos(elapsedTime * CPTFloat(M_PI_2) ) + CPTFloat(1.0); } /** @@ -447,7 +447,7 @@ CGFloat CPTAnimationTimingFunctionSinusoidalOut(CGFloat elapsedTime, CGFloat dur return CPTFloat(1.0); } - return sin( elapsedTime * CPTFloat(M_PI_2) ); + return sin(elapsedTime * CPTFloat(M_PI_2) ); } /** @@ -468,7 +468,7 @@ CGFloat CPTAnimationTimingFunctionSinusoidalInOut(CGFloat elapsedTime, CGFloat d return CPTFloat(1.0); } - return CPTFloat(-0.5) * ( cos(CPTFloat(M_PI) * elapsedTime) - CPTFloat(1.0) ); + return CPTFloat(-0.5) * (cos(CPTFloat(M_PI) * elapsedTime) - CPTFloat(1.0) ); } #pragma mark - @@ -540,7 +540,7 @@ CGFloat CPTAnimationTimingFunctionCubicInOut(CGFloat elapsedTime, CGFloat durati else { elapsedTime -= CPTFloat(2.0); - return CPTFloat(0.5) * ( elapsedTime * elapsedTime * elapsedTime + CPTFloat(2.0) ); + return CPTFloat(0.5) * (elapsedTime * elapsedTime * elapsedTime + CPTFloat(2.0) ); } } @@ -586,7 +586,7 @@ CGFloat CPTAnimationTimingFunctionQuadraticOut(CGFloat elapsedTime, CGFloat dura return CPTFloat(1.0); } - return -elapsedTime * ( elapsedTime - CPTFloat(2.0) ); + return -elapsedTime * (elapsedTime - CPTFloat(2.0) ); } /** @@ -613,7 +613,7 @@ CGFloat CPTAnimationTimingFunctionQuadraticInOut(CGFloat elapsedTime, CGFloat du else { elapsedTime -= CPTFloat(1.0); - return CPTFloat(-0.5) * ( elapsedTime * ( elapsedTime - CPTFloat(2.0) ) - CPTFloat(1.0) ); + return CPTFloat(-0.5) * (elapsedTime * (elapsedTime - CPTFloat(2.0) ) - CPTFloat(1.0) ); } } @@ -659,7 +659,7 @@ CGFloat CPTAnimationTimingFunctionQuarticOut(CGFloat elapsedTime, CGFloat durati return CPTFloat(1.0); } - return -( elapsedTime * elapsedTime * elapsedTime * elapsedTime - CPTFloat(1.0) ); + return -(elapsedTime * elapsedTime * elapsedTime * elapsedTime - CPTFloat(1.0) ); } /** @@ -686,7 +686,7 @@ CGFloat CPTAnimationTimingFunctionQuarticInOut(CGFloat elapsedTime, CGFloat dura else { elapsedTime -= CPTFloat(2.0); - return CPTFloat(-0.5) * ( elapsedTime * elapsedTime * elapsedTime * elapsedTime - CPTFloat(2.0) ); + return CPTFloat(-0.5) * (elapsedTime * elapsedTime * elapsedTime * elapsedTime - CPTFloat(2.0) ); } } @@ -759,6 +759,6 @@ CGFloat CPTAnimationTimingFunctionQuinticInOut(CGFloat elapsedTime, CGFloat dura else { elapsedTime -= CPTFloat(2.0); - return CPTFloat(0.5) * ( elapsedTime * elapsedTime * elapsedTime * elapsedTime * elapsedTime + CPTFloat(2.0) ); + return CPTFloat(0.5) * (elapsedTime * elapsedTime * elapsedTime * elapsedTime * elapsedTime + CPTFloat(2.0) ); } } diff --git a/framework/Source/_CPTMaskLayer.m b/framework/Source/_CPTMaskLayer.m index d4cceba9f..b712e53dc 100644 --- a/framework/Source/_CPTMaskLayer.m +++ b/framework/Source/_CPTMaskLayer.m @@ -36,7 +36,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context CPTLayer *theMaskedLayer = (CPTLayer *)self.superlayer; if ( theMaskedLayer ) { - CGContextSetRGBFillColor( context, CPTFloat(0.0), CPTFloat(0.0), CPTFloat(0.0), CPTFloat(1.0) ); + CGContextSetRGBFillColor(context, CPTFloat(0.0), CPTFloat(0.0), CPTFloat(0.0), CPTFloat(1.0) ); if ( [theMaskedLayer isKindOfClass:[CPTLayer class]] ) { CGPathRef maskingPath = theMaskedLayer.sublayerMaskingPath; diff --git a/framework/iPhoneOnly/CPTGraphHostingView.m b/framework/iPhoneOnly/CPTGraphHostingView.m index ccf0df3e5..25bf0b044 100644 --- a/framework/iPhoneOnly/CPTGraphHostingView.m +++ b/framework/iPhoneOnly/CPTGraphHostingView.m @@ -79,7 +79,7 @@ -(void)commonInit self.allowPinchScaling = YES; // This undoes the normal coordinate space inversion that UIViews apply to their layers - self.layer.sublayerTransform = CATransform3DMakeScale( CPTFloat(1.0), CPTFloat(-1.0), CPTFloat(1.0) ); + self.layer.sublayerTransform = CATransform3DMakeScale(CPTFloat(1.0), CPTFloat(-1.0), CPTFloat(1.0) ); } -(nonnull instancetype)initWithFrame:(CGRect)frame @@ -301,6 +301,7 @@ -(void)handlePinchGesture:(nonnull UIPinchGestureRecognizer *)aPinchGestureRecog pinchRecognizer.scale = 1.0; } + #endif /// @endcond @@ -316,6 +317,7 @@ -(BOOL)canBecomeFocused { return YES; } + #endif /// @endcond diff --git a/framework/iPhoneOnly/CPTPlatformSpecificCategories.m b/framework/iPhoneOnly/CPTPlatformSpecificCategories.m index 4d22e17da..7798382be 100644 --- a/framework/iPhoneOnly/CPTPlatformSpecificCategories.m +++ b/framework/iPhoneOnly/CPTPlatformSpecificCategories.m @@ -30,14 +30,14 @@ -(nullable CPTNativeImage *)imageOfLayer { CGSize boundsSize = self.bounds.size; - UIGraphicsBeginImageContextWithOptions( boundsSize, self.opaque, CPTFloat(0.0) ); + UIGraphicsBeginImageContextWithOptions(boundsSize, self.opaque, CPTFloat(0.0) ); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSaveGState(context); CGContextSetAllowsAntialiasing(context, true); CGContextTranslateCTM(context, CPTFloat(0.0), boundsSize.height); - CGContextScaleCTM( context, CPTFloat(1.0), CPTFloat(-1.0) ); + CGContextScaleCTM(context, CPTFloat(1.0), CPTFloat(-1.0) ); [self layoutAndRenderInContext:context]; CPTNativeImage *layerImage = UIGraphicsGetImageFromCurrentImageContext(); diff --git a/framework/iPhoneOnly/CPTPlatformSpecificFunctions.m b/framework/iPhoneOnly/CPTPlatformSpecificFunctions.m index 922dc209d..737d400f5 100644 --- a/framework/iPhoneOnly/CPTPlatformSpecificFunctions.m +++ b/framework/iPhoneOnly/CPTPlatformSpecificFunctions.m @@ -18,7 +18,7 @@ void CPTPopCGContext(void) #pragma mark - #pragma mark Debugging -CPTNativeImage * __nonnull CPTQuickLookImage(CGRect rect, __nonnull CPTQuickLookImageBlock renderBlock) +CPTNativeImage *__nonnull CPTQuickLookImage(CGRect rect, __nonnull CPTQuickLookImageBlock renderBlock) { UIGraphicsBeginImageContextWithOptions(rect.size, YES, 1.0); CGContextRef context = UIGraphicsGetCurrentContext(); From dc8c73f7323a5d48f5be7a997a559bea18159f2e Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Fri, 24 Nov 2017 14:17:00 -0500 Subject: [PATCH 042/160] Updated asset catalogs and app icons for Xcode 9 in all example apps. --- .../AppIcon.appiconset/Contents.json | 16 ++++++++++ .../AppIcon.appiconset/iTunesArtwork.png | Bin 0 -> 418335 bytes .../AppIcon.appiconset/Contents.json | 16 ++++++++++ .../AppIcon.appiconset/iTunesArtwork.png | Bin 0 -> 691786 bytes .../AppIcon.appiconset/Contents.json | 26 ++++++++++++++++ .../AppIcon.appiconset/iTunesArtwork.png | Bin 0 -> 691786 bytes .../AppIcon.appiconset/Contents.json | 26 ++++++++++++++++ .../AppIcon.appiconset/iTunesArtwork.png | Bin 0 -> 191272 bytes .../Content.imageset/Contents.json | 4 +++ .../Content.imageset/Contents.json | 4 +++ .../Content.imageset/Contents.json | 4 +++ .../Content.imageset/Contents.json | 4 +++ .../Contents.json | 8 ++++- .../Contents.json | 16 ++++++++++ .../Top Shelf Image.imageset/Contents.json | 4 +++ .../LaunchImage.launchimage/Contents.json | 7 +++++ .../AppIcon.appiconset/Contents.json | 28 ++++++++++++++++++ .../AppIcon.appiconset/Icon-Small@3x.png | Bin 0 -> 4375 bytes .../Icon-Spotlight-40@3x.png | Bin 0 -> 6852 bytes .../AppIcon.appiconset/iTunesArtwork.png | Bin 0 -> 351813 bytes 20 files changed, 162 insertions(+), 1 deletion(-) create mode 100644 examples/AAPLot/AAPLot/Images.xcassets/AppIcon.appiconset/iTunesArtwork.png create mode 100644 examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/iTunesArtwork.png create mode 100644 examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/iTunesArtwork.png create mode 100644 examples/CorePlotGallery/Plot Gallery-iOS/Images.xcassets/AppIcon.appiconset/iTunesArtwork.png create mode 100644 examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json create mode 100644 examples/StockPlot/StockPlot/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png create mode 100644 examples/StockPlot/StockPlot/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40@3x.png create mode 100644 examples/StockPlot/StockPlot/Images.xcassets/AppIcon.appiconset/iTunesArtwork.png diff --git a/examples/AAPLot/AAPLot/Images.xcassets/AppIcon.appiconset/Contents.json b/examples/AAPLot/AAPLot/Images.xcassets/AppIcon.appiconset/Contents.json index 219a768e8..44518e8c3 100644 --- a/examples/AAPLot/AAPLot/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/examples/AAPLot/AAPLot/Images.xcassets/AppIcon.appiconset/Contents.json @@ -1,5 +1,15 @@ { "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, { "size" : "29x29", "idiom" : "iphone", @@ -51,6 +61,12 @@ "idiom" : "iphone", "filename" : "Icon-60@3x.png", "scale" : "3x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "iTunesArtwork.png", + "scale" : "1x" } ], "info" : { diff --git a/examples/AAPLot/AAPLot/Images.xcassets/AppIcon.appiconset/iTunesArtwork.png b/examples/AAPLot/AAPLot/Images.xcassets/AppIcon.appiconset/iTunesArtwork.png new file mode 100644 index 0000000000000000000000000000000000000000..b2555b99d3c3f1269831d956588a99170cbfc687 GIT binary patch literal 418335 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

    5J~X^Y-W6fA`~$Kl#uH9)105 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

    =M@Mf1Gzm~a`_X?N%;VS< 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%0DTwf|l2hyps){b--15eC#%umPn!UE@d(`kdWe7 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 XW6OK9Z!DB1#@Eq+;3K5NXLJ7-K@uAC literal 0 HcmV?d00001 diff --git a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/Contents.json b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/Contents.json index 340f2376e..44518e8c3 100644 --- a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/Contents.json @@ -1,5 +1,15 @@ { "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, { "size" : "29x29", "idiom" : "iphone", @@ -12,12 +22,22 @@ "filename" : "Icon-Small@2x.png", "scale" : "2x" }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, { "size" : "40x40", "idiom" : "iphone", "filename" : "Icon-Spotlight-40@2x.png", "scale" : "2x" }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, { "size" : "57x57", "idiom" : "iphone", @@ -41,6 +61,12 @@ "idiom" : "iphone", "filename" : "Icon-60@3x.png", "scale" : "3x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "iTunesArtwork.png", + "scale" : "1x" } ], "info" : { diff --git a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/iTunesArtwork.png b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/iTunesArtwork.png new file mode 100644 index 0000000000000000000000000000000000000000..969aff8dde6e79cf6e0cb19b8511af43ce6b8c6f GIT binary patch literal 691786 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�^{2w&cgxq5NqX8>ae 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∓l<>qNulKTwpv{q&$Y2`A|WVwSex{&t@5P0$6H$1TneTIW0)XDgG^SqKJ{T4$B_Dy%9{llc#ZzAC57 zn0eZ8^a1@UXIrQl|5h^59)mu>=Js1+EPOViWm*AJb(MG;!x9Jmq<{X8PsxZFc;}Jh zWq^hC*S54GPKOiCvTkXB=!;d`SPDh1wS}RMJ3)Sef=>;?HQ{KJ1mrONDMu-KeCD=Q zQ98n-?FG>sH+W(2i8>_IChu4zvt)@7^6Lu)^&}m_^DakDMEex1Z(?jyFtC!7(Rli$ z>GaqhIx6qIUDQMrk{tL1e|&;SLsG&7+IY9D>UNNyLKHyqIA_Y_*}g8(AJ8R3IjUKfer*nr@Ne^6{YRcT zpjD<+L|hJEdybY!M+7SX8oXRO1#?!jFUYL0b^=IST?lcc9c?4px58gKjaKi!_RtiJ zJH}fPyc}f5eG6AyX1qp#sirY_JB>zB-5qyEaL0Q+bENgBP`sDjRu}h&5umzzz6T-n z?P$0?^87T0%hq5ie*@Z8lj&FAzbXCBS5CxHk$?PiTf@f9AAheqoy+|D_N)8Tl^Al> zXzV}vL>4Oj`p<8PJgDJzJ#(tgB6)qVN6v|Q?P9_m;pBXuenWUMCQX$rf?RcKRSrEE; z(d>%^cepBIhi`lmWavV-xUX;-TYGyfzBQhX=;qz=(LVo5oUv^G+A%uJ(LptzoD1Dx zxEEt?{RjaUb6)v(>HWW(u6g!bY2efpNAkOqs{dW63YwSb)m2o_`?uxKN+Q!mz@Eb> z2=KngupQ-OtfNl*`@p*aZ4a#DhgEzBavP^-;jx6D&;5Jl-zYpXw<$QsgDYrb=6MIr zLZ_eUG{Yj@4u8VMMRN$)Xiv>JRe15LQSxFwN*aNhZ{x3HK<)9&KdS%h5dw4};NUC( z3m63e43Lpw0A>DNyv{PGpy4q5;!ElH@MM~x&)}0axpKB58D48=50}(Ur=Ri0DD*>I z^*4O|&!d8RKKTSPGT4M(=AAJ^!Hu`NXxGBqaCBF*L31PPw)-C8n&)c076Ex+ir40k z^KH1!j5dK9@6lK5?-IH8c^qA{Jk8i5$%ob zR#-;-wIYrUqcjd%s_)LPr{~6}P9y}aj3_at;J46~m{mx}=R)|Ud~Bx6L=H8>Dm;TS zbhCh%C%^@1bg>n1C?K9jT7HOy--{T&@eX-+n|onIorGh+Eah+@z}3q>aYqK@B~QkB z;hdPn?c!TJ>lko6cOMfw-LQvqelmydOlZMg=Fi=4E$iRT8T-9h%b#MPycp)$TMGIa zSD(OQeIMcPzpg+29$^>Z64d)2XIKAruIY*E?o719UBNkicO+!C%PxeIrRU-`E;o&q zgA18rQP?Yg%=b|iGCyEPU%G7Jil1Q)Z0+S{fVU%nxEDh~f58H67TS4S;3($~k0I98 zTK$cvZ63k6-ZMzyJwmaM^LQ@I)m(Uyg`5+M#)4#MXOP5tj?p@h%gK`+OKV{A!adVm z=EBvF%yq1S>M~XhfLh6miDr$|K=Bgc1-uH%%dQsNnS}+_!U~v3l}vf&S}g#5g3+=q zm}LfA>)LqJs2snA`_}*A-CNR=7*|?Mo!(@%ntU$jL`PU89vOiK%=*riJ*?VpxoR+7 zhPFU)docj@z|&Ld$-Oh2wd*pa2yy{p-dJX^=%CHx?L-*D0Q>_=zk*1=pq((4XZ5rM zxuhi^m#svNbm~aO7kt#I6KNr-v3)OC%DeQ@H{eQO6-(dDIA*-Dhzh{`-S%6@ZTc?i zSp$?dQG5786#KP#50bP6F8mNjr?V+!nzzc^gmJPDro5(xa5DX+aHL(o%Em`4!jE^_ zTL_(~uo%UF3-U)kpqQC<5s8a_5i1eC@i$$ayMgZddt|40+LM+l?=z_U|DT^dnx29A z*nojdnGYG^wKU?mYLLR3hbjxX?rkRK)%0@Xs*Xkun&L;n7*Hz3dBhcrEGQw|gSJ|F#Wj8w|Tg&NR0E)gMi!UwPlA z^o9E-(x=|HG5yhZG2Y5B`%^a$VDkpMH_Va$>{rgJ$42GOAHQ=b+Jlzwy-u$8Mym}@kr>vpGh-hEu9H^)4;dw);*oxhky$lH^4AXsq6 z-+op*>droXTjTt@yN_ z)Kw$c*XYhMu(qI@*m64U@ft%wL=sPK1@Y2E#CyqSNjUc~r{YnJ=1rh2s9^L_>=Ze6 z#Sx|kfg(0P{f~bk-S))i(}t;GHhSP8H>1MN0xahK7_>9qh+2}2oZxSv3nD4ydzFT- z<}81*hU{Z!dE-!8GgMUnS>#zCr(lZN5!d4X=m=-wvHE{<0?kakYxIEWVpyd=m`)^H zijG&A+rmG9bNbb*kBqMd$l)~}ULw6lc)aQ#v8%E~p|amP)+jv?O@oF52m!j)YVcTt zgtXIGc;QuJu$(ggXg7?#xHla?GMXk?=V4wsj7^s`%Ckx`kMDdmo38IN|Hge9V}D0) z`4kpHuVuHpr_L)uwJXf|Vsp1ZZbG@<{@pL0NT2*5S7LJXtq&{Gw_LeCU5Ow-W4M{% zHOjV^g1^mknGfl_Dz{p=6_Bx{Uc2G!U1#s#&0sQz-S#X4vU;P6SBU;*@FEm=BMAU3 zzD=<-NBduVpPW2)d~?_3j?v4y6@r(ITL&(Jr0L~=9T{nQ){)y^Z1qclbu*c2fKCSZ zTvYkC45IGI#O!r8OAR1mZw;OWbG8|nVy@4xa(PXn1}0FD4C{}+( zpMnON`w7kgY8-FR*r_=8CsThl`H^Ygjhepa=MIfx%#X#(%@_5gtJr;h66?W_zz95u zb>Q<*#eB{${w(DH03ZNKL_t)m0Ab`~=-~0K$4{mS7HAHlQ3nwBJ}eiT7t{XXbF;zF z`>l`zyOF_oIGMS4!8@c$a`UBL+_7l6RvBA-@^CVk=F6A7*3(5{oiiA5e6mVph6#6*x0blF01(CCb- zXkC>DH3w=sR0K1w;WBI1Rk(OIU@H_QxPr)!$gBkN1$3cT@UG?#L*nCu9Q=2K-h7}hFtu}}q} zW0?!srVzmNZPigfma`(bZ9r?>A%qCOLWB&E%XTL2_5KRiQF@O3Y?uz2i^cNx?T5#) zHNkNpRGv-JUHC{EbYXBXw*4)T>Bu4r1TIP7D}Fhz!nBgf`WK&-}TG;A%Z)KR7wkF*SJ zd2I(=uLhp$Q5PMS z-ZtiYqMrIYQR@w9sFSoYCeRp`$M;52gSWA9w6ZGft}700O3@o`JZ>SwDS|8+qP$^B^|_&4nGhNG~!JSOd?g{ST%0J^1_S+~a$~ z`0=Jq8)$bu2$ZS?h#4dUv92Lg=0z`a7V~9PK;$OFRIn|LfG7yG+`$G)GS-jsD>qMdA@jn0#@a{Xu`jjic)S-t}A3i?{r8n!DhwX>GSxN8$MjotsIQ zaP;&-3;^m}r)n6}@kZm+>Vrf(Bg}lo@lYq6*RjiUxA|SWws&wR=Dd5?v3hsZ@ULp* zLH5^oL0*S6exnEg>{87?+rHmC*^NGW_{e!z({>i?cnv>WSL2hfm*G|!(Pd~1UMr!F zQHAy&E4%ibIheZB?ykRgx;qHyTnM;Z-efsTGO;j?)p7BmtVBBv*LU>=z3jHHNpHWR zFPLiY;r`&YT*<`_yz1>P1a!OE9dBND=RNb6?dXaf0ekAU${xYBoTo3&G|aEN_cG+} znwxjenj5C^F4gS4uli05;ykwRR2cmmpP7rD_=8wd{>W{EasKH!(pO#4tA55gceaD{ zw3z>`C#S*~pF)7c2n)u!qeTN@#hJd$zfTuEy4cwZ8skUi)mU(WV{m4IEs=m3sD&+$ zN(MEVzS44no>jdVU^A_E*da(^`Xj?ty%u@}q9uMp*w6v! zg01YLx6!Y_k)E$vOiHCr`w7(hf9=ED zqknqsm^Xkl-E|kQM^ooidLDtJ!a?u%j{2noXDi5HC(SINFbQ(1l(EXLux2DQ5~}ye z545x&2TzE&~lkkVB)L?jkx!+l92r@s;~W>6`1gR*}2a!KJzWe$CG(tQpz6Le( zNv?->yas zjCI5s21So*+Wox6gPZfx=f69e-f~SpLI8SG zs-Rei)3iO#!=Ij*N)xEWk7M+25{t~U*!GEn86OvQ0eGawPo!nR^}q#1E7(S|IV@+d z&Wm|3?aWfN5lSP1+uj=!5wm@Z3K_jWzE6$GLyhQ)BlZKs#9o zIbhj2;&A53(KNjOXc`~KKqW!$;`1n^%4OlZ=u;XTLBoMw6Giu85rVj_u=j;uF&kp6ndAXVkvPI{JS3;8~W9ozw! zbe-z@d022UnkRt>sD6qNpmcI^U%)QIKfH@Gg;?jkf<=jw*CjCL?#_3*D^WYtsRkd5 zdEP_y4?NgejLA&{dlO7z8#$|}#()gD3mKX7viPQy^XQI4H$Q=rl_p6C8 zvKv2nVq_G_q^kT{A2H{WR;E2vtb;N|^RIOQP|$W^8b->KvFMxhcZppP`kviV6G((c zrB{F}KEMh3U{9F!*1)lpI&R@AskSB`H%KqShQzOaU`rcaR!YvZW(t}(5faxKY7nuw zucPw%wI7Yf?tk8)sLBo9GUHsnvtcZm4c8fkD89?gMs5KOdRnF`TD_uZd6cB%S^A5U zWkjjt6)@|_m13fl2$+!DWvT}8@Ba+UC28bd+Z@ie$O;dU~}WrFUA)>=>${2dLX zG>PSy{Q}d5dzoGTHn=4|q)BnoEl6)awC;FX9_iiG0uWxfLg!qe6|5f-#zQ=T9FOWv zCP>3pKjb>Fufk-_&tXFZCdOkX&1&DwxN!J)ClWA! zp%B0r;=)jmeB6a^1{ZC0NV}YitQk;t?2TLUR%p@cUoGNz^Z~4qPWV!PR-v#ZURA{K z6UH!a4>)Vfx^&kKLvaK^CSfHfUhh4B1VNnbF*F|V(;B>E<qC;)I=)*#&x1SQ>C zT8hj7m@9`DBAbyQtS>9M0A2}b$?%|qbY4wTOJX5lh4`JhEEHWK8fc|#>42>aL_0MI zH^fnjcU;#;eXWPt?@z~RckkxD`nO%(m$o9P3KCZd7Hy2Ta`kI*ClP>;uxn@CIA1=% z-0S6{Vx;c`f*r5-`u5{fi74=4^XZ2$`HyjB>^A0S>(z7nY9g4Xevdq( z!tq+P17QZ3f9K%>{sim#fAEcY=3b81xYNJPGRWJKbSu$mvHG(KRV2zdDjF;X8vrZ* zbkv${yAdbeYmW}t0=GoCJ+)QKxz^2R^mU1eD;OjHHJ+-wNT&+GAPpI-$*~EckN34} zPbh9Z5f5-);l`wp-g4yt>!F_X@H3Mfr8}K&y=Hy1r}b!9x;F9{NlEJTsp+%}=Kt#F zznyyKrqdAdHe;Bt3+a&KjB62};mRZWu|CD4f+?S@?;^DN7S1`ik6rO@cm4-Z{g**r z%fh)bhBrSsk*0=^r?HV?4F8SibN@{F1%>2t>=d zhUF#RGe~>5encqabw(_r79QVwxVEsjALf6MbN}r8cWL#XBMzb2AY1Qu=_y0$i-IYeJ{TNym=jQY}fg9h> zOET@X3qtZm9`hXJI(t4HXT3G$u0MUbRJT>-*kN53XWw7zyoQJCs5ttT8+ZWcZ^~u5 z8K^{E;@MH+CP5;N7L5wcmOvEV)lgG`VEB}UO?S`cZT)>ceKTW0-opHwuqa!Ft75(R zSe^oJBmscU(eC53`IknI>^pvjBX}{37J5~Uw|W%cm-l=HkxQR`c?mV4H6Vj!d!&Hw zdR+?Bt}!UxL6~h96z(|aOsfpI;lWQ40%(Y+mxbnA*-db_;k_(gbeC~HUzd%yF^I9~ zaA0we_vQh2@wL|LQ}sd58LBxo4&0^ea=1`=9A;l5g{tTuVv^Hf-W-{}8qI+1s3Y!S z;d)T({x7a$VqBA+W1vzU{Qz<28I3e9)KyKwc6n74b(X4&0dBr49})1#!F5=|-iPq4FcsPyIeue@v*}&E zmubBjub#XYffuf`?iK+Hue|G#X_UJ_j_jhfo=*&JjJW#SKAJ}V0@*5lK5)whEI^-5 z_dY(F-hcb%bl1%+9B}(F5Ve}GRa8Jb2{oZp)+Ij8DHB&DTn1p?kHuHbXqCT^;Deu};i zL&TV3O(~>`b-F4&=2u@l+=+{RnzM{A!Ge&q^%lZYdQNGJxqJau|Kwce&!|%)`bUvn zcm?VTNZfkFLfO|C+X4b_gr%IzzWer#>BF~kEmT?Q)hR9hBI?ipgUNHOmTZ>VtDvsG zY#{BrC^MWJIIh(Xt-L0xx11`l-z=2x;wgsg#9v(al3mLY)mj2p`z&L5f$#h-{;%P) zRg#P}Q+tU7BCr9`7$-{%+l$&73Z6fD$6#3d*AC9xcA?3}Kik?S+G}wZ(edyEyZ#F6 zAEIr3;Fck@^-}r{#@;^n?UD4h>jzQU?@NF1_2H<$3(x8UQ$8F1-6wj{L`J&i}62=LnAx+7xwJn+~A-k)Qda@m^}RH4d}_tGMA&!SS$P*!@+HmOjNf8aSexuHGTw z;c3-7MrgFxI`l>cY363JEQ!KNnSCwzD|l4<#+`qS-rjc2AT}D-rF(wF`SHn9Y;qtP zwSdI!;i`tSv7vJpx8>Z*wTch!?&a9wbb9ZNgCUgJg5W^=49=^ViHJN6J^s0L!|pGq z!ILL2vdo%q%OKj8wlNA8|6AoOV{8Ou2H{{$)vCnwPcz}s;A0GFpj{E;Xc<l#&c{9t4xuyIUgDrk2wX8YaH@JCS-$u_m+2j1PYW-_gIiGL3)llG#Bmj^e zwmVy_&+<1va&+$)2KJ(l;h#g|<*(9@eIR!$$F6-a&{`VabMzDgAZGY%p>c$>f`)QX(oj*QKNTLXHh(~}3WRLlsi^-*KV z(7T}QfeDw9cOaU^`msCkmvfHs92Vl9OMCG>_t>{=V!1}ur>_* zc_vk7n0?&mI$>jG(JwoDeum87f?JuMyF7-FVFzhmuuWrrFayv)mHrmw(j!MmOEXC; zcp^qCacKax`H9KX_X?uz(V4NfK;jZV7o}jy0OAf;=d*aUo>djKJeGOO=}5nv%ShAr zMKj$(#1u~*aioGeFN?@l=+bX4GIy|J`N$fF@R)*YFQ_{lK1*pk-4 zGzLwD_M2a6Q03F_AbbuDcwQqo;`?6H46NdAHVlC)7ieqP;wwB0dE@D|NVwjeWDEY0 z#^C%J@d9Xx$cE{b$XHo?6`{xy+0Qus3jG!>fM(wfI@`#i{vip(Q&=T4rM7@{F7$A! z55`-9IKZ)r@!Ya&&_4W*GZu|92Fdh}A$as?lINDUbN>G<`u~lWt-&Z#f7*vS_PtL| zqLzIs7X1nnb>^!a1#o9B+G4dJ$_6R(QGn<+MloY{q^eH^4jOA2JN>TP39zNRc?3s) zQMj|89ZzvpomyD0H8uP+eQztwgy+E>XN&N*ir9A7d+{sJ?>{k?Ucj&$sq>G8ABj%E zFn;xiqv>5Yv6#n+Pi-rA7b6SM!=n-{7X+_ArOWHq6>_d3gD(R#=#hmo)|4=^2i* z9AU1y3x@9xzBUqfclYg{iX(B(R|>TDah;{z#qW_5Q_=nvXxoN^f2aK^K(H?R;9;z} zSL@1-e3DJu#G)8VlmL zqC)pP8|zhIa{p?574V!ZW7zf7>fXr)NjF5?e|VaWid=^UT734!QWmdSbF6psdy<=h zJUY|GI>@!qI2#(q_bAP!m-WWgn~!q!=mgpy*3T|9Hh$%UThsFxQyc^K(C|#!jZGr= zF0`ZceuU<~fK3SPEa|SrF30T%0(2S`zV_mN;Mo+}!%Yty-@dN=5F1w%dTBzx|k@d8FUm}7&K zDwcEq$4|tSe^VR-@Z5i?2En2Y%BJZm4<9i%hiCqA>@g2K!UY@(Q9kjyO2Uc<%q;!F2rai8LyM zO^{5yN$E;ov-Zk+1T=nxWyu?VFL9;)!Q20Cnm_M0+EbRiI`28oIF8uPVm$$&H2z)2 zp9Z=`UlnBC&oQ8>spILBKeaJkg`juCU}Yz#WVVW_R#*|(#&V=4)S{?gmZwRH&cE{B zk^IZTCvebaUC&@w|5;vF@*;nt?-T-*Bnf)ctwe!0k^sQ=*ZDWkbrM_xczk*mbIIMI zll*F%=}IJTg|C!S4zGS`)(j6hvQ2yumlq}s9)zQz6h@ugc`t+Ir7-c`^!n2*Ob(AY z*bqjfh}VHn9ELv(qy7+ox1-8<69)BUqFsnyj$yZNJee0Q9x?Fj{RVbCp4^XRcP2zF z^pCQ;5od2fhC$dc{^!oWmilEX2f5Nl>3DJL81Bs1PGe>%@fOG0@^xa>318mLbWAEz3VKH!m}UhlbE=>43V^PGX}Y{&#Xk@( z^YeqJCOLOKoj&rmEx~{lP&GsLa9(wSUCH&;ZdjYTJB3HTgLck8G8~JPiZE+iQX9fz zSrge6F0x+NLnfXRXt?}YvQR%O-md;GFP#gM;@^DMxFcmls>Dm0dM&}=8>A}?e*XFi z|GEY6V{`?3)FF*1_gATucPXTwqzW2Hx>(@wjK(h`h;Ja1zyORHs>7 z$2Fa_v$`FDKMo4n=0XBR;^u;UdOp@{hEGJu@#33&HqRKBrYAjox2Tymlr6tR9}75s z>~FEqBLS1}cLT;Xw{CV<&vj|WIF5Sfum3-LL%{p<@7|o=dQCn%8bJIUd~5o@|C}9K znDURjWhm|5Glgc{P#9O;j9}+sth;aBn0MvAj5f=|&k~NcZViy{=UB!e)cw1NYpUyL z2C-nH9dLA+^l5vg0A|ESMf)^gOO0nkB+_f z#`Upo*@qD2SATj_`r>_K=|$cxZ;si>i(^FeEd5Gl*w!nTtE_y*GsJJuZSw{+h}ezy z7~=FS8xO2U3b=xSa)dr25pafaVu%}S6r3rjU=fr?*kBle!M_X}Ne^@MV*fCPf)N0H z0Ar2UT(mycG2G?Ob^~zy`{VSFBGrV4eMi!?WpMefkjBl+I$Wp*Q{PJ2po7 z6$;(YjSq*9o=zWr2Ujd|gtLcn=u6-CsQBi9XFx&KQP!I zbGi8~6iTSAmSDT8O;JegA2}9WoO_> zgID`N=^No!aPrJo{`Cj*--l3RjTZm4Y0$%;5;aq#evz)it+Q~YoTrW)#^~R0+|0nT zHfeQ3yv0?;%4IH|)icuP-8k<44`bzj_w9ctO``t4rgxCMHZfI^R(w!L#*04CqPeqC zXucwZ^7xNMaqQWKAbg6AxB)c2A~~z7qW?-s#atz9WV6LjEElhkyOgXvmy6R3EAwO1 zPr-i|DsUUNUcBviS6|oMTo?j0DRbwuB-$plK2Og~VqtD( zdJO9+n?o%86Daml9U=xp(+9xT?6eeRabIMotp@*yP;&E(sd!$yGgkf|u+S8E`1 z_=93(Ny++oSW})otp((qrh?t3>-emKvTq$0FS!h$Y;%P+ZJuo(C5KH3r-)thsuSg^$NaM3|kbk;1t9rE>>2+H-uEpK8Gpq5Rm^aW(VLXDm&u2yhr0LIQy* z;^Thm-Et+&JWaMA;}hS<@aOGZKPeBt9>zk$r8)(Ss#U8Mq-EsqJvJ3Xez{uDyqHVr zpZkUhnwI{N8_@(z>7P|I4Yt_+O7`&>pK|vyDxm|Ndj! z({=3NoT@so!ql(*aEz0@NLb`wRC#PBP^`I#*pDsH;tMwlq;hIx+i`}Kv*k7kp zRb4}!x3I&gfZ@7}2cXA9dKMabL?HT@nXxcxTeLYc3hhHU1A(Z4wor@kS~|(HYFE*3 zDfnjI3g~L^$1MO+IThxP)u{sO>_y9=!rdJ8iad?;efpkpjzUd_;OJ?OzM-k|o1Z_H z{-;muNarw4{@TxMOP{@GB&P5wRWq4sq6*YmaEgFmv*(_VHMcm|tMd z<2d7W?2fKO2(}l2^^Xv~Ov2r58R`y$jMk|diUO-zeHr#fK8z4YL8A^dTn#)Innt&A zc7K>#iT?9fhtocU=675@l-_~%n>+qDTt1L)xD?}#pi&#sJe`eD?`Q7Zl>YT+jwTc} z5dy7CM-cY>yFWXgzJ_paGwS|c1NgUodOLj-#)p15PbOk0dg;M*(Se84z^N&&H|>op z|JJFN5XH4^_{vA+Y!9}VJnsqw1b@+ncok;@I%2J3;OxgBUe_je{yiHX+6C1@FI4}h z(n&1-k7@OvEAghu>pV1$sU4h@GLYu9Gk#@2c}#7kXS&j{kpW|d(>wfmX}0Oscw50$ zMXGVM3R9v7O>E0u2r>G-?vJvqhxza7W9NT8gRPxTsZUABo&Qk%N74V-u{8YB;dEk@ zo1&BnfG5hAlds>!-}JA7BM&nFp8Hn-@bEQ1n~q=g(`jx0=IA>Gt~|xjC_?dG_NiT~ zC?r2-U7_L~*9``qZM3z!-!_<@N6YAOZUAu()Rnp@h)vfrycTYWDqRtE$I!X}o}qPZ z&(LK%kW6)@EC6tkYPKzuf4&3urdtgKB;Fg%**43cZT@usnlp1VvnPgo*KXMSnx28P zIhxWUZmFQy{c1#tR_$UpM#(Ca&u0Ac?zmnCbFVjXVJ!2nYMKT0JdnL(n4NK%@vz>z zNZvZV9233UcME^Ig#y5`xRGYX#YEPb#}@Zl zz}lXcuO*x)LHHIXEC8~9DW+fbyW!!gmu80QumZ!g4ljXvWE%M9fS;H5F#D8KhI^iu zFc3xoLj+Kbz&5urb~ya&>z<9~SLVh>ifyki9+^r1`7e&83(xL_saVfqXO0CdXCawa ze;>8hufw>U=Ll7^!!N7ndX=3_T;R-T z_|2}s`jr{UDxiAk=lS$fwQ(N2%7gE^I!{&Zt87;oS`X>{O57`q_DYg^P2yO7X}y$- zI-@~lO@Lf0QO7Z+<$ACUh69=23IRe3rL+==DMMrpC=9T*j&s9@PjyC)A>BrhSf)^O zHs9o>lrfkc!t#hJjBzq<{UU$1ALH|()_~y(iK1VVLBlL#XgY}>82wcFH|DKZ^rpA$ z8c3h}-e_FsSVtv*{M))(^NOW#d*k>B)g%>{_Pt>sIrXlTvtcx8`Y3mil3LOw4kEz$5;tZXADvI(t{ZGyW;#l z>Uy3$cBk8c{n)!tGsn(G-#?B3VTAsx%C?$G-+Fk0v*{eAd++8DL~I!3DChdgwCl+) zq_a@{*EUF;`$w`7V@nJwRlP?uk!ZR7xK5L1`4}Ki>qx=@;^-E&SLzzzK6b>z=$~i* zF_agRxb5Cu@yW?_((~|~`yYe(KRG#@=Fo??-3QJJZyq1aj~*S)E);o+EJR?Gp@NO< zS5fqe@5<9}qw7pFTuGw<>&bhx8{&!EbN{{Uf_dfN22}pL2PoJ2YUf{7G6zo6P+Fvr z1MSf?d;*LA`_stCM4F)8I6^wA3RV??x9m!u%D2w~C*!XW;DMcQOGj?}L|U`y0y33z zzgRruF6TmUUeT`!XL=)}v*|y6epyL zE=NY!V$r*Q2>_6&iXaab|pg5zqCZ<-Qg(y(1@Ej{9sDgmfG}pbgH!qge@<$p5 z6odt+B81)rM<8bSV|NcPwM?bqQ7>ihEv`7}aF78zQ#-|Tpym5}JXHKWL?ix%R2M_}VomE){C-jd6 zEqPjtiFFrirWtl90E`_ho&~kE2_{S&{^J>W6xMkD;Ih%c%zR~^OatpcToqUj;x|ab zPFBXXilc+@i^%@kQ^oghs@GaFWix9vhC8I2F zJXv(r1_2GU-BUrKN)NzV7WLvZ|LbAsXJB59cN{w;@49INMnk#Y2xk5P&h_^o@Uy+D zh2(i!ndR}RzWQ9P*mcI&$y9$3!)woTedzazZ+mhh&4r)>q}t&xlhW*~xdq}+#)9#$ z0__|1Ie*_p5)H0m{F_MYcV2|0tP|vEj9ub$VKn~dUpzZ@KV@tlW=Hf-zCE1I+r~~6 zdCBMWGZW=io!7I&*axFCi)|No5EaICdkqKqQsbux#LVB$bNkYJFw7}4qqDT$H(#!c zEzDJEG66$HM;o$02Gk8Imr?K9>Uie>A%Z1buyRIzJ-f)?Qkj(LB=Z%0q@867VF3Q8 z8RLTKBDzDfN8dEWcx<#@9u#)toGuIc;5ICUqxc~SJ*FO%$(InHqi}A%P*%a`6 z@!rw2XXmMO^+mlLIqym*Q5E@VGzy*}kItW)@Y4pw^ZSQ`$#j_h;&)CkhMndb$*o}| zdGf1&mM+_SU)r>0Ds9@h0Y<%tI;Q+oh;*)7LNpM@SiDMC4KIF#(m66@XMAExMC!e# z8@m-7HhG^MoFmc~EgTBK*o(2JG&_M2!{K3e|3_i|IYz~1ixpt>`U$w-C53pWJe}*p zh+^7C_1TPMVC4c&{A7=+c~%keD`6$RPhIs~!+KSF265%z;85!6SM?u_DXsp;x&LY* zpt*c^{qT}<61Pw$n!en8>eW?hlaVu>*Ag?@nqf<)Rxu) zr(ZM{Q|8^w6}m0}UY$pUX?4J>fa2QfwS9ftb_}fF+=oVm=q0_C=hN@K7=Tx_n%L}{3C3_nAJ0FSq z(+6kMrJUK9aX*h8udB}M4pqcy1_*o0t8w)tULk3n?Q0(rn*;yq#WRlyTd)R=NY<~Xc{P*uVrD?^vh}vl}|Nd$KCa9 z#B0@+J7Beo{Ij-ye@*oSF|K)cNq<{Wv7o?|9BfI3>-cWrMi}g9e*~MOVE7)IThie-PvEJB4 zF?<|`<}vI@c=b_M=g(ubw61f)yT!@h22>tAT(T6{U?ij5ySB1+uQ1DF05bjF zZsMX|b@%(QxV{A|>{ntt;3aHbgt|RxhuFciZC}B3;O8()=Ij?{uhp)EjzE*dRhf_X z+@r0~;v4+2AN)C9xm)PfV5%E`^tKJ@!?z73t@9VvXY>3deeOxFcbh^*S)+tzLOO}V z@RRK3O9{{NkFmQyeBxBt4)8XYF2+1S(kvPi1N2etvl#X97p6j6LUn0fIT9w5)mFNo zLx7NGRqE=IeSx;}b5#_tRXrD5hZ-^GXjLd)Ch#h8E&>*9qN9+pW?lrgcm)GiK6qN+ z`!GOxp2wv4j@@Z!m$i>`sU>Ai|L_trhZXV%Nc`lwY<*X6) z8r7Vmhi`ecUuIWc2;slwjpT|qp9=d*yID*SARe`EHgV+aT+i3j{-)u-)Q$-HRqa!_ znl6z@>w6>igl=M2eiv(-v$yteuD&bO_K%LuBK&uwcU>F}@@S0>^*y(2V)uO$#|);! z=%Po6wqa@iO2&&1-@YMT$d3Ilva|2J_RupYnd@?YyB7h#;|SyIe82ot+hD*kxL9dI zUW?Y-pWQnaHyB;9voBqIPA@zCtiN75nf9>$@ILm3pFE!a;m6NP=Wd;+eCyI@zd1@< zpzsyl6jDsme|sI*GD*`9o|p`+k^VzJNN4}~@1-3R2h(OO{tpacXP~m;>>QZ~gp4ZY zu&S}-N1j8)={Jw~%kl7IGL8A(U2=BE*TN)YSODf24$?NSVFWDx&y9_7zq|iaTy1#ZKpH+uS<$khn8Exz$`@CLJIfs9 zt^!P6r=QzwGXMMgHm1FA{rlO_jY0R zpJSZdE@81=LYrkDg6=Vd#maM*brtv5nt)$lKsaxcR9iU zt{SEb;g!nRHUL$->5eS5i{jyv|JUBJW7+!R4S+haHVk>F5<-wh6=bLan*$obHTHNR zA2E5i`^J}Lw=KKcbay1@1)mtjP1DFS5_!&R&j`al{!u@`h|9&Bb&Wzv`j>xn1WUw| z>DNDTZY=;%&9a{b%Sk2|&#_L)tu(IrF%xrF!wpiP%SglLi5cQCU5Y9ql#Pb$*@jRpJ{pNq?LoMcC_}i}>Vizr? zy)1ObVTMn_?79GQH&Au=Z#_C0cc%|B9=iLn113S$`nO))AAc`maLrxzA3Zk{Oo0q@ z4`)|A!|%3K-eu#Rf-9)7xf)b{^GEgx?>Z!xul56^7&$eryYrh-`Mvnut`N@N4imGT z^T5Tq`#+9w!y8T1o>5KMZW2eS$cqb1%X6~C|aU*K$#T8~b+7#Z6keDy5f1Oul zmUq8Pyr@P!Y@;QEhU-_gTKiV~l|+iaAh!34(=fXE^x1UHbY<#AN3W1_Z z*Yu?CJT{qr_s_YT9+mpL-?BN~jJo}~oZa_q{b88;jm$?17%oF4fBWX1^j#SHBN#@0 zYR^e-J6e}eGA0kx>7W__tdc``4LybbCEy>xP~TZ-&AgSf|8d*Wp;PH4jBXACe}cZM z&|wSe|0n5t?(To-z7dRao(`?d7h%LUte?h4PA}R=2=!)q(p#^!4XmS&4sdngJT#aK zfuNcKci*uwofgb@t20- zYh?d?P&T!SdQtaZw-L2}t^R8m&oz*RnVv~!Q2n2V@gE%-PU9ohxqpHx6uFI*4{%1C zsH!UR0;+I4^)8_CUh+}->sR7a?HN`W{`_`awuu&$gk;yiqlcee?C|&Y^#$WUfW`kV zwHmat*+a!<^+S+R5X)Jq{?8rd-2Z`NY+lR;^Dh%`o=ST5ht57>xXv^U16%T{K#l%A ze)BJ-@yqW@YkQ&V0#{-Z;8{4O8?|eu(#U}sX$A>TG_}aS{qQ6<8t3a33Wi~Xg|Sx^p2QAcx|B_V~*`7!A#Un>cU14o!=H^~Z-; zv>;vPeL#b2rit^M@$Y^8I9dZIW4@|)86z}P#AG5V@?fs=J8z=kFTy1-IAt7LD*q~; zy7*M!vC!#fD_Sh96S}BTHvN|p1}tou%~-AX*y(6}uKI1Y_*X*M)~89 zv;JxIo~VEPqfAx7T;#fNe7(9R{YxJ8EA>^WCqwL&w}-hZSEmr?J)A4|>cDSv-aA{mCxG;9D%x@LP!d8dzLU%rUo& zAV5Bf(9U??6y)L*d0mGq5uq<3rti_dL9QykU^_eRgL5$2bLo$iI8Ilm|H&eA_;SUYS%P{`gvxObtV z@0G?MynP4(!dlW>mmYh53PX-3FyP1)f2=pQVYz?*u|AFh^rr_Hv;Leu{1gTar@^%r zZp=A!C)Y762tSuRKZI?7Ctm1JZ@Fe5{nGoluzQQ}j&aNz0M0{5@Sdwvdf{LFRvLWZ z+iCF3G=~4Spw13;C`?cTmBX^`iuOVoT>}KkD^mNOeIk%A3*`1dY!w7-Uw?ny3TdLp&rHs0cuNokRcIe;~D+`ePpnTvv;GhK4tN-hS# zdSC=p0q$V$nRMBXuDF))kr!uTM>-bp9Z5J|R#QlXloUl@l4wf{|B`264OcVBo~1!UM_-4tm3!eSu(H)!Rxp(FA4$lpwL+hAcx8}Ya~%4icSPd)JxfguQp+g zm?tIT_jI}Ef|@bs5?uhv{G0qXtg4@y$MQO7|F?4Gj7-&W46_|$w@b^+!i2g$d3KQ^ zucyx$METOgPpc#rFf5YHM@)p_o5S)Hm2)UA!*xN1{2Jfor%cx6S^O7!7F;E)^Sk)3 z_W4Sf|JCGkwdwyP;9g07tzX+hZfuQ8qgsPqfpDdt<(dYbhS39~{5|eB)>^jBd6b=S zg?wW$>Q}+k??MRhBNoyxa{Zt2v?{)VowDyC6mT)7CFBuII6wH5HwAES_nx`57nT2y zziVr{?XuQw6*pod<&v|vg$4I7KQxgZL+xG_d9OBQBQLZJa^s{miZ~jddCzUQZIP=V zaY`v|t}^)Sx1{at4sPh{3L|0fhY1{p@zG$Ii?neTZx1~?jX>>G9Cz?&f*Lj&IXs6e z`~LYq*crQnLmU%`c19epdJ^{#+63Mut`W}P`0sXx&5r-=?_C%-At-!vH_~g&cAh<$ zzKK!Jci*@n`l@4OubNZjF*6gCD8@(%@mJUt+Bb`^m|ruz^WB}%5Rz5{_oDHo6#@2% z7{~Hw8>&#(UNe_oBXLxu^7rAWx_F;8L0mPSns#B{bHM6ksJRfENZVnq_plM7w%YZV_oq8Bx+!g}gB!2tPtUP-`04|k zb?02a23&!V@dB>wQ>FT$=eYA80l`lC#;2yQB)xD-6tkO0N@dx_i@#rb^=Uy7M1juzWkXq z{rNvlJtN1{&?b&HV#v-LtL>}SS*+!39MLB7(@(>#QkMWZFkT37-q**L8YDy$o-uF$ z#(xL_fM?^CMv0&@`Zt5Izp)Y2;ZKaFDH!89#$IV}nvoAbVa4xj~9g^9Q##3^ja=l)UsN9Eru4cEk(f0%zIsL@%- zh!raH&k+Z#8glOc09p=QaY&nyiLcNF&c%K@!<`n~U$fR9zTmcW?8Z-~b(=0CpPAlG z9QsI#rn8^M+6TnZ^?d@++5THOGc>3b4-Eu9#gWV3`Lkhefl2A+E4j*%U=3hy@+eCz zzAE@;!u5N`*UB5;(V%L81utSNx$wDK_i|Y-`_CFWM$h`~TS>$FQp~1*W}*D?`leeA z1>Q&kfM&b&z5Ln#W>1|$c^S!A9LAHAe2rW)(N~2sM%fmI7)v@wj#hB)33P`;SpIx` z->LMDUAd}NdmH2&=s2oriq4jGWi=sCRS0ABISY9u3e~*CC7Rp7$-1kFfTy6@Aa4TV4I~oz4My&ab~|spO?_k`a{w@ z!gZPlxc7Uu8oM@f>(Ni&F_bRF$eCIYOS!WUBIqoKHv#C*A+6#*{I)F|edyu}x-RII zcSL259>X4hwh?ADRgH^0#~U@wcwjweMj||4*^k7x(tN%ew?cG-TlvokmG2dzE}bh8 zM0;&v2(K7HmyXsM(uMYl0-aBD_WK|G+}3Eb=g|Iw-|7U8Oy`_Sw&G&1=HytPSIN(q$U`>&4ohIS`*$>m5S%f1J3-PRyo}4JsVBGiy z+BkoD&oE3SH)xU^UAmI;OH!AYo8)1$&aje=Ma=Aw1xy3(=0p&^5 z{jvBzf#v`4@rg8pc9mUN%szEtIG1Pm@r*IBeE2k*Hb(z=cZs2Q0TE3M4V9n%28O>s z@uFvTfnPtIZJ-tc;ODpD-5iI?SN;uf1d1JSuai)-L8E`MAT$BmgZJiX^lxf1O&mOw zjvYY=fL4w>|Em52RrMoY8m^foVf?mu4xuvt&uut29k}U}>GXNmqfC+4N*SucSBO`2 zZW(u7{2Jy9Vc9o=R`nw~+u`5D5U$L>@n_&^_R+STABu+0Qpj3;*;!gGQSx8`7jebA z~sq!CtSq$FL0112+o7J!T2YuORl%OZb#CZ>ymJ)XklxR#?r zmP7ch3s%7xkSE+$SgRpLv}Jz^z6=yYI$loBO0nCV`Kt3q8qKV=0Rq>E+iVT(#c}Wk z2_%RCw=4pPAnI5|kccqih{4_vaI4yS=CrgUB#@dQbinHfJFlKi?%miEcOBpV_$a%Q zUFjGLrQ)=?pnB`^ai>HVA0?#q3^5M@xye8gGsSS87dJVAbkbWngzEpLHf7SI?hJet zt|D%;wHSa$ToNf7e4b=Xd_=4^YTED9N2QuolEPD73#)SlPTj0e8Q*{8_ zfa~5a8lM_W(SM2HvzvCdX;8IYM@`zFxJ%}EFAFQn;yvvGl(Z&T_Lq`myKl#rXqN$Oq*_N@2E2xO#V;fn`0GTheaAc6 zse@KD2C>_6ZI3Da$_F+D^RI6Yb=;3o-lJ-TJjTr*j&VX|*Qxqn{2h}E^Uo_uCF3PHBDL?~2=HJ|zdhR2<<5kj=F2Z;`<=!W` zryNPXHv&AzwUips(}sn8IwwkG(C#u(8u06pU&EX z)*RY7v#K#z8I;qpMmNp1f!Zbb5Jo>g_wCX2+g~_NA6%PmyLylt0?wo(dtOKze(&F; ziynR`_06A3+qZG-047#Jx^tgtNsdf=#-E@~psw0XRlm}o|CJc80the07gXe7j@PR8 zKg6F#@r37w0;Cpc-W~q{c0h^0<0sMyp5rIR(##YBSc1e{)dKA#NAbH#Dw;tV4+GXX zvS|`jQt+@&0|y_%8dq2F*75NV+&MVniiYUnBAP$`0jR%1jb1bv`Y4;se_Z+33-gaL zz`Xkpkn^KLjv4IqpX4@N&9As|!{2~N0@??;p`lNX?614r8`u%s!1*}UO1C3jb{^V~wA@`Rccd0|dDRd>F(_C0X{FeR z6(hcjU(z-o!0HtP2|0}TfICUF%97)k{5P=0YaVD?FlC}M{Tzp-PK=^Xf;bW_=~yPO z0KD@2tcKprfoSssM3a7K7V;{%{K9BasjDp7h_NT z^~zqNe>ZSO{{|JcZR@jTCrhuoB@Hi8_h~2*T-#C!I z_`}Kc)dwfZ-#q8;d)Yi&llEZb%MAC>kF>bo4-@XD(>r0l@48`qdW`$WkD!hzBj8TG z!i6Ik@jD1(@dCRvH(lPBCO8j$fV^GKSk_NmVZX__;2ThDRvSR)Sz!eg#}LLn3$ru| z1GQ^sKdSws2oWaIFT8JCoOO0bvn!73tVxf&a55Or_uV|mj{n+Vx;$%q8O+m_T)X!C z!SO_PqaI5C%7&sC8=$YE=dznCm8I)EjlN|#N?%-5jxV@UdHL(d{%g{@R-NbXSM%#J zfP!}c9s=wmc`RKBRhpskTuj4%re|SFJwM(@z38aM*a5da5}{YZMy66dr~j&8#Z%w z;7082sOG4HZdrJ4e{}srTY)^8x)~&Z92iUgl>Sv*-xQwrgwa2QoI~vX_oDjmJ*XB~ zf=*!NUzK=v|Ht{8oJ6zIp{=0j>3h^`@v8z&C)am|iE&gCRGpzcpE+{)@gr=+$2;;{ z`DG}6tH^<_0G2?$*FvLi&i(ge@NWamf3Ft*-T4oT|I!a22eX>_pH62u_kZFL0)X+E zM3n{;&m*#HI{r1CSyv#F9R<2yjN}5BrW_2Y^1HAZ*u#>(d9hcJj;jaa;ufaMa0?cuENi0BgZ$V=ezO z1{8>&$kVn=!fX0AZ5S=~ke?8%+RU>uvr?p7@?QIec<{ zl7mhgx1Ia4nvTt_)hERF%3LRow(r*PQ(E`3;|Soc1K{6~PR}C*fJx)rn@%-P4dz_5 zy)Qk8lv>vupTZ+N=}B#6^P}?fr5ea%(s8$;8cnK)5P0P{@nI3FGPS%L;Re@*DrvE3 zC~kI!cLB+5AC?B9 zMmMVa5)if<`l!cM@|j@Zv|(Wo|HLJurjr4343IU-(t+>}9KHptPhNVk72vMmJ)FZn zip>hITTA&mCpqt}(!ksPXPRt1Df&eK5V9n*$UGcm?65>@ps?6ipc7+{!Hl z`rXT!-=i=e*YW+)I|k!yzPpIt2d=wnXK%Wk!P&HJ(IW`X?nevZ1Pp~t$#(2%TzXz# zItdehg0Nn8=G{fqX2Ckf??c10=?572``DdZ(>t#pO#kL{M`1Rw_>W-VvI~0C3ADbB zVUY9R;y*>YCZruNnfJ%Blb|-(b68n_=S>^aC*GAc9GE7;;9;lGGZWXIndxf&b^7Sq zeY4*y`7QWfN!*`g9P??N)#dKUxMN!@u$42X$Pkjy1kPY^>@ytmxRBl7bGYyR&$v_m zZ{NK&eeJ=CxQQa)(cRAchcL8Glq9NlZVE2UZR@#K>?2jW=4Clo^{q~jjv}=OgS$CS zHuK?R-5$49hBCKj;gKlI+}?`e+T>ycYnO9{r!>~u{bd(+r5E zIr(;uaZ~qEjJ(GVb!N9kqGwLkF89_)*d^~0nw z1Hz@f1fVMltxux&JYY|4odaOs5ghP=so{&Hcc0 z|E;vaU7UHbs!R_TueM9-r?KRUu!tXT{6rZ_OU~cM)fId;>q-m~fTfw6l(tN|`||Gp zdW;&X1+a!E=K=VG-En|(u#0p5RFb>@qbJhH!GqZTn@UrRzn=SdZ_IRoY;$#9@b%q4 z(-q!$s{TK5{;lcw4If8Bdm&{drxI-i7iH^&kx=Hf(-nL^8{zBx-g;|A*EbwC-|4O@DMbsK(sp8cDi@bO=@D!5P zp6;Q|-RpN^up(R$0Qf8=@EJwQAaDLIMu9h)0H8DuX<_5AcSR4I8a_64YHoJi>&R9m zI$EM>E#Yl?i@TQ{VR1B_zA-3*+nu9HMy8|K0`Ph%&(__H(X3fkgpP%sTEc1#l<_6w zY>})UYaGZ)AbJ>SmG-}9rF~yR%m^46`cK~@- zk-hm~$ZK*2k+Q!umnWMltcgDs59ZxLtjc%iAQpL#qBdg^r=&&Lq62r7CjST<;00MV zKD7_)?f8uuJ`24YnDc8BPsvw~?_^yNxRVYme9xBrQT=+R`g^D|&p~5pTNaM7 zFp-hd4_KdO$O$1{>v7xAoM@!eadl)#yCmAAMe%DsO~35&xAH>XYC1Kc7f$}|p{*|$ z++`AN`L6tC{#VNL%2?VVmMBU)&|lJ5v#;153R4gQA*#8kOIwCumLRHa*fwFC4HtoY zLpYbx%IrLU8gKyEmL0#NWr@f3L!1&nXik5R@k4~sAJ`zmK7gwCT4q;^=spY%_Q5!~ z<9CFez1tB6TzheE+;CxEDDEA*`mwK~Fs$VU*|GepS23}uABL&l!gw@@072)i0v;PU zGCIpn<0*FfS#WZuR@)`#Z|hA%jL%0n`~U3znRFo<2`9Y55C-JdD+W0WJ(s?EV4UNs z^I-sSKa9g4d~+my=ixDSle>dLo=29h9vzrOC?_TAO+)D<-5_W;=l`$7mVm-L-D$?` z_4MID;_g@(%Of=Z1Wf~=;rS|Gt6F`PSYB_@ZDor)=dV*}eB6rBIgP+sR|l~B@EwFt zqqGCtZ?xWAEj1FGeer6}Q?dIWE9n|E+I!<`$=59JE?6^I7(3+EdRb~*Tnb^ySLxSH zxMqL1Ea4=EJ=M;Lit$uaZn{#& zmY>+OYrQSu5%?ECQCD6cdx{%!25YU6G3Ju*K8lc=`Ap50io*38q*Q0DkxHcimFY~o z0=^z#qQiEMDr8Lc?RiABW9(x65Y^8Q+<>K9 z7(NZ${Ae!=MLTpyfy+=518!po%-v8B&EfzrQ=BM|f4E9=goHwT?$ z@wtP=(m9-8+D{XuZ2Y~COlYgvhV2ab2|Y>1OA+6C7K~a| z(P)L07{&>lEk38!MV=aaO?NA>s`>LDJE9wsm-M`vRzws>sXnijtrvBsIkzB6aIyMd z0#;@dB-x~cDx>p`DqNF$)~s{djWHFzx*-PtxMBv!UOTyUjMr>e%mL~O)kofaAcsBE zu~TL^vX3lV_dm-6^^cuT7JwvM79O_KWPu8!mkIJ#;pBzvSUp5o$&N(WWSM(jxwMb1 zktoPuOST<-RiKB}k^hdKQ02*JZcm=ocHlGGN;z>tFR7@b$SxUlLnlpt z`i(j5>e0%d)G@6x@&@}Ke|gTBVdcV-=V>$`{n(_PqHsQk>sz2J&Ye_vTN*Q9xa}0~ ziv2Rnn|Ok2tj@>8R>*U|@{?!kc&hRredeg1pB%Pl-`FWdo>{(Sg!a6b%%xkzWrKg) zvJpfOm&-iWWO>nTgehk#O=18nRnA!FW28a=7DWTt2BbM~)z}lShsLLz3@9f7@C!TT zhTUCEj9rpkp1UlA=(tHcBv{e??u*O1=R<9g+H@*~)5izXPiuAlw(GPat}_1BCsuTU z-h6sQ<@K0e`*@G;JUXJ4&R@{rmYr&gx~qmbxM1_^Pb}Eo7rYWeY8c4eb=zqAhd+B< z7o-iPKh{eA&1ZBep74JDYqPqIeY4u;*vzn~lNFX}8j zI{;?2U0koH@Jb#k;zX7~Zm7-2e~hOX6;UMyL@H&2Mhr@)O`2myL086yHNqKgeh8mo z%uQzEH|dm)H(`b}Q#7J;{@nOKIiV*FN0qh_t^5z`W2Oio1cAZ-iiYdj<*=k}{}<2c zaznjpv?Q-M_b-$k6>*h{^fLHo_5ZvE{I5LtpQe>temD&bYvLg*V0u@r7=o8p=c@je zI9a;8;v#J*({$`tmrdSs!;n2EN!!5%v^+hzp{+9ZGM3l@FnrvyX$CgEr4`jg<+fJ?^~Tn~*!alMB-_^*!;*yNw^y`RCH&Pk0YD~G zJmRB_Svfm@@r^}Z0_V;bzCpa zZK(lM=_w^ZFsP`217&5$AR4G7I2USks9x=+c3T;ZmG=l=Ue*!(F`%PmZn2joX4lr+)j7|@NuLozI`s>3v;?aJE1f4v%jSJVl* z{rG@A1;#A!`)<*8V?C2}VMb4nJ-3p+r?bR#XjqAwQYY%a|Lu$EMs>t~Lj#&;USCW9 ziu)^1&f7}mFaQuJKjVi95S?Ay zoG9MNFN3feROPAQ3A80#x|+?IniFoFpkPAQ1z~(|IM=KUY|4p%n&(?=A@ANa)!f?i zrbV=W#F73ix+Vtbmmt(PHjNGpaC7*f#Vo;_iLpy6v5{;$-z+rD@4-J?br>2OzeAA z%?fs};r9UFi9FnbEqg%K5!7TgS1|qR#YWP6VCQnj^U@QeHUI!107*naR9c-nxYTD1 z2vOXr$~M+KW9eghCF8gL z-&uQVZ%FOg5gjLk;B(Wf+O^&%zUkI|UDUUp%dC^Lp%4$4@{>2{Ie%)TmKielje8+=7Qk+(^0i$GrC*j zJE{+6bqV1~O)MPN&N#MJv+bS1*r*!G&uN=KFAfnGbqY!?mg$jpEcj6FLLP0`5*}n4 zO1$3E?BjdC`ESyDU;J`9w4ns}vS1egc^AOtUi zZ_7W$2pK4kzonZao|%XWPEkQ3&3UQdjj2Eso*74=!rAJu!XH`&xXe(OrHpA}V`4)0 zn`mOAZ=AuuDt|gU;DvZSt7td=YnQ{?g^OwW{3Xf5YSLy6yYb(1E|7crauO;>XbHvA zGkZxE^gZ$5f08cW^RsDS^h@8;fYw}y1Qzp$z&D=HEuap0~*{zh@?akTqOI8Cj3;GULCDH9< zw)<|Xr1H$nExK5TN{PNPoz@#PsCz6iK1XdotUiSSrQSA zS$3lYaz?kC!oO4u^x9Oed_Zjt2LK|rJ*D!uz?{wPOTYNh(e(9abeYc!+UbA?xQjrf z*V1HRL}%7R>rm&>uGUn6uI3&V{EY|FYp@MG0pF|cv?1P@~F0! zp3>at9qJ(c*&|EoXFf2R9(i#s-K>HCM{n1qNH4FaFMog4Ru>OzV&G9-O7^n06LbEU z0Tkq6UeXQ$o>k(;^6v=dPqiY#^TmE@v;xl?noYhklbo{l>JwEg5nzmN@ zvufr6(L&s(W!Y`5=8z|3i|37XQ5+0cfx>?}T0q&%Hv>VVj4(cHZ2^A3ewuQ25ab&V z15u*`9?pB!Dd(uHxn&=}fu|W1KEz;vfxJ}{0wzAnx}D!ApQBEp@GGInz`A;*Y;m;J zdxfR*&E;5!CzuG>*5szn+)8#hkAIgg^LtraiSN`(2rKPu6Xsp+kLW&&_uny+e*3TI z?DqTr;D-)NmbLX>XLEU*o2~e~5HPN~gv*n7xBXksET@Nb>-VGDp3DIM3tG+p#g9+v zew9H@gy|j(#XYO1$X?O}ON0$LtiTw!LD-X<2FVW{Cb3UJ31K`|+?2mB z=%TVuJ#fe-E1uIC<}pnGh+OldzVp~BM1_IS?`+kb_5+}s*+WRfF1c zDoqx(U@Vy=NUFl?*18)s*`$Pf_95U|MOnw{=@8Z|l!jAQ2Cwsr{ppK(5)bD7s*a!i z=6`i2UDSl#m$l{o=RbZ}Px@+in#v%%cc6=%EH9p0wcTfwH5DQ4tk83Lx=o*nHFi5P z;rFU8-Frh%cyj;IiYCQT(805SbGkf}$v~d9{nQ5!>n?`*^u%)u=|-LB|K%S)o<8%@ z!|7?YXH2Nm_o*gXgoX(}6f3J$1YW6dKlz>CO&@yd^Xcfy zkANoznCS42Isn#lw+}Fo10_CDE(=6Rjc7%D@URB|hx6c{ z-3Me717lq_xT-<_ye`C>*RB5x3oBYICqm&92)qR}s$|>^tD}~Wt8kOIg~eXVafB~} z0Sip&hJ`wd^q6~i${y^69>({>cI*Fy7CQ8_sxCI{=iEQf84j>JN&!L6EH0Nb=*hor z&i!-g-{s|`d0kt#>7j@cH&p0BMhyPhHSoxtKb|hW|CdtVx4^g)S)@J)Xu+E} z!hAEd+`E}#GQje)6ozgAc5)YKeLCYdG<@WkE_j?+U0Tw%HLDDvCWsAvCrnqp-_>F|*|hSOJ{m1T#jAkx*sV;1C*dU zcdD9oBlw#%+rT!$?V^*t&u&KD(Aa zdC!O@dNyq`gtLw->x1dZSJ%_?dQW{^ouQX6Xlt^zf^b&^Po&u-fcQv-O;Qf&EamgM z)%ah0e#KxWbfYl?73g3KBmF1j5n9DTI>2D78gB7~ z$=%L_nqayhc}L03;75fG9`9FO>DK?8&3lUeO6c8FL#2Z_f&*}oe3wmjVJ22Q`6|V_=UuS(8xbP}~ ziMVJTQlX5_5i9nVVq0RPws1dq=C>buoqL#ux$w`ZEhz; z-uNy6m&0<#*yP+~nq2_>cDKU_E4o6&R`>t)zqvmBkN@_pol(avR{x2|^B17S%Z_-hmho4_gPwBZmCh0h`c2twna|>(f zX_fK+<4-SXkngwq&#H_stIRS92R8ZzltDkxx>Vb~r96xL;+IFd_kLIg}&qK>f!BymaCX>Q!W=M1T9F9pMr*K3A;z2I`JFIj6 zT>8h;B-Axrda|TT{^sV=;w7#AOJA5@NNeJ4u0}EjVFI<#fiXuPtZ2D;be>ix!s|Q2 zW`5vlID{vZRcC?;_o{lsO^#9Sh!-G8r+yw*x`uU3VnVC_6WaPes5=0RiMlk=Dq!Hr zIPN##JyxY}=5<~AH=}!6G{M34efgRKG!%4{Do1Pdkqid@nodZMpS&lX{qTR5wolxp z{xke`<&qJ$x^6tokwv=d5G|X@iCKd)Ex*zPZ>`J;FJ*g0cg4)<9sqWt(MKE8d|`d*Ccn}n8%ut53mY=t&42IidYxlypl^8O#MGh5yAG``J^F@l zKpNzPzIU`&VTh}30)Q;06d}Lp@nPTCTwhw=*xFnj8XOqmoMo>HB)ckrqO^1kPUm9(X*(zqi*oB5dd0q|N8`=uQ1%RyXa7JD!^$J{e;H^>> z&ZvZ2#6mX!>iiY8OV$0zodl?`2CpDzw}MYeErP2t#HFF4#SkDjgInWnIi_5HdBwK;}?kjq-M|c=0&1!!dE1BPTc0GOR$yM9t z%Y}cu1wOw9S8~T*450&SoDvV|+#r77v5Wk2_Sh5-XDkgvp}+fL2a6tf}(8>V=r^&Ob5Gx0Mi+U&WdA zP9doXP#q-EJ@)Y%IQJ2>w;-w?u0$!Dz2hJx$Q>&3#cc=oyBnp@;un#rEK3&I?q`!x z)J-ZhHnfoNa2}sa`TpjyrS$7RJ*A6Hhtuyqw2(gY{&AhJAJubWta|jNuRpzG;;Q?0{ zwCDIMlFd)5{-mY<^RLgFtT``p9ax0Hh+I^Ie=5*Q(I0SC4gPc1dCpaU%D2cAeXER)BZE5HEcu} zcx%wD`eaE5zu83qDRY`gc;U5`^uF82)2DUE0PP$Kl22*-{}CPA@X0zsTRQNxeC^f>Grcv>gb#<4dvXwR0ZYga^U z{fBBWGT;V%MB#Oi`{8T~z^sfe`;kKc1f4J`NR(gTA|lcXc%ZWSEy8Eq2BYwUn#35^ zx&Mi=Nv-}*=-j^s|D5}0<~43VrDMYC|GIXH>wbfU3+K|TIz=4KS`=aK$to7V;h5_4A3C_}tXJl>%zzQb(7bX`Yw};|?d=DpCc^)Ee_6b3h*)r~oa_{r))p zB)dDlT=eQuWb({WvtI)vqf-;tzi;Z|`9~oTg84vNenGsPuc;;nuEq&~-~occhgg|; zZEF3V@Irfjx!^v{qrtLWgZ#gM(-Et}Pe8-K|{! zxUqsZ$z#t_JCs5913;CIb@)V#t*&rW{UpcL>WEa|86>&ue@W!bNS z5Pva}w(tU^qyE@Sdd^Ed0B*z9yCL4z$XF_P+f*eDm0zRN)Hd)hXsE)-0L{+j(zRt~ ziYZ85qJY zO7EKrHVCsocy`J;xpzIj-gAX*I{@T?y>)&+2M=OowX$mnK&BFtaofb4Tv~g^ zB2ve}FR-)$!1Ct$qE`Fw)RTk9lID#>vj3U>A zR%hGjF-IuvtyES1yxEbG_HL0$PJ>^NVXUz{6ffbw82L~C@M5~@zdWN`>xa@)x_f0s z1JFSxP79t^b+6!?gMVO z6#ByEK^#c#tw{iL3R$<90(k~jbOWN7Gxd)?yPTfYia!_BbCK_yR`MC9A65JJyte!g zNFHr`Clo%;a~vE68W@!$s7<346%7=cP?yWGGPOD;3`>AK3@y>M28Ohzva2i)b0+?f2LC!A zuPsO#AS)Cz`&@>%u%t_{weA1%CEfb3T>y(~X_KXG!s;Vk)>l&yBRhK#7wH4We=x`> z2jFN=3=(sLRw5|V|2{NHj z0A?}R;lRqjb~&tEByTJcb(17v+9LWgTPihk4o}1N?C=?C&lXTj~)Cr?zkv&%atHHkzg4edoiU;5~ zIkaf8c)UdEasYi0=E^6aYE*|;SG_sVZ`!*CJRlFKFSvX_SX*e|U#)}N^6J?HePltX zH=E{&r<0D%)OP`7C}cx2McLtk&p-d>k_PR4>5smmGs7z6BU-_KOe=&8fO%GnNi}~3 zL`PX9lRPKJJy&$jhwS!K4Jop0n_Oox%bGb^%qE*MMf^C1Svq}8RtK-wWp1nLR1GPD zRZSvPg8)O~KY1$B%aJ*${6@u@;hOd$cx&))g+t{>RJK-S#T=tcKc+&*B0niBdw^+2 z!wttqH25FZQ-oraKo5&Y<2vG_``8`U7=dIsM~KbwfUCr9;Jf}f1-pXn31EMe>?w*? z*@bU85y6SBm?WddHR?NNh-71+Sn)ufti-*c<07|TH=O>-KR%uQ*a6K3k8FcJS}56x;^Jecm* z#h;(k_Gm8ryr>-pzx?Az?IN}R;a{J%iS-eiAOnFEY?UGkj7F6Vl#`$k56rHZ{Ba+6 zzrC$HNgnyVbl-D-m&TRQ$-~2G>X=rshqPZI0%hGwy3EL*Nfu^s@MFL-;D77*YtdpNHxr|ASH~41cjlhz8xiBGT+^PBEL%(-Ua(uU5mpQDRZnTFSWtmq0 z@`&{Fx^S~~`6#GzgjuU0Y_m8JZ4azI2o>eHS?_hit>eOd8+{{VhmPOEMSw7%oB+Tc zUr(v&6vx%zb~R1_AQ%Wm^Xr>C`^t>A{;yjnsfXO(w`BDYFo^7dj2%Jfdz{g;IjkDL zqE)lIbr}|yv#|weP_;~yd62Xk4`R;_)I_S~qv7&$B|p{X&4LduUmX(OjKaGzhONU7 z13`E0r?x5*T^J33I;PVJfj~-w5-amm#B*BhTiei!2b#@aQX1ye$!$JUSB2eU1;#`} z#8piS2w9*Z{-&bg;8t?Z1=B`xQQ?N#rBlkAF--*AuY6%r=3xz>Z`4I)Tq^dmZVcBQ zHR+qrt=rQ`Cv~yW>$7sx)HQ>giy8zm_$cpl;MqU6Dbu;}OT?O#6n3SW-IvSxATupSdlQPUI+V;?wv3rWBXO4`3iz}j5f-Sd3tg?!u8?^eV_jKa36m8EWY&UpN`Bls@N~5l9dz!Bh#9d(PxdRUS9# z3A*=iQ@S9yn;@PxB$VOw(%K4+M}^BQ@5-N6u60OW3@$o&weA6Ec}6=4j}b09x;)2w zm-v2C6Tislm-Lj~BRUe$Y49K69i!?=aFB<&0iaf94*-?dJWgHEZXPR2LAa$S66I}@4<2OB_+SlnzlEbdaA7XeNn512 z-dLe9X`Uq~N+{EySr`~};!enRK|$23^Ch^k70@T6aQ^tl`{$UQz!tcS~P1}_{# zocrg@KbQV#ux#g-pot}Z-Gsk!S%ZEJ{%2=rbnbsKt!Z0$6}5<@-;xu8$&^JW6FfDZ zkQh{^E39VE7Bpjb=3QCkTG9ki;UcMm4-to+DlXjRF=&H-y^^3UB3%4uTmQNAj|wsn z*$lAKsZ0O#CY~<+JDa92FWC_=2JuLm(bdpH0_9vL!QctUv4L;h{IPWI{$CPbuk*Yy zOoZ4?6`7aAl<^U|^%_Hr=D-p)3nG0mjH4n zK&7$~mO%$R_k2>$>%wNAa0IVpR~ccn%4{q)Bn7Sz0J)cQZ3fok53)siOi432?i5yj zL;a&8{bR@30g#uQtciyueAiSD9Jm@M0FbUuU;o_2XJ`61(nd5Q#y=oCs4mVOAP>mN z8k=TSu{&-G;;L4ek7@A8;6D^+%Bd?EcUzx0JhC1I+zP&6Y~?iojTQ$CI4U3tuh;KU z{-lR7<1P6{SiD)itWXxcovI=b6nWyf9Z{1L5uVBmxGg!XY6XG#?$s*S>BD{L|M}*! z&EgX;FnkeC#?Gp()$*9_K7t&=;wwTECztA>Q-RSr;XLw3ZXMQ2WM4X=ykKbioVG4w zzDZmB$*1qWvYw{Y(YRjQ93Rt7{jb|aV!DlA?bnm9X=PuR_pwEii+g$AZ$w+|H$@-3 zFBOCT-IP_VO1xF+mIIW0@rHVY>&1#f^eYFyb;2C2Nexgfb_EMKVZA*$O_`HAGOb5`-y5_VJwdn z@*wD}I*@y&L}f;D6CEH*kaa+eC_2GeUWJ!9Y-_$1U;$WRb9am}P^LP;t|DU{a36_; zz1uf5^d;y&f3t`wJr6AXzmLcD%sK!`H=G$4I>GA)KI>Hd#Zo0N1vR$9k3 zVcLqjN@*+bTVW!@_Mr9%z6Z>`gCaw*g4JIA+7xOFnP4|`F8P=)x8q(ivh&jqj7iM4 z(?9>KY1=^(d4L~^_QB19lAG6$jq;jd!6RsWEqMaRo>hafDuH`Pp)$b^2Um#Yg*BEaUQ`6)W&}-`XWm63yZ~@;d7wyvS8T~ZlRMYkP&w0 zmyk&r|Ip1Qy#jK02LD5L?tjGi#l?Sq?q3rpap@mn8T@akFh^;J#C-5N0Sk>EPGLbG4zPB1CC$}dLc_r zCE+FCYA?Av28DEci;zpI9N678JFnvo+SS1e7*o3B@--dRd|JoU?73VE+5XeV%n!_0 z!tMESKx#C!hiP$ZhctBxwu4*LsbyI*aM7|gusz&Abm*Aun)$IQ4*P- z)zvrwKt6hjah@qRo6{sZ{imm8@Av@|SFcXQz%1rrR{5%uF&90he^C z%r1tNTuiMRv~`?NZSfAY1t^wGP0ClBwMYfVKfuR>t>VG1-wIs)6(j`1>zBe(*gtTN>IYhk&`vicDVzy}j8XB30wY>d;o}7I3!dQB* zo}YU|m)!mK7iVnnZ%@kQsHEk=e=`rZ`fMB^Pa7S?C9pFMoUUFGrsSK0-xU2bELs&w! z%+^nmHSp&u0vCPCC$*iRTVJ}A9{k2{rMq5zSm*v%)A5s&X-en*2Q-+Baw;%|%4s5~ z` z>d8_K{!tbWI!N_lM_D}BW$^fl8}1ekzkroTbI}{?$ShB-`%VIRqv7mGRmoCiNE>PXQS)Kcr zu|-ohHe{^B9mH!vVrqZh#{BPdy5lu2{(xFgFN+oB7vl%Vl0=c=6V2`C0&Y2Lf zRZ+1r(Q5PD9mx-bfvX-XuT`AVV$zIWYI;#GIo+#gXu1E3;{aSRY5C}dtsW4{$d^DL zzPT-|1U%f^^fI8QsSRW=4#-KBR?%ezj0yIE{^8+C&2Eioiwied+Tb5{@)7X?L@q4v zVs$l70MI7zA+4s*y#AW1L0y27XVk7Z-^+5)6m zoz=17O$`+0msthdw3$*m?R;cE^slHPv5WIG$fbh-|I9B~A)QP4ZqPQ)S7tWT58XbT z{`Sc=Z3pg4_uV{{PHLe4zKpoBab-1pua2W^%A<%?VC z!CUoYo;nEA94=ENz>p7-wyN$Gqli9}AQN!#rKPa%z6$`D79Q|{h4|oO=di%qX9Y;j*eEyk9FpVR}okT41W&+D$6^M z6N<75CWO5QopMrkrg{kSjt7C4H3g&J0jeQ>`=-cc&ZNh22r)^QD!DZ#sf@`@Q=S0Z$|K$9kZU{%W9&595)9={1;Pdy)Gvh3qzFmWhO z)ekG01URpb)*+p(WE(wC2iiSU7RG@ss*FQ1Wm8@An0=}*d`MEoW2>AAZ4_D}Y*25= z)k*ZCY6aNRf;(;v;la)&pR=Nq-AZ=3nd-hnI-10!-iF+)tmbqEEf!(R;wB}3k^XS}fu7cRS)mt5!&dFgaej45&UVD8Kwh^f;a1OF1G z$$OULGCxcn3qX@^lWWPU80JY8e)7$tkQ?#&Wvpk>5}EKdW>9tMlp5)JOofKuNzkcH)rTc@W|T zYOe>t?Gqwa2jw`tU^-Tt^Z*(H_>@q>59u;HuA>Y*}%VO)Z;w4|2@X43pc zo%^4=oR;)_;s)pbGk!ErN9AOZfj4M0SUCWTI|kzeW|ZvaZh+oX;&jO#vw{xJ>0c{h=cEt$*&hi(1W%KzF*TAk6Qf9Iz4>c(2) zsuQ^ye$W@Bwc^A>3K~%8%!@F(ywtDDI`8|B(&8PTO8vtV;zdBoGpo`iCWOMTsh6_t zeznj|@C=e$4kZ)$LN0g~wzj)QXvhmDa=9yES;yZv+QD&7E_ppXsrzu`&LUDL1zq5_ zK2!!Uw*W5F-6rG?L|L`+S#c6~A>E5=XOM*szT57(fuW;^ue;~S+#8RblV_GHi-^eL z>zvTN(DE*Yy&5L~LKs3v%rNU)TH9J#Us6HY&Zk57pY4Ht9~hcJdCrf4rwy*7X6_L$ z1(BQNmsA1FYFp|F6@FG2#=m)BI8QC8HPs3!JRe~-Y+cTsTFIL4}j zRY3ajMhJN8;&{OP+pVKp19~$o)`+VT6mBj*d|cb>&uEqX>DM=PBw#3g_Vi$S;lg_Q z;`i3lkKR3QJ0UKq1Aj@|*k7H|b}6+hM>R?E+}X`E%l2ML2?KnNPCThs6{vYH>*jAR zBs!)URVDzqU3^V|)4F``HQ7&V#{qAP)5(U0vvPa>4V^I&uX(@xd#`TfBMEwjOs^JD zdokf)25DB$X4d0uf~x$9&b&4Ha_^+Vubc?*N?8bLZOi6QR`BbwGyS$|U9*`0`0$C9 zEGA_*bIm{}6rEVkmg#0z^-bvDW}=Bokw!y^h-IHbh7fG~H#jH@sDL#WquD%r{;>vZ zAK`kA;9UY3IUf36lC>Lq>k_paW_4bv=n#lP`7r?1By?`&Z#V(bteUR8Q0GUK=OD;v z2wA^saonr^yz0T$5Fn(>YbcXu$$IP%u;>j$ae|v4^oF9lO}~>nRbD-(&b1KH8H?xp z8sL?ca8Z@Fc<3~Rdj%{*xLI)&9n`rfZx>_`5+(xT=|PSr_znKzjcBsYm@!VU(5SkK zyF)*&x{p_~xF8XX9B06NRh5t4jFC%A8K;bZmK&z%4|eb}mN}*MFm1LDye(ny4m`Vn zmciZ{GlX>@%6MK;AnsAXB(s2XOm|W3@e?nurBB?e9T@72|Fb`zHdzfmvUPr&nPXFt z`fTk*>p)X4!J05tectrw!R{9z3Q)9=@=At6Xyg@>09897KO6WWx+=V|%|<%8O~-0V ztRac9Bfz#T<3dA+j;GibZJ~K(HWGa`kPr}mrcCpC!yW3so;ONK2FDj;48X#_3RS>S zP==oVyY%1_f0B+ZTu>XT6TA z;0ba=3Wp-cZZwcUSFPyWqnaJ-;*;?^`kG+u#T3bqA1%m}Z_bYM0h zfn~pvAA~_!82OieHjyE}s!le@){oVNWn6d>m$GC?d>YY!e_Y%CCw1xH5CeZ*m}r%k zr9B4!>Ypv^8D!mWFmv`ox;&?+Up0znZAB14x=eLNG<-xKBp`d7`=1kYAG`C@Y4&}; zAikcGi)DuN?h5&`^aM!Bh;ZwwLkTJ%QHf_wEl(I%(RcT^QrXj=lecCIFt2 z6Ac!rhuqGLlgBmH;=t870YK`JpZKs-&arQ7uFlQrwpr?lw}?01C?c&8&`r?~praPb z>k=QBStV?JeU)<0WSnFx%#y$;f)wpQj`m$F4-_R2w!!mbM zhTCef3==hY4qy!_W-5{bjWzV$kY;zst)NB1OLG}KItk7tI?sxa$a_$byslZ{FKfF! zlORu@?MuJ@$wS%#yPf7W^ZhDk?UmaT+5&h+PbEHZiyCGP>QCu>{>$2q|2L1XrDxQ+ zpVuS`Px5{Cfl(Xaf8+U0y;-a$2X%4Zj8?z@>bon}d7jgyMc+_d4EUKGcT303u1vtE4 z2KKBhBJb$H5Aw-EVTlIT$;M${Dke+11vb8S^OSq=UENrpoNU*Yk;7M)%?OsAH|V>A^e4(i5uB zzO8rIm4u8FMB*}bi`nBeP6Q!2F5@YK7F7V&RCv%#?GJz!!m%rT@$%Px^02?jtqI~~wHwr_@X+c?MPYdr$feswxWRMTiN9A>1Zxk{#gkT{ zt5VvcoHSuNqLZWZ3xiAruS>ppdm~8`e&mQ~sE8>FMUbjIgOhq1-dMjN`bk#kav%a* zfpAJKj&O4);U=|U6CQn#SXa4>fzmu$0F}uyPGKXU42;vTZ=8KRed^)gNw;2jK1~d6 zrjt7N&p_5P+h8oEmQK5%&{|WNpupZZ23Ex{T8%(aEFEuTWk@r5gWUGd#eb7r`lrbS z`i7hvN*nz9}i1vNHhe^3F4cQ&@tDz{F`VD)3< z5*M_3QZ3)iPC(*v4Vx+A#&J+P7)CVUAJ@u1m;Mb)@8iP6VP-A?k|H4+nuOKLKj;2u zx%5w4DmmuL;GdOz@P{hR;TCDajz5EcJw%b7(0TuhANczzow!rkr3NMQOkR6Z)udC< z+#$4yZJRsPdLs9xKGI;ISAS=nJgO5MYa_-pIh9;B_Sxy@=1teU7>d8D9wW89)A z5O^msY`g1J0DQ#7nAG&$gVi9c!c)M|s}?3h(K+BO6f|Fy{ySe?N?-W?x(4oB=}S+q zr|-YMkruQ+j2pay(PpqS7&u3Zk7)xdmDHz@N00C>qmLc$EfgV$s%*YqK83}Z+qNvGpgZN2cyT4p5{EybNP;Irc;x|ZdsCe{qxcw@Bg^qcbfJ5l8#Zu?AJ9Ts z6<%0^9&y^Jow#y(;Yt_*TVB~n-_Y&z7cZ+!%g#$4Y!3y4(My(OWs@alcSj~*eG;|+ z3g83Qp{J=jxiw+lNp_pW$^;=&+)eYUCg#ag^6e-u0yH!Dtw_KQ*+(7SRqdsst1=7O z!Xms`P6L0v{qX=cu#NJUCj%^)0#%b*0-}AlCP!%5_)`^5fDw57%`CeW5>+9BvrE+E zZnAE52w*Blg0XTcb4w2t;YNMqALWc)3n-`DjP^sB-dH%B?tSEU)19w9lE$?W{rIuN zY4Xs7m0JQhpH-ePgVPd|k&y+|3)0*N4k|8SRaVVgc|rR;XqWzJ@P9~`{|#$}oGn4D z9C03A+x-_WPN&Pd^?zYzJ}v8ZVO#1lD*XpOSih3U__DG%WUh&4c0>ymX4CakqOrUL z5V;B2ah6$dCDFtpYvxAc$gUxsJsce$)z<&9G^Sku{iB-L7}OW%tRRdVH8shR7MIe( zrAujgW!h(qZe4S*X_W7KJyw2Uz=LpM6Of1S?$#QdckQ(lh)8= zfAEhlt9ClVr;8rp3mjb_$BTBI^aYe){0p)YPe+d zh8Mnau9h7J(1m>`)ycnGT1q^@!_p0N@U-dPtKH768WK+{zjt3hY%|6&cmmhAUsz3l z_N_&0Xa|&D@4R>{bW>2)FUo{sw!ui|hw-gSJmCpJH>ag~2^2dNlpm zed9U~<~w>gD#qoWu$6ky1{#jC`i(599Nq#0WJhWvI_FT>-Wj^_23nO*WV|Gzjqacn z896)aPxB&oT(0`PmsYLruF|?kW)oY#wh=_TL^%qDu_MpAdPK;qlO{w5y+>86v)bYj zHAbI)Trh>z2PL3~CoyQU!L`6(2fG5|2|v=qF#(^F7IE6?V!UT4kOyjBUWfyv`ICkn zYy42o%>vUfc2GeFUR6zEu(VzEybcr_x?2C#`*8~8o<7{hW!g!r?|61+W zz@JP1=5+br!jiVgGs4Y8MwaGk)+5RhnkKlYvLGbfj7HFeTPD#oxfy!>Sehadk|Sj} z+~~hJ09(4rJfP#MV;cNVXw`p0tN(+;+BGr6_J3uvGs0K?x$%ExC9UXHgA3;`r#bEW z=f;1z)ES24FnzY7*>0aBUA z1XfXT(RC;$NZ1L%Rq4MG{y&Sq<5 z3$d}ZcL~yj?E)s}I_0D<>ThSRM@aYMQ4RM0>(3rdpS(v6a8}RhChOO9lw`yjW0z|3 z3B@qp>2N#zkHNp~N+{9-9Ue@pIm%345TN6>lcM9qzy{@mr=6hd1$}2o;j4?lZr~;l zdknHG&H$+8bB$*K(Yp?fWsV1n_e%Rg$#i$hT^@Y!PNxK_>9B|a^kT3{uZ|1gR*kx8 z|1+cHj6BkzF`C6pzoFe_)6*?U6*%%|s|vPVUYr3%2!b(+cpYyzlkr@%bWsDj=TtAO zX(Yn=|4lB@6LhF@TYt!^VKRC$WEr3qIZ7y8%Zf#z zL~oNuErBkJ&Np<-NoU{E`)?nyR{(g$#FA}o z*l7}g_QZ!8q#>7Xl0`~Y5M$sUZAsW;0L~;pr6g-MnJ3+75Ho%1#UUsM#=T%6{F6(Z ziUG<)0^pNmxr)K7rl=!WA2L+%JCqY{X==7xgWvz_^r7#5E}fZs!=7T}(!XJQl23Gr zHd`Vf4MJ+^bMjz>7emEn@u4f(A*$Y=!AExsXuvWFWglog>R}LzBCqp`z}uU}Z430B|rv=4r|fzyVXpDL5jS zr7K&|_?W{O(Q5y=2L6*1;~MvCVuKs2nQ^7iPna6q?5X=nli)@BUtzG`zN(CU?u&{H`nz_ zn70$e3^|r(!p~belq8c;5gUF%VQFu4nH>axP`jng;0k!-bp-CBi`^n?sBi4ZaY1m= z1=&W{@R1pOm_r0)yrxPHT&)uTNLusLyAp%j)8}8lq~lq&#i5d6yP8WG-WB*Q08kOw zQe(+Y&$I$SF7VTT`LkF%`{=5a`9B35q9FYv(x5?ar#0~ZB<5v z-**JGI(L3gfZ|ga>To7SR@S$)veuU#(BL1%WronmGh(Jp%Vu{eexbdaUjf$5*q-!m zkmkNe@EviLo_ikrE6JAfk|5Yn*#QVkc(nAWUpSukExinLMqB?s@!qlYOP@HDZag)d z{^`HFs4S99+Xzo`FH}3$`;vpYswBjmgOWN-Z?-(t?G1PbsM;hzhNCPyZC<+h4HfN3 z4E&pRco>5Y20WqQvh^tB7DoiE-{Ky5;!H8a(^fE1k^w|R8#@De)&nwh&zpkwmNBiJ ze=7ah!@rkqJO50YRLAnfu_=wuwNlR{Mb1>lvD9P)Gn`gO5E*6IimUw?&A0-jFlbDG z4(TGiL2mm$!r))4)Lcuod~5&!AOJ~3K~#(fz=j6J%NoXBo=;1<@NaHL1LIlF{cC6^ zk+JZCG$o6Xt)I#rLkAUfns-UB?OHu)_Qya|w2k8!W?YAojVAR#9 zLb@XDR!=Y+GX2I2bCT7;QeFdSN4<%0N8lbk_lc9jMNs=P4pydYCx9jbNE;b{owgi) z{H`%QS;y`6TD97#cG`_(km`$yq8m7syjAqw0QTkHsw8RxUAFKIywhtw>6Mwpgf?Dl|42OQf-tUArM<;h3zxDxyU3r z7Qm$5SHAA}ke|sFnn4u^#hyO_RfG_(RCRmoe5u7R3&(D#tN8G}j4ak!Z6tI(f*K--g5=JRMNylQ$cbz3dKJ}h3->?7b?5X2-c zv(@H;GO@k!#WKt$PM_C{GJo`yd4EQ7W+VNddI^Bz8=jX}mJpY|U2s5mgV7?IRJxs`~xP;v8vuLk3V_7;GO9KW zwlPV=s(pO^ey^`iZ?0TUAN<PL+ zCtdzwx5)x@ycG_e{29lJeXd)8HDucz3@C8oh z9~u1Ht^b-Z8P^ejeg^+MR}#lnne>fI|8&G*PJ{nTy7X^BeH709#|ejsBj^h~+;j9s zKVg^vcy97^di}wFkhad;uek=rnfte)!!MEFQCT|7hnV7X&@xO5u8xL@fcV0v3G1|% zDFCvF%e+*>D|1%V`R6F>q;>+Z^LI{>Ls-7U#vN`p9Fhn}(3TtVu=#VdeSEPcM zB@!ZwuXMM#c8E`P!NB0a;lroyI+}wq0YK_ub(29E@|As*a5IkJLsWQxy7T#U;paFd+ zWvd`<8AK#)j%{cbv|{j6ADm1-@xF0w5r#-ENZin+iks>1_&}PP7_x28E+?MWRvxvX z%MN9{juQ{xVAm~7yL+snwEMg@E~Fy9gN`v|rdsJ>y8a!gBK@K7g+!D4DnLsPa0-0r z$WwgyQ8$)E>1;U_Ejg^_eq z&Xv;2I}F@)!bPV#L!GyVp{;85j5J=+gz!$4Vy196EvPKvI=Pkpy_$ocCJ&jPy@u@s z$7H6}ra@rnoq)3&adY7!{AMgOIiX8bqY{m9^#T&E2ctvq+oj-7!6O?G!@}mfWkW{FMSPV=!g$I{@!7?J9@I#Py4Tnrw1y6xkTRiBppd;q z{I+h_yYAuNPxn9jg>-avUUzKh<(w%E{^Q(wg~Ljwr`v*qlUhkpsNBLA!;7CBNtdq% z0zg~;^;W$J)4GPSi@NA<`cj(H*8e#!0MsqVYzhb}P4gd8cwH+7w6N0R=f2elbzuw9*e7tqi_?Lr3-J&4F1{n ze|~TzJ@?VyNNcx!BJ~Z4zoIohd0XC8!e|1CYfClx;67z+E!f>m*2Z;+qf@w6ysfw_ zU7GM&(Z$VUngAFd=}&jxG@h8~wf4ZapC}f^0qjl+{E%XwpyO|+FgyAMvK@iKvom!X zv-I^1jEo*V_24N%0z}b?kL<^ceob}Y0L-}>6@t>~+gw^*SYKV4pRZ=C-vsVN#Ji!U z^53^2k{o_egZOz3;>Pv-$H~Kkb`Jm-;Z3SCn9|Bszbb)MZ3T_;7+aBQz2#07c17G3 z&{^TwyMYQRzDR3{Wk-@TU{vgtuB6bulpmnoaM?~P0HVstdewm9_ZF!jp&4D<1!M-$ zd4{X(#DI^917?lC|H_(e`CrmR(yDfm%<6)jH8m_;yt`(Xp9RmvJOUPqPK%W%U;hkdF9lq*}y&IQnDktdz*G7kXbs|FDn zq3r~~QHoVVczS5GKfV99ku;^3F}7Qa>JdV^#}$Kp^uSx`xjf`Ru9cM$X_srr2W1N+ z?KCPKme2fH2-!>Im=(Wh=c3XTZoQJ?sMwM^i)=|hsV7gdo00~P8K_ncVGNh-=Um~q zg~BL66(rzsXmfPW(ksj*XlV{~Z?_Ixksnh{y$9l^7qk^u^(YIQ)zh#&gbR>by%q6? zXOB8V&G_1aP#;E}7$XVUfvJIgyO zk^p{F##EIa)pdMLm6K`kzE~EqHX&Q~fT*zLI4tb}hTASmrA-smTWL;{ygUbp8qs9+ zNADd^^STFOQM&<*?|4KUnD?Nl;XBmwy<>=YLvMtv@xlZOq0*PtcHiL0(5ZXQWNSzl z0PzLrHNC+Bn02+QkS{Bz!&{4+t7}Ws1579PqRKK@nrmSriU0_`2IQ7bvF2QIt<{iO z1408OWfitaw%{rp=I0nyZ}z84^IPf9zP*sXsTC?N|6}E0OgjQjtCM#~ZAUfe&tZC~ zTQVeCq_1%5(O6ZYJ;DcAbOzk+{Iuu60zi73aMSX{SHZPGRX$-TX{-hh@~j5`0T_B2 zAl&w;L)}haC$s^NpVyaan5tyDp&b63%w)NXL4vVKY#mc$amRH-dP;IjGURUtZ>Y1X zV|Hpl^u&$^|7#nPH^Bzxa#h|sF5Y|bj*AdmClK1`Xh~vSRtfElBksMZGQLjXz#3mC z|97n00j&6wF9#)#MVo6Z3!d&3KQvi=bs&sKemYf}8F@?ym=!s7SksLVd6>MpyRE+o zU*Poe(<+0=CgN=6Bg<)@mLbmSb&$tiT(<$-k#U{J%zkAOW8fcQ4VR*Y{P-LmTAUv2 zVGA8MYXx$;t!xXK;g=tH3FY2|Quj=n#Q`>)a24F9D*6RomA#VRgI2SkUBvzAoSrb9 z*3*Er6NI?N;>EtA)#d#vxg-@T--6ZJpy;lo<-^mI>X zm99#74cM4mbJ?>66y?_of@WrR2ooqfcy)BLBNHaH?(Om_vt_*Gwqk%Vn?RJZ+ySK! zdVfIRf@e~zqf$gM@DG2l4k$4CVz8fEvVdvotsYp@M|KIr${UZTPkigQ)6Ey3)tl>E z>G+8$y&>8%bw$afM-Ayu<4o_J}222hV zC?*1~XfmJ?dBoFjZdp|v($>(x%Kw6Ho`_g;P)mHi@zg-lEhMU^^M9>|n?7V-# zKJ&(UI;TrPxD>E_#Hku!QmW<+xG)u)!zLr?1IKMfp4h6wC3zRiBDLfmQKt)mkOkzcgo zmT%#1I_Ds@GL-q+ZS|jln{R1u1-7k{rI59}TFENh-pNKQFP&uY3W&}uH4K!hCL$sC8WrC3U13Xn&i>3Y(mly_pm2Y$`!IR4yFa}Rq1~>dr zBs_~oIkL+E4S~|hp8^;+EWHHwFdP9`*3KUKPCVr~rn0`Svj8hv{b!QcpPp3Nw!o4f z_&_?$?v8S5aL*#%^AC7XU=4HV=5bIz;@R7-)E{5f^E^Lv_n7S-fxrLruboW4`MH_& z=rhaWx8&5>`=*oX64HpQC|?In05Q3YJ7&s-DRgB`Rc_6y_Fe8?ZjeXvP7W4E=0;Z9 zQ2_k96f}0F#QIKIhfsfn;u+j-$_CDbXA75JTUwe+pZLnZNO!;Ttu(s5rsw_+YY;oG zxdn|&GCkHNMiML;L8w_gSw>6dg1r4ufFhN7P`CyrH1KETUpM1xf4l$`R+I6X$E8j&kd2r#9NqwdBa`f5WH+}A z8!(nq(gOjOF6o6D)W~#LtN-I%{HKBcs8;{`SpA28U}RF99S&=H#&A)65Iy-fJGX2v zI5CLV)PTiXplq|_my=_DTox#d>Csc~O=lnYm9%~Q4&|2*jY|0-+^#C>m0+eZp&qIb zGkFAq0wz-y;n1Zz_DkKX_Dl37ez4Iu=C!X^bzjrnx9Dl}!@t-HSaZ6;SrCdDg0s}q;?xa8u@rHg$7AwLJljELyqF!qj#8NUzT zGHRDqMW|8Lam);_Y71zT605fY;DGhAV%iUC!k1q+9L=2oz|{nuTD|#YWOkX4fUUEh zb>j`@ZV|Rc;DE&0%NJ;g$G#mS3g|aqrv%)f8>&xC_UWvDzr7nvtn2D%OlXyGm`NiM zY=aQ3o^;J$!O+1B6`eZ9W_43|fcB>FLzh zs3rmcEk5WrSrCp--#?mu_Q7#ItEc`qk55aU%Q^%zb!*T?SQPSH-$tBs2w;6xd`bg< zkZl9QOuwuK11ysOrkDiC#_Z6sY{DxjWp@vkM4=eeb2N;dKfDrfP3?gL&cZzeaM62F zw{depFLyEi(N`AI!M|@`2 zXnJ#FHQn{)|2^IJ%-^Q5wWV})YCKKp;=dtX)W`0ETD@+>TP_n^iZtmnBfr^fF6L_K z8&n}5~GihOdRg2{=n3;RTU=u2^D_1EV zF933LXc=WNbB>;HrZPal1rF+}nhJZy8TcX`dNtQAm_hX^hBWve({YAzrE5appxyeP z*C_$!VnaLPu&m<^GwI?by>Ou2OB%=8x&JbL!(TW=yy1kM3;+0@A3u>^`OvSWts6e5 z-8ed0AfKg;dKg+vS@f z+#&zg;OdQ34bI!-x>IKxlX<#)cX;ZQ{54Z#O&?uXu=A1J;HHe%RLOy>c?SUU+x87E zuWv5Qox4;r=}k9VN!mS@T-J66>;SQ;ZQ7jQ_RF5UJn-ZlE4tN_PgY(Ufv+UejH<12 zY(#OTRvJ!w`oyawp;LuM15Hgth_ta_JrO`%~9d6kiG?ms@Jc$s@Aj> zFYUq317xVCc5j6V)0#SwKl=Xhba+B5|61v{-N5pE>;;|wSEoX+W@^#FJ1!9>bZf72 zqh+i4;yE3TCQrRngpi4j%)oA||KN_abeaf=xO>$*WO=Va-&8nXaeY&xcpH&-5VQlP zCOYs@9$DG*9YTu8m#wq7tDaCDL08*W71^6Cd8U)%+cR5)#bCm#L+w@(5U&QT=@$L# zPiT@%=l;L+#7cTn&tlS-;;HKBi&;mzh008&{05y4;x^+FbabnMsF-qrf^37wNx?f* z1CF}!%cKM}E~*1fCmIENxX_TxqMFkPjo>yQs?*+tc<0&MF4@};iQ*Y;TJRhcWQTQb zOUJIbfkx@FNM+dTy8R!SVH|f%as)D4#*&+5vF!CW)M9fKV3E~Cw{mfMDr-+PRnU7f z93<)}CsuAqBB~aFJBAnD&GNyZ!|(t^*b2BZ$UP$!U@OjAM4;}javfrWA}a;T1K}Kh z{B!BSC;u!RTAtCW|B%l8AJIT-*y|IpmGmfLFFQ_`)0_cZ1akcN>yrR*LScZb+ov@6 zXX`(M{{eO3>F2N|eo5#2XEf-y!T)Spm|M}DfcTMP->O#r zXVUZ~o%>(fNQ?5~{C-9oBp6wd92_Hh%($~#fNlkns$DPt>v*%R; zyqr@}#@9q0=W%O#6G-;5Cc!&uk^l`m`hFDr*iqRaT2yq?%fP^(NWQ*K`C$HypKb$& zRqYNrt*0W#^58#i3jfImM%Djdn=k{X2C{6evI2XC0oFQf#;oXk!2zzSaoN~u@DHj` zF%b~KyJ|K><=L2j;5S zbHVf>cD>9JpW&`Yn?ts1RR=2ySvyEq7h;AJ+(NH;Z-XP+Q9TWX-)3W#)&Q>bhX{L6 zJ%aUssReQ%gMZM8Nl{Lr6IpH28xux=qZpuDzzoSncv*zfIVJ$qxn^8>{qezenUTCi zeC;uHav`qX6~hJ}I`kHXq{P=-2oJ!-W_&w^i*gf1!1yFftt{bLei@-lF4F6vDf|8h zfKwg#vHK1jxhqKYAv)^HoLKRfzr@r>9?0d%2xXoIISyCUkk7 z*DN(!IT}<=uI0KQ0IZp}w15|)^v?)KL=S2wLEmAGa~S-OY3n~vI-zuoB&{r^t!WMV zb?M(_4UXq$7t@Lcdlca^udH4b&XznWya0fy6mfN&%57VNP5+VZ?A67Z>-KNEZe!5cQ6n3S|N?*v)hmBHun`>0*Jcj#^H3w z^&{%EszPK5LW(jMpV`f|!%tp5Emu)lH8ZAms5QI;)B(={JGDAqo}NI@M8K{}Q>t;1 z76pS4QGpY-#DKZ95My}Z56d?E(kNQ31|bKB`pbiwM^o?T9>8W_Y*nGzHn@li6Obc9>gRmt&|Vc$&iwnhlN z>M^I@@FkUP)RD=7^m9KvnLhiGLpCVwUU%$)GT7-XZ41=NxjV<(g14rfr{u`FbP0ac~Kp3j&IXMoz^QoOd^G<_kkfI6A%DbsPARqe}z%?9=u4R6}`+3 zoLl7tO9n(U7zgy?Ds!XUwx$ArlT8f}6Ui}|9FqY}otSp&zpTx^o<9Dyf0=H7?K^3t zZzG*NaWoy8Jk%n|$+AH_<=)bvU!zBjkR3@-J4%!9iU5L=Mt#H|XXE=1X@T>I2LHMk zPs_Q2Q2;$R$fbX}1urelaN|FN|M|4CsGUe!;?7YUT5STgxN$>_oDMAJ?OHZlKLUUX zs0C+E***Fj=sBn(i=btAd~zDCPN5E#eMlY9;n5)t{xt!hT@7Oz{PPNcUHk`D2LC$q z&$qs?m}Ygq!Da1k(Bm04_@~w)n)pgO!cE?$@B^Nee7$2F&;a6t9dccxq1OUmrMoFB{)(ia=tnWCN7Up`6yl z;_0J95}Uqs#GV^X>8Y1i(o5&otnMk(ZdHteGcDNSYL~cTu#m?OU7*^WEk!no*5+jn zJ;YoDR4R3DWBlj`IR-$I$;eX2%y&&SIM9&zhVQ%E+LSTus%$pa);H%?H*{-CYcP4` zjBw-)JV8Ojc{giETm+&*?V_kuCP(|yqc1F{XEg)JnZw&o45km=%B6sMe^_DbTaSxs zMm2(UL~?J0t@Rd_dPL|{7**7nIIBdu&~lK@#2a7WZRJ~?!QFNPc+XB)NKc2+MU}RQ zpwO*T=s^qDJs8;o*Zhix2u|Bi$) zb;wocnW?_?`wz{fhn`r{ZZJ)|(orp2E1{@JH!tGxjt*e9t=eP-8tU=IV7%K7fas(} zsHQ#Ke~@%|5}y@73L)Pb zkdLdE6b9mQn=v^@t_W>=;3ALPJ$G@TtcnjIPfT8-Otyn)ciPi0gS*QM%79$#59^{{zG4nw zPx$r?oa3(wci8uh&;!~eFT9Hc?g3vZyODM9JIpOqg7glGoXSwL0$hFs>QLFlL_nu@ z#U`7Dzj>sP{=~-SO1kG8|0>=4{6lGYeK}1{P1w2r0S4?89Atw}DrDM+^m3$J1xUs3 z3@i_;hvd&Q&HZ-n|Cnxa)&#(?w*KpKHft+54?jPbmZmSH%QL$8PpjigiyA2B!GFYQ z=(8o6zuUprZ|};B$Fjg->Qw*f9qgm{Ir3^zcHLs(9tr+HX(= ze!#_@?j=i!2Zo(bFTA#vp41%x-0fnoMXC?DriDOQ%rSu7RS;Q+v;~_;tO-C)L>;Vd z13rg|^wa^m*_yf8f>U!faQMvKXR-^+Qhd3DwTVG1;8kua<@#!6g_RK{KJ<;{^_BJ2 z^~I&yr7b0QI+ukK!psPFS5Q3mp^V6)hKRCfs4O>WUZm9MdFIloR7D}cTTczA2X9pc zt0_UCD6bb-eUK+(P*jU71!`H`^KJSix$*T%LcJqRLRyK5iGWVK0-6N^d($mw=rC6h zUX^Z_3aTT})T=>%hHOqG#Gt=Iw2NU&J$@!sx7AA}r8T+e5|%Co|JK3Jbt`;k@W8@9 zFGGxJ(g-!HTV((8vE}s03u`UX3pwl(g`8X5vjLBxlk{chmTz|q?-U<+8s9sGrZ}+FgOqd0OpLtoHHC|U<$96ov`vCz7h>P2bsed(#k)B{|T-7Pw45tQSEH# z4cymZNC0rT|t%;H9RUX#2} zyr}69G3Ai%cH(kp+kw(UoQ^GG-XTCt1fZ9y3v)`k1A7^4H#22zbF05^{MfBG3=Ud{ zRl;Kv0O%-0;F{{dfv8VAcwH4v$QxoAx{2t(`sUi^($cIgg}{b}9OKlkLUc>L9cr&G z)8>++Lsms&Nu9enJ16F=v`rM9u{NRJ zx%R4KAQF9m-JX#)2@w1Xy+~4*I?EscZw~C6_5xK$qxID_YKQ@U=mE?m)NWtEqDP)b z-uY!_>cr!aJ*n{F1Zm^PRtqz0aAO7VxNiQxPTR%;53@z%+Nx(@?Q8^-#ZgY0X?~f0 zPEA>y;gb0sZ11-EAK(Y2yDYd&92CxX5}uF&XsYsW4+NIs_YiCs&~~9g7UJ6_@Z0R| zv@=L=4ctYNoNv(TKlkT7^TwLVdOrSN(CZRk4*px7?L2Auy}715^iU)^=A*JbubZ^u zB0zQl%;|2JyRRQi_uMj;R_xvw&Tm7L)68U}D>qbfCaZO#!@G-4s0u}fp{i(97hOW{ z>>M)XoG)OT9n!+}nsuaI>xG{ZIJq(cxNgyo70_*R%KRpA&OEPd{vntYB$g9yTI zfXx@bntte!-%HoczN%Mow$rH-QyQP^**Y3MGLwIc-XnEN#Nh0<9m5kt3gcBO<;R(S zFP~bN(Gz%mle+Zpkj|%%^W>keRNJ)ii((p6S=(;KVbs1mou>(140xM?4OZTr8dTjL+U z_vh2%?Vn10Bbrz-1(cTxr#?bu??SV3DDSeKD|ZEy69PrBhSB3AF7k&Dm&hx#lq8hq zj45Q)G5If8I)ECFm`53qfF0AoAD(Hx#f}4T1lV?int){FS%V(<+zF?*>etcE%)yA-AXD|OCg@xoptx^s~_1SXe0clU?^9SGdbHJzXD@ zzWeTb^{T6SFoT|~x-Z?ylkTKBX-+nE&Iy_Pp(wx@6mYdkksP!nP%dEk2o|xm{Pi6f z+c9a1GX`@StCm0&X@^l(gOvkwlK^)>h`-Mc9TFYv5Q_z;XuR#=;AOH?+>Xcf&hfSG zGq$Ry&g1y*Kr+dj(~indzk4LSd}b{i-P;>3JB$D~F$Sq0+$v?X4L(}SuBxmLi*1#K z3uq(hP9(Ugak9xat66nq^kaIKboBq(S69Oe`UZ5eVYd|+9joia(P7bboE)RGvYD=#wN=8U;osBaL2Vn=|orSlu%Z+<>ieFU0?a!DrH_9B6iXq zt|m&4%k>(NS|^_S^RE`5#xXxRP~%-Xsa~D&!Z9)t?wwIso@JG>6)bv<^5gz^In!^O z1Q{&xEKWQV-f{P5!sV|%76!TZe`sGA*)y#1jnPiHr7`AV=MRS7aKqfoJ^l$4aM|d% zX^ZZMYpx$pKuobpgVn$e}UG3S#X) zIpU5zS7wz*;Vv_7=3W?N2S)CEuBlQwpBA z>|J5zx{rpgv7@pnMTsVu7p4w51@rBgx>=fIZlepIk{3%1gkypWNX*GefcdLFs&(%d=BU z%gggx0DywGDiIIva52D^!5n-Wx>Iu=BsI_6sim0#W>ZHE|LURnI8Z2i7wwmncaB`C z;pIEQAlY_Xq?u*mIv&Vlu#SGcl3ed35S?&jJk^C|EC00%0U&gyza!*INez=^&S=S$Y4)c z&=r9Fy0iV{E33AP3pS`aKPdnMkgLMaCc3fR<^J0-Tfe3P?a4Y@Ym1FhwnnLTN`1^L zAB%b>7R7KdqGteU;R|{Rgf8>!O3BdG{(#$ikg8rA;Em#_#O|zprIO5$P*tx@t=mEj zk1_n&KhA}(J-85OtpcY{jwiV&1dU-n`OoOM+ArqvU1F`aDL?=m$n`eh=fukig7VGM zKvv5yG9S^N7!ex;Dbvbl_)=gfjk3zhtD1*mY*E|<)rsONi0XmyaWkyWPlqe-`{QuE zP5_LoErtX8M|JOikFLh4;V4*43G7n*Qz&!vg#hagtbOuB0N`lJrQ+Uy7x(^0{pi1# zWBLm?HJ-u~!@q#Uf8B|n)+vAmF~+kBa)?>}Rv8b1R{&j@tC^`1>^)1Ct#JTUgo*4@nNdJ&(_aIh_VR zvcE69_m0tU!I3@*2B(x%iK(&0^m|RWPfskwEnpJfG8b)3R&YwW(}IC|TJmr#reRmy zJ)2#<{loh?W#J2 z+r?1}p9Z8nu{3lWEb|ewHn1`YtY(HE(7W#YG-1u3MA}q%HKm3Qs{u_OX@f__LLBKc zpH9P7&|q~u=sQt$;aLP=lH5wgj=7bu+$nGW+JNEZ&kVAtz+J%NQv#gv-vUKP-bnM# zDLD=-Oz!DOVrA( zh1{5V^~}nlg^fR$MPrq6ui8C;Pss9xfZXhGq|ejnZgqMGO{6Z^Id#h?2s??$^Iz3> zg7bSVEbRftzmEBbp(>cFl<~%iS)^lNXeZ$4*985>OZznG)?3Q*{>GDw;nA0t#l)#^ zkv+#3MWvP{>V6Sx>3%jQXsFtTXxdH-TXmn-Yz4%rFyx7u63$@>i@NfHzVM;j$Mi<@ zR#?s^<>xRAoml>zZB#YH8jIOL&hV<<&u*i_Jzb(~H` zGlfn0HYvH$Qt03Be{vx_@a%FJW9MIiueoR-{NOwGgo}^%%b!$%AVZSM!f+~LtoWjv zmnFu0BZvwpwyDys!Ia}`@BnX%cq?#bwRA9_j$wEvQ<5@A2gh|3Co=yO4c}V}0ajr3 zKaqaw{l3>-Azi0<%x(`8i?1%MvGlmx%42bT8~BS(Lt!H$w2iYLSFmq>Y_*GYI2!6<^if z9IDa98T?jyQE!dGcGYIgZ7P2gyk(@U?o^#^7n24lWBePK|48sLA?maho~lP5)a0MC zLEq4M=D)mmAw2Z_a%?Pgv=nUWcw_j=FKH1X12OnW556i5$5L0$-kF1~j@hroa?WVX zqEKMssj@t8`H3yctstu` zFEEtcYmaNjq9KYgAx5LGJ*l#1VF}*z!hKB66(G?^L}l1BtgnwT*8BG2qMZEeBqZ5v z^%Vtb2?0ADIeVlRK$0)|jCZ+IeFWepO)b9UpWm}7z61qAOQKKk41C4&NrfsOm_dZLvF|7$uxI$ zBnf}*%tV;e&i|Ao{?E>6F+hv;IjJz>dr5dMjNDRG=9w~Q{#g==aHK~TiVUNt&y5x? zg5VTkqsgtMO$dmeHH>~8`|nqIvHNdQ|8?xYN7n(g{U3=2<{#mPy0E^eQx21Q-f&*K z)d>BAiT8Lxo}0_aqRIVW{+Y7S>~kh-lJ$R$lVT zNG$^B*B1l4-^ZghJoxR?n)yh;Q>IC&->7vZ&+BRT~< zI%Kt+BTM*2ur12~aL+lZ%N4dpm%_J_Zii&tjX5kJlc6zfby#D23cY&|-+VxV0Ac!R zY0ms(ZbXtWpYNJ=N9TDVcyn?+tW3PRxUsRO`JJ4;hscJB22!2BqZPnub*iWnx_kJ! z`{u**C)MeymyUPIBSlyzmbbQi8$%!z7`+j?bxP8^t+T*mXUYbwouTL`G`nY%OZB5+ z@S&RgU|`c1A?kmveCoY+&s97BanXj=Q0jyVi_E{T9SFl37*GhOe&V>E-w`v=PWc$YB9c7~lQkU50c@OpD4GA}((y?d@w77I z_m(P4fLigAtm-Ay)~0+SV(otGAhi%Vo?3uyI(omd&0wh=D3mv15ZKOM*`db;vPR6Y z{kU5rEUwTwJ>FFp_JtKSj%U?xe(M=6j;X_P=HElRUccPszOSF&x=)pS7zx+9=cxtd zFSc`vihhs#=^fXBf^J1S5qp{Es=f3%JCn76RuyqJC_PWE*WoD1q|SFsH=a{HGrMkm zElEG5>sGvt-l)ow@^;?n-`=KW2ldSHYY(||U%&H@-c~6~Ms8)+3h<&x@k{=3jEN43 zOwBX04RybuD==ZPafPwP8Gds#55_Iw7UQ2Y{}!8m(3j2}5AV3=cf+->JsifmSHr=B z`@*p9=EpgcAc!i_9xT3{H1znX&eZ?lXK>b861nDGS>x={&Un{2g8#&*N)CW2nEyqw zvby&_uigKd$w^7YpV9qzEgZ$EoPk+-V~F@mR5B5jm6=&^NbU*N$~HP1yu(_uK#Fo* z#te-y_c#!ysr?g1AGaf5^m`?vZFs2Pr2Y?U=bzI6QRp8SVg8lRB|S&Fybz|8ziC}< zn3pq0__J)v7FCuccQPGp&iu0gaPRdW52vsFSm+u#q@>y`Mae4vJaCm_tsLYT%R#YO zL3ym`jbA=*ah!F!F9!H{lU08WxX0mM9>46K9#5!&u*fKw1Xkopm4g#9YFMDQG^i|I zKCLHUUswtK$a+a(Jf22dqsW&h~?num1c0JYm|K^?jP_`{E(!yB;oB{> z9eka(HAvAv(n%YL?Eo7c7Zm6pZnBBi^S&&)R(}Z-6*O=27+IlOq$t1r%7HL3yP>1o zx+9<9nzh!Y7t`4s;@rEG`SQ3BJ~t}4AGcpIWXI5P->;pb58gf+4)5&?%jtnTjcP4J=>%-LeCjq1DN$k5X2 ztClNpxVat+J~>+I(`4TQ;!YveeOE8}|v4{A4uc;Tqf%j@*r4<_z<%UFSaWW!(3VQvU~Z5YK?s0x%-y!3i;X)gvX z{i9E`^UEUj{M@F=b~?;6qjG%p^m2Ioxdpq%M*mZ(YC=V{b-!)PpcWbEuwCB0Dw$kttz}XZL*!?@3@Csv;tCTq-WGmPS7k#I3tJsU$WGIqSLy7Gu z+8Il@OZCiatKqp5apdTiu&1k!^oDm{HE7MKY?EFTAo3!@{M}JrIp{l6-~GJoDE&@L z(#xHHFBR3ZDlljM^W6-K*Tc)gfJ1$+X^`DN+8aK2^GJ9_49y>Yea=8v^&HsadN=kN zEfD$ZL*~&iJ2sc-Ec%MfJRP*I57>v7>`tfIB7nJ-!6S~wp1tCGcGfJ)Z6WYd-BzF) zV6x<&%`BN+`d0(riBpRz=p<+Zj7{>OiHh1z-W^Aori{occ+Z8^nf{XTS1dId=+f3l z9phgcJ|&bBO{)sW`|Ljv}b+DH>= zvxQ0MAMPeP*=Q1N=4AG0dV~CWd-e1t`?*RTWrc+9xpc~kar!bn)jJ@1dow5&m)F(c z{3Ad4*DeoED-IuFp^o@5wYPDqpc=}g{ETVxz~~8%K0h*436K2Zco+2u7i05ZD4Y3I zj~M#8TQXji18l?`}gnBZnmDuRpW@Ygf3G`nlA`A zZYF05LNGA|^=$AdP_Nz)?dItJxSssu=s)lAlKf?{v2%L82}$^8PU#T9OqiWr)Gj%m zp5wSf9$iW|18^8mTMFd;bw1=;$`TSZiqzn+#AFjX8WWtQ(OjduI|D>{visl5y?-(P zcInM~{T#cl>PFIDEa*;=G{J<-mfeDx*1J;;$1`2n;m(%R_i1&3L@*b7;&?qwXGQ z*loG)xHGpDzn2x8FkWSG*<(}UBt*;md&0xdE?ANGYJqEjlNnlcWb9x8iLSZ~34X_z z#g&YnGfQVv{;TkfX*QdO5fPevtRlsPCH0;I$3?A>9*-IK*s{9TySfI4jvO888{@eQ zW}H+wx+8L3PH!nnfWkT7l~a;aC)BmEw759GzPd8sdV=QQvG^KosYo634oW!Ujm;M_ zjuocgYP)ENqdwwIaa@a<&>bG{30G-?fnv9JRV%NLzqS$wv$l8}BH2|79b)x6n+S3o z&EdUVTyKVW!@H<{VEn7he_a>tNBVZ-z_-O z=_)t7+fMX1!@#hi#-1~uWqu*@Na!&9{+0gGT`c()!~Y653Y^l`2%wK1#iw5863A0EUQ7N&YyjA9{U zR?o!h^sOnPU^2*@*>|S#i1W3S08fW>-1Bq+o2$z0vG&7P9&o#65)u=+-H;`GH7`|r z3ArmK+8Udmr)KpOpyFcp|CfJke>f(=Tr3oJ)V3=?LSs{8*P9Xwd?id1OvQmzO{};8 z03ZNKL_t(>r0%PL75fo|yCzakDdK(zXdA#t}By2tH0 zV0(tU!d+MOhl>yOhMSHJm_Xc(=e`l%cF*sJ1E*fp!oa4E{_EbqnAmvqzhLW0o_*G? zs8s7jqd$CZ)58#exQsBrHe!!WMXWqswKKYqB<#lQ%9{o?B+dUA?>x=L$@YExI+kxVwBPw7jqr8p=GU9dmZrCivzU^0G`Q3(aZV9h&Kx zajo!eNMF2$8$JCOo$^`H{C{pn^EnYDS3dhRfQ^snWCjZWN;3<#D3Z_felff%5raPB zY#4Jz9M)1(emCjB_?imF(6;>nkKqE!@Ci>v*_jzl9^+A{}xLs}3!cBm(O{LWz=hwlo1@y&QbrjGe9 znf%r{E+#pxlCw>BwIU0_9;5fm$SA>VKG9n+(O{D}O|X1YNqdFKpVh(!uK}Q7SoUig zb*uV;yRIJ5LP+cUSb!~lkZG5ziZ%D@*i4G@FHRae4*p#M^z=4Gt^(mY2|`y_bo%1c ze=`*xep(B%YSnGqbxVY0-%ng=USCGr1}Syp9|1PhAblJu5o9I-(`I>5#=imqh}x<+ z>Cb;7IJBxy;f+o+dTom?dBTG%>9k|wOIijg+5qvW4ZsN9b#=e4zVw90URVxGldpu^ zzVtT!#!)^(Bb{M_dldDjRK4oTCja$|@~1J&Be zLgw*i&J9K*9PsIDsfe{yvAvQOFG>7ky>#g*z^?w`y~6`zJO#*}6(7hwf;PRLpw2^e zz86TOp0b~DyN+7DGPAz1OkdJg6#?2pb?&)a_`s7ZYXRzPVg8Z$yp$FJBsU|B=&0cb zZyvG***r|GIU%trW-Fi;2+l>i=_76D z-%6Qg%jdg8>XsQKh?oME^4)(k7e8_roG;Lp;G5yalgr`37fNzx_n(2{zUP2kd7hSrJu8`>W*T!Dq*6-w~H$8yurLv z?2g0r&XWqwmZ#z>ilfiKhb#f_pv>L)a1@FxXg#|3uX_dB{g>dsVeu|V#kUm<9b)I+zl8oxYXM+(dRlk5 z^*o-qT*46>2OeVi%8<;sLoc~Iz*eN@8U28F`T`b(cdqg=-275_U>w$QSRBb6=AW1L z`UW}rkJNvde;xhTVnBC~@@GejlzN!|mDRAuy?-rkOi1egtWF~$^*?Vfo<2{T=MCM{ zL0Q1~BQxOf+kYs$cFjlil+k|Kq9Xsa$9BrvP@XOiz zU-{EmXv7j@Eg{amse@RRzrOC_(Z10!9iu6Z|C4<_76VYRfTH=l|3z5B`K%xYr)Bgw z#>y~x;<>4f)s5B0-ORG6JW%QK1~jRsp~LgEvT8l0#{b!S<~eN@e&9B}FDr%6p^Nl# z26tTN78RylR+1-^bXwI;RM`+UgNb2%9)*pY$o{E1b=x&0bYTG*x5xKUiu zYSCe&6h?WO`MOcJ#{~STZ>>wLD9bwEjfuUPx zs?03A+$qCR2|50m_m72dKDHRX`RJm?If)3XtlITy-m|JjZWaixxwv2RpKd*oJP_{H zBHyDgE`__E`!C^!$G#9o<|lPBe;^z;uUM6ySdU(wmRP(nEr3HW)J^44QYe(4*Ej0s5|75f= z!E4W=!7)>~fxf5;IplEQG6f6V zzgL!Wu&MkPGaI^0!{o4ZuA1MRg+gb+F+&7Bp&0MKp*!F65<*nl zCL>tv98wW5S*O7G&X!Yd>fgYX)NT`|rSlx&_B5X>-57Z*ca@5CXa1d`soVK?=08=P z>W%>=rqCFzG`r>K?}@3kFs1vyW9elGpq@Ro8vgv7vo^u0r3t}g^F-lJ0}$>C5bIW* zwpXN$R$z{*dh|a(36Pr|zMwUCcoXUE=)BWxIQ>@jPQ%y1b;{t>h23qp?J)mLfB3vC zd?%0m_?M@zamPRQ<}7@%`@y7WkM8#$)sf#Heb;b!*L8#8pcce93dvpUzk6UIJn_9Q4Z|_Y~jZ%AdCr1>JK;xz+CkX35NaU zpE@iCN#(swBBnR+8JFuF7Tp#pJxAV3q-W8~mJGOCyIB3C2QZdbA>f3ZpOR~=A1@67 zC*-(rANRES;TKQy@=ypj9P1CC`rx<(0jl3_L{QK;{kiw)3esKyTYz zG0QOiCG!t^!ygL3>{A{{1MSERb-IPqPx6anQG}24D*z()s4FhBMmO&pSQNfNS5o%v zg;5dXt`#}P7hspwUU|)eb#naJ%(z(B*M9izBjHM&1mHwlv4)<~W6Y1X!0xwJ zcFNb3>+O)u&p05az#6x%(E zYQ*Uz!f;zeW09sGfKaX{Gq8nIVMsXebYz)d8K4a7-hi|2)ZO2s^6C{+8JT~C{`Kl) zLzn8oLcsuw`QOk^)QXP&PtQ%;0>`3GH?WIOzC3Cf3*~OaN1i=ij{dXrfBNXr@Q#1+ zzlKl#?EAudZ{KeV5e@A}0SK3ebsTcGIL$5^vZwTL+)6=!ohZlI1m7IK38aF*XhVg2 zJQQD8W$>w2YE0(Eg4vwrdh@zQf?^TuhAW1{58SmUE^MofSzE?4C5tf?RnT#?ns;-` zlV=MJ__8l)2BKY*%KMz?QuY-kM4kxJy{=u(!LdsZ4h-ybL4Xv47X?F59zlla{4{#O zoS(TbbM17DZhh(GE63+HBm#NU9$DQc%|t3M8c-R{>uj=|C>ctRcPKQlUbSe1fxz%H zFy3+HpzZSbs$kw>dgCuM6N`#TwZo-oEOVG?h!N^_&TpIO@?OBfc8mDQbN)I0-PL1i z8<~IArdO;Y^JD)F%zsu97=7Ue^O`0)M|B5m-%xjWb#gVFmT(xn4bvX*npE5r!eMd*q`~e!%F*@Q|9i#E{Js+g;@sv}ZISkvea0|rB9Obe zdAn&T`-km@jPOPaG@cq&xAWgHL9j*_3A{cX_(gw5&%6^H`y}}2T21)>iB3Vi{|2N} zcZHvL`*3*T<<;Rzht5Jo1)an$MM-Tyk@bL+Mn{TRFq?fsQgYqsz~ z(Xt3|L?;2pN4o8Zbe;=q*UiP7gA^t2H4uB329OQpsi$qPk=qK#%{5XpKH3;51UE>~--m7=2~WMcY$ssW zmC^B~=flVD|4g{>_~T)qXFVJ~v@eWGFkg472u8WMfJe(y*`Vo5Y=5$gAu~D%k1p=A1pkT-T_lWr)(&;;{0+3ZP#9>kr|4*KfK)i`Cr(^L;l88^6qx}3MH<)AT z$dDDRh-Xmlj_JbkCoA|3e)8m!PRZ zJtNfJt^5H9o$39;4ITYoU0RlGgBk7q>;AvyqdI_UPxqy$iLRxxIOWSL0Wkk3`-j8P zPyAfC{JrlD>)k`)#2Mj_e6A8rMpSd^=qSG4ib{HU~ z*~7o3@2muBC;kOWuZ_YX8JZhuD?Is*b#v7j_Z`y&=(O&;bI*U@D7$w^#b4JBNu=C(#L`eS z{WLQFH62H4FpMRryeylLonr@2L)k)Ogb3wY(FOGTo>~l}+KBw{$e2lpe(v~^^%1t! zN*QJinZBp1#R4Jy40WQDrK&yEhB^WkD|s3;LvdEQttsKN!qX6lbn1iDOylQuQ$!xe z>W|(z7RIz7`-Zw^T%JgGhv=?Un7jRg7C=Z32KE zwpJ0SfR*8LG4|J9)*l|x6`a?^v`jCoi;))%Y2$)Z660fHoCPsj}cJU7O~q0auoThf%F>8~3#LNu~UiL%C-=G-(Vcq#3*0KKq?f%Dm{{o^9(L8ihJO67E z{5Lx@9j0a_^iOiB7Uab-{&rMLJbbR;?>Y8Asmgfq)(?lbefXb-(S7^F(@!mjQf1|2=#*e{OxRK%UBcCv3c>`1mqZO*a`L{`HaRlzvVA#Vo+G(gJOpreFOih? z6s%73IHRA3&mx!8?A&JfvaWW${o0XmyS_6stKp0H=(MN&y0v&i6=fk(I>5!pJWzFH z6XaB`vPU0UncSK(Xu--KZ$PDs!ZpU2d1Xd&7h}pCE%Kr|HrKoRMh_kw8o6LZVpKs& zBK^beUk#!LtmlO#)!=!N*LInN82I86aqNTE)>h_cwaUF#o#oV0j$^3xY!`Km*n_u% zWbxUEUzARzG3oRs<4l%?wHnnRg~b{gh6u?!vkU5BpFOn_7S+o4YN87h$j<*uns7Y* zT4eqSv0dc?-nJVqho_s%zufO^%#JG$>s@K?=4P7|2*CO_cYFirnl2Qni0N0|Ymms9 ze*m2HV%^6e&iq@RL=S}L&LcY=bkvg)26IRgr}y1391e>)LhT*y3A_q0D!CB68sW-l zuIOpqHR>D@W)cc?9ZXNt7*dcXJExoC*=x07>?>!Ad#W$G_^Edfi}~*lW4ibFkS6}0{q{om(j#JWm6pGIa4GB` z(=Lc+vP@>3`EQJ&(N@R&`*N3+OllL>caxtM?WYlIw2_VctAoKU)<-K}caMx+UY_oQ z&T;A?U2(YWs-bY*C4-v8>wdJ#WLOKv@40Tsc3hXOFG%-9QyDvsB7aIV>4|MTQb(j9 zhkOI+N?0*OrerD0R_5n6mCYr>qUuJhJS6+;Qc~XCrCt7_8sJn4F~fR?kJ!Sf1-*yp*VgGgMP{3-tg1! z*%Q9+=7I3GYlpNr(iMK@edFPyZyUAEjGzC=UhOPv$5~9?55IjhT%iSn%P;J=I%LCR zzuG%C(qbG5ZoG7{(>5Y(!T8#4zh@ymrNv zu!Z@stlj_VQxn=5*OPymu+=gDzOl`O)m5rxvwHM7edkTq+&!6;y+ZltVbMvtlI@S6MA3G2(I@s6n>XksH z92LNQ8 zsZZ-J;lU@D!Wk{5EoyA+*CIDtecya|KCJ8Yg~UBLqNK;%$6Qo#m!R$Qn1~5tX{8E3 zV3bEnPXtzuo3u7&n2k6{k=4<+N7W^#fO@iizo)LBX(Zh;j7(Ki{Px{n@6CWd|lM zcZ9(;J|}_2#ioe{k&ogoIE%ET-rm?w<=cT|6iuk)t|-S~nzH zl@-S`_v^?IhCwoLZ8 zGRx~Ge46vypf)PT^>Q8ky+yl+*InEzK~!B~Ub}$PkDKmEvFJ8fcf54Fqq^qAm` zu%eC;nw-$-oa2&WW3{>ZDn$=HpZk%=!=9F(M{Z0x-Y!xv=>s ze-MTzPwGm3PdI#d+$7i2KnQ1yKSe|n*C!XN8!9j|{VaT0W3tri#~>oR5}~^}W6iyP zB>soxXuk z7Dy0P5|JehcixA;Ltrv7lmH^?{OW4sV59LRa%ZYv9jSZjQuM!I}5A zsp1%;i{#49+LU5SwQl9T}x9Z&M>{y`f{W(d|N3a z!d9Nm?%M=!MsOA`#K}`~i#qB#IlCe0?@`bdD}aldJU<{|R}B*1&mxZ3J4k)U9y8h&qXXXt<^M+GOlpVEVN)cy9*6mq$S#-WJ)j9KTIoA)w=*Z%yJ28SLy1>j|4%w*9?yDR;6?EG1; zWs(&8f0?O(SQYWuzpN(wuQEWCn6__vL)P8)v(Yj{PTx71HV*pbm{u_SEislJRyB$s z$6MT2Ex?!zV2KsEsmTIg%W^kbD2Hc;?b22tH3NQaRTeL#gz#@e0w1(*#9ueJK&RMv*JJE<$$CcnzE zF+SF2!IBUXo(02MEru+p%v>QE`tV-uLJLQ`_#M7Z&%+tr)OE~t0W&wR`^@Q0Z=`N1 zX{%>)qk?)(f&keFW-|S|Uz*mHjCs3~2NQ)`W6=?s(v`vugx4AX03ZNKL_t(D(HDI~ zL2H2Et%8T4_WCwAMu`+0dsmyq|Hl3X=1}s$%?@)E)l^C6)h#j{m=`Q;JhMzWmKc=kzMaQkW3K|BXi$!njT{{@Ay~Cy!V#j@Z2lBy-oH zM#*)cFFUD4Ar=@0hIrXUSW^4QuP9dWHrqY+m}4&otLA3l=t5jlB478{hc`=Z7gypn|g%+EH$zOgR#>+r|1d^sU^+qJ{t{wEf~i?6L% zeKPN~t6L;P87FOoh0-i)1_g~VZ2UPrfUi)gyrVrqR0=M(lRR`Zr<5ul#hWIQ4Q1we z2i(mv8ou7a(Y}6r3K0I5Owu&`BSa;XT+UNHS)aQm+qer|NTez zh5z^OCd0q_i38yV?WX+7pG|~+a_dMqruvU#V~;UT$Iq<9c zISp_xl34QN|7BW}i9%+Cs8Mlcx5h(G&3Uhf>(q6(@zuo(O}Y$*I{!}G42KFCoiyj= zT^~L|G|)u_P&MRppTZ|EkGxjnG2jTsVu0IyVSwESQu6T*kMXn6>dZeR+k>=2_sqsxL{w8y<#yZVOa>RyIQ;c95;SeyZpc|Y9|f#ZQTte zO5|?Cqo|naT!gYpy2T)23HA9-bj9uRW)*>jl!0(J&`@F-Fvj7)q zg_-I}763%IeJbxO^$g&kB&X94dm3S0;`BR?1(o@9%9s$yx(`(kg~My)N{p)pQH z?jlWO*1}kYqr+KOK6rYM(*pB4S#pyYvmbf)X!!NdO@?3k(Y@i*UzpN$o9=MqWxe4A z3E?X%CZbjFFsr-atUf*P?4oFKJsc3D@-Kh#kQTN#!vFQ(CQK+G*L7x>*29_ERXYVl zR$i4r#Xjw}pO{>ijE{L;4bby?uB^CY0U_t(PyhDmaNFIV4p$w&FAQs6`H+PEjql~& zf2^0{8AXMM7fG(tWuiD?bU;UCm?t{ESfXyubUNc={Mr2<)F}Y$cyNSCg8x=eOYonb z{F~9v_>#88X^(~$)cT+)x65eC@VZ4h?aphs@FNhGN?=c}(N+N*!31qV&@mW_EWFd5 z?fh%L(W|5X#`yP3=%2m;UIEZm2Z~0b*@b}T{?r#s@ZYS28ct0u=sK#Hf8o@Ovq&1? zd_?66JIdW){yF+TrOJ5x+8+$Fmw&%rP#6z)X-E5$Kd@h8L9e}Na!3Lr``PVCg%W90 zJ+crL3uMC6tUM-kFHLs?T6LOR6N0?#F%yxe-Do4hRkeJKD9wZ8>k7eqi^*fU%y+QgO%}PvItm^^X$w(LJzN zPiq7kJ)}a{>WKhxmI~RuWHZ{<7j+cmKfSSO(tvqnQxs@O}o;>TJ;r;-CG^5 z?Yfm2ro}t{-0T=_<cwUG zsl>8M!)V>JIcJs2D3qy~2h~5$D&XALcK;h-VY)J0$#1vIHH-31XRIrWannjb;BmLA-sz$nc@)oJJI@?b z7m&3dm*?G+{af1o5ohsdJ zM-d+7Z7SN@|CWqDaE^hQMWk{gdFv}<91Z1~7kK+<@@BUMWCz}qp@CHhpc2$4lM5>w zc0$6ul??>Ka#EtVP5Ld%6?~LMSwa=h@0L{wwJt4@aQhP3ULp-;jxZH~Gmo|~sJ@P; z;|z=rUNnj7R-#NeqAG!FSd<&ZO~2hMc!by6Se4_qklX+9MF4aZLR~j?{G2&JuF5{9 zbj6L`Zj#}3Yp-O;LTFBvjSQ%53XVnS3-t`&tJ<|k{lxqCgu5SK3V)-W`G5K2`@^sO z=^4F3BuO;ul6jy->yN#AOoGW4!mREk=llmJc%G7A;`iMoDf}9*?tX0EB0IbX$?`o~ z;9F5U-wdDsmhR4L4dINAeE-?kXN=#Xc$YZMB2M~IogyG$Sx+&)tE&s)$UXlxT>s2h z!-($v?>jIO_U+rFa%Y@m#M5s^G=wrYFzMeHMk8ViqTT?g*e6)CAw19fjY-=7_&(kH zm(V{X6w>JEsF%c}%*=#&9sQr0)Y1Pr?#L@11tTt$pb9f~PX}hN3(PTAOrFkY_P`d- z1ILV5SpntQEWBkfH#|uT9#Vyy>=aXvm~4*xBlUk!yZ`+X{MRpOfX2L$IEm3(6XU-k z0f$SAi(zJNLD#XO&_9mw8whv-)mK%y8`K0xM{PcM>ASYN1o-ov`H@}dNJeYh)dmd+vtav`6|4m@>-%d02W!WZvb2*)lS3fEpTq!$2s z!{@#+t;NQ{aIdb^bTe3XtVmzXSCPBA@gj5cG?h_!Nb=@p&v%5jKB?+eBCuj2imvXy zu7Q!m`z4EFXnA>gMj&K{kI;@m#<$d43jmP@pftX`FAcM=JvSvMjn8S&uF{LsXVtxp z{VamC!L~gwr1~=;UM>M|`?O2;vi5|bE8*2CPKK~6 z%5J8PR|~+8d|5aGiy-?G{JI##}YjQ|6WTbaB{?o>sS3F=fbj z6(HLA^&PVe-4;e?Lz=;$+l%*gYo6Q{PH9pn^)2FY7r!=G@RdM{jec!egV1$x@jk_i5Jan15&do1wv3Vl5|*b&$L37GqV; zAP;YN9Yz7Az|hUZG$lp(Aq${a6KT8KS<~siF5Nsc+np*U)WvQ_akDU@3>|--1GRN?FJkC*67J2GZjq02r7v&zLPIF>(x^~9oEyCR~iB}3+@juNv_gaFCk`}?WzKmW*q zaB_M@JN`rAZ^iH<^X@~pj)n&$$^ZD7_3(fE!KrXY3mr7RQ##^*M#r>&>4y*M*)~1B z`RqbmuuH=pH21Ww^l0-qy!(a$9bN7VzxqcL)}Ci1z?Sr}>&HSypUQ7W{oPC2{h!m~ zLZ6sGOS*K{TYNrZZYiGwPya)B`y+oI4$qwmdq(@T`@h$O*qPul!4z#*X(e1_r(%CX zyhWV|x#5MVhzMdb0+TzP%#fIVcK-F8pg3gtt6?#iFKLTO$Ke-Y{!g9K(SPM%*Ko*} z{>y$}W)yBHbc@eyu^;pPEIFCx@DA&COC}KRAOLqOaLZuk1Y>(><^Sx<%i-$}&FdM+0i6`-mH7RN4QDV_YWmjyMASmjdhcpGRwiIRLJT+7NA?e0JR{)zDKe(?f(go2ke{!ynzd3~hJ6*EBy7)<&tJN?|4)2tdK8u;wNP#B}{IH-=6!Xb;t(dpS2a)>t~Nw>)Spx!h%U%+S1L6rD!80~Om= z?2xSNg^Myll@oI!ipot4)9jdY!s8=14~8Fo+mJ2tJg1d@cECv=`20)3O|!a@hn1-# z%m8e$#S>$dC?M)x6ATsstYRJU7JAj2gfRz01{QcQs|(VVq@HlYrJ9iM(er%MVoJ5k z$DRLE+Ub8$g3?})5I-jRCnY4z^GDLxR0f==WpZltPdf2Ps#E%Mcw_u?1gSO}n13>b z01M5^#OX z@Kt~;QE8f*AgmBF=oGQ%BE?N`>p!eqy6jl=L(eUQcV0hY{W>qSd`oxKm$WeB3v4m1 zDaCnVx*0FyYF~ zOw4SAd!JYg7f3Su(Y<}P%gwRlGh*aVPH$)dK+@oKYKJ!LiZv`!HKB!qmrm(8zm6^Q z6yO3^1H@#;>l08_94lF1cx^(G=4t3ssg#;%4)>K4kA`>u<8OrPUU?vl_pgSd7aY(g z{b)J@EeL?rzfoiu3)+<%b!K<^@c|%}cP#VhX7#1?cX8K$zZT>$NYeiYB%v0 z|2;l-S;zzvy270ZB_ zqnpJ64Cyir_gK~j6GNH58G*5|K%-obHX`SblT%e6hp6fea9EU<)%C@hrHRKMnmhgE zD+!)MBitULIq`Yn%6R@N7~b<;v*wK7NaLK_QV>GUngnsTJvWt%da2OvX z`Y&quo|x03q|(AXh{+{-uj19eDeQjN-`&bYY~NJw`nSn|qfLDyR%Zl@$)v-)PP+BI zXAu`|drkextQLQlbu63v*_0!~Kv@`A6vM}YVuMoA&<9jp1wtihK}R0owKwT)VyM!Q zBgWTF5x+hXiN@#Vvn?x7Y)f?-k%;)jnGNk=Z`jF;U;UE_6NJZoc1w4P)G4x|+#SI6 zmI+i_g#lF|+$^D(lUnfQvM< zjD;s9H29m3>KQjJ&RwL_gNrL&;U6EL3lBfDV1oY6h~a-&64~c8Ha-0Ok|gx^hkySI zhqW-N9a+)QH?-LNrTf`H|r?8cgy zHM;R@OcuKSY^)RQ!*q4)K782A&cE*d4~>8NrlmNvPgfWz+axK*2#`^QWHp)drHqU_v^-C+4a2`0B2tekUmAO{|NnCTv(9Qf9awXj{U>TqdYpN=iJQz5{%X% zjrpHe#E;(g$uM*5J)x^#S1K$oFpM&)?&h>Gh2($6y&H9k<`+JGF#PrxChQ8xkWMm1 zWr32}wU`oTl-u{+o@&D8xT3q!WHugn49$ANQ)tvZ`0~;qR30BzW@J*eapbU=)naT; zNdSUUR%$CkFs%9iwK^?<;?_JMjDfH6Z+qJenzc3j_#t#*c-$etR8Vnl^q}w_H4Mpm0WRy}vPZFQ2jl^MBDT|UlrGGsc53CRpOnNe=)+c?{t*t^hYtO1gi?PB&ZQ|v(wL0f871oivlJXfeMEC z=QzdWRG8=3KZ^ho{I|Rq>%g-J^AB!5!zn#iRd=5v_*m<(F@1?XGK91V!z(v~!IC0M znxXLUSV+Dx|J?i6YS56~{qNJxKlkl>;`pM$g{S1!*L3V($4eI$bnjnR8@TtcmspLF z&)YWmi7$_bxZIs`VCSFj-fMm^oVxl4L)TEe;+Q7CHc#pi(nZBFr_(Ahx_uh&I0-PS z1x(J0(0jYexHx%wwCmz)Y~*P}{3V+9rroAGI-cz$ivep@oime+ zIUTpNyR@2x^TzYM#w4VJa^Le@D$=}Ls_fEZDPYgL`rV9cx6i@7aXzzOn{UoY{+w9aFDCzpKgz`U`Oxh{{C>A-hE|Iyh!&-wbT>7B7sZC zBxU-_qmjAd8UfpK#rQ&^;PBHHo>K(n>E@IY(9-w z*s02^wG}SknZUma9~pS9-m41l)jeAnW{$tV>$(9whu0UbIHYHg6z+3c6nOB3m3Re6 zi$WalKA|JE!wN{f``GL>a6l(Y4hYwiug-@fS}a6fRjxY9d8>s1N2GWswL^#uiwB+$ z;Y*Kb7fguf?KwJ4B;`LnA7e7+pN#CX${F}Z)G1!0ZA~DdRSM* z4oJ2F^+MY&`lCvghz9rub=H|_z_K%o(oke|XPC}DbSm#wW#@=lP#GWXl`I$4l?wB) z+8{DnQ1MrW+JZKah9BSU%N?17L#yBt53bp=7Jg^+>2wWN7WCeEz3N>8VE*sFn$+F> zp>WMbgJSmQb>(JV%zl3u*A>D862f<(#+5ma;_C>=&wOyNJ+t@a2NuI#Ef{?KJqN>Y z{>4Q2`h#=U7a&7?+f@V4 zd^z0p@Mpu}+1KFp_E1jbxM5-W4H!T*x z^lM=uO8wWpe^ybs>$I$s$TQsgp9s^FXLK)qN~a`N%**OPh{-Z$^eigbqQcE#ad8-@ z5yH9I`gI3R0Zo$|Wa*0--bTO&I0`sEl#S~eW4im1&7yn%1M$hf0i9}q`R8N?3rxoR zYv*4A*mTH2%>V4XWHU&%loG|!f6`V}9v|+QJx)l169b&zzW2i0!)rJGh|2RK0Yp0X zlmbsa<`l{2zB&{7F6k=2PbmB%UsEtHLi0=06iz%=K@ae59E zzz0-EV0QT@P!9oWiTtz}puuR5eYRPuKaMv77KKJjCVZ9xK@baWkv>`EXhi5+8-yrKKk~t@P)f)!z0gX6Oh$31Y_@U;sn@AFG}A8~%=x-qwq zRrRA?YYB5;b8-6QDZOPHiDrkSE*f39tfvC@gN0DVTs{$A8E;TZ;SDWs($1c-NW z=}32~X#6&y2$AbM#o0PMd5kLWkaM&9zmfF1a`7twF`Z?;u+y>m@qe3z%iC|JAmYZw z+}NoB%{0N!o97(wg7NRyan9SW7z*#aW>8GkUQwZ=001BWNkl6GFp$Qt*fJSy)E#Y$g`o`lrL;j4O7*Y*k*9T~ z%}zc+@3QYy(LVfSO*8XPy#6s`Xgx%F*kXdBkW6B>%lz*&KZG|1#V3R;+@<3=HfirL z0uunb-fasmJ}wY+P!s+`<9#NZVS^{VUI%5hPk!?6b%^)%j3QFF#~Az26|KyFzvQ{x zA;EmyF+ZZ+IUZywkMSC-nYvW!f{Am)kuMS!Se+&e5=x~^qc3ghzNeP701%JO#{~mD z1+1g_e|7hKc>KA=@Zj^S5(=h!)t3#1S9D+h(|Q?zAzq14=xn0#>woG_9lAJUzxD2x&$r@sy7Kvv}PtdNs1G zBQMfx4ZqIQb6T%gTkrCT$HIHQ{oCR4Q%~u7!-hTiH#jt$PDX)Wp9000V(T{?=A|Fg z4J5WX16HY$p_E30H=%!G{>OCu-xe3dfU;Q3b3OC(VP!)1{?D8;ssD2`^I=^Jo~n+b z?}s*0HJR>a&n5Phl$6%!<204$+eyH1q=4o|c4Q}B6q*^69sH)Uh}axrx1XK=LA&!m zpzESq0N_NBfO%13U9t^UG?1|SKQHEg7Uo~$N-ps~MPcz3@ucX`JS{N(e2?w9FuZ)r zPlwGz*J)?Ek(rP1)B!JMY-k~BDLnYhVk{qxCo9E$17TIhJ#NC4%3~~D+~m_2%FI9a ztLhG0<{*nL3v8}MTBtSuB1Te~r<8Ht$NJQ@r>G-SA1x|L;Vc)caOH$wJpbTVe4?us z*0tz&Qo=YV_1%8$X!z*&jq4gr6zIueo76~UU@ocjwHSOG$2%vMGQF*sf6{>>y--g) z9h&D`W-GG@SNxJqzQQ3h$dNgNN@1Y8XT+ZZgf#sF*b|urJU@-iE$RF#2Z$k8&{g`@ zH)khaJ%w<)xGtB2b!M(5($0c5LABa!bcU$0eR?*U&{zX`;`nN~O;UO}B8BQ#tLagz z*M_l8^vaH`IectCb?(h>IUXOJnxWde@Ymt&EOcwA z`ZRe=kf!oj6aYP2DX7UhOgd)$du`KUGFhYpM}ogjZR*(_F<1}Jh49=T4lh!c@6}{)LazX@bKIb8B#16da;&qbFo;l~HjzvHDNd#|LV10VKNnu* z-c?;7TPiOn*V_dE-#M!Ye>oHG*KR+u z9UfQxj_4`?Pdk3F3Y zcoyEIz>^s0%~j$qojLI*&)mBc-NtwQ9GBoOZide44kr^G8^jBOikP$vkO)1}Xye3V z>)5iCSAgq%N-AyyFByNilYykRo1UUsI|9cey~JAaY-cqlB!$cx3Z>;athDZCY}yf~ z3z(Q%4KImyF4nQ_S0$WnPLuc#-aZz-s-0jK6zf#IYaL{3H&174h#mN-Xm%rwdFABw z1pRwkuvBi*h-p5tIgzTkD^JfgN1M~aZNKj5UVpLf-(NKx?t5}Um8jU%Fc|0K0+!6= zDa%x3;xh*@6G;vvHz43e$0WS(zx&8|_z!B7p=OnArLzZI^1>E1BXwW6K> zy}Fvu3pwflDIevNG6G`vNsBPD8*`(KSX}~w(o=Z4P@Q)Ex%baBTd6@h zsg68sOihM4-T7zte{Ncf0qSR&ce$b`^mY(qw9rO&ZU>eixt%bOTvY*6pw9!~F1tGw zaLJ*-F9Z22j{fTvgLwBJiT^rnMt>j}=xjq$rdJXAr+m(9p<`xNR{+F-!~C->O&UR; zqL3-3&ErBxp^H52*#FDA>;K&C|2(W*@;2>MsXQG>{zgX$UYeETt$I1*j`2y;J~8|B`I$WyAuc-Toswe*C{Tf zX&=!2pMw$-=W1QZF4IxrCGGIMq_cs#rhT5hlEt@2I&C|f27C~CoKf(}$4>5O*i8XRo(RBn@c zcITca*TVN*H)4$3$uleA(7t}_s}VMJP{&LkduiEDgV^8z5+U=x+!-O_Z)gh^nH*7x z91JG9q~G>6v)g6sQJ*WkhQHNHoJYP*o%;4t@^rfnDz8T`WZ%8^XyEm%+(j6Fd+$QH z;QL2Spw{IQ{5UV}edFa2e&k(ab_erw-J z`+IC>ZcVcp1Wdl569p^~LR>!QSeKz&5%bzazjlauf{QCD8wxY1yO(R)@ncTIgvb=M z(n0|O(|JOR0BkTj-PM7|U4rOS$Lv(Y3tTD`8O!5))G}c;sm#{QQUa z+jC*~|Na+ew7ai9Lj8cXE@jlmiL(47bu^7_LKn;GEHbr45X$eyD+g>5^Z3c-aP7B$ zE8O|)7sH;F`LOrUNEqKYu4B&#sJHED7~`7SBA^#m@5F(zK5IpEwa_&YTG|dJ=CzC-JzBN$K!0wwFCpbn_I*t56&h_1wdw?4w}kc{ zsz1wv>~vAQaK*`)_uQ-(D;8G6e-(``Xe^APj8h5-i$b%E7r8g*GNlDTa?k3BAPEh6 z6+;og3=SBRY~#8)Wk~Y;c;L+2PXR=yh_5zI;b|DF99Pm!_KyPY)#)DV8)QZ%z_AMk zwIH{mA_Z$LX2TGRJa4%PUP*E~qMgLLso*K{Y!DHjesPX2F<<84Mo_rfJX-xQ7nYw^ zGQ0Xm#)ppFIKFt|kyCPU=07FWnl~ib5!P0*z1iL0S^$VO2oW@W>+1_^)6=JCeIal= zm0cnE?F4NLTQ->p#(=(E3P!>|cm5vNb2k)UafSH0@g+u^o6 zCIC-Imjn@RXjJUhYUG9{GmIU(s~S@TejhMh-_7{W1

    =M@Mf1Gzm~a`_X?N%;VS< zQ^!OEDzJ`R#A@}T3gOsgmlkral;EZp^d!?6-H$t{PJXYRVDd5ZufH=JhBR^GnI{{_ zz4vZNq~dXjFhohA^ZB-iMHmCbiJySd46w@>hUj-TzcyjrX26^#wi)zw2d9o>EtYzx ziEtVLo~qDhTKLN2%i%pY42A_Q>^z{iy*cK$A!dC@^V}OR>X*z9dJst(-`AtN-d*;* z+iR06;R9m)Z#vc&9+714(ZS6yqOIAf0L;`TUSH$8R+6lznHWe%IX8XO1;th#R<;gzIyRrvmNIt)PU zyduIWF&2ibo*FRhvZW?3+lnEhIqHs*f!tnKrLt^#&4qNREQ>{elpt>k?7;JEnVOcV zMIGUKQqOZyId#mxg-bZL(z@WPGS$bO-@8V_jQWaImG=!2#`!y6TnbO=#LyK-`*i|j zB|P=&a`>XI51rDc05`;7@~N6%{*70{|MKI9!teaev=$cEv?ELzm-7Xi4`f6V?Tl$< zL-IUlNoq32G?!s=fVkw1OO%@fKJROcp4AUsDglMuSKs*7pN2ah{PQq2b5gu{e>kY! z|3U3!TU|sH2{p8>_&`Lo7BwTR&%De*IgKu6(+}}U^td=r-G$gA=3mbV+DQObHd$rW z3mRc&IxL>j&i@(R{nsggc`?X5%Z!3FsUAMe;5FQtUB*HIgQ~(LvT10aIgMa;l~slH zZ+-{^cgG9O@%7lz{~pa1kovFZ{&Z}tuUqp*@+X{|8Z2P`S7H7o^lx@n3jn%Tt^*i$ zgr9U}QCkvnJMm%X0~UdQ$P2jt^7n*^Yko-kxQAu)RLPhrW26<*YD9^jSz5PiWL#Z& zQX3mzzF#j8s7>*tC8ubZnrtXj2+~F|HV~(kjYT0$@+!&!20-vu$I0IUdKkAPJ)t!c zs(58xbd0;f-vc%{%0gPIZWTLqWHK}=?k%lC$Th#yGi%|l>&I*Xe&1++_~?83!h_GM zy>nHkMPQmnSr=IJMaRYvb#6eLJAH+fy49-p9Hx837EeOyZjCY2+sK=4HTCHTz`ldm z?biYTp;-U`qe{wjX>X~w763{bfJmUoLRW{jwmCn&yeX-%En7nw{&hE52M#%t>OztH z){3^brjF)_1n+EUmNBd2XZvIxkzk)`O$45j@F$J{ajGje&m338Z4>*Vx1`AmSm~%T zYXwM-q64#q+X9ZXk@ZegHC>&A*=-oBD@R&WMdf71ftq!W*wq9r04Wdr+5Jb**M8mS zIxOkU@0Bo|n=To$W8lEpZf*(%bN5%@p4OYWS}bVMVRMJfdQKYwRnN*y4oaN(^UGLi z^SPiMo?UU%FD-RU^j+o7%Q{^y)2g0;qUr0+ld#f;Stf_`8q zNW0`Q>D}*c?dk?>h(MSFlR@*ue`7~9Nyoj7eczjNlgNl zG_hM;)?46O5QL_9En--m!zbP|8Xhx7p)dT@J4eF_y%g}}M;F7(dWGW1IERCEzjs#0 zI5o+zH_Sy3EIitiaz;#ApwhEpiEx^-+^P>~Xh$hjt3`k&q;iOpMSLO^wqyL87Yqnj zw!l{H1*o%8CFZjUT_2`woAv%xS59z1LtG78)a-poPqR&F5$W&mp9^1qY{7(z+Cu=X zDlQ?U{_5(=iqHCnYRu7Y3&(Bz>qE70RT@B5n~oMiwsa<6TLN_s01er^KjEeCL|QuS z1~sDd_aD4{Bs`+UycIDqHqpn6rqd!JM&o%Iwt!pHuKvIItrOuY3Hf_XyZpbXH^Gq^ zv$V1v9@Ra5;`r0A%$RVn5iR(+qVJcCxA1@d-bqUj?b`BS393dM?P)!@s0%=KSkUGS z?&tVjuj~KG3S*_y7x8v$)yl>+Ma2`A?ELcj$+*V8ePROpPCpdB|Nh?(mrg#ft4*8X z;Gw-?NKf)P^H0ve%kHo(pOa+IhKPs!@1hr2f6CB~rF82>>HAcI;^>C-)YP6JsTX?$6?qyOyu>*zlV z09q6h85<+-`64YSOM`TaC)qtIz{33N!b^DI=*{8O&HpTP?LQ`9uO)e8iZrumY2gLJ zd}DE50`7F3@p7G>q5m4v;uM0f2en{9dL!)+Q%V6ys7qYDLWm<)I;KVy0S!-qBSGZB z8w0hok(P?mIBUu(Ml)>b$)y5F-s9p&lShL?mRED<+KH|Os%|+E41PXd2zc<>RTyXq z0&PH$iX-7MFU*RaG*(o39kAK20@`e?3nDklw$7^=fm}ojJzc}YL;J7wl_Lm<;MK2H zvDTvfUURHe@%LKxI?fM7;Dq32TIJg6+QRDU%EDrA-_TGwdF&YPt^-=Pl~NcRei;Q6 z?t`k4xf(d#1`X778);)_gTzm+0UXc(N&Ds5FAN9>ExFk9c zYv-<8(xlZVQa}~;VIA|G(iMTfzh~Bj1hR?2q$Vm&haf1eof^r>*?rufG(lTNcPZSa z25U>Ng6^aqDoOpGwB}V(*6cR3%8VvcUe8R-QDcL>;U6AZ3}4ezTgN5H>m~{GI;3kK zs~Y%usp`f{`@?&#@3ALAd3NvXk1c7EC)QZRpzEAs0ALD41F7=iO(w*Q99I9qd)`bO z5VHI>9k*r2<&rCTVW3y&IjJejHZNu{Y!Pj3l5!li0I!E*nWd)K)|n`e^s0U| zF4&f!cKuZuBSRej)k`s&oi|MyD2!BLHby2wAw1=16E})qgGuZg8;wd<`wJ92MRW*vo3KwF`~e@S=6VZ>3$0{G3(PlhQ8*P}h|rlOkmsIFg@ z+z-b8zy9`|34rVpqhtfWBBRcmPb(;G3d>W$?W>APZ&bty!-jIkt!a#~te0Woh1lJM zpI#GZGOTzJO30h?PwIpMbCd&mKJ>0DhQrJ1-#C?YTK&@p?-&gmi)X@<|KUG{1JB+Y z`gE)O@DW{I7~P|`s~ufsf>@Xq#n^oJ-;!tToAgHdiDl1NXUC!BQKS&BK^^yJ=YNmx zo^$kHlJSK(E&wbphIL8&pFe#n%xUL;W>$* z5(BVBUa|o6Vb(t7W@hYy1>X8Ml{rWMhr}szVq&;&(3t;Tm}wwY_-pL`OVXY_`8TiU z{xqLh(zwA9evbZwFISe9+##8P1DEhHCZBvm_RQrH2y)n6Nj^X?l zJdVrVa4Ow8<2l5*+k!!!p4^<_R#}l}XrEY4NB}QS0Up+=P!t;mmmSr$i>KC9tO}^!)$XdlO*Ij_ba!-@eUzv(I1#`$p^lL68DK zQluo3HWyJgsmQb>JC-U=RF0EM#iepZ6<3@%ah1zeVdSzCr=-M`C7NPHhKfZ}5-EzS zNRR*s5CB2!gTXc!%*>m&?_2)A(|zvkd%y2{?|aK&01W!Q`}KDE^y%)?d-v(wxZrQI--i>HZ4}U3NDX4>~+*ow^~ZC#mmH=`+n>)Ea(H}E*ovGBVvs1RGu1tnhHVmv$ zyR-l>G{~FkIv%Oc!Q~v8XZC~i|6lm2-4dF!+sd5l?cPRbU@>0B;pA9(J3ojCJ1yS0 zL{WxQE9|q;(s4u6c6sUb#0Sv26?)e{3sTKuc5KJ=>c=bU=sC*$#ET2zzyHi=`1gM~ z86G{psOR?&VMo%s?{I~*hcu6+wA-|+x@o*Yf%B5!HcNO zK-<`~eXN4DWg`av+6u4mU{D6*)|k%;eVZD%{A)8vBbW$rI^Y|cBy_sPIv+I#ZsJ11{A=R98K)wDYk>;h z&B}zS%7e$|!x=r(g#f$1`Rqv-x?cp9uuH+l<2+~DicB)?lnxsRV*(y1NQ zJd3DV4;vBLL?GdZY>ctWWQoAd5?vC2-ODFpTK|_h4HLJ1(RO%$r{0ra*42c*@X3F8 zH2kAqIuQQu`$xjHM>MV17zX(vCv;-zS3j^v@@=}q<2o_HnCAIUeliT*^NrBGIHyH| z;jl-~@^$Hm0Q9l|#m6i0{8<;q?8p>pVL<>brmHf!!2@UX9_{us@kj7qKSKZFWXg8` zXSHHBq2vCV{Ev_7-v8uenAZfEg8{_EN1MkNV~K9E7Akjl>hSdN4rsI{i)FogxUK+2 zJxGX*pNK#o`Azv)d_u;pzixFN?D#YJ@7E$gw-$zblz%MovvIMa$^Vi~{?+Ddp<{Yl zCrH(A%nFaz0E|YD9z8{yI~8ug>!4aV-Q5?SzTu-`{_=N*j$SRMr2H=eL9{-0>l^q< zuuED1IIE-W@b{p2`#LQa9oZjWyD=PDCeV6ScKwS;WJvMkPE|9h@vrLRHc&98+7Oio zNEoq#xuVuXVrhyY_;sF%;Y(ZWw~}29-=VVP8D35cqULo~h0`TXg}@iTv}UNUYt4G(b07@HfgP~Bz|oTutgtMxEqznrfQ^4tAv5C-LEke zE)0kkm$e8WiQA9s&hKq{2XvQ?_+5UWCtP!=Cmhp`0E7Ov6kxAXRU#Ycji3^Y_l?kG`<2`GLg_W7o&=x$>4e9dfk6L`|Fi2 z)=Lw9fzJMp91G3l2b0c0Er zyha0Sj)Plm(>vcNgoe#)u>JkV=fVS8C`6FZS)CLblZ5y?uIvp@>Po=9Pb}!FNmux9 zKDt}i3l{X8Szq|d!*jOKcvJ&(D(`>sf!*Pc@0&5+{p+_6hA;ncF5Gam$K+Ey@a%k; zW|uh)#F1Y>(xKOtC)w>A>6Q!wis>gW>Z;uFcb}BuSOv~*h`YG%kmp@b48kCb_JBne zSCk;d$098gw^d~x@?NaPA!Eo)`FD{%3#%ehaNc)+NsBbR9C790&hV_Rc0B#kg622^ zF4225uMM4g;*`ih(on8P+pGJVXH`MlIwVk(ys7^Cx?9hf{1@)r74Fott@o__hY z1Q`L#pdwyW%0<(0w`h`%pZnwPW*JR6EEdOS>51OOFX0T<5u|`tHyqP9!t2WF5;a8mqO?~rIB-s*L*VA-2$!m5!C%yaqK+mM)es542P~q?ap!R-fP#TN zfa8hjqc5jFKzQeKdWQ3DdijHLeNnP}cpaovO0UqfIM%7L!kSKgc+58HR3)cR=`sL? zvieen##E%wog2vYQf~0@5S!FvS*>=jb@%oR?^j@50=at3 z&?4++>kP4MlDsA{$KqhnTCLwk001BWNklS$X{~uE2b2Xg z+?H}7WfBpn*Wr5xc+HVMl#uMU&SC7CBn5XshHF?#(9ug{K)Plvpq}*ki!AUPe{}zq&SO zqAW8Q_wlCshRS(EN#%God5R*FD{ThkGQ2zQ>M%-+k>sxI^vAoFr-IY@3%! zD}IcaUxi;0W|PdEz*iyKW>M6i=mMr)K4KEgvFaC2YhtCrII=dlmPeaU?o&oq^eMxe z?O-+xx|0t`nlT%?U?^zEg1gePiT@anI+d~f$*lw`t6EBrv@;; zDR*8VdGe)sEhvQWiJ#dWe(UcX4A)-V6aMMnI~2NJxF^j0yMGtDpMNe4Xj7h}|GhFW z)hOA6g|O5jkPP}XrN{nM=W!x^grMx~FD4fs!E2R)DZ= zSxx*$PlqW907NSOqS{H~_q=ABiWxVHFPX9P)s@4zdmYAWJ~%y&rm!hsC4912u_|f3 zT16SqD+U8P;m{{@w-!6P$q&J;Y5cgNmkkz`&PCn(pPtsye{Cp9jFcVWkJE3DIi{r& zSMqWbc!mt4S>2HNrMOJXY02FyX2(%+Ocp2>wM?eL<*H`HS}$t{EjqtEyaC4$ zbXO4_za`>gTwrq<0qMVA!W@zL(yikjoc^_I!MhO>%|b6QwJ#CjSYw^Aiqn+hydAPI z9*tCK!9dGDf>lx%JKz71lCO!r<=%C#SY6W}aC{^<}Rmy=_Gt2fE zR$ZH(nOdBipBSg|)El+eT+VG`#>F6y-Mb^Y`{S#kuV_I2gx>U>=DCy|Snwc2+pS@( z2ajco0X}LjI?DBE+qvI7j-A8W8dEv7i7?~^9a^4um>rJi)@%}#Am~gi{}gUfTPXUmw!p)^Bhak>Ycks@VaSe&A?5+XOFI#=Zd_H&6lk-udv z=WXaDN0eJzP=xXfmq`V)Cgf#@pZhkVXQ-PFZpXeIbOe^N-x9U${#VM^pd`ym1K5Y2 zU9`4?T>qoLnz9|Or(RmN1p%%R-1qdHoglhoe~;by=N|J5dQE_nN{o&F?N=sE76H$S zotj(;fBU^d;gl91KlQb#aJ>fbt72e|Zq91AVQPLk+?*2Qx@*^S5%dYfInXv`U>QaUX$}($v81sQ&EyOxrO=5~MGtQTOnL^H>EjF z;Qbt!>a&<+mv*+fLc^;IZ@scVJf$P;PwTYalH>!dF*t9j+NHD^0@WokLLEb4hu%~# zoR8fPFY1vm(mQtgB6Tm}qjwI6Z$3P$Nu-1hOD@PREhPSrfA_F<9G4{HU|e^`m%=~z z-~pW&>JOj%!l=d|+F72^m`ey)kbdyVc`Xd=3jgKb*lW)Z{_dB?bwxrjx;8YYvCQH9 z-QmW|yTXG{&4uTldN#cK`=1Jzz4U14(b1PfhxTccewS#ArBmKYOX(p^sU4&}^}0{1 zXxuLP(MfC3CQ`2284o-)&h9^xe}tI;#1`tTo>(0n3sVUFJB!f28SRoY>GPZ^kN%e~ zF*sDBEWT(|>{UC??&c`5dz}(>X2y;=$0@7XNef|9(xV$`)z_nmVV@R%`;5FlfkjZ59)m()Z@*A<& z;F?)iB?h3kf4G0|Rr}`0j*Sb1(g&4)%|cyJZn2~gW#bS#N;Y7#lD7JS|~L zFOM$RG0+M`Ih(IIlg|kBiWd>&WxP=m$U;DV|9=ZbQi*Rp%elgBSx*niw?&l~A1FMB z>iS0L!Q)?B6+R*K!QDpq>;6`pS$*f2AA{os%??j#;LW6dQ6o2vYc;56;YsoWbn%m; zyAwJ-t}$Ww(XmBqOZvMNmTc5O{Y4$cJTa;}u-aYVg^E74J>28HPm51~{@_eFvaef0 zyn4c0B#-2X787{;d|9~1bx-j+xqaYm1L3_l^@lrjir|PA804i>2i5Y4wyIk_eQvK$ z{u#8?2QFZ051V6c)V=J`x2$NCyl(S0}6y^c2pEIb=AGvPg;N%GZN3}bN?-ao6)CI^)c z*)ccbaG!Q{c3XY_!0KwoA6yM$OmMw+;0N`LC>w()2Qiiuz!5E2ATJ_cx+a+jH2mCm zCc{^LFs>&;;y-#?rpD`Fw&ps z(KcWUhQIZxlR8=SfRo94qQL;r?BzfCg2E+FyB{-^&nT=K;C zLjQ^cj_&8){~nuAS|U=u+s=QnkRpoJ&yhxsLC0w>?SM=fubYwZq@R2K2>sim$v;O7 zbWh$CTh7`M598xuT08$^dh%~_VoFcrHNW>yJt*=qVkmx7Hk;jH3Qrl_4Y(W@81O=B zO0L1?@R+S{AfPN(Uj$5+bZVimPlLgJcK&rAzfY$CnEczgP;D(TLL?d6?*7lt&4$_O zr9$W*clf<-6GxpcrvT(Y8^6JIHr3euKP~*v-1pn2p)rW6ej_AP6ul>h6Io~Qt9htQ1SB5CgWKc;%HwHuo@UDymGgX=lnrh z2ho^}HVG=5J)|&OL#M>ssw|nH0$^p=28BAq%g!#7p#j~$W>@7;@0&E?NbN+%E(=Gv zr*$HPfms=|LZ{JQJsJ54Q6CWIrL#$PY=_JS80WPHkJqq+^KV_>h~#`AY9p~M0G+FM zrd}>_5F3Gtfr_jQd@G8I>|e#BwZ+(vFj5^%?!_>)A+#w^y|S#M%WL7K33m7OJXa4p z3xdlD`>=?m9s!jA-l+pp=hW4wRy&|Elna@nrVvTJjf2K+Z&+#B|2Cjx;}JW+Y& z!Jcr}Tl&H$?j8yszGEP~@7DhC(^?3)@=&*Schu91;h5BVzQ(@2bsF&TfsD5^l{{WQ z=#KfuT--5q>my1E<^5dSuf zAO#SLqMs3+1+VAk&Eh5l(&xqvQILuCjNC9#a{x}?oziK%|NZ|P)uQaOUAwvQQoX;f z#eh`pY5}1#D$h>zc9n;5cqZg5_VjSNM#~HU zZ9TjvE*4Q1Od=2-`jz`9!ih0G75eau(zK)}2M>ftB=6&&{`-?!UtI~8s!jO9UrmPl z^wcDae#5H!2ekJwL1Pw7AL}AlQrpepNFO_J?g{kzh?!%LcRwEKZ(2*By+($ZJi-!9OvkagU&&qW9vnANJO?+S$^WD# zUwgy@2!sP^EK%tqgrO51uq&fS?mVqy&P8E5kZ|xeptFq!Y@xpv%diEhTXx(Wnp(h2joPD3CSqygU&4 z_2Q|;@R@HdX~AGwyZCBS!~ro3x#~&;!y7CdZkJXN zIBye8kry&-33q{@N^}e7Do|!yx9+U#8Iiz_4Yzw23bi)K$zeXsIgP z>ux~chF`02z_=>H3)t~l5h+R3Ar^jmH2Lq-o36cmy(*I^^iNrA%I^J3HpQaSIlr(F zX0)&|C!v38^6lt9oLJ!XNY`;=O@!|!`>qb7*M1;$3?H#}7#udXkrum_f^sXX#8x_q zBuM>Jrrrhs$wteKqD{~hxCGA%t?Wtqx%Mo8yP?V zb!`5`G0yZgt|IS5H#eJ~6Px&nbd?3^;UoT7vtwwB&f@SG+SDx`Len0^@p+7rI7m5) zbYSLMb4U2WBXi*ccP)lX4@Ci)dv^6k5?K-QAQrCmkIjv;{Ah%XxdpmB-`d6Bh)<*m znP)Gl^_H-JwIp`+4D7q=h}^IN=8FJsNB4q|@xoGXE&x=^+Zn;zGIX7HomyDYB0yJn zPxl%<&G}Tuu8~Y*dfBO`Ynp6zs)1^#1a(>oFNLr;cGjlVfV-mO=H1lhm6FLq>^g1Y zUvB$aaBE}|ZpXJ1I_V*uC`)gq zj*eKdEAjRx_f?Kl%I@Li^tw^S>i-T?oaaGq-fA?f8ssprMv>PX(I@}m8V0)XUaYM# z2A}G~qt0Xa~UpZdSxrEGqNfWH9{5M!nbwg-y!T>*j4cg=h0Iw+>NnS?Z9`%+qR<5(vx5po3Zz zy#3lCmBqXbu79joBaXkaC@Jlfw&Y4EfYo;urfvR2CFmnRH5>+XLf~7v)4#m55U#$YKOEHw zo%J@lG(nnZizF16rZ9d;eMh=$G_CUI8GT z%bLp0&)L2I$y3_>*U|r}Nu6d;no=`uXqf!_2-2c8*Yby`anJp7Hz2XQ0uGhCIZvRI zW>-0E0gpkSPyPpVT4F#iCG_e9K(}NXu)t!lN`y|r+OhvdP5$S#vTOJL6^WW-ThPek z$>VZ&blmx%jdc;izHsgP!{Xj6Ro;=Yt(@eJBFim)%YQW0Da zp*u%(9c?un(DSxFTQr`}0~AW)QCozRCx4B0PXyU(d^p1f>DS8{s7@t0>Mb7VpJ z7B>OC{|3W)s#!nU2p{=r-MkX*MrLDRb1Aa1g@55pwydpm_m3PoEECM-RRR_xiuIzA z_Zwfmxd6~u#>O^shFLH#FD=c_FE7kbclGolQSwz$KFO;`2FKd5G+M?c${NpXa$r2J zR?AnxnH{i0&%kU!@1-I+J~j&62U@fHz3k#!2XDYpj?l(t^e*6 zo~=_*3z_oQCTm&o8bc<(HJjb7*lsIMlvVPwK`{5F_vjer&3gOxpayW9@L;m#W$ZE9 zKu;EqTz~cc>G0Hx^Wh@BmCJkV25(p+5yomVW+WLJ8sa$La-T>ElL6FvJA6z~Ny-~t z?Ie#`N4`$)N2i*GYs%YL7QP6@P}dg$iae)h&l(ypMfa~4PsN_f*m=*xxL!0*jJuK} zgD0Y-CuU(lXR54SVv+;Qn05lc^5ATE_Jno>CA{gGlbZaCACXORTu+l87C&wO0l83cxwO>bupGOK+g-GGGL{&?nocudwPW8^|Hc;F-blb;7KBVNrBX(-T zGDkckURk5E%Fc1>73J}gwt^>S=p%F-TN|EC_Su!?cs49Zd*ZxxUg|OAmPxY4DJ93+ z!R=>QI~bg=TyG~#YZ%AEgcV_bAA9%Sz+{-VdY=|yXlpqsQ)6)<XGogW-3+bXM2OR;)jPM>w5!nO>F{=F4C+?aD$@%Ek)1ous1zjz&Qw2F6TXMyZi!Yyt}fEJ%yzVG?T=W%T|Kp0Rc*`CA)nm6vf*3}Xp~+4Kya3H(FoU%x7a1ml_F zm<;#+$IgbS)2G7N7*hYIB^_T!<|&q>nD`6Q6qrF-SGeKlDu>D4-QV?kII@PQJ$lP3 z2X@_)r!wnO-R?v1pCK?WUM=kG=4{>dgg!ve1oZWQAWbyM1kDc5-HMWpS#%qvKUu04T|-nqoDoy5+XmG^n|9eEK)2joaY6u` zD;gXeY_MCEfJu+WG~xcIwJV_o zt4ZzXOo_)43dnVp<5~=u)@}vQ80D&*=)=KPKdUSPUT;vBT6XIuCn=ry6pj7SW>Cw1k8MR^up4oO%ql3pS!u!L5^ z+7&H2izcc*aVV0Sf_r;HQ2anMq{TPP4D7Gbl|b(Pk7*)*mv&V5YQgP0Kb{Q-_Kk!~ z_e&t;wef|HjfH)C z2g3dXyEUQJWZkmF!=#|1!TH4EkhkA&wk(k+b)!%Kvp9y3zY(1%*sY!aUEKR;J|TBz znh47np9nLj&xDCHXTsFjqzT63P(Y+I&ODg>yB*!)OS-he?lAcCq3W>FHU2tG9?t#A z0%|ZH<^om*D;hbnaKi+!PrLst0QAVAOS|#(9+h!nCK59^>BhX!Xnk8?vm=IUgbEVQ#{1DOKV#Pbsdj`*(z8bzHrJyos$!YwSwn z$wwv-oqsLK63iP`kqK|AG6$Rq(ESSw6E97#EX~Zs%2s+50A=`XnV9GKw=F~j_LQuH zXkH!k51v`DqqMX`Ecn_JTU7Wa;czPkT$w*nQQ2dK&pftZEE|n#;GJMpr*S9ftWpGxqhOzE40N<*Iad9mP5xG9v7CGWjE%f#_7N_3w~>X9 zE+SI<1+Ae@ZZU=ufDJi5SCJ04aep)B8Vduxn$Tm#OkLnK0E6hqU(}Tq?HInGD*#`4 za4!7dsRcb3sDzYc+5i9`07*naR1QDGTVkwI5ElhvhL-tQLSxF?vufxn+&Q(;Am;v}5)_HpXeZH`jmu(%F+bunwuv+4XgB`q= zB>(5hm*yqAW7SULeCQp!!mmmIAND>i0KG@|sgIpp3jh2MUQu1_kc9rh@Qd#p)++ukoPi2C;8~PN7F+Z~+oBZ?S zA4mTch7}7*!`F6ySU4?#e-ivRp?m++Iv%h2a-nFmXh#b2lMi-ccGb*3_jA~0aE{Ai zyxl@4{gwyPfh)obxI>fwZWUg??)~>`^53gP00hC2Jf0g~RpYy|qUZi3$Y5cPW8upt z^pBgPO#Vq*1*hyNcXK+NF5sE`kLz^Cx>aAb_CMSYSD_TOu!7=Q-C@V2?1pel=uo02x%RK!->WZb8h$e@mp7UPGmsI$pi)B z?6}Yil}Dzisi1Ym3?F5Fk>5Mudn%&2u}B-qCcI(5J)r`QIWjNyjB6pC(_MHU*xei6 z_10Z_@k6J441Ee&UU_;eZAd(Qc`LE8C+D9?9H>Lgp$95 z+;ruDo>S|$0X&U5JEo($%gJ3!Fms>s3Eitaqx=8dmqXcoKa4O#bTW5->E6a82M zK1s@%Ib^jzOk z7+0V1q@?UWsr$j)qvkk2ep8yjPtSFPFW#e*V>;3^uN_35^?X!mW-!r<%u$(?Z#gJwa3>)p_dY;||P5R$?->1UWFaJ1>e2D|eqCkg*NKTf z?)+eE5DbR1H4cx`(wEZ#ZP+P0@_=wG06cW{ z&xX?y{1*oITbVZOaudiAc>*)+?iB}3Ik3W^l=v4;t%iT}Z(a4o*`red1s^LJS@-T}TI(sPX(>hY_?gw{(lnrm zCD=|Xbr0@6blpMWB|FFj|FByYNxvXfI(&6OroCCB6We-CHNE5P@h7L3x%_k< z71gGdVmy_rVl`BbP1=(j)P!##1jL($qdIDM{n5Vg)XR$|(5C`ivoPPwJLH;ogLVA| zB&N@k;`B5iNe+1$Tfw}l?k$REqe*|AM)HWJGH;bITRxNDDTC}NmIuz_X8uZJ4ji2x z&*7kE)oUX}3Q4akavL7#vId?`86IK9-`Yay)_rIT3R<`u=Y5TAa+5D8DWIH4tcsK4 zV#XJhmm}o)8djE0&)C;6onAMLL<%LV+$;jrg#!8_fG^Crf1bn&PI>r(Kn{bMA}?Es z=<8QgqAmS;C2!I&c%Ak*ISEjJyJrPiwB%lxnH0f$o!Y6==3vowdC*oz|C^BHK}^rG zv*LasS{V2(seqn3v19}Nn=kLPg_qruwJ@xKA+N-ocLf{l1R1nr2~TF+IC(n}cNUAa zL(~asn%d7X-K{rX7Ywhuu%oVjlblW+g4Q-?G6uQskJ7?`pKBi{&Pam#e;m^W_iFgm zpDx;o531ax?zBJkf+W9d=Rj32eBk!saD!e0_@6)hicStJ*=}NoIudpjzx&9%vQ$)x zNY5tdwZ6n1>I4B$@yh}mZ1kiauj*{_EkFE&aNTp?54+bE!v6ic!^qxYJM9+dIkZ+F zltNR){F$N;lhN(*?y|#4w^d0X6Sa|vuDHXnbT3| z-}qFRn~i-hAW%#H+G?TUOyt!bevhTs}bJ|^;Tf)hZ#2vGXeO?mE=@f1*WL>5_<#$t#9 zFB=1w{^Xav%p$+|LQACA`ohTUK*XF)3jvnj;sa(j2z-_7&O%X#cPYQfPaDb=KJ6Il zX@a^KdlA}6uVsZh7jP{MId8WBNzOcH+R-(%|Ar$W{26XkgH!`VRJ5b#l*oEvsG?1{ zFp|4&Dsv{NFvHl?$tfMl)~TZQ*>2sK&Vy$qK_0&xS@mb7-__L;((~cB4u*>)HI;UV z&y^c}LQ#fth(_HS&*V%yw2^X#blh&=DBOAV_l(&=B0$M~?u}48Pm<3}yl1pi^Y-h9 z!aH;{lje>4qodkMIx)H!cI(+k@{^U`gOd61p}Y2|Q{<^HHO};2C>4@*E~xr2$mj9^++GRa!U8OlQ{EOwVQ;QhBhaQ;Dd=Mn$YNTQ*-iH^o`RQy9n?{|d*QHCX#0-etkokCG$I_0R8}lKcxv z*iUoNc3GpXNr}?Lu02Pj!Ebke)h~2thqzOHh~|djs}IbE8Sw;H%GgPr&~toWc|dpl zRRAnba81M~-3<%hloKCWMOiibaF)AuMY%s=Ou3`(C_nhwaK{sW7WT|dgpu94_rHHc zlUUthE+&+U32?Kk9k7Vi4jTT5he?Sw5h*{5a`j5g-2*269Q_~A{eK2aD7*Ks$^W>H z`=5R#jGZ|fCM5%4R?p(ub)^VplYbTfP!_#(Vy>&)tq$k*dYHO9cJR2K!&6JWC1imf zKu%|H@4uhB|H`*MEdunYUuPqLVJ<@dbm}!7{nwQcEo{tbqNvm2wu2AOoCeJP$yiaq zGVx~t;Hkj_;YA(&U(q6fF;xXiB2I9Od^pCBB0S3DGyZS~!E~@XWs0#&3>*26MGURc zNS4fAy)g5hTZhBdIu$v$NU6vp;U{!l9A}am%@9L!GkG@*p#G%D&S?ZW|03OU}#T~89s zJ#g;UPDt2RMWrL@j?GqD1;VPU)go)`VhCF&QELz}D1`pKPp#lI3m6@1qi>ChMu0b@ zOW7uQ#}QX`Q%A1MEGINE_vqM>*TpW*+pit4K|6yH)JvNDfA1&L;mH@~ZIH(iud6Ta z3peX6b?#v{V;v}Q3>Ni5FGkX6*#p4x@S(_ZG9xAUpv_dzb zXFKN?I&>02!uy__la&4?YeOi;DNPC=cyeBg%bF~bdGr(dO-3s#udlfI;sB7%Rmo4_ zw+}inWNPi$cf-3L`h2)(?4__<{oR2BdqPj&fGq?8#=>7G8D`;_^y_M&koX@kK8dn? zfjD3-(HQjUD7=oz>Da&IJ`XYZ*GT}}$#8`JO=`FQ)afvJdNfRo>*)W~f?jSANK$mY zK23D==&e-U&+Sm-%H6Q%?(U!K4oi;m!H$gCENODEd;fm)Uw8kzBn-gHM}Vt(>KdVc zOYHpX*gvNl=9MFN!~ZvT}qf9aiCSW?~=3Mhy}N5#|` z?mexz!VWImOFz^#^+gu;CjPPzjYwIS663PoO+AKJHtA`RCIR~KJfaA zdH`;rvUbaGB^Zmf{E5-Ta1n*m?s^Vey5;d?5T&tZs`l~nv~;J0TVaZmjn~PS=x(*J z01=G|r}4a*-P1if!UV#=CzdQba3z|(BU(`7$WcN753Q#-(FZ7Bg!Oo!L9Pi;1xJa# z;#{{tkE_T5Zma4Psnuz7R;=0;L!4pn;L#)9{r&2}D!cz+^{COIBI1jXI^^jvsB!ho78&lP#vPVWxn2aSa{F0K=IZpQ8nvo+2*Y(nL6Y$DjE zLE|u&p>F&(jUWZERcD!FCzu>nUU4-#mL{EvS73w&vV(K6o@%;A???Ab0ASjv*Pv}V zJg#?L@7HrmFY2f!tNaxH6FSa`MD-B~dl{czHaP*4>g?IwVTaFz3aY%zcoY!ENd*(B zD6D1s4w3qN5}2re&1o!9__tl+yd3KKcJX@ndR=h$>Hr~D&U_I7I2Hly-fJ59_(Fi; zz>U#6x_^#*8#?rI=g?&fFeuMyHNIAqaZnd^ck^iLcKDI@7d)QN4vSv4&DGui90qev zM|HqZhiuR8IM8#2wdRz2Z`$nmT;DW;W&sj`-hVg<&H5rcLwZ_~C*WkYr|7PbRQOkP z7yJw_G<2(#Q=(~)(NXkerpFPoTTHL#PxRcxucENF-f#`Xy z@PNh%$4)L<9cKYKjt3N%0@kCl$tC!xzxIbq{N##{#aWu&o}9rcq;qGV4=sh5;o(UBN9do@ zZv7tTrRQeCBGUdxPw5cASeTrg(;a!WO)1e#{Oc@=7uZn=%yit`Zl3yaIPA^*aBJnB zhb268q$+8MnF#l&Z|~REE<*o$vm+%iUGvQ?Qg2*Em3lhQ4~r9Yd+xi2&gA ze@d@Nplp|0$K3U3L{Uyf2P#EaoQo<;I#B3jzT2%m z!DEYRyWv|!OFQZ+Hi&N9noe;V9wD|o(4>qB4Y%GXGaB%Q&d*wFO|9bgi(N}ZQo29+ zhxeogkS8?hXJLm1{-EAcMLgxUK0Sr&d$Tf=I!XG0ozZO zV6%G(l@P^5Qcm>=1yEaAxXG};E{x7^u5XvPuXwbvq@p|`8{OcY zB96pIm018_$-SIl!>ci#5_5ACJZ)o+#6CWNDd~;=dFZ@u;a&_>tgp@?bF=ejtI2<) z*KyVBY>@{!$~Me(JZ%Iy_aMp&8^C5oWKD%)W--Vn?b2-mWQ8L@O9%ng=E%IF3d|jF zHaq?F5dr~Ukbt)dEf$)vSY;Z)H&UR^NZAOy>JMphX(yg)zzuAhBB(WYYzj?AQXVe0 z{g%oMBKCu$6H$^mg4y|5}G}iZsIB*&h5r|8` z`nPg)B(ij>D~Vvy-@>L8_=LZbAS{+}M^gIYOg{KrEc!%@_${el>+F~ff9?MNGhF}d z_d?(5VmNSESJ?KBXi_PQd=nEcP^d+74J!{~J%3LQg|#g-FCAz9wnLj%+*291gkg1LcOQv3Cg zo{s$=K6NtuvtPeR@{fAMwMTlxliCbvs$do=c-mA>XL7QF7QIODFBwhdrfKj%N{JZ6 zdBky)zBQ9@c|TS7;8x^SB8)gaUeRo>X2(?KUEGNAL=_m#U}FcRg{kr05$chYg0h)3 zB-vmGB|G7aUL%2a%a@c#4p%8lbBsT+tzd&C(n?=rbr7yq?v;eBpspm~#^7#9i?j9XC8KsoGS0LR;m_kyN88 z+Mb&8rmfUOXwFsLp8LHK&D`HF8p}#<&>7Hqc&V1D_o87H7Quca654Y2jYHvJYRGvG zkRzk-yoo1WI>Tjp=XIBK6wf{0aA}`?9QD0fivfpp9RwLi$4)PVtB>}F&wqE);E1Q_ zdt}Hb_mNKxW%<+4Q;3`1;03yq$+Nsp6}DO3C^Nb=OW;G644bQ4bXgRJ$5bH0$~HaK9DIO8V!l`29I)KqDWN%6a7lM-NW;^ zF@!_BcJxN-*QbrimraH=pbtoL!r}je&#q1tN z9%&MAebP4Xt0+AEuEVgHTk%87ND2fkA=>uX5LLSsml(-LLr9-nVx}B9y+!*>pL~f1 z<0BH@I;jO18^RJ);IWRu$sTEJhI_7T5|G7PFig%k2{mg0vF^mOXN*z> zi|#po-%SOMrvq1YqM%E=&bGL%de2;n#im_);b2ks*m#06SM*8m{i)sIx!?VraQ$On z3qy-DVfVg4-TU98{!RDtb@ZT<4wN>;g2qL3vlOT>(3d()iXp+rfU@W=d>EF{zg;@| zZwZ$1hb9PeHG$@NIx#I7ol*86x z>PQ?GxEvNZx92bxJ^_=D{k>hf`!C_Cn*8&1s~qA;Q~9o)e|G;Db;@Cm=l8k{7`$?vk@j zdk4tWYJAbFNOd2J7Zy&PJ$cX7CDweLk1*yU1-%OnZK~3 zH-&KuqMoL{MQr9;2^-U%sE}5(D-IiHSzOW2CiN+9(?BYN$Axa=0A1~1iN9lwd{+Vq z4lD~l8dGv?pCWnY`K9ogua1RZdjH;VrR0DO=-St1hx@{ddh&Bhn@IDT8?4ucM5MxN z%7{s3k1$!!f!5d$SPmC4F~nKx9^BQpch8>1xfe&}K`BF+>zL0yp^D_Sro0Be*62E) z^f>p>9AGwXo;v;9Sv`NZR1P-JCy85)Tg^gB9g{d34tD&XekC6F=dR~FuN$xv0Y~=e zURayl5m5>mRj5rx=DKq8deP;B3=elcbp}GvRHw^_9-F1j?&m2GdC4ATRH?9%t(jJi zl{!s;(=C?|*qvSSl-*v+^co%8{pel0!yVUX0ko!gC4lcOS{X-5E(-()B>-}oyP!@6 zxSEktly_mMVE6o~=TQadRkV;-`L`2M(~sMDV4KLu-~8JOIuCEVZ?f1iKNgPM13hH` z1BzD4uM2>u)hDD14pU^G#Upnb78{kss3UBv*Z^%!OA(4_)>UvkEL$>dy{)dt6GN|3kRt>Vfdf?;F+&6Ou_JQS&+79qNkK9{E!E z@bNE(J=3Sdpzi%2*6x3Qf3Nj%n#sgyEfa-|ywqo|WRpAK?&V@;;AHSR#|&A|2!>$^ z{TtTX^gZ1Bmm*UTd|{LSQxf{8IPK`aCjNa&BS-%^1rQfuz^O$Tz3i|e36SjmFD&Y%2bBRs zfV$8>r_1B5(}A7rB3sz`KQ?qAyda7HOBdaw$v=xJPG#iuSij_^0(TxnX92V1ZJW+2 zY)x6@j!&3GT-hYW8hA>(*Z=LmK4HQ$hqSn%aO zaoJ8*Z@!_}PHfu?>w~r&i+5zc+FjUNWD*095l!9)xT`2-6`KN1YD~xc?|FPSeCgiF z@cUmI3*UQ;u3b`j_0IDje0@ATA)OEONPGU`_b1f>#NC1Vv2hyIq7yksO{bS%i{u*Z zoB8np_GZGg155wBU1bA=?INj#r+kVs%Kb8C6GZbrW%@>oHt<)zIADD!ne6y2Q5rOm zLHb9pPsnq!Ha2^E5qUb|s^ZKi{~O~=b)+4@bztgzwJmmFkXRW|t`l)HuPlpNm0z>^ z1kHRgXLH0l{>%MuCYw^gaFXasog}*Ia5<1R&n7=HIgMDGfSxxe&$31WvYbkV>Uor` zjX`$Mh3dls{22-7N>wNvmQ?OvxO_K{5k@5fZ}iVJC9Vh1 z{t+kXp`A;==7<}r0En4Apu7G^{2$RG0B5320GeQ!{7=t>CGGl8p3>xhY&=ZW?)|fc zLK4Y?jB{j*Zf0olV|gz>BQ?QzUSiFtEb6Gk=5Q&f!QgH%`k_3K`j5o_UY`8ZL<`G1 z$p8Q#07*naRJ>bv^0`)GbyQCpE=%y=vfcUD-G6NgA<$5_F6`((xbhFY*j>5Vb@GDI z#i?#RCw=2b!|Y`e`q%41|6m|Ka*I!Ns_d+=iKV6$e?#V^rzha!de}ro-eBCvaZU2~e(x4ymnYp^@tVHS~tL z>5ujMo-r|Jjf9enrolFHtkJ@24@1#ufM!Xt* zCXjYF{F2`A?MG+BVci!$s~aPtJ!IPA!B%9gVx=+QIO>AJ1r@mYRlC@SGsCxt$8k zt|PFjnsqM3Szjn{I$jGpwC8zhG%;x84$K=^`9PzdN?%xNmh`sDF`t153H8|GNSO>T z+ejQov*17(l#N0uM*z1B$RNuf!Z?KSeL@kVs;4Z5E8}U77k+3SvW&MKlZ|%-*gTdt zFysTqHo&(FQj}AM$Z02AITDJZ{g%XAO*(tS?|%ZgkXV~e~El`i5xFTc>~iQSL@8oHg}kTN2V+V#?>G+A~DfV|d2yb{K>62AJQ z>G08a4BP1}uIV9&FRMmn;BA|-49d6el@%SD;BZasLmaayuVBR4MGBWMyylJ zvqzJAu8u5dT+t~UD|!1W_*v2a%GgRcB4M?M)i-_Po0H*V?;Z{}T-j@j&euy)`_)IZ z`5-=f^tg7Cr_Y9W-}8Tk>t4D)bgwLigNOHp-Fq}aXSd!m5}KtjlPUUVzc?9Xf(vnv zeg-R}0h*q|=@kJX*3Q3#{`G6;UpwT+$h^ZiHy>8VBk=TZm9NVLoCBhrUD5gA!L{)hj!#KIO6OXyd+&VA+nMxlG~upN8>@Fh)^|yVLS7?4S@+G#{wB(B6QCByrhoFm z=%xd|x&gM97wvOpWuTEIjfH`Y+98#A92j{xCpOLgj909h8>B;-&e2X+Hjo0BDc9Y% zsvE3=n&7$&2T&|UHCJU^o?hx2s`QEW&Hgs451YaPA+h3YDp&*XCKKXC)qtmo1CzG_ zO&s=eXO@w@vYE--%MvPjjV5V7eojxsWjkq2P;Bf3{p%OK6&CqzEVVJl^9xZck9Lv= z!ErIHni1@bPU|lA!_O{+pS@+sBz6DUeKRJ|6~S%WRZd%t=~T^n3~Wd0Fox3Dw5YHa>dOam7E$BXmjQEW?|f| z84P~S+`)~zv4?;-Mbf9E|NS!bXwifPfG);l2B`5FlYgZCFKg#tZ~e__=CA!AoBVT! zKUd&2+?k`(fD`F=p?{AZzA2o!;paogo=ZfF%0Uf?x4{;i$!i{1j^6LYvJ~+ap#ynt zK)L6%K&(L*j0&BxhxHRSX^;JwhDKVnA|*q%>(5h`Pdq;_;m193eh)Dkry?{LzR6Wi z5AN8Z&FC^fhbTjV!YPH{BN+4%Ec%rBP(WI!(p|7hh%H`Og7B8zCj1d)G5L>H`?a_Q z@R4>w&kXxB&kC3}RiU`%OAujdtuz7^#j6-Qa} z_+xg|AqqR$2LF2Y6&`IGh$@c`n|QvnXXxnRwOzUcGGhw>O#WdePl4-g#`4Ahvv%N( zk(3=th4YTpJuW2!1-)k6)X<%qH;RhP1o(f}KZ7C)Y)jX>+t+ydJh!P#>p zPYV;~*r>*QvTRPX=pwIG808KpH<~EGI62}U z*w+6*0u13ATZ(3r|GaL*aLs8kq!++X%)QMglw-p$pIr?1XwZB@&;C)Y2%}?T?5UUZ zvWRv;c|NQx6?s^NK&PjS`5yfv6~)ODS<3Tjdjr zJP@U0aYG=Vl%4*Ond-|L-1*oS!`|spoyzYChYs!4i+sJJ86HdoN2=}D@z9 z{l`p`!4|0ruTS^kb)P_!f9?LGOFF*6@g&lMj{Z+fhPl&c!&wRbo0u36b5lzy2aC@5 z9xNPrM<)tY!W=EN-yA0QB1~O59>RFI9LC+7g|*#(O>tP<=iYy>%BldoKtsP*Iww5I z4o>l{syvrcDOmg z6!wVC_!>VF&zDrQMS%)l2dwGPN&5GV^n@F(9t;O|_ZZs!Bi-Rj$%g9HwH=yikBO}E zugt-SG*2^mpD+0H`b_R$Bco!qqOQ0!x0EabX8&ri%A*x!L~s9|LqlD|+(jXCJ%e2* zkS7uI1)<(N0nk{?a1s3Nyqe6j%S$VBlLPACI<%aWH#ChX&aI0Lf}FZMDmpgRWNRPo zEGLa9Z5mAml@IPR;eaNJyEKV(wOfDx8X9UeS39iCU`$2~YZF{!eMgCmuLz+y)tyhM`jcy=qSz27b;%E{o(ATa54 zGG1nJ#T_1tae~H_3X$WV8LPR^dDG)73fqsKv|Dy1RGt^x#k^B^wo6B9LMmu{;*Vo) zhBs(c@=o3Y!Y?EUUXt#eH1OnJ-bTR3QPEID;ZMoIv>XoovTVWw@tZbCI2sfo|U;?3~L6Zjlj244WNf;E@j2KK`sonqUF6|HBd}u)n zh?->x0YaeQ9V_-&l*SuY-td6@V)?hCB6C;#mVW(sx#63eGw6+thAe_*#*M?Z1F;o^ zZG}-kt^_mL~TW+ z?YgTkA@boz&(2F=tS;3mlB0(t4?@SQS(q5r!UXbzI6}_E{?Bz<;cNFz*}_4ub{3$E zzGYM=0)C{^g}^UsV%4j$$6obc`y_<+GMzN|{CB3qOJDd-c<1;3L%4MGxE8Zl!$n69 zg~7po>uX|~`PC;P$~lnQ7W0ff8~j#GfIPA0Pf!I^ewq}*5#9UWrKA6Sk^#VFX!WTg zTEYjW!=eQKjh#Lj#>dCP^wfeREN4ee2&D?Xh z9G);%ca=Pj{`cxMV4qGj@Z?{&PG^uGj0IP9TElk#HTmbszXfdoN%+4_;F-k7=`q-1 z+M=oa_4wVNOCf}NrL!j-)6W0=C2tE|cJE)*F(yofRF3a54D!Q9Ix<(;Q0|ha(sMnA zbBLmS(KyQ8!1}|-#ZPAz!*Bmr7l$jEEp9!S8gYxx2tvn$98FGC%k8qLiESoDL=#H+N+W{%=SbtH5ilnW3}qc`ZW z!B2jUAg8XLh}`cyn0IR8e=bRXHTZU;jx=jJ+D@wRr}I@7su+Ixu8HwU3E&g;d~$Dm zXAMmaxM?d=;=<(kN>}4rv)VwYw3Z-SFnPV*LeN(|2s^nv)yG0y@f4tEt=b!ZM%GU8 zSo=fWr=^KN{H}76sJ~0?NKe?$3nALcy+J39PLC~XGRmNH2a}~Tiu@G&4a_@KY?~mm zc}=X-QMb2>fb4PD4iEI$h#IK%pGcIX0=t! z8|_>{>=N1J`k1bs{XgHB2p1ph4X?a#BHVEAABL-6dMFHaEQUiD?bFMAy7$in*78t4 zX%Ykvnj7ihv!7@w_|vTVv9QuDkU;yj8HmLH-NKC-p?{PUt1i>CVO2u^rp}xSlgJJ5LpOeJ3 zy|Q^o8H+(==|(tH?pG9;d*r%eGh)i{DR2(dU}kL1riN8Ng`beLdw7#)?&4Fql%-ld zXlNF{(WW@jJ${*KGQF*Ah%`9>j&h1Ec*O-z_cae$Df#3kKO2d;75BvV5gJI`)Sjm? zB<@@fBE2YU3k1V>G141Hlh8t+8;|rFq`ms^oECfUd1N|VqlrJyN!zl5fDsPZtHoZL znP!Uo%SebIz^abtL6~))8|ArO#co-revqu}>>JWP=b(=ISgT1!=N|z9Z;lAxH=rT| z-c)4{SiO)HMsQ}pO+4JUHaBtVw6292PnAL1Gg<$f*M#{I;%mG8wF?dKO@>yVZiUW!(uJc|_!K{mcD#!W;)Ptugs3 zZVAztpFJ8B(ZMlD^hO`}7qlSoj81Q?s(d+i=`0;P0olw+ogl~aFl#_hhaj7^intk{ zaj#p1Mp}SZc>!Nj>SAgxZ(7&OfxHekmg;&T8~x~f^T~80#Lm>QW_X*q84rmkc}w0E zd{ZiT1%6{98bADOA}@RKS79k|)xQ*mz@{Qzw>8!u_c=ehQe6B+aw`ek8c}5yuN$72 zJolObT3e(>6uA792Y0vOEnW+GQXl=;i<;Om0qoXk?G>tmMx0>D1sg7sn@M|NcjIhfB2}u&DRs;)yxvi*YX@C{Q1? zz(J6qP3iE|v5Bzf`=1RrJpHXOvN##`?%fsk>>UxW(W;<;j3%@4gVoxNXt6xC_9la~ zU~ZR%qyM{fnIgz5l7nX-)oB29bOluNb|Gjzxf6 zWic3~xgTLr4ijzVFaCV^JFL3_h5Nc; zXA1zD{Oi2GOZ=~=hj?=uu%nz#WrIxJ=4 z9V2FqU?gi+*CM!HbU<~T$v+n&cfqN0)_1`ry=8)71m~m3UE;7l35J~-efe~(pv{`emiSt(nzatm=;KUp z6lv5tKA|CBJP@)q*@4=h!W@09eP_(_fYbd7_mi_fS|ftGui| zmo8HUqtPY=dxpBg$KN?((*NoB*(v(=PiDgRellyqZYWERj+&ygF~l^68c;z1ACr8g zhar{?Dg|!4f#wd39QapoNCYnC4e&VdBb5f9cKkoOwEdeUz3njP6OeRg)#-ea(lYLI zm8a{~i#jpQ76Dk4ipuqRsKieh&o__L;i`BV23kUYuJWQz`FeKMmUWq?nu_%>Wqw-< zl!b3%k||GX+ckqGBj%LsvwA&-jqy|Cx-X7E zH+42#5BO()a5{YWuAy*16NJxvZ9F`#`}_0{&q#kzvLk3Gd$Q|=PL9!$h@l-_qL0%G zz^>z84{v|$OX1Mu$*_BuuC*Q9EnZ_>LhT`d@`k)5-_iNQjKx08nKEYsh>nyAcN;kJ z&%OTvj{XZjARPN&VDdi}=0=(PpAM5+2$-2!)Dw9zI3qu(a6Q9p0Qk8Z=G+bdeswo@ zM|YLOv8qy^`mHu*4oo-|y07+`4ix%BmP=MS_BsCGmezlVXyq^%YYH|4F;~#;*ywHJO!v$ueO8#Y^ zl;Sftm{BU3dCe)eM+;cxZezFPZ$V<%`nb^IF`5Kqkvo>E?q04V?gJSdH(lAU1-m#0 zAjF}4y5e(jU+C93lB+$yTOK6RBUUv)&{tE2TR%|Uy#KBR$gEkboVk|9)J2sJHIwC3 zLSi(FycIQW1A8w&*xfzUv%EY5!F+)7H6}ogZ*+A*CVGQHg>B%OT-SA}m9@z;$Ioas zwW<66J2^<&Y$YO{^??R$1BpXnMkw6l&o6`@Xrmn!)Gf1SdUm84+;jKP_+8`<)Xq74RaaHNEHB&w9IW=3uxW!OgjM#%! zVwI!!QM3WM;v@jiXfb$(-zg$M*cm#kU9`g*9D3M1+?LG3Z|y8ZzG|x0Xw}kRvsS5s z&NgYKiQUYisKu)v%7drNj-OlzpZ@CE@Z#y^aN}it;Ws|IFYJ||F66&>8(Jl9t2Ucz z*b{z_=$?OnHw!yNRkFLT?+@2&Lhv^v-0wZN?$Xix&hUaxgs?e?fXE+e z;rV_&Av~v})|L*rZ`4*AoJd}I<+1S22mdf!dFGig(zhCg{tXRkeVM+8%oYa%Ovcck zVJun;Xs7-IgFl}EhyXWWm;Wy9_}i0z?EY(K2RF8ZH7Vxa|H9~*a8^?P$It5NziGX0 zpa~JN#|sT{@=w0w##dMFp2b>#;D@`1%XK#c3{0-vp2J{vT(og)Aan1(Un>B;n$aP| z(VqMRN|lROJyupE^pBnY1uf)o3PXwF*gsQYU(_I8kH>Y7KldXHBg7LugW-ic{?o8< z@$I2Qn?{WaEdJ%b&D^5DjawO42&83S31c-dSHhXQ%W1b{R#3!meak@j4}UqXQ#4EQ zWMrjLPhnfpDni&8v0BF>w&Ea!(Ez_?$}vSJ_e;89D?9)2pO<*%7x`I*>O7tB7hye2 z;V%4>N6JaA4pFOp3EI*FGr1ZlG8$6!qo_faWFbeC|3>YiCYBH{Pvf zIvUE2)Q$~|Hj1c;KXKQO1ZVY8Gv~5)&`xq+3^k+5J|uy0uJ&pn;ItZrVh7nhYI@$* z=3a>Oib_&|W$@bNt`*p3jyXWh43(Pcrw|wK`v81^X!qFE-|MV1{0W09@=CUY!z2@wTh6C6e)byTR&krUjkyLmX*oj-t` z*P`N_o{M$GK=9D+P6>+Z(Vf}_YnK=_S{*4G28TWmI*IZ`rs!+djv(nOxJ)Blbeh9r1Tr?fO=z47wiFrp*OW0RGDg~d(~6t-vp&&CQMwdIl` zH>b(|DdoAFhAtM`5^A_x=y<3q!h_&$%>^o1TJuZ(|{H0FrWCt^6E^!=pQ_`=R3oEwN8mQsjuRMRxyr?ypDY_*|q$Ei4u(jVoH@Sdz3q zgc)-0pJ4)@r%A>lF3cVe=3H@FfXV-qz9(+`TVdkzyTz!=&%|inURzki{ILK4AOJ~3 zK~$Iwd73iU+HKDfpgn~aGW7$DHzFlf-w0z;8OmG(zzR@{XB@SVfq+N1s9+Ye8L zC!U+NXOM>^(*$~{FXSOq&?1znjxIia!^U`t*9dGJL|lon>6Z#VG#m+wU?S~_a^>TQHGM8@tvJc4|$sZ)pF) zzJnJHO-(%wW=LTX0Np8<@xoDWE&!}w*6^%( zs}k=U)}5c-rGSqa4fdYa4l=vRvB4n=YD!Mg6@!{9s*q~4-w9>cgFz$`X)$zhMp5== zM-_drS&QMkSS#5S6Ijrp)D`Bf7(BE$x{d?)y!EmCP+pSv@LRJ1rB8$oYxn;$4a8mf z?%Y{5=C-^^@i53i*=~O{(&o`9Tk+6!L4dwO5E!2P<3?G^AY&@?go6HQx->Uc z%Bx~&4!@qOmm6rdiE6!QcGQo$TB+`d_RZ1{JSPBVIVX$~;vr4+rgR*X=h~JK4#iBc ziE8fJ1dw)>woYE2*Ug~LiQ8r~WGh6p6$iZwwKwi;=g}}${{>B8_S-$&5I*DX~e^8Z&~7`6GcP5PC_w#u$W zUL5_==fW+|d@Jl-o(lW+>E6HY=J)6*dF;9fq_ir%q&WUcx8!3Jr$rC>LWo-oAm$Ln zanyhJh$jE~26YO6v+^h=|FhZ$A3qyrPLGB$9si%yz5jVVbIAmf*eMxm03UW&9+TU1 zzuYaO#GG?GVcd?M+X2q)ZbnC$uH;h%xt7ysLjQV9;y+J3gO6kXT(4MNLgK$ZEoyMg zTh+Qa`fte6kJI9DR;JOcnQ`f# zdaMx_;XxJQ@zZG(#ltw$Hn|+!ai@6Ail5N1p!|%Us{FY-*1~&l8@7`w|MD}Zj3h`y zjz%0i5T~aB9RzXISJuij`InComY^)1HCp24ip2o5P>W_8DCg!fKKHYH1g?@VSTkIP z5H}Amhg$pzWK-IJ7W5GI`i%!C!@F-8QQO`XF4YSp*Im&co|Q}~yLzMr;JmV@Y>x5B zLRDip=;UM+R%pqKs^YPZ#fGJhSa29KYY`GR%dU*?mb=zEx_fsY=pVR*mjED(`7gSE zWH2F`p_KC*Pm$m^RW%2kr(91AvAn!8H?ufDzc62^bk(qJ*;ob5|Jn+afbveZox-cY zh|P05Z3oA~kmk!P0NyqsEq1`}c_Jt!)gWoHk)$($nC5i^`tmq7leX6atQUIo)NP%@ zl#7PI&2jhNZ4tLUr=^zB=*Wo3^OUEPnCQRz#-VW2CESlxX$ThKT=zdc9~N~UlS7lv zE9m8$x=j4lof$9C)#xuZf7ZCBh$1h<1qkPhSpJbt+is9Crz`oK7p+3uIijFiQtd@z zc~AalW!YZHji5m2-$t-I=fCsmh_rPU6aJl}btkfC$I?p$-O7l^v%`xTy@krXFtb6! zm%FzJYR<(S)EW@&%`=h$e~%>3Pio@VuifVn?MC)z*7+O=!fuDC0@ zyX*L66uGmx<+y-BmGOCa{5&3q#cp*>g#h87JfyTU0yca;#f{%`3l z!6UE*jco;C@(T%7wuHyeq31jHNsBmXSdD6?K}6Z*37Z}q?{Ac?3X zq(V@OCg|oPn@I5yJp=ggo#S?#gbO5(=q`>kx&!9nyGO$@J=e+6qbfzXEc=T-NBo6l z0-*Fuo!z|9+WS;aSp_KkmRmaUsaKW|QeiT>g(f&3>I_=oLlHGMbH$iu?Q7 zFXQecfT>O&Q2|z8g5$xj0aE+ z#<#lJth&kt@!0l#nQgWj{ECQp=y0roHexJz`k^CBM#af3w5HM^)XQLkc+YEjE+qE9 z=hH+2@(#Pz1X&Z}dEaWF7U8UMc;?t8U`mb0`RHQJQ~!CUV<@#Z@X;?AW!w${>PY0nuT6h>!j z!7EVUNS_-kp3O~8Lfx?L;eZKcYO$L~kU>}*EMobCXp=3(Ysy?S18f;!UBMNd!KJNd zOZRQJ3~HrUtDqIY40AnWiRc2Xp1Z|veStwhirV@Y-`dm#f14%*#O>t;qK*t(7oHBE z`_UhSJ1@T+rbhR|@smfjATg>PgLyfUS?OjKme0zsd1H%z7CCOoJyMUWs7FE`*Vg|T zT>#GIf9wR1lXb6p22acVVS_XO^OwW?q9y{Cl|HSId)rU?ef1xVxw7cwQ08LpUiQQ8 z{y8pp$Is2K1BV&qI!Ne?*~q}H|9tG47*yZQ#0`Swo&K2w}0|}l?!%K91Kw{usMbp+d*jjr6|)`xh^IP4L>4z z@=jn8w1SN|5kO-_Vy8d^d{Zw}eEqwNwm5S9h$b-giiO8h^gZAvtmO^@KNfIj_zhTP zF3|{#ZH2FZfIuizHf^9}2&0?-%H1aes8fa6GSn)XL(0YdD|o;gaTj1cGi>kng$sKA z^GDCEYC&n+CVPqbxi>e$8y9sMrrLhnc?56ZZK0GmBHjCfjAaQThb;niWdLK26*}pI ztRJ#`sz$G3ss?0ia({4&mjEcV1feC!KUv>DiiF=(2RT5wq6k&#YD{)FHdd~5Qu$(6 z?;ZZZ2+J{uU^$b z>-$8;RYM=Nc}1;9*TE3cg-r3U9!#h1WuAd2&H=}{;CApf%fEPzDy9S;Sf`bmGk9yA z0+KjN4%ROU4!k2;k(rh7Kd1MgFKSCBYE=XBcXT`S6+IahUu%hBqtG8${e1xCx;1|a zOF!jt#XaXiC%mW?M^&Ap@OGf8aC8v9-5?#3Su+~?1Xq|V0-EZ7Dj1dW zfiNYdjI}zSGT7Sz$HQds^6F0b-g6t_89f8Y7SQM4+zijZElI+N?=tsE6ZZ; zml@V%kVYN`MIXSw*+5nAOE`0FXKgNg{=2^u9(?OZVWNLq!v8TX(ogD=e)T!V0Dgqf zgrsOR^j217!h(V+ZixWqT)2-(_&;(?TmQA~pG*HVzR{K7CK!kHwXi*RB`jUOqI3Te z{+D#_UxKpDLq;qIw*4n()12=_i*mi}?)C_k`c_%oy-~O_3^ z+{Tsdzwi;2Ed`pL9uEKAug_|XOZfsHfl*AF6qe{z_3M5~w{lkn5G``A68;%aStBcN z^K;pgw$}=}Vuo;;%Q($m$&r?2590&mL>a+&VhwD><@8uN5|q_-d2t$s`(8ev=R42p zlGhQHtq0DH*c~K1H@&dDZNon}U|fK|m@`W;2@t)iegOy8zbelf7B3qywiqjA$MDpE zujgds!R5ihk&#gvgTNLb8_i0GDUmT1T~0T?ily(yPiH$RjHN7wz)V@Q@;11?zO%JH zuY+&3uTHSGNszX9+fIxbY%vJR+?)XPTu}{b!RIiT%i(f=+7}(|v(<$s^~UdowAIjN zlQnbh?N%PJu(y?I6I{Gn03LT zW@Vq%4DD0e0WdkCO94|;hVWmgWw6eLFp6wnJtwgGH9?$pC?dNCh8_$4o&v9XZf{pF_}gy4LxN{O>2?IlRiJjn{7_I)ZnEJ8%#=`&fmD%u_4^HUbGzwHR zs;d31{3RODCyt%Tt_|eD2Z^=6ct!dud*$nqd_B1{S{L(AYxkihHxwdb6kS4$J&toye`S%WKO%nmA?)TRor07*j7jq2#(%r? zk8}TN>p%PZ*Ve-R)j3`IcSWoJ^I>UmMe_mi+`n^>m4D2&ID}gfZGtJoIgG;ztSSt4 z6md8VVH}UU0psrGCl9~%-!A^sqy|R-xUjj;@?YuTxjz&BRdyu&bCd+ZpO18T95Ut{ zt8&K=I2Zo8?(r#|`(M1{Ghu&N7sUZkQ^_Zj@0X&2xyvn~vNVuX< ziy2e~$^ts^N)_G;xw5_&{z$tc=ef;ZU=QCuruiTyN`yz(dRqv>g2KiUGGvOltCh;4 z$CEq^LKP(n*D1W&b2Bn0N^n)ezhFw0tO^f7M0l!l*eZ%5556LrWT-%hdIK^Scv$c; z!Fa79?eI!589v&X2X7w_kLvY=Me%M3=9L0FXNZG^thkt!Mc%|%vs@@lDVio&nt7*0 zYs>1;=qx(`G%HAM8)GUnGR@H3VE&a-af2nS2g#vaSAE-?J3H%3m#?-w3)cY=RB%*T zkFKR(2P!!iR#BhYsKTk10RfVk)!Q`VcT@vC)R5*lc!L;WvmF(iYBd51%&6~h1Z zmZ6Z^g`&>**9DrM2K6n6jgS^)r4dkzeqKH-?^_JhHkdaMuD6Y#I)JCY8+5%$Z>(+A zw7r*Y^bL&r=o3&h1sCSGbxZnAICEmS?M*i>?9;?KzfDlJHjfzEREDU{Fg*lkuv{o_ ze^Vj!X0z}w8ye8=b&xxGt}gD{vu)%969AmeZKZGb=zPL9+MV7Qc@&f+2zkX(+wWw# zljA9LOPJ%KOnAZz2s3y)TBddSslN!HdhTmsdTl;T&WwcPI+i;$%+`EEtgz_9DXGTF z2!fQkqN@iITs(dz8k~#>VDTC`!z!>-I`==rxqk`&UVwFRW!R7y%yxga{_E!d#rXxz z2WW?jBx8hQ6uJw_9))@6$En1QpGTd;m0^HIIgI;zcy|ZJ{V?asU|@@eX(VSvEB{0K z2DJLm#s#_EV+9{!-WBnH(?565?UVtw{;%kJ>W)u``TKua zH-XMNXj7e|DlRPNz_{ff?F^q>?T>iPUpgW>m-YFm(#w; zso4vUeP~jAVi&}I_}cdub&;iZNXW+&!LX#vj{-k&s=OIcB}Zthpd=N{qR0YKCA6y^ zMSFCw932+UO!)6(&}QQ;kjluPt+rI+j6U7{8qEz*Sn|cI=e3aZufH~5K(21?hLyGb zaN8-h^#B=v3vV-6*6^c$V^_6zU0XAn>IO_6#&aRDA!q|+#!2}zMK(Hm?AY+hd(Ha}DzPo*sugj;x=t`F(;KT-wpW+t7hA;B5ts|3WxZWw9=?@uG(b#A%FvQ-_MI4IgihyC`Dm;8$Pb?(jxhT5 z%mPVLz%YZ0kRRLmge$?~jw%cPt!)2yUZkkH);w*I&aTm=jy~s8=e>cKfp+R)qZBkt zV=5YrP{dBMA;dNCY=!W5nXEFet?_S@hCKgkm4Uo-X^OfDu+x|8ZU%SJuH}wRBaHw& zdBym8O-GE@)Xun~?KpRa%c4fCT`9M14p&PzdJ?Kyyr~tYu3Lqqx*!#g)B+L4ziMOb z=qmxLO|j`K+|*(VzT{Z=wqR&6=ztpKd0oE9<*u~Pvs3-HeYpspX03Bx!edvN(VdbG z2DR_jw!2;e@jgOGy#FZ5QwfwZU~ENC<`G>md_oHg)4Eg`Ph^Ch*MAVc@Y8=APR+li zK5IXmK7BNd>Wuz?grYe0Ai9(oj-wF031P%#35MrF1U=>ktos?X>~dgvd_qtC`K5nM zE+AAv7zg~9mc#m`D`B1||Ck6^)wzE^)gpB8%s+)Vpxn)M2QZqFrR?W0uH#>jE^{Mz z{OnTz+9zbjVU5v-G+yJmKgMhP!MA;F>DlIXC(=(Arnsjh6s|+ft+-rz*Ocd)dty z<9Y?OJCmXw*L$CzeVB{#ql$M*sNO1#92tf;Mq$Qdr+B|Vb94mPSWj6bDs*p+&czK3 zPaT_?yq${xQ4}-(JQ?Qke)u8bH&rzUC(u$DfRrbQ8jsaXwR~?Y9o$~=x z*T|Y6h^zmkNS%Q?&V0+1wLr!&bx7j9^+AH9gQX8xTHg)tEL7(3S9MYEXs9vXsX(|-cZ&BK}`r~;@w5W z9+a10Bm_vPSku-}Is#e)o*diIq~nFTxMX(C1`-gHDfrQpC#5i1@PkH2==wnj#n%qP z8VDLX#oZUnYWKhK;}zZeqHVZZ>Sb3zehFZ$vhRJ`!Mt&LW1`~NCF7d1xv!N@+R(&s zw3F-_n~|V@^5}pB`+i$#{iTmih5z+`I350*FCPmZI5`qFmoJ3RKmPxOyWjp<7#-LN zCr+IRlT%aTAO{}61yVkGA?eW=b#tLlk|TW*ex@)a3ymgzw)LMU|1=4JnWbO)FNFWq zRXg{;aOt8p0ch+0(t6ldS*Dzm4yZu))qfcqmZ^da05j$8;B&KkyB$A16mI_I?&hf< zx@)pUFSP~9X!iW(khc8~YOrSPP@p~4Q*Qj<;nsgm+VR|>Or0ymuCL)i2| z5Ev~yxswHuBS#h)rSj+H9s_0|;mc>W1K`oS$2EDP3r%ku4l`3jMkg?FS}EnY0%X_| z@v3jhghrjWC$E(!Y?x=o-dFn>G}ROS@k7P3t<20Su7%I+2AAQofL;8+?`8`AEv#;b zfBQEJ+Hn+9JgP~&>52Yu@hVe6k$yv!H7sT~J~oS?xBg{1nqeQ<+wU6~oSqpydX8fN zBt|vKbW-D=jPDPXHub$f65D1fDO*+F=H}+s)|RTpUc7h>e60xnRI0;PMWdG@qO-87 z+CtRpdeiwao$(pf@witnY=_%V42FyId*Q;BUA+m~7bbOM>Y{pqHNg!IfKWAExAg35 z3N$tc;)9%NyW$Eq4WK$y`5IkRD;f3`CTlYen%2*bj4tyO9ci?ttGNcWHo|!PhkzD??I<(KJ|nJ;PjL+2jJI^`2NPFZRLTUG1KPNb9$TmqK;u~O0e<#F5@D! zW2uJ8OGymn{X)aB3JCRCzYap7p^q3)Ur#)zXNSTaqU(;60}>)a`0i6HqEEZibguq0 z4~^*}4rB zt3&|`!o&eH9t`f_QP*z)k{Wkg#4s~HYJV7$2cMFRmM?fEu$mgU2n#Ke|HJ;^=;YA!8P2faL4@49MKHRqZwl_9+cDMI+F_K0vjmt>hJSl8b6$`scAu)BJ z_N?~R2uQJ(GPE-Ht9P?%tk#mj1>1TSb&i}{qfZ~>HrYO1lEN*Z1L28RH^XypZEFCy zYZCypzeT&GX7^l%i$ZXacP`=9T5S_TCGRw!<4rvGXzyx{jbbg$BS*$ zNEL9A48o7=>8DRWI1zs3qa0s~ii@E()Kg!W+fxHg-ozY;!Tn?=Ig$i=4=6qE@JRV- zWI1gP6me1di|790=-mLC3IB({UYn$F>P&A^2diLPuu%6pEx+~Z?P2hNq#PDra2p@W z#Q~3ADn?zb%5|Zjvlo2G^R7FJx=2h1K|PCdnsajpC@lzW70t45i*`V zss7=?v%}#j9WXwx)uBO6PSOS0#IV{S!h**O6N7VhnlX?Ex6=*?4rZ@%G@su6^nfvy zDepRDk?0N-?Y0R}Sy-!svg1cP|LdQg)+&13di|T9pAMUvbos%vTFq9REMu998Q?a{ zgX;7Dg;!y4fA6E*gIxf-hA(EysQMqCA6(ZY1SNwl`&)|ql(zVDwcfqAjfAtO2EvbZ zAI-K_pFechSh)A}p!HARd}1kF_>5#<_oShJwe+^t!~^1#S1gdMV87=KqCx z9Rtv6CofyLVrd5}DfHrk?)5>&1B#d(K2c#Lxf=l-#{C@$Fu9w&D6 znQ3SLwerv8n;}3L)~f%mUHlh?f6W6FLVRV(%42_NB3J+bAOJ~3K~%2j9+%TgoCyC+ z8gTCa+1ox57Vi4_&^I=#sNkm@rQ%CQ$`uVZF#Fi1x*Vr=z`~?}D$f?)erx@B1SC!7 zWQ{WkSQKZK@E>uoBgX2C?adbyeT)8y4PksiTmIR}L~WVUPL(@u9o9~!fwa=CumY@_ zhE&;Si+&`RbW$F%DgAE6ZDSSp`kI_sz|ZrbxES{SBJ5u!fJhL z{E2apACy-M3_-1^oak2IBMhO+G2qs(_eJ}MhQ}txPcZ>NlHe$yFryqqPB*r?IRQ{R zf4$V@eF1K}>)V@~`&*k!{UhTuG#0&7UJYB)GolQ{$i2Ukhbg~=CR+HV6E~Zg4L+32fZ#?`c|GnVZ7r|_5U;9D z!5y#$EePT!kf#pE1u=UGKn20t4-MvyP7Q{$+7hBe;kFv z(ipHtY!xSHwyvn+)VWE>n)0As?Cm0~D%5R6Rwo`4GBQ5|s{!r2`^)byYcL+dBX^91 zBf9+ci0**lg@%0&=Smq*F{-lfd3%iq^rhw-Yg8$W{E!2@*xKcKS-oU{ctlUmPUz`B z?jm?lTc-z<@7odt)>z$N-V1l08nm5*=jU{Zo~8m`(2F#ebTs7S4~&P;eP}qmd1X8N z^l!cu9{tuIhlxu%_pe3dQ>TuGv9VFntPw;K5^OvpyQiZf1R-RpAX6a8ZA+t!MVj!F zom=rHCgSS;ItmkKk|5d@8TF^`9i}YKOxPpOU&I30`w{ zRhRxbZsIPhJiYLN2?I8KKYQZ7aP@(&s1V$)a#AfWxWF$F(u9BTyYjSTLAwETs>bN{h9eP^v&)=tu>8prl7Q=IDLd=;|+|*XSECfgL7^0zk2%{P>4`uYYrWV|#ObacFFErekSA zh#Dyq=oTX<>$5CF!ys9m{SSit_O9a ztrft7L3`>_)u5Izcfz|I1-vLLZy&w0bpP1ks-wvoFYB}%K)P@J=U$Z!^~NjOrC}4; z35N5xkH4@UE@@`_mpJFf#9CSxROMMKaOzO{IIX7qH{iU!Z8C-m%?wu+97Y)g<66`kfQOvw{eMBc#A79)$2R}*1dsB#RT zZM71Lu?ONg;E*F%UWh009DZD(8yOx5-+6LX7j*U6Hv0=#cf-$K*|3)Zm>i%^(5HYF zvT{Y)jKToE)yyW}Y45E(;FZxue)Ck?=d^wQk#l3VNPx)j!8^yoMU4qg>8wAy>Yq>_ z^vcC;O;T%DfEEf)Yr^0&+Nt)bhsMLd|MpUN?&YiDw}1SHVeEycb?$#RoVrEl{wK8s znV*uc%zhE!?%1YQm_~+LD z#d*D8u^~ZO;Zk~`fsYc8Q;J2VYI6cF{DH$QcXzj#x=Q#m-aL$(i7z)pk0nvanBN#u zog3E5|De(aep_D`;k%jvh^zk+{1r%5)VA*<#5=w`P3{JIl>5O0U;Te=bSAv{;8%3+ z{{h{fI4J%Q${`6Am9@utgQ7e#{LTo4Ebf#jJcvoE2qzEA+Zczpr_tt!4#v#@Dz;nV zL>f#*dJ_7SdTPL(TJay%M3${`t8CBdX-zKHWQE(AWR!auQ#rJLm^6zJCgw=LQ{k)q z(Cy|pK>!@dkzAR831#6OxA{kW25ff6>@Fo8@Wi%~PqL3JtepFx5 zkWRLUxUx_{o3DvqJt=+rEt;fLu$i#|L$Rny6cz)G)!>uDKN-#LKV|ng#&qA-ba3#M zmBm-$MIN7rNlC5*S0g#luWK_0Czt@>Jd0L7jRBq+1gVuAIp27SMBh{gIpF07AIuar z^!?4Hh4sy?)#W}l!UqOS21NCWf3mi$uJxdnJp*rPkY{pVqWbB#w!)?P_-<xe8n#}d#sdC zI~Jx+U}`+xwV*{yZP8WxzZzG3nUsb1hP&Ye?ZLuDeiZ#wDPLG+=1uUgYc=q%wDPAB zPx#>ro8iT`H^Lj2x5KKA0^BX3>e)B9!`r%_U{UA(-?+4;RsV_b+dqFK+;?Uq{EuHb z8t&eCGVDD5L>S#z3&&??!t{}8l`8~FRN6yG$3wprHT5~rN)N;oR#JrlJFOqUiRh6e z{M(a%GP6~J&XIla>#JdJel9FumhjK{e-XN+`z$yWKxjT_@lVDog+I#mXp6sPH@8Eo zn_bVtx!K{Wl9oK7hwMZ?<#-=wu=(QZe@yzmgncgj+tnloNoDmP9jS)Ta3p+a&{C$y z?dS?>y9O2{yuS4CKM(64_@oHXWQsgvTgkX0jxFl8ofIhha*nzg-KSYRW;vl!IB!p} z5-;UHdL?-B73Fy^Rf>H_suEWoyp}8Ra#sEw zyYx@cV)v5TftTJ~w__ApbC#p3Z_cwz`ID>#yq6;{UlyUD;$H#Q)KDue2LtJdgPzP7 z9G#jO9y_5MLQN@iyg{+%22`z~i{an1za1B+_iTz=C!BKXAEB(=E-zhN+um4TE*g#2 z@il~`(V?O8X0jo04bM0uSF`D=0bSeaxwp5%H=bOx%btMvu(ldrTH3Q)=V>r+s@fdz z1}yirPA56U)&H0``PP5DE#IU^cxJODbX!T2n+d&%Cy&OO9h(1zZ%}L4e>M2UONk$}{$1)xtl+E5cdGh^Er=G5SbSWL)`g zTnM@=ebDgkt6tF@dHC+r-^&;eBMps9OfRYL4i`1XzjiP&NQreWhB^!$wnI<1uz7u8 zm`?SNLi=90>&$R?;H>Tav^Iic0GD)G?CTQxc#5o+0-xiw6>7jzJ5vk3uA65LdIt&` zaugk+5$P!;=>Tc%WY?##gNTuZ=?f;c|N8-L!Dm(eR!ze2v>txW-};fdPbG2_{96b} zpE0iUzfAP}(cdje(BBL%zrC%u!Z*X*^0vj#rD~i@X9|d;0W*^Ww$l1<{&q3^i+}l2 zxZ_*@E}UF`Gt3+r3$rJVY9(72*I6g$^pK8Ji&6!OMZ^n=h#;Y^3bWk6!$p5n>D>RQ z&i!k(+T59F-;@}9RpB*#1ALi~k0cA+{JJ0G`v^(+t3#&i!i+Kkg1j%77;bR*APR&iCIOsQbd+XM{_wA_hX3== zFH4Z!)T9aS`?{-QSG#C5k*0FHD~9t}1bZuX6^@Ax6vr2G0o?_Do1CJ8NW}>OjjfbW z7yc>H28-~Ysb<1|2HLhUrb@vu!1NZCr8L1)y}0%N7d|>^e8N5@`w`W1%3>$V=n@{v zwEo*xgh@luIA(4!ZI-T5Y{JvGKQJ+Q^wvk&1po-CA__9I6Y>=7y{V!!@!q8UFsZik zst8=CxbgKZUVUqIcS}>*-mr8)1p=d01h7lBSe7Gj>DPo$AxNkSUn92cSoj_^FynWZ zF6=pXVo0w6RO-N(%$)tR22sv52Jck`ubffkg%TR`*iChpI^yvB^lkrzT?3N1;vO@G z28~V(meOa@_IR=K?f*FI&dKmW4g5ZOE)KqT)p^Zo%m3{shrzL`6ct-A1ItK8u2gbsxj-kDyGyP2ZEU%C0_?gaCtAFZO zxu7rOobaE0d&LCRRZUXQKJ};J+D;-t76@F;hWwhGy`{N2rA(Q$(&_=4cC(;s%+W>^kdyo{U?(7uF!p8R7x zV7o#j!Lxmzm4EbHc|7Q4`hX)ognuRhesb%F!{vMbldwN=T(BO}IV1pgq5+V?hpYgz z<42ER@s|NkbQAr_DMH9D1pa=!c@+f8pbiRuRNmI+V>KHy36xC$geSO_TP22LEV#nA zF+ELrQAcMkFKycqiRJa3a9U$1>e0BqNo{$b)_o_-+FA4Di)(f{Bq>T9w;eX|C8X#= zK_>2gW(_P>{n|>utSBqkf=TpSDC1d7ppVaN448Ns19tXnylXS4SN5g~`nPzn72yGC`^1N1DtQ0cw)<6-RO|Dd>xkN;R@VS@aN)D}HFzVI0 z4eKqy;S=|s2rqww(B6=`9ut{Ibc332P5?B|SjtuLU734xb$@4*cJhW&JF2v2XGir7 z#xqeVb=;Q9;tt!&T2WSWvRdhlGfhIjT0-6mrk2%Gjhl^HA=-4yS_tn{+Qd*7+!{pT z_cT<5|LDRQ+;~PU5)nHqnd86u67eR^4yeO$EU{Zz=Sd$i5?<0~zIkOw7eKKRpoUB% z1TeyP6X>B(47T`b-Cg)Mrbpi6R7?0LDC&9>{;PykI@OFnk>bvNt!#D{va9y-9LKQs0lQ-8eGCuMG`nP+s$fm zJE~}N)$gyY>lmP#-QRd@THAtm!oUB{l2Gl3t4llKPrtJqo_q<>(YhVYQUqNBxEcPB zKffCKU-@?Ug(v?w+`4%o%-(V=jB_@h{p=1)VKE`V3r!NNY=ls8vj9aP+zE#!q9(Q7 zpBw)t^l|Q=bJr&QN%+^f|IMp9_ka0fn9~t})zyu#C1*In=Yl`{%DIC%#UfKh;Z8S- z?lAabMiHj$S9UA==iz`wK^GA**EXc*71;LAV+Qou2BUF;ZUeGQ|MoTc!W9Rs{>xaL z`v-;7h3<6Z?wC=eUu>~SgQsWCh6@k=XJPN?Ik7j22lzK?+u}-j9)kkZQEbuoT=ory zfcB9lOPtxNLKllQi4g9cuonoFFa&&7@j1uO4hiamz3L$S=#e4aUN6C4V^~)B7Z!HI zmsN&8{lUp_Wqv1of zbaCQ{#+fsk9AUDAr$~7O4Hb{-RAcvYSMA!!);t6dWJNK+PUv#ZVK%s=Cy*-5{0FqB zqknjGeCp1V$rH>zivt?}niE!q{k>X z#B7Ag4R~m&8K#1#t@f=F?3$SJ&Jeo2pmelB&KhUD(?X#26 zJH1QcpS**u(CYcsJL0^NXb)pvp4tmp4ee#C+V$GnH18F-#4@VxIPQF+)D|cm^|jDd zp{xc`r@Bj8OVn4_R_bw7y^PxGhbIPI|J0RjP2L`z8Va}Q;x~j*;yykzpf+eQ%rC9m z)^Bg05?R%naP_NEquuG(pxsu|;2(jAMjAJD3#v~4QjM;cX|BfH#MVZ^a~fT5g1NSL zYL98V_q5Xc#YZQ@Sxvy8W|*88|B!cS{|nM$CtMp}yRORXZB0O5S=bA2>D>Px=orBF z_4FX|{{2tZf;J=QV%mLMB(Tn3c6Q{?pMN?0+;@II+;Q>waB_AcOwUZ(1%b2$)+VR~ zdEQ&OA^-JNO0|p>Je0Y+Apuf0iD*)SKimJuv^&nv{Uaf+u7&L@m%`Fzt^8k+@V~gG zbN}i~6%2*O$0!cId4J$hB{2D9(aY@az+rZH8Eg7Ey!+?yxRn*_EYuOnvX-17Wi02^ z?SnyvQ1=%ojlBNA&K!1VkPkfD=jZ+%FYytiC>t`no6|;|gnfHxEWGx?uZGRj4@(>x zvGGEL;g?V)Wdn+mo2-sM_sRPv8~Xqk2O&j1TiGD6GRf#wx+2|-CnI9CVXZr=euVYHidE*ay%ztJmTpzdp9~8P z=>f-zKVI%_lPDFhXtIGPWokeC`QOclU;ga09WUu;2f$>%@qSmkeEP*BCVt{2i7_Zy zXS*GkEli5Ia3>?JDU*>M5Ae*D;iyxV9HyRL;1@uVu6n@c9^>vG7#bQGzx9-yAOztb zqWQ4+t>%F4g^Atx^{T-c;GR_$OE{v8K_jK6|qcKf6T+4tWz z8jfhoC-5wwAgKTC&o;t}CTQ4}YqPNyhzvtegm6FY+p;*fDpf zXQW#h>kgZ^k|(-LWc6@$pZ;nh+rgI)u)0iM&x0e@^+L77k9zUtdDjtDc}4X|YPq>z z4|V9x>uE>ym*|0~hO=lt0KiqPg_wn)9@{Os$cdzK&UjQZDCfN|YPIaG%R6ChV@KO) zHJp&Y!4GgSi54d+%e$O-_c(05OD3f$p59PN`kkKK+yZt6>l<5r;S=|3m)`L~%LC5Z zbKIRH0gaT)BJ|;y^S-=RIGYGo-&3@~3bUe1^S=MwMtDIN18?f~{9y?M+uHHr;|#-- z@^^QADLnF{-wzMI@%=D0u&zu0j)i`fvKdQA#ZnPheB(-D>VJq(2ooAXR!r3qDZNA5 z`p?S0E)=vQ0E5C$;Y9dfU(@Qv)v$J1TbSAUzqF!r|GQz^3SlhW7!m&A9I-eDUC&~c zZ&bD1JiOy@-NWGTwZL(^pX=`Kb%Y(4x?aP!{tvOTt&hEX5jSg3f>fSs8A`_k;{*VL ze_8kkuj9_?N^G#`UHG5ZYX7qj{d!ow?NecYNcSidAq`Bnh$+vV=p+7_SG7NBCLYGf z9$$q9jkZMlj`C|y>F^7T*Ow_19o1?xZ4Spv#xZHJsw6h=79y=M{)1% zW8oJyDaLV=r{7rDcxgyxo%~qa4xiN1b!_cN-8wrI&Ky^n$&?HK;CfEGR_2%Y!?Ny& zxTuS-Up~L3@=t1M1DTW*^?Y7>Axyq;;vg=r*t3ifE;z4a`NTjLb;OrDl+DhxvU@#y zQCVX?)B`hjKn#pD)rTiv?mRQ5m49BC3VLa3D17!q)8VPt)^rERmUaaw{etmH05Fl; z`*DV^AR$JjUz`1n&IU_;HJ%orMwY=>oSK>pS5v48fL#>X-#;`mI(uBM6bd%LkfBTj zpvdU=g}ONbP&=C`0A3E!sgCG;yE~i9t9v_J>wQC`WBc5`(t)DvgREQS-2$bTw|_ZH z<&6)67aA}W4V4L>Sd}`P5Xc%CtB3k|_KmIZj4t?j=mR6R-DgZ&sA{PO?M5x|>(;Fk z!9Qc0jXBDRL-==r%(wlUUA(t~r3{KV)Lf=na9{ba;Mx!C+IscK9pmA@{On}Pzvz3M zOO{k~S7fzrh{9wl%d4V8zym1dxx9%t+RUl2&?qw4hj8n(9AyG)q~-i*1a~9&9ZtD# zgV}YMNPYG)R|lk~GwG=+Dm9_nb9_IQhxRyAg6<&OI|vdR9Yu{8QGN=Lc7I>9k(2|T zUZW|YeIO4F-un+Z@?_SM&VVEM^MDeQk6cQ3o8Ezc?V`jFnja^SLKT~n*w@I5Nl#z& zleKk~a60Oy0ZV`-YjyBCo;?-(t7A;IoLMyiN{$@&+7DmB##>0u3K?#ce z8og$Tpb@any%gLSul#MXaxw`JC#w;{_HB~q)RF%1k$XnN<7}svpv2?@$}V8H%t!v- z3deNr|Irt}8D`cO!m-oSI;t>Yf?$NU5DKKy@{hauDBzl&GvxGo7W&X4mOz3zV&P%m0mKJM6ROU9Bb&-V~Bb%B; z8j>K70MC37msn2dDAA;jGjgHmoL1@AHL3K)N2kJ@x?_U&<{q^#t7{TOb?jwZTOB_2 zz$D2J&+8?MV^jU%$-545u}r_J`k`4^L{#zsL;x;`^vFVMz21X+{F!HwyBMwgr$0|Gv_1 z?sbL#$R(d}a2l_LPWn*fqwUTW4{)M+ux3N~j-4H;WbvEY6}+Pvk^%9ACt#N}vGTTd z0`V$ESs7}}__EJIyTKB7s?w2)ShfyAAA-x?;NZaUIF|rw8>=R>t>;l=8h|PjQE{_A zHjNUjKbDa6oA%?aF&P4rW`!>O{s(>$Y9FMg_Ii{u<$oDiOe>(16Z9 zzwp*ZxU{fi6A!aGGd(Y1%?I!M>W})gJ&iIj@Y?snCx7}U;nc!;JzFRt@5q!^a0Q@p z5Q~D+XMK&}l_(QJEdGpR1}M8T(mFIb8i@2sA!hY|O2WS`6|{~K;eT6_-iic%t^6;} z&1oKBJ}j?nO8ASYKnDvL$@sEO7OPRgkGpyFg@+8a+;V@+wP3)Bdo4ewi9D8k954Qp zPXEtmi#)2lZ24!016%%C`L~<@g%cs3Nq`)`o8?@@iJL3p^ofI?oqQl%x$n#3>n+L} z3A_#z2O`NvSrBjJ>3DXvK%vbb=FVz8;Bitym+onGcxZ56&xQ_ZwSG4&tn7y`eQH|A zg|uTxLiw+L{)i^8`b_xeJ|kA@FU{@PrIMe1Xk3>`j@dJpx1S!?PRBjFg&snfltLii zQ+|(V5&?c)(in-|lJMn+65{VYJFJWTcEUgWWK~a7?%Jh(>zcUy{CNJqQL**K?zJ0bX zU`Q%X7-SCa(Lk^2lZm7SWpP)*#X3t~_@bX&RM+HS5g7Ff0RUz)RB3Z%jZT~dIHL;^ zPwS3^$DdgVpMH2c9Mf)8_^;(pTmAPSt{di}@VIMtx^b`toW$L_VxNMF`rz=)z`*3p z?(T{nFtz3hM(`1Bdzq&I??rWU0-$!TQJ(UTBIsY=(){^_z3uIdKCObZtE|qo8>lDn zYB-w|X-#P8W_e8jOvhru)-zrNu(nN&t5xtaEjAk({qSlMMLG1lZtqs;w=^n|napm3 z7*7a=BFDD46+rY$IuunZ3T;Y z>-K(n1$I^T4K2DdSsYuh*n%MZ6UOv+rBUg$Cbq(()?u78u6sxm9E=&Ut+wf4V-OG; zpcjoad~-XDV>g+E4(;rtFBu>2(~9U`Sd;L@O6I5}Ac7K~=VX-96gHdj$ptrJY^Hz* zpK(>FSP5Oy!2d74vl!1{vop}g1k!=toqIVv_QW5AyDvQ#CI+{|$&)9vJAX_Q2-O9E zdT0U^l__}@y^tls01PLXjS}3!GtQ-dy73?3pF04GbN}inwfB4b@>QMtzoZ-grO&V1 zsIms!E;DEHpMPz`7RHZG4~1X(%w+hBe_Re{P7a0t>KBh_)p$=k zOE@ZwvWT6vC>5|8Wd2__&{ zRrWcC!fpL8y}c<)w0mG-TVt}m@a>;2h5OEq*(G)_zP>IVYUhlY+NTARZ~tgXRbo%O z45qC9Oz3&bFMVo869p^U)uh;LEF0?+WsNQUF7QKBq!l-DvJn1NR~0`_1_PJf5}l%Z z4Y$nupb@51SbMBMnMhTkC`>hDS=X@{<_11=k9J*X^6AAlw{#DTCLQB&v?`33v&I+| zLx20|TOQ4YIiHc~p6TIuhs9yrpkQdPlS|NOrW8S1J9VBMxO!D ziKRdYYRX@0>1~wQJU1#7XAxiL#$M4(+46F5JtUbdyQ%7PpqF`NLRva>r z7QG#pSJxJUwGD=h!LSFdUJJ0NwrxX_!xJyA>p8W(aG#EeaRD3^!k&SPDB6y@Sperj zeYoCN0*3W*9W0BrK{U|VaUQi$Xeh@Bu0v|nS0((cYe0URUS!}_ZuQs)V=pxf4M@)t zC}RV_eoZbZ0j&6Z55k<>UgXT zRj>-b;5K$#Dz34ir4u8d6s!HyTKVT2*De6g{o{#5yr!3#CG;=r$-f1y{x2@9gmpdh z#=SWxCs&Y>Y;%pMoqGw?d^}3`OW>x}a>K*Jdsq*H9lx?ae8COc5cUzQ*jmkaYk;%= z3TPAi)GP|5^3RYf4rh6^ajFh z$KzJ~S*;eI(0TkjZ;1l^z1qspFyk)Sf9aFc8sg|q3wASV0_z!_zh`&RBO2>0=mNjL zd16JEi*g)b*Cr2+X+i4DvBB`oA111(8%<)BEAqv}1!^9n&Lm!iU`!&6J^T24n;@1*!so&1IERRCcaoSIaJ@ z59kc{@bL#ug_pk#91{S@!Tn-c)_^OrK^*VoKnz8py#X6Qz_9&O$K zTDz9$%(q1|Q{3q!K+ZqIpU8|W@1%hhn&{}lKXy7gZ&AoTItm+XXQ{@`ikb`zSm-F3 zT$<7|TVH%++;(@qt>>3GCwD=YZlQ{c{|IY64;oFi95MzNZV?inUyL20A+R4fA_bj2 z%-0J3_DuyH#*_BL*9$>9dtJ_m>#*>)LaUdzdTFlZUhub;XSZ&x5Z!GYJqX`v(aPI^ zT4Z#Jw-&C$c7xV-=%t)<<2WnNXLXs@-Dl#!{-_4rr;iRvFwlyf{L{i%=j4}&Dp~8` z?XVWo=Cu|s<-ctUMLq2rpNH{5Bi!=Caoh}O)*6+ZQTy@Bz z90g{lqwGHYvp)-uKL7P_Y<(^qIXV`O9iNs!JE#{QR4$Ab5ijA$E=nWSva&7Ng?`iN z$6yFwf+@^HN~{V0TKyl_bAkx}z_S#-p~1D@&>^d z9rWlZ*WC=MxH+7WlG%Ynm2o&6evZ@K+>W0sj|1AsQ?{}r@Y}}(fZQ!S0NO%t+y0dv zbS45=km2TjyitzN<3#s(b3Z0Pm^fI_Jql0X`Gv4>=CN?@&RKimP`-WQ!HMwJg>Bna!NsE%M~1ssMo2FT zc0!tGBj#=u?A;p}7@j%uz%Az^GNL8Zse0(x`FatZ&|IJD<^(|Fd?E9#tmI&qUw?Ip zdys5vR_;+UTV<15F9zL?s}x1c)}lR0h-{FMLQ|2M&0r;AU8@Tl*#rO=wv4F(){AqN z4r)YgRo|yJ{Cm?CK6;Cg3;(grK+q;#Y8(aVode~>rU3{TrGJ1-ksUm%wWR_T`w~r2 zC@foQ|L6bwm~C@AqD%i4)X805+6x!w^u&!i!YJ%((!t`39bRm&9CJmF6Catq$SMfZ zqyV$lBDj;M|0-C!GaaZSjEd53itaEgX`W%-BB~L-s8==oYB?PyEw$py-45_L_w3f( zE+e{)uf_1B`Q6}o%SEhZ!0H5c7_1semo`?_XgXfGuxSFz1GkUpEqGSWbRnEPSe0b- z)UBc&^uZ|cfzNh{F89o{99Uq?GLjjW<=MB^-+}z z!4-%8ZC`~M`Jp^XN1^#=4oa{W0y;>9exCfB)J1P2dh(C{0m*VpqVSSdhIQ_L{>qiG zq=|r4o%`QL%9Uac02ZV35k=1O6uVq2eh%YsRb&}t#Nlu_0b7Q1H*`3k+c85Af$YgY z0k8wWZv0n%fXfC1T3#oaHUYrOzXB1Cm47BQP>wg+4%*$Fa3=f<`=tjS4Zrwb|MT#J z%V)w@zHl_mYK(EGCiOnA1qT)$P`vhW?pAH-e{4FO&?>wO-=CELkD~m|=_uloo`t(h za6f)wJv^r^`(Kpse?}7q>?WAkiv5KvJK;ZkZ!x^Cc4I^nInTbj5uVdc@{Bd#d}l+e z{o4}u2g9FgXMt@f67D0DaTf&fu)|1H!*(sPKcZf>CD%4rct>QVF*v zb@}2&T~fn#&i~@`GvVKJRO{8djz?rzwkPd-g7#-O=h_qSNl$8olT%O;m%vG8Cwq)vHY z1)>$6+(-kvzY(U@CVlK4-M*~>^`y3hpVhYC zAxSSQD_TX9AnJ3Rpl1MzJvR9r(R(oPryYnZ~WojN8yc#J9zX>F=#k|IyRC&Cf0@)2vI^KFk zz|Q^8aPD7bW}A={cO?9;>HIcZ{&ntuaeg5zEv?(ua!W7q=%cHIV;+l)h4L5+2N^tU z89s-_%m;a8cR88z@aVvx&?&L#@PKgu3)WHiCu#K5qE+=mo866gPB_rtyYSE1{WQN( z#GTV1?}#5fSfubL47&#AK5$3)a0Gj8kmr2(ZVsmSEXU9$>aleQUc zMb)WPZ(L(E2|jNm8jxV&4(q4W?f7TMgD4Tn|_My@*n5d#%9T znW{}qtN6UEx!xHKy$R*~HQKFE)J|KwvE?0gZ!ks*dWoyuG_?coO>8@1x`9niMu8&c zt0pTMb~6x8voMT|;;J8a0Yq-{jMpdc8xI%scJ{Y^x}pVHofl?F(-bi8LTb9q*p^oP zTdkleW#3aL%J%Pt)g4>09FlzyUe?~b^pWP{hjc^SN}=p{x`y`&izkooBn_VrU4<2+50fs)YYb7s5Q3{%I$` zx>j{*KZu(TOiTcv5>_*NI&kAdxm&bV!`Je+G$r6NZpT{-Cw|aGHDLn4gnt3D!pedP z|I|KaEfD@$G~lEIa~`bxv;Cj6<+y9n;{L?PZUH6$=9EA8{MK)VJ3sajv34X(iubQ+ z0*Ohb+fL{L=p#enXD_dXHP!FOwB>tB_Yi&U`>VFieoZU-Prb6Cr{Q+Ag^`^ZGuZg%50|vMzNhWtTgoowa!O;o%UCP+vZJ7Dh?xZ`(!-CfC@cTjdhd$z znwLe&bE*;o0gJ=B9zz-m%3fLsfxk*9BP#!zktWdhrn)%+&|1EE`J{Z)cJFSj zFD~`%NEFlJhoi{LxAkG}A)SDoD(XxbUo|dOJ~hIu=$7Nj!&;k`Qeq{VVx9s};W2W# z5SO!{@a7HxZh0mCtW7q53s6-fX=tvo5}lFy3LU)^{K1+F|B*{-94+DMxWq*GwxmJY zm-U|QuYGJh{MqAc));=|cAc5i*ySfLZ-zH6?}T5G-yOOsH&+Z^czVSZ_Md6X+#me? zd{|JYYAXcFR6lF$Ti>jSSKKz3!e2z#AVR&RWwR9^3X(A6AOkS$T%Z%PF_=f%Ku^V` z0YrOVl+Qx-K=>z_RX7Xe?HL-?w|00?ji+2P+oK8S>cLO@;omPIs`-AfO}Hj}XpsGQ zQ5711bVaglXBBo@gFS>mi%+e-&9=}M&~|AsC&tBVz^Y4mYBJPz^o2z|0mo%suE2e# zUXOW6cLTh1UfV(|&6k55p56+>8o<;Q{z<+iT6#4rdYG2lgn64zM0>Q~g|wqwlbOku ztKvWX1TvQij&#m~WlO(drEOPug7Uc=IGF^fR-RDBSFSkKfQAPU_;&1xKMaq)@QpCN zxfEuOjp^+FOguxah$~zFiCN_fLCh#}gv5zEcKw)+xk8KHIMh4DTJ@jG&iw<3RLtY< z3)=2~MQ8qX@!#^oQdm`=tHo%e(b6ky2)>@$A_}>=f9@vdLb-c0xFUcIF{Rad*&i5c z4vPWI)gTOGwu}Fa4?yTs5}E9Qc#=y#`wBji3iJW#x{QT#H`n0-EB{OSE`H=c4Wp+& z7GAhC7{2xwmo#a#7q;~=!Ejb9_owx2--~)GkJmoFrHlR8ra!OA0d|0r=Zq6yKd*@w z;o_!#BSNk$8j*8q9^}7i{*yWm5{Xos0ww-uP}r1GE1RC`7{q>4 z@JNez5(^au{YM&bVzC1qx_RpFqV83i*KLU0Auy<|OE&2MfF=Sg7U1nqvDjcqx;z+P zL|mje(o@6l`y|2Pq~EN7StAjhiw?+udiX=z z(W>%99E49;L_2k4YlmuHQ6rk7KBg^G+zT+SDZea<6`x>*1=CImkouML7v#iEf`B4x>&QzFSgFgB`c7v#Ej?H)KV;Lj~2f1n6+#I+n zZ3iu7ejJ3jwl44;8sUV~>iV^%ta;F$&8d3#A&TPs?nhl6BZM%zX@Q_h zt*b^+*qQRq&mrzW2zNwYKr(V}enpTN8 zCeVrExKmsq7Kxpq=p@?aVH#9Q@~ItCEk8YTt8$v6ru5e+Yh)S9$dFV$qCWT;@%sBG z^q%=gCc@j7x5MA_-nmv}nXG3JZ%P5k?;<)JJuQwjLRQLzZ5eaNif(t6cH@%Ze30TBs@u-|wK=8#rhk6CnK}96V)owV{S@WYu zbnaj0|GDe{d?Zj8w}oY`_Fujnu3WgJ=l*o*-?A?KLo${kYSN7rv!irgxLsZae{#24 z?u2ayllwco>yFcecL5?Ov-(e;PqMJbk(YQRASN^%G8F*!G+nT>Y z#(gFz>Kwjc$zr~|yfT4-LeON@-&zM63|CH+>+Wv4;1IAaWf8#VsM2(njdNIQwjwNA ztu1pL38#&}5*J~Nl`{PF5!RFlNBCzq<+pySi44`b{(<3?CIM0htbCHr6iO2TF+Rpi zcss46Pq8qQ(}wD#54K~pZNvdxv9hK-AZaoh|4MigXR2I{mkPtv)7<@V&)HE;lIT7# zJ)OvX52K%%4&Qiu*>;EOK*4(KJaVF06g};A# zJ-l&sD}4UJ@o<+0(d5UT1pK!&fPPj_;T+eqIiI?BH1M`I3V+Vh@%}AaJGt@JRbRih zI?7UXY}gd1??Bjx05$iNpL{!A?0hPr9N&$ilWO?lDssVX?{B@6fk#u0)n3|Z8mtz; zf%d5uP!qSV+smAY++2z`FJmRIgI20-lK_>PT?yVKNCog+GBN09Lh|8rqv2e7-ism9 zfCh$Fmb99-#Oi-MI#w$^he>9cS7m!kahC_5WqXFi@w=XRH8952wh91TYJx!{@q!FB zW&p@Dbv{Symp8 z$LV(BbK(D)W9Pz4r++DIPoB{(ot~+wh{_U2REp=ftg(l4@mLEeDFa|; z0mjOmA;pX%<_g52g(3F7w5CT8{9X7rs|o*c z5+vFU3S(!AgvW$73{O33YZ3rH=p#KS+J!h`jQ0GO=pmy_3Sl;MHv_x9xb>fX^1M0% z(#JKHr9hXmF-Kd&teC_<;_HTMo~9ZRwBdD8Ei6i%%oDcu-i~_>~3J9N-n56eA zN};>H)XfQi=J`Q+r2yo5-{R%hE|-h3wMWhIwG2_l2LTi_Bc$HL>!uZ1~HusnEnB&=$+jM>%49vBPL zJWV4(|Nr~`l5Wu*wkC@>kkVC?+LE^wrgixWv{d*`TUAl9QKf^En|ZOV%V*5v zE`UmISPrURC4&SPd$4%jV6yhr_Rb$nQ5?6@<(SmqQk-*-fuSA52X!x2X z5m>1MmkZI?i2uiC`oqWX8`DL-{W_!FAHMR5$#7nmvc0bN&xf^ZzE}xO$%?p?G}%d_ z+Zn*uY$Irs5r&fRU(_qny|uX#KKGsfJv{W<_rvh+W;k~0NSKk3ZY#q=W-`5k+inhP zL`jDt=HE2^7y>fHa5w*Ft8yBwAmSHp&m z#+8MCR@!qmVp+>|RaQ4eOpKjXgB}@WSBZ z7F+T5Jg7n#ExwRYA6KwJ8O z?srQWE5s1~DvThzeN-%BND$tca$Xmq1h%W=z>7Ls!wz6g$JsNEUw-Up`0K}4H4!O? z2I(s14lN@S_Q<|0*2YFBk!bjwHg|6vy5d`l|MWX*H~J@!-+LxOBKSk0N7o>A72NM- zQ=8fGUQTL9wCCjvbNU9u;>Fjls-u;}r3NQK<%Nvm?q54GgUi1>oLA1=t=DE&qo;K7 z+=*j-;YD2x!weuZf6wbO7oKyW{i|xXn-JiItIP)mDBUV}UG;fnT_SegyWR+0zWu*w zOqG9hK{S5*Iyg6_LE4s%0sPhXS8OJg=l%ZpJ4@krzd0W+XZ(2*j9WmqTH`pR- z{X=6m8Yu{)Ca9(Yb*Sa41$tWLkC%Z~;ai1sA+F zhS9B+aOA{9n4O&t{klQj3PQro5ZbDe>7oh#^GU_Y7FjI5<_{*7zR zksIj(=*qS@b|Sw=s`y{zvEs$AFHM7>F*BBsSj(V32s|>+5Ga zCf<+2F#+7{EIhet!au3Rhz=IMOqDY!^Xk;-v6N!!5FK>KG&t$tg+Fm5dJyfl^6wqp zSM}U$>-KCS5YxH`;N&qTN|dug;5p}^dqZo)<`jd|@w)EuHPWGv&k9NjkV#4vhrZ#- zbGHnRDp8RYR$LOOM_&qg<5(&2H&tT}Sn&}EI%S=QN5jI!*Oqi~lJUN*5y4QXwxhR2#1 zIsh@oVZm>;2?NT2qOljhKJe)Uu0}Zg0>Ic-#GH=&jzb&kT$RTC#9!mBn8vuq8X^s3 zuITxhc-BA0#9P|Cx>V&$AD_|@fU$6k8dtqi5?;Ev5ng;}Tb-CXBKXc0OQJO1c`2j4 zN{VF=XSe|OtRs{Y1yl+z>x_k<+3J77cqm#TC*o$7Ju8cyL`(^y4cm8E8|rj9wEDV;q)83%)@EI>eJY)a4d0&qRk9BI=F z0NN#XQg;BHWe0#VkLSWBwKbII%rsAItD0@`li5;h2b5?oc zbX}NTn9hlb?Qrf=+ZbN|EYG=W9<-_lz4!eUsvd^KFXbXoHNbJ|6> z70=2mGy)8?mW6*gnLBzB9hRgBlVUd)x4VBWKgZ)Rxn2&B-SSX@kRe$Bu#5j>=Li7& zg4cB2B!W#2ehh%s`?By4STjX9o(d%FllS~mxO)3zig-fljFiXU5|(1z5Z!I8B4f!p z3*?lfL}*4Y&R4m60=38(Zx|N}8Ztx&jPcUHR9LIfIOVAvxt|d!H_DNi3*}M1bma@xAf5aWF-cz4FJE zsk=*aZ?ErdZtkeTw({BQf%idD+H;}p@~>V4N%!^W0Ttrl*a>y!=)+`6`ku6b(h|{*Mq3JnPExPDHk|Nd7R-Jy%1AphK zweYO^Xci-nO%3XDK(!+RBUR)9?T&rI!4L(Zs!zMi?BXln961r_OPdX1%UkSw4pfCk^C(tVk1tjHjXCK@RRUw^jevWje&FnG!Urw*A3#MeEs?1i?1<~`GoyXd~xmLSS3rkgpWo<)j!5K)IfG+^M@JNld zum02Q`7Qmx$OB+=TV2}^Kli~Y-3>6Q0d$|;15l24LE9ULhGX$#6`yH@*k~ul76E|C z84GQ32He@MSdHo;NDBsHiK%P>_&NZ&UTF0)<$5jFG^5o9=(Pe~1GiY3QdzJ<;ial~ z#5Cha?_z3zsk)Lk0PKxdUSoTMF=DCWWtJu;E$b-;!n81P1vySw#v4T9V4MLy+rbgC zCUhSOx6!}y&Sn_n{J)m|C-meOI{|1g2*(OO=`&$exP6gdE^4GQ z)Jc)+Buqg;?+sa2R3W#%K`!`H@5v=2J#Pf$h#Wu$AZyJpZtIBHuKI(%Ff%R>{qIWh z>(@j*Dh;jG*F>QOeAa)Mq#xl^ECz4=nD^IYvJm!}uJORirSJ)D{lE9^ABPd0DnEJr zSeTyHx&PQ10U7%i2nPq~Ay)tP*-tDFa*-mT?ujlnqKp3YMtw#2XGTMCdm>_WC2U{0 z8kVojhsA~Yu)MSuwl*lM6<$GVA~!~9NGm@nmdIB*!w+|Js9J7izeX?)>v*BZ;N@Uv z{w4LJ!y+aCi~s@Hia+_Q08~-J`3impR?v=Ht~@^2&k`nKpFVPXc<26q7WSmuc6PZz zOSQ^U1Cmr1t6^l5pT}{)k6>j-2&tu*1t}D*O;l{=oiWzTRFZGWwEln!rX~I}r$@pO9r2o5+YV!!{o%4+ zhu{Lm7vIp!8}et7ka(^A%J9VetERryGD&~!ccbsnTwcez^YdbnGPi+Tm5+Ih(?#r3iGuOfEUlS6l zy{kqI)n0AcI*Pm!1Hrphb@Plp$ZD*tO^yw79N2nS0@Q!E|)&n{2q|^Sjt?J-v2M+`O{5uf#uq)<)2vY_m_n5@IjrIVQe87c? z7*>c!Mh5II0N!6eck4*F`|McI{ca{NdtESirP}(8gpL?27DWg@SdWWqaw-?XYZCz` zokof@$O(5m@dx3NSH2y_wpR5j-()y4E8#!g_-|thk;uIQvGY+G0JoAC#SS8d_Yq$l zn0Von8^D~8n@Peyy8yUTfP%tXcx$?C+|K=94)a$phlP1P|EG7`;eiX-G8S9^Q!E}^ zmF|8}lq=5(*UNCV+;bSr4g+57(8PzCMH7Zn8b;acK*nCVo2L?CtNf%#X2KxEvx-kx z|8o3tu2R5&!;cKSp-cZ>f9Ti4_KEwIPjPh{7$Xuy#U}&*8aMFQNYOl2eFApcJX}%k zyeuH_=br->x=~fw++YH!u*V5Y^aN*vSxT)`9N0$MS4j@wMAq(TO3Y zxE1gSV}V2$yC)*yMkbhItCIL8+Ra(Vggt!=Y%;GLoeY3vChvv&^*;B9?-~t@x)|`n+@@CN z_OwMGW>oXH(n?16*k1ufO!5^ip3eT%iR^1X`uKBy9X|f_UxuSAm$g7Y98R2=(L@8= z3>;d077~P^iMk7uKoFb7Xws3H+##YElz=*^^Zu;%DT7a?yb7j=wi4=Ur+c~KvPZ`mK0<3$bNJ8Dtzuo5ckI&GhYsanOw@1!%r&7f(Q5U?llG3ICFhV#iov$MhSR4gQYHn*a%ls!=7iafw=k;N(L z$B%S}@geODmf*jrOGw%2MON4ZW5&ZA$4+LOY!MC0A&r}4*jA2q3cZV8IS|_!P|@m@ zvyQIgj~wg1@Pn@Pi%51gVwt_QnKy$pM*~v#QmB+~h0u%3NFRup{`Vsz7quTy+e5^a1*PHfqXnRov z^LX|W-on(9y=OE8tjFs{2=i#;`G2(t=E(3#-A@MKD_k+Hu}SqZv93YQiY`wX)ppsF z6Ww;SB3^hCTNr;fr(eqj4Cv}WccY^`fUhviOxqd9ovVO05)Gl5-51bFK#}PyQv^C>OG0lr= zGhseR7^invnyaIyCWy|1zW{sG}jvtuxq|I2)8F^F9fRmJaJZ6i6Df|_@J7Z2B=?Qa78{vD; z&WFp_)+PKGNNU>uvTaH!DiW5MAiIa;o%JnA32PV5gwH(tFT-8e&gzoK&2aSCc<3GM zr^mB`5GTYnab1wA{*VGB*~MYI-`%&98(tEpyA)6qF;FprhQqCYtC~{Nm?uuH)%pa%1XS00->E1d+8GXS;^;mcZ#B(sE9g}s$#J1|G1l<+z4ZhmdY-7 z2$)&^0>JJ&3UIMNpvhI$p8HkJO~OK2B)W>AzP;pIeSdc~ei(9hiF(;Kl z>W1#y*bJwR^yx(^z4oF){K?0L!%6J`%iHoYbTnCfRY&Z$`!jg}WCJ>DRb*sBh$##v zcj8orqo}pH>vp}!!tGvlUG%a|=jhOVx(IL(VUAp)n)2Q9s>vdG%kyEU1bY3Vm2&ge z#?sox!qla!arSVh;Jf=3?dI;F4IyeOaot)8>Gf4!QQ3-qT7!x^B=9rHL-D-RsiWQD zse5}>Ih!vs)>#OJ4HOhf9#4HrT62v}MBLJdxmi`iD+SsuMKp%qsBoUFWI^Ol^pm?; zQ)iYMGN+2;0bQCsdFsA_@bvuy){u5-Hw71HId0!v(Ib8z)6;+t9PbNvX>~1bvnnvf zrV*lcP#tt;*2_8VmI~#8QmX`1SO3B8-wtT^?q!X>Vo05RtB5?$TqnG9q*YwE8a(yN zzXMAfgK}Fg*n13CJ^1l&@2JYL=00#V6Lgnq)(nbmFvf?9YdyCL$aS@vAg36sT?uX6 zx_;JG78oIU9pso2?H2WOQ+3?iv?|eFf2(+_aE94t96W{y;e0~(Z+qAe-i1{*ZvU_M z0zi?H*kSBWtXN>HW!fQTgJ31RTSCqwclL!r3H+?cA-JrwFW$Hk+xjYp;C-=rlE4RyULSPsK@^ ziwq`N^gsfz!T?R=7%I^>AmM*(Lg)S^{P)Yu>H-8H5ijVR{}rwJU%eb=uSxiySq#g1 zzaDyBKqj?(s2sDKU5^m)x1L)b-eIe7P>jOe{c<<+On%TrdrW^$l6(??MFT7M(!s&? z20ZzP^6mTRj^8|X_#r4CVNCcx_E@<3z*oZ7$Vn4~BcJsPF{X?%nTR2NddUhI*gjS@ z+{Z^%P7T@WeN3S%9OZyKH@(0bLzURTih>TO#m&-HmTjz(oU9BX#A8RtUnmTQ@}y*R zC_>62&-`^E#0w^F_m?g=#%Wzz`6sw-_g83+Lr_obvOmF)=-5t0VLz5+#bWM6&gTj` z++3@JBjTxbFW6q|+%}tW6~3ge7ICcOxf^g~aMIFvHHWA*dmBv|ot@tdGrE(?75Baz z9`CjKZ+MeOyz?r?K=Wp01*?>on`l!e>fiEO2yFcB?V*^-Um;t`J(eYCFU=9p-hb^m zR0Z$o>gnhmJ#oBuz}_|_)5&T7u=CxLszH&yCDXc>M5Ur@K{3;U@@=iIPH!yEou8&i zx}!ne#6J`UT@X)UpPLl)gVSa z%_tYpQhYH;jHjSot@?GZ^ggO=CJj5l(9w9_)pC1>K)ZN3zFojt@FuUC%&!Jm>3F^K zZ2)p}I`5AyMVj*gN8u>L&NV8Bl)0$X6sk56R*B+zTd5QNwI^;id6r7!VjJ+$cD?Y% zVwl!NY-~vK;Q>&m-=}Gq#kA1(TSdLk6xyEM6b~t8C(q?J@>8f^m{)Dqbu{_(8O>U(b@kl z9?d2)HJTEgWN`B0fF0(SfA}(pS6qM^cno6_i=X=+lkh*Ft^XVa00^mgX)$a~PKJ32 z|5MVZXS5SQyBr`}|E3Up5l67Q8`#|}V_gM|!=dLY54)3J9ws*v9=gyG{C(@cO_InF zcRovp0DZoObg=cG5C5w2aJf#gz|IH_;s4FS!{OpXzZ=#MKOni5g-nN*$r?=TsM0;! zOE)WO&Y&7yLRY;;H$!Dc{h$|7V9&lBB|ugujnOJKf-B2TX2M+`1<#)EBlp!XG`T`RBv-AB-D#+PNG7VcA75Q!eIY<$)6qTewn^Bi7 z0&oAgB9c=7x1LZO)9UapI9ncDvTz~&DV1uk?eb~^h@qm9#B7F(SJ%SZk_YUb3I%-a zos}>-y=pu(MAoLn{=zT52D9&4r5teI0PPOuA_nZTn3FRz6&mo^pAnguni!jW%-^x0 zr=T(rV_oy>PGbnfFA)sa2?YC z@BM2VVP!3zLEH;Pq?HOsR3;wNU|Y@K8Cy}874}9DjQj~eXt8H))asR)Ldt zB%e>j&Z}&PMtbxtRF^I?jWv??ZbK852$xpXvj)iOZC-JO*KqGI$p;qtdgeWG6@z5) z&f-pufSGCJq{{Nnz~JNs=X8I2=hl~_=t9*^{Q__GTsyZ!DmLp_=pDZ%9wxqzkfIMzxb_iX!?@edc(wF zZT;6X*(Oj4aTJpBv;Rti=(PUGDkl^(MUZ8>8v){CI=vzg#>OT5YXX2Lxba^T@pkTi zM(6%7hig}^h1sc@Ft2m}tU^*|NEf=VMPhf*4)QgGY)f3dqioPGFf zVfo}obeE7WQ52AushBAS9)CQr*;L*@SYRx}#XOF7Hyh%JCHn=TKH;euj{s2<7a$1z zu|VTxQOm{3b{3d&Rw_XnLnX|E(i$Y(RK5(39SliUW1NATeS)!F0>H)rluV@`MhHxP zP*bMU0QrfT7ERlJ%R0Hut7V7Ci05vr&xuv#5HhfDPc_3AZkR7A8l&ON|UdE5q zCSBC6|F68e96tZ#h}x6R@Xq_o;esY0H&l?jRnRq;sIk3Dr0PEty`3sp#R`7HXfKBm zwFoHt1Vu>Uw)myz#F@J}$la+D3<@MDx${?#0}-I|3(icz8BI)dboP%N?d?0EnMk9+ zwi4oz>fZ+1T90>Ai}ZWmVi-qQ@A_3Z`ms&;aqZH|@M zYOA;;EY{-*8I@CeAv;vVRLu(dta&Fgg48Ek9@|wrgrkD|?dY3x5zTgq3eW{3)r=J8 zh=zD56WrKOfTiV)@QFtTZ6c+)h=K;#-QmCa>XGo^T?^q`Kb;9nx_FD@7~54Hw~7-y zx9$JN^z9f9%EjC1cHp-(WQZs}dsXC*mFG&n?G@in;r2skBfRb8Yc-B`(wo;eiex)+ zJKfhI3q7jsdW(@exa->y-bgO_z)|%jWgfKCPtbO+O2}kKz=C!Iymx6eT$*09XJmUd zvdGg|4)|yjg;xb5_6>rWI?C#0uN<;YYVVlXJv-y4p=`*<<{1k0t_+>ev{0a{nFuVSZ&JyrWAR*K~~UOCK8! zfApn^@XTwACX|j1cZcU*TMkcaLi#@KMq?6tOgjirZ=88P9RHg?3!QJj76yAZ!XZ8R z*FV74X=M}r8Gka<$3tffW$UOh!;u7%s|-mI03{uPYgkWibLroZCIR|&n-bn2QcoIG0iv09BEs8^{^CV!IpC5^j6(@)@o-!q#!Iq{2Enrp-0!l;bHG7k z>WmRJKTX$fFQ_%4+iiiXDNQ+Q(v45_Ob~L(obY1S&-6U35@_wS+<+e$=2>vP2%t$s z?g9AF{e$6CPYi`0>+X?hJx9vUVR&MElWx1c45{)vF_ShQUOVsb#>>i-_(b*^v6$sy z!D-}BE>lFC0OU?UKAA0@_{rLu5*}?B>FVhp?d}^=qr|}`!@{f)6t#>|VQw0AdjeqR ztV*TN$|7byuhQ$A^UJFnt4j+iI74=u%g(sk?&}o^#IYfCa${7KTa%PL~1F!%2B? zt0uA>L~Ut@;18`izdRFhZ${B@*`s@Gn^fRphTQ_EM%9+SVgbpURN5$xRgjJ*7XJ++ z=l&U3^X%gDZ!PK!)`mU(M1H0AG_`@G1g;Z_zLX&bXM-{5(W(y+@?#?AdMVO+cIfpRwR&~zp@d|yuA`0ln^0_HS};Fxs4onu zKjzFoyymjMuYPPOJaG@ZRzvv4$44cwciCC~ugQF2ay>lz`l43rI&_q5AdKna*{?jM z)%K*G)+MtjNSM||j_>H%*@YPi-T%w~8ajXcQdlT7WGF)i z3(b#Aa$^8aY2nZE8XZ`yuCOEUk80(g9RQsBXL}ooUe_AZSjPuFd>)2Ap4ESJlUW65SuG&a zg78l|a^YXrB0lhX8o`Nz-yRQPx%7|krQ?ru1|yUSdOw8dY~lY%+qL-Z1c zQklr*5t?&m5xfQACvz@CV`|{(0h17CRu2d%Mz&Ka2g8ppHztgvSfP$~fcb#epOD$M zf14Cg80`iyckv=lGy=}FK-xiIBr2uw05AFQA5~#+hZ_AL`urMRv@~EULsIupt|zP6 z;e{RF5Qq-(rlgi(YZ7QU#10kKDE!-=0I{?~uZygOA3V1hKJw6TIIat<$MhP&ht#g{ zr1i5eFNCSNH61152$JF;-@pMrnca=J7#Bx>Z1NXSTFO6lj=`i&Gt9Wd1C(5|sZIgX1W=3#TWHflxwxrx-^^E!> z*mWUfd(Y#id%}cn{$G(08XITr*3+!tsl#32{I#xdN!thaUvShQt6CjIqv~mFzfLIZA|EUd}*%1D(%&dn$|Iu`KUgvH5 z8Bx0uLe6V#35Jf%RV^>&F9s7&+}s7EXwTq19C}Jw?zAtnwaH*elOlUXmZ!<6hrfG8 zc7uj%RUj&OdjRR#UJmxpZSt+1DpkLBqC8Msv;2FgymetsI|0^1j|9~{DdOK_&^^U>9Rpc^3hx{6 z-$=2JQA|)iF>(CKM~A|H@ww4(`j{>?Yd|YEbAR=t1xrDR-6nk{+MO71kb%i1x zS%z>3@YQqw;2}O^pL9>V>-fV5!o50tJY0O_>tW;2eNhOO8~&wo%A;=MMLgkoMIn@- zTttlCa;pOy{kH$+{gTI=Lm_C@ANV9_V;CW#J+AT-MBFg?;0k8McER9|aG##_i|7AK z_?TYGZ$=Gx2#0G*vstnq3zt~5Q!|(axo*ZtmVU*{JZpR`YJ3qjHU?Ev&0XM>IpabK zhuLsd#%H8A)-Ut5a>x!Lc6^OVCg|;n?gN^~ThV0inKzcgHOT{gntY5H%iYlM*M)!A zVU*ELHV75GHapp>S!P?HA_|C*9 zPs#HJzZH}&NTj+`R1I+82Hu?%{tOg;{g%%5tgnWD^xLE1B-;w5-n+6M-o3IKdNsA( zpxrb$`)MY!61uLbrZdTEY@Cy<8>A`6z3??hyk%F1f&~FvT1H!ha|d+6iK%padPybx z?K5+_#keEYbl&PzbxTjc~EJFY(|_YQ>FSJtxyD z?w&)}sq?kCQcWuyu^+hFZ<<7)2`g%^3L&))(Ufb(R?B*xbWL%x+Rqkknx`S{?8dyL zfgxk^Dj({g+va36(59u`0^0zZaHthxnh0f*gIo%=s@cqH`nX`c(IJMc~2@ zha`e{<`V?f!^*#QAaL$~P&(Thz_F%;a_)a>IxKMMpSJ!_Pw5!If}SFlm)9K^{tcIY z+#U2Dh5Mo7223Nko!lK?j-%>E94V`cu@zhY8BmiQ9@cc9C6JEnLRt|1+4`T;ff;y| zC^BJ=ttjOcmp)Cj9M(?Yqoa|(y?VXsj$@km)jd@gxBTr2$DC*p{eCMMrd5cf(d5Ra78vhH;JP=!JXK>2l>x{op?-2!Z#7H!w+pj0QUG67 z0nW9VgtEZR4JHMI@gZ4xzkT6c48t=FRK=H|*rxRMdLo@hl1hVgi7j@7axD#~3 zBd6E(RwB-M(@MBTuqD36g*2zR5gvE9!O30{<_OxY)4ATNs#>8d>D)Ety8=XnfYJUQ zxY{K>2N6Hb50^jjT3c;V>CpL5trTgO)1vM?p`nBaKE9=hx5|@->~83>_Y@xh%DTjO z`(b>kiB#O-A}y4dMH@b>ZU4&>=FeSSH@;5k_}z%M-@fwhN_gwyYWV!)gSIn(VsQT2 zx^`sfJg)lgx87d~fBnO0?Z#M<+}#^~{mOzp-#E9hDFMGrUytq5cwd)$^-jJR{__|A zRXBC+taboy>e9b4?auGF!FwdeM7EfD#h@FXD0Yw@%7hK1$zd|tJ{)CcrGHSfLt}cI zeuzu|B(Q>qq^?S&ot+5_S1yOEm#%~&y*WCq@k_pNO7+>B*f*yrG%I(os>+X1} zFxc^{x;svAHS&WN;1K3%>q!oRKNB)O0RUgf7ptNQfKE8Vu!5f}aN$?&H*j|v-~qz_ zoW7SH`_ID6-Jc2_eR`Tv_DGF1GNSIN0vIU}Hc)txhh9Dn%<#nkjBHF5IGi$EaTN8L z6E3lY;9skXdp=aiZ8Cs(QrN2S&-j{K{izV(i^4xQw?$#Jm<-TyftY-7L5mZkFlKf; zUeOF#Rn?@w>e;{!-#q_HkT{+$?ZgQ!k%0)o#v`*bYK-nBd@{+|sMSw|F$(K+g|}A1J-TCrORArGU?_a_@#S## z;F5d@L)3Ag;} z?gB`7axG?u9*Z12a-@Ig&Vj|nOL$YbC>@Rz{gzX=CjfTO(paLbC{vtEwJ>vSd1Y~N zw!Row!nvtY!$L7{n@Ym}zVNBoFKH6sNp0su_(#En2k+c`XJYo8bkEbP})#QB3W z^Wph7mvq6(dg#>vibmd)^IS8s6iLdIIq^e-NMQUNE{3v}%r60Kl?Mq$Yg%P?xwXLU zh2A!($o|9k$ntR@~M8kTGa)0v~aiAh1)U z2k5t-{K+r>+l|D$Zq$YK*+B6hnqE7%8s2+<+K$fu@mI#f-~MVY45&YN>FtH^>e&^Y z$31Bi0Br65Cx3G-eD9eVoyFAzvqBH`cZcJ8+FJ9@>bE5@3E!Y56qwxqe}6h>yEFzn zX2Neh`+tW=&OaXpI@iMCBk|n7?J)CB1X}cw$MibZx!6b?j6$BIC~Pr^nPLJMBn+fW z|3%n<%R(aTSecbT533ApEzdkMRl0f+jc@lFh?^3|Rz7 zA7mV_e3{N5DVf1!&-~$45&n}s&c5UW zE5Z^dUsQF|C9iT3$019ddTVG(CqhJ_6%+pEk^w{pC5Ms*Tm3dy0VrS%m!03_wL#Kzsm1lt=GOt{od5II-P~5Z*w0Jl3M|$m>;Z77RN8o_?S=oER%ljdLm8J6eT!L+3k@ z?W`&qAqgWm3gkNwwu@KMk7RHzPG?R{8?Cde@S*9z4FQFae;P=AD8@jvMX&)E+^w~+ z9~`2AEmSqcIi<&auh-1`GDoU!S zjlkON4sBj`+l{-O_^4ynGzlp?yRD5tI@v*yHrk&By)DlRG29M~;w}2s^^P#5NlW@f zzrf2pclv<{loJwd?fu=Qu#@=|H(fIPrm(w z(7U!6#*gaU|M;j@_i_P>A`$;Qyy-+i7o+?)%=#%7LdZ|6bAsv9MSlqX<68Y^BA{C| zQ@%D-Miv%z?td!GY4v~Vs`Qy9+wH*O0_gbwCF?L(mAetY(U1YS-SOas8+O-mbGyUm ze)zlH;c$Z<=)#SD$uInK9XC_VTnNZ7{UZ!3|7@7X3>;szXgV$OGKD|kK=+Ey`(JwK z_rm7rNsS{E8vI6yfvO7Sp`j4}=!RGBo10^3{br7iw<<6@y|LQHIEsMY-WCYA8{%#J zL=+>-Cjcn;79SPBcVOejUncy=FyO{L^1(`?g^QS>%r3A5EU9W*+&$OxW{5PVp4P=3@NN#!JNcG<30Ub@;$i%&#r1QDkgXk|~p zIM+TC82yYs!O^c^M%5H$b5V+!AT?zX$VA>Np()>E3Q2+RC=taj0D^hJweaPS#kZ;D zvCgrH{{G`?sEoyF=E=++X&LAiF_k^YEs~%EN(QCPKccXrv^sxrX?%=(*Py!dczO%*84_+E3`)#o)7lL}V8-$;J6k z$Knkpt(7Mmw~{V+cz|tL*0F5k!5$p)96vy+_duC*cMm}oB#rU+7Pt+ea=x|!-GQK> z%r>gK`{VwBkXsiibb9@)3$RDWR-T;QEeiMyodr(|L*tO1CMGOr7dPzQ7%rHb({oVs z8U#|lY2F!FdE4V*8e_$W$OUN#)b?=?Kvx5TK-kbrZL@Qp!rnyV(EybKAG~rQfdQ*0 zpID)Zac!^q2Kf2^{KqNrgjagH>21Q&k|qbH)?`D=pmuL0UdlaJ2y-YGG;JZGNB{=v26U!H0f2KQ z&jLKTd-=p#JHb#J(Bq6$mslu2q?K}2!bJZ@!hf7R6ihDst3!yp1Pock2;-wkiPA0f zW=<}OIC7)p2R`+bwO1v{1&Fs_g+pOTm=nJX=VWN$9EH+Em+jPW0;>qz?*7stk1$?t z>h+I>n}8TQLI`onDf5!Zls+I-!NEQB5L_ z4RsrSP{VB6C-TffTf7lZrNQBl}SeAJ8l+Y637%r-tc zv99O9do-7&dyfbj1fvwUyCgf#rtvlnSXS8v$@##Xi$#<~fvwimP?NVE(d=U@2JoK0 ztJ*0xqke%MV<_J7)?+7eWk_~=Hr0G+FB6Qxsa-RB9H1o-+krqa^ybvuTi~~_rXV@} zj=jDP`WB)vBSNQv1&xfD< zMl0#+SNO;ap6!bD96nTek>Y&snefFI{!KVGecq1eACd4spzZl4pcO%!KIOUc*7F^l zbUSg|w`jF!QXm6TI4=3q>&SNQe^3(uoco6s(P)?c%}j;)YnQ_$7ynI7>C(SdJNNGb zKYHFIIVB~R6mM>kxoUTB+>ONK;CA;_V&-v3K;U9Qp zp_mU*fM*N8ul~zeqjLP1T``Zqk%22({eI)IZ-&J?o)T~SPg{^6_S{^< zp*+SSzb~ko0;vVCAVukW(A=-Gu*63G|G1Y~^1OMd4pu0D~Jn001BW zNklT#IApATY#$BRrhi}J(%d=+NzVT5!R{b?D>c@29w>05!5N@_T$dlLoS9h- zFTJ^7Ff3F7dt|I9oI24H&Rx-h)zoU};sOkmF&f=$kxz-XP1S$Kz&xc*@$`OyzM?~e zYruLm?&X=&Ax$vwvdqLNlaevru}0OVBgT^drigLEnBvMIs%AhsL;pZm?+_CJUY$vh z7bHkX36$v;QAxbJMN)Hc$sqGl6ellI=<8eSi_7cFt7|<>om21+KvCg$Q^f2<8mx+{ zEu>gjI&T^)nr=DJm}=B#H`-gpqavEKbYWpcsE+Ntw*1p(JaKog-CBQmq%%CEdjQ_K zx@p@yc^br&#UUKB*3b}rTmFUay{ep7ph=|d6O z?@)fOO`QwB_ltiT?z{LKJz2LN4j(%lhIz@@@+r%6g|WT`0!={(27Ux5|3s2>nT#O0 zQ#iQvkFEd1+5y11f7}rMxjAx9tNoXC;os$Jy76DT0J!u|{UR}=5dQfPeq9j{{^*TV zJwFde7!O}{!_ULIjvLCupz}FRz>y@A6vP%}QQNGd3^Q0IfH4(jR_|T-hn3CNVd5g} ztn%f|gI@_#cYiu`_KieZi^evV{IdLGVsC;g2#Trl`i+lm!$vm>9X7(nUw2FTHb+v1 z+U60RE59bZ8*GXrjc4K{06QJ!E;nEKH{qW0#Wohx@gq7oD0dhB<O5*w6~prm62E=+6{Z8D)Wo@&AaBuf(j|StSAGNn3#SdN(dC#++=6`dQ#6@u7M{NWXl$-$S?Nxo!k+CiH zBkXdzOGlWdW;er=+9i8j3y{1xc5H&(PMhJUFD`{wbR?GJ2T{ezf|6~@teU=tL@3fK zlTzraW_(a#>lqwBBtM;7vMNgn$SYGd*iCQ0Jps^M7E+q3ALV>wbzyO7eRE~LyR&z~ z8;a&oHVza;aR z+8~7gRgD_yFKmJs2DDqXN^ra5Zx&xYI#Yqjy{wCo1F{VRZkzW|95rnQ(xwYJGHTeY zXY#hfF-^*k>+S`1=*`ZvzN|rZh36(@C7RcD*8izz{vi={KrP()_<1C3CdB)`Gv50?P{34stJI} zNuB#&3~L%|sJK`;B#8*VKFkNRylg0+#bS0j7ky{^j`G9Ulo-9{8drRF0*x0fdQc7MJnd z16#?!p9wxuQyISiX2P~~pvW#)etaNu+g+nx3e>gktl&Dn(udM1CFC&xk`Dk^!msHgW+qR z8PSolO>4`(@Z?Z<@r~v1rH|=3QdPFEeQGTH&;R0b_}gF1Yw`e2Mg@PMp-?rG0EKH) zhOVxjj-LL}LxY2ZdI?}r=cufbkyK*HV`&QC%>ZU+svi5PAvJ>?#YY2rW2u;9Tg<@P=p;6N&`3K^Lu8E2i3U~!V>;p!n#uge zCr7k01D?oFE_gbt=bAqMAzi+t)ia(}dEm~z@a>;%X@|vzCSc-C&hWll{N7L`ETC{l z6UPH+lRQriY5E}_%vT1u$WY;CQqa7gvb0-TZ?uwCkKQ`twt8SUlv}&_>VqW8@Xe;G zG*|6=Nl&}`3Ra_iK))Ay2*aRjc}-8wsinF5c#m#_*5#&hd+2mu`20r(!_Uqvg{u-s zS?#H+YFl6RZ)k78OdI$&4Aedk+t9T~bdX+fLI&GDFWtnBM(N5j-olEPTquW`Al$?A zmM#YTv%i~G|F9L_pIXz=u`LbM4LZfA0eOPw-2aK^{yaSW`rn1Y<=HSa-WLuZ8r8jg zI>!r;RlF3I4AwvWUEG6)J$^Q>5jd(-7G9T$=b6i>i}1gs zo5CgZ&vWZPm;cSoYN0{r{^bt{?FU^eI`*osA7u*J=*Z+t^mTmGI3A1{OC7An7CIFNeE7X zJ5>-;G$pe#NysOC!0#N(<27e~+%W4zvRZ z(2!!2J!VLxB|P}r$~v@J;fU}>e96GruvV255$0|QlZm>iFQG4j(3bl=gZG=HHHV9o z$g#o%PXov-sr)1}X|%2SBv5L7y)&GBSBFuwqV?!KgW=ljS{T*#e1a_Mg%O1G!xHlE zx}z_Q>B;I5Jq0^D*cHxRShiP5zVykl@Pb~o;wfyN5&Xk1_J&9A?hpUxUrmNFH5dQr zcMfaui-pDzzW>~;E|%>KU;Wf*F_FQ}fyeYJ*^kaF>S9zy>WMY#_<>Hfb)q*2B zZDU32AlF}coRrSo3?CTJ&pd(#H8zUkaw8pv83TM?}+4EKKLJ{)BN$gl?D+st1*3{@t zX_f5wSXtc|ERSerly{jgOt0F2oYv;v6Mf<1k80&a1Fvyiu=1mq7Q%{VQGe%Sqv6ub zdN`v-v{Q{Ow{7=Ir=ufY%W!B;3@thqxv@pgV1R3b+Lq^)vt|2Zhb?&yxUW%(_qHJ=H^zB?NV{@rlzADv}%vOZTj6$TACz* zLG-pdUI}XhWHod=7t2b&Z2=Vw6PcsBp`IPOb@LMDz$kszrqVvC5_!8-iKetVb4wSY za875A^(tgNw=76AMh3(!D^F_*SepcFb&wXL`T9h2t2NtIVH$a`q)WM8e^2jli`m?e zZS6kZ#^e|UF>R@h?s(@X;nOev+i+z1qP+re_~^I*u0T=0CJQ96OGR-DdeSG&CMh7p z`jkj->|THoPSavfV>f+sVGt|-_bmPBv0L)BJYcs&A1dDR4 zLcd9LdCHw<^|+P$K@TcY7R~;fhxITy9OioNgm-$JCi-pWwBQ3D$%|uyh$G2M7S6Z+ zlPh;%g)EkP@_mmRNL!b5?G7a z9kMl@=BJFMaac-4Oq)zpZdn+Icv$=}qx=0?zM^kO7!dZQ@|*twwsfV&BCfnAoD@d+ zlTXE%$S`dGso#V`Nm8J~Dx5JDOoDj{z}^0hc1usuIHVLQoh;Z;f7n5=p~lcu z0qn;jvoS#>vkZ%Hcy`B~87cm(q4e>D>mV#hk=X@*OPPY3Za|`mc1Dv(Cgek_krWfw zt#KuHeQ^eVK;@2!kj2IIaQB@9;ncAny9n@&^ULAE(*xnlpU^~~)Ia<8*TN@0G^m$I z`odAk3A{1_%f9-_(eUa!E8&5=`oihsy>?%~T}Qb)pw9&U|Nf7TT6q6qaf{sm(8K*$ z%i3Kqt%+nV8+=$32FDL~hso*MiDfI3Mt{sDGdjYelobx8pUQjAFW@h}rekyHek^XiQ1V6dC z)FO~hqij4*jD|xd_^TBuCjr>fug*Zt2xt9sh5bio=EEQV-jVR&oxR0M*%7Uz{n3{u z?7ijz4Xp1{qxtWCIvXC**{eHr_KKUfIihj#+D6dgiH$;NxcCZ{nKNVIeWMwwc?f-8 zj$5U*9kSl!*|#>RoKNk+*ao6(^wtTD)m<2}cE!=#Qmy?$XOOwOrsO8tamp{x{wsXOkb(-6e& zXE(^E8;!l>51YC2!8I4H+KtycPz5~U>M9!Sil41oDgXojVzOCjw*kI%D*{&FB+N+= z@U{6)i$nqg_zIi`7`OS#dF|TU;mg1LvvBvNm%~8!MmT!pkOue~XfwuD#?Y6?5CWC~ zGz`Wg`^yaQ{6jPXp5G!YTmMJ3oHwKi0M7kOkg#k0IpDuA7ZxS>PhGhh&;8G>XzOs9 zWiI@?uw2j*$tja1dp!j_G`kK=j>G+`?$~p`su{cY+(-i?i3tGA6mRl|cz`PaWn=}P zT0s|$Kg!_@HagjF9w+du{9o(p4X@qzTVd(cM?+_i?q{G9I3n2`myG*UiI@y^9eg>3 zb-W8Fu*8pYgW1X{1=D5(Qz2H_wMhZSO7^rLr3g1oa;VbS>OKf4fC_7q0Etd^n+U+L zcT&M*k8zokyrN&U)&4SJ&`8yI2`pC6QtZ$BIdE8+x5+y8$GFngckRqPq=lZt8pnZz zapLRmE{8RhbtBzKphU$w<@0@D@HnjgQ>PtqMs_ajTdZ=((~leA7E~S_L5(ZmII6ab z9>$OC;O(|c`#N-{f6Z3u@6v^S*K`J-=S1JXx*C34+wYm&9nsCMuWR-H@%snDfQ|v& zuU)F+x&RQhrtSE5N}&HA|M4A~5ac+Ers{Jp6A0vfq?!bx?qxzrG%g3fR?AG(ZlN0Si7)}Y*8WSmr^;vDrj(PJy2 zRLFl>D>SFo7=HO9S`o=qmqrqg+&vKf;L|)iS}L~tb6mjHR~4?mrz_lfsM{K4W|jxl zSPl;8!oWFVS8Oma5yHT+%#PCJ_}X#-V4GI_y`00dY8h~PTh*)O!Skh6JhvizyLmy8 z^YXt}et8+#Yxr&97)4x1<*{wAY1fg6y+-B4?;$+txG zN$etv_n4@a(x`S*BVfk0CKy-Zgp}*WL*m&>(svX1D@khJT8AL&1#OwB)WI8=yU7Eg ziOUi<3P2n^WeHH$^`*)1_^3xtVfAMNnh3Dj10vVZXmK&D=+eJwJ^42?J*6lAWY@M~ud1|5 zh(xS>d-A~VW*G}})g8a8B3z`e^r`2Due&>5kJH2Zz>cvFy)wFglx20tF)k930{QlR z!a9B#-5X<}JYIBoz^;KA)sr)KeJsr0`?=6Dpi9YZ0OpV}C<0B2E;{Jf$7vR;Gq(s^ zfR%;}frICsjxQEJ1g^*(qa+JU7_%w>f1H=Mass>%o3Jk!3yqMUMvk2w;;70l{^q8J zft?LeQdX>l?b0^$6xLv{=!2SE_>aO}@)Ss}JZ)Yz>i2_$btT*a%2{W1&Ap{NE_W(I zE70g*hqkx(>h;TBJ=xh2{*TLRdYxlkwKY{_3*=Og&WOb(^kk-e#4S#q$e2t0ZdP!~ z&xX+$n^1#_xqWWir+SZ#^w@=<>=y0O9bOkFH*CRaLKpZQnds8}AwA*Oug=>pqCfoY zL*a@pbv-iP70zE;34ic~@o+&C0Z%_PY?t)?@J3NJ7?lZu#~)yVDypX* z9kzPS9WaCPo6}RJYZB@?4lt@X=axFco7%B7qs6QlJt51E)*fy5zgv?JbGp3rJw1Uv zr>A5`HF2OvvBGQT*TUaFyA)>T6}Nkd{-~OKd(*Ra`Xz_n7rK~ z8iy@?h`u#NJ+V+N1O;?S6?aLqcwV{a@J{Jzz(q|AaQia@ye>l*g9Ls*Z4| zRqN1!B@H?ETPU*_i zOdT5P3jgrSyg0I5omGeNo*LeVPxaf`+Rs0x0hQFWE=W0dZC#hEutkfGGsRDjk@3*t z7JSSHLM9V}yETfq-8gD{3AzzztIgNFP~?5}Uc&yT5(e4D>x`#)|D1PB+x3IQy*;-5 zxiEp)E=5_iU7tC^)O_SlZgxT4?R9mLx2YwjyL1P@DP8PD8`Q7!=VKb|={}{frSs_C zcM#sTFz4+L$;;X;Ppv!oizTt|aNm*=`WO=g+=+&S#_xkxiPUPjcCu);YqM4kxOqEm zI{btS!pj z#(Itp#C`;L!bVyc^2UAyd&C*Ha1*chJLWP~UX?%UuEEL7g>*I%Kzi-N&W-?CiPYS@gv&*7_;QSogKFzkNh!1g>)b1SGLt-^ zGO7g0M269=@OfvRF@g||m-cO4+eA6CdHPsic;dnS@aFjyTQrN=mI&ce z<$UMWvPbm#|YGSunf;{SzAJzn4 z1GS=sF48@(I3W+Y;nKA=ZU0{mOSeP_XN1{W|FPWZ?CbCCKgAeB~VdzEh-VOEyw01~Y(t?m2b>(lBW zexO$Xp1yz3j#S9$FbIVwy6q-+0ui`o5+H@A{uSZK6f)8hx4i}Jc<1Ng)6f5#aL4pHyO`_n5ncM%qseHPFD&4( z`kXouwA!=(F;avqU}I-vp`x9<>epDAOaF#63Bb93eAs)utd44SM#BGa_V*X0%C$zX7+Di4plu|m4hn*iMnYwn)BO>=i(p$XdHsIBzXI$bm=rX9qwYpR9$dy1Sj-4@>~Ot#kk9ANhLNIP#$ScXjgKxhD(}-b3N&R3`vw zJ`oUoGk+hOD#Lwj118(SfnJHrs~~uGR*J*Qhjbw{JSrEqf-U-N^_=?8xqg9kBE70X zie(Bj;aMMtyE5Ca%;4gOT>(OcDEkc~Z`e{)$Y=^fg# z-xHpCa4?+E+5EeY>ykblPmt82cDl=6sDjJ?-5((HMs->+2=t6s5&oC-JoTk(D}rb2 zABFt;?-~%DF-g-}41DdK1>54!GkuTfN$aZ`Cc|6jmTVWo1x*HAnp_JPG`TP~ zs!0Z24#?yMM+}IgPtAsv2O*_SO=*V!_+uGS`qgo5+r8=o5y-Z3;W;D()-K{9Buy&N zZR(M(&fZ~m0I*_5GeF_(v|C&*VdOc*S4{_(bJ(#k>1EQ ziPXXJvg~f9?opO5xrv6+73F?Q?>yO77&%gjs2n`afv8^7GFl+YHe0r8y{LEy|6DTU zYFIOi>3S&lW;|P@s`djbgWSh-aN@AjKlP6zj25ec{2A zQTQj^oP_!R_`-a6_O(T8v@gw!hQIpBRCxXTs-2bMnLs98exq5^8J(eh;jJajl1hJb zL4v==S=tuG_NN|dZP5%B25UH(amS@BF|{`6*pDKeb`Gyi#{hC#%9575-k9cg)7tKO zu#LWb3jH@`E*ub5W#y?G0p4Y;iy*rMsf*{J9TD~s{829WW5*l^=M1V+8!VkRzo!49 zQ0~w%F<4#F*4FpcA8?klPb*S=8t6{wX*$}ycXWPpS}Q``-IT^eh*7h@AM3|jM6sv* zfj1_0G#ObdkuXkx-&Roxs6JZ!wiS6zgdj+is_c6_J1lDiKtF1VtTJj-$&~Zj)H~q| z&;Il9z@?YMaQAwcI6SW1`2!Lx*+MJDkG?d8FS9JTrL1y+31^SVCI<{G(aKhTw*7PV ze?Wa5E56XaEOB;D0{`X9VNy^2&CF;bKiZ!Ab|(o9*D$qa1Oj+eWk zJI>s_8ZL+Pu)sSUI?8E+4UGPg-6-q!$qqjZ)&b>)-M9W%$|Es%QMryVF@%~x3D z7Gscu720Go94bK;uYOGM66d5_80`A&D3H86H3`7vqO~=cg(j~2%K*LLBdq?2!Hxt- zCw9uCZI4e0FxVn7f&m!{GNP%uU!$F17(C_VeyJ>dj$h8UoA|{;W&i*n07*naR7pBc z7F<8%JFHpJiZ(lBIa|M>!C;>RT<%JNCIovFWr}$XE>9)Kp#e>z>gWJZZzFI|&PV{) z4jRH9)7EkK z@BC=W($59fmo*vCqr0(sHI_x$M6mS48sjO~6Og}@N!;OGoMfrZ7dbbf9CHHAteMd~ zw>o+{ySj(fnDuG9!wU0xM92pT{>gZ2sM`|&t>q(il`?}~e5=dzv#NnBIw&*P8oCmi zhQu51($!6|_`A(@N+m>~a&vTvzu>GEa(rk|?MXXFkODa@?J$*@tvs%{(1R_XXWw75 z?f=Z)mA($Oi%xtHyH8c+RV5isV|P4__)mil_e=a`ifxibgPpuTWFB}+4eXJzPR+t< zpp~VS*8twrp!jv3M$tg&Uw?nf`1qY?V#CR39e6HXoX{-kcb=Iu{`RXA7*ywgKZT?i zuvJqjZ>WP_%XbWNVYVMKtg{labhvv_gm1Sh`MP(^o`-wK(B6J$Kolaa8SBp9Xlw4-*j7u3015mZrZkP3>Y_;}{zIq|8Ul%R+LF;Tn3z66N^? zlo^!MR%w<8Fkf2tgBWd=p)t6mhs6K5*$DTmR48``Iva&u2qNf9<_MMdnB53sU$SPQZhiFXk_>D5u9` zw%X~1s-Pyq*+hT>#5|AT<8N8P9AAWqbv=$U6tBh?2;*+Im46}V&}0#d2dw1cX50R4 ziiPlm6W!)dIZO6LV;r*xBN00voQQ(NZ4LluzR|x-Me<4@-bNJx2pwk}to>qgu3%Y; zN*jM8Z-sOt^{=aH6IsmRS?7CB_Jn@bxoevI8q?Ewck2nf;h~Oj?!v11-*vLrR^gw} zF3`IL%S0-Z0&Iz2(u@-4;JI9HL^}%3>%NsS>5uB}C=@H`s6LIuHI<<7angwV!*4*V z|Gm0_dU{?vOEpp3)w2~QbmspzZ!T&V>UuohE1KC|@DG0baQK@7tw*qk01HjdzxG3aC4L`v)^t zZ~FBT0D?XoVj=@&ze*qN80^AsZJNxUt>jt3XZd?MjBOsdr%=%%b5((HTMidEVrEst zxSdj{ve`L2HhS#7@!88SUzQKE6d>hGCB^hq0_1uVtJ@O*&1D{$UHu4Ygtx>-{f%g(G1y1iye#Izzq>Vxa=UwMTeiE$wrYbFT_wJ3wp>YESO3707SQf>yW?B{ZEFOOYiI4KbQV#2b%<& zBp;dZkKmgN|FT+eC&82NcKk8p?v&t$%IyyCaQM4h4x78-jv@?nIX)BqWj6^x0Z6&C z!m>z!;Gy`jec#jL;pJosd#*fg;$qhT-;2jT6eb_|vS$B}3#rP4{=AJWiubN^qfkIzYyN$?WDCad{;!X&1Cz^p^ zC7-xK%msUXIW~)6*b#8qV$a2>(+j#IORL=Q=IMur!r70nhu6>bXe)ky`1m9JVN??V zKhqib8BG$L)=nv2)%viGgFYbti`phXuJi6pqM~?$&*GK&F78>$6oUVPR_$knhq2}n zy*|Lo`ODftIyt{?M@{GFG@;O^U8yS_b_V~`I{*KxR~K!?p8UOEFHpU$u{`6_zxm;` zg#HDs-0R4xb_Q?}AiUUb^>F6wlFn@D!pIb)JVH@& zghttHbe`%=3LhH)MmuiS_Q~M0qtNfXHGl9V|9WZ6)7!|Lx36~Kw-I2I?$A+#v&nFc zz#64%xBP2_ZzuO=apuC-PWbR^Cogu3tDXMM@}iw_Zo@?-vcbVNpVl2xeQY*hi{Q=&4r@hdK+ir+>hfljprnzuC`8CWYgK8#aNS8| zt>I2!ABUpi! zIYFE0VL4R7f6$8mteyM6D&c?DE+g}kgbb4S5SCN&WQuWPcQ>QOe9E8PFE{6~xjP}< z?pT0zH#d8DXo5CMvV8(XpknL;jE#BZX8l+~0yhcA1OR579j}brl=~Bp9~pRK=xDh3 z=-0#A;d@Ou_NCEn%|M;@&hsQjl!(HTj4{5L!uXp(dISYtN@EOYu=tbrdBEr)x3VTP z20_@5v`|n4q>eD&@{d)*KQ~uO*^_>>0t#;z916b)_}&>3HpOB1u$$5ZgkYRLqmpQn zZ}VEJGYUX^;`NSL)-`cv3pPpu)r%LGh+f0Fa8zTtWnEs$;?2Ex^@hvZ$$3HFDQ&rb zMCakzC34>#z2U;-s&+wj=^T8Yp4sdQ#}0RfKmPh5t+s0`{#chC^@Qg8wG&`gLUX4g znAQ2t!CsDbcIfiJ^0H{Q>O%(tHj@Oi3!CBHD=KMnKdi0!Cl2+6pZsPnoOyjoTl;&% zH}s+uFGRhhC-mNaZ%H@oFYC^Yjqt^fkLozWdie2ky6yiRUGS%I<+~SGY~q5+1D=-t zpZ@8ExT{z6y!fj2qbR%jwI~J8{W4l~vWYYQ-}~ik_Uh0lK%nc?oeH?yD+ZeFrR(!XilloO+}Ff7&cS~Ak-_j0 zU50|5{WTCiDJo=!2AsPctKfY3c>I!+}y@jUo-JeZZ88Fh*wz zA8`pT!1sA2<^SR=6Lt1YpTKCLA8mU;w8=`2OqgfE@#x8*F zomV3_yI+Q}CF9MMSJW5M3(c^fRoxj4AUQv3O7=OOJALu&vTa#qGSpYnSs?_<`No>J zo6Xf3Q93%xER;DN*biHbeHQ>ic798DE0GFK(<;J}Xhah4TcXZHK5ltCwJD3Sh`v?^ zdv-1HZe{YF@U>_DG(2$Or7+mNp{@TDp?{#?gsmv>(}yUkh`?x!0-T(XVx(y65`gs^ zP~vveCE#eePcuCT|C$8gfHEWhWr?($`@ecMOzO$M+3D%9Fu!W&{=o=|j49B;=sY4; zH_K=$kI~(7JyM#xM6=`a@b%!_Esql+9=aIq+b19uT@&np$IXeP+`E%v5P0WRWZRURvG5)vx5DT4(<;nGOSm4cywy6J=f=)7UwcAR`Snj_bG-A7lG+9}F?Q0KLn#1npB{p4u)krwEF@QXP;#n&H&Zxz}XUY`%|U)c!f^qSP#>V}=+ ze^aaaOhUZ)#=I>^abHWfUget7f)tZn&;c(n^lK75D1)x|?EW#$~OuZ(!u~iR2A+e1N(xym*5?GlH1@Zx% zSvoqhteHq{0g`{csH$$ZeZ6o5OPM08nDQ&U%cR^8Ciq!TK`)I}PPp1|v$8vKSobBk z;{Fvb_q(c_P3b6jla)@#6~-d{#*64;9U^|#;L#}Ksb4z#6u=u#rX?V?wgU$!i%7Ox zMN!*~EeDvO23dcAF}4SF4c$m+ZBTi6Z3DXfqo58rQMq~lnCoIl)vd;_J)EsUc_5ZX zZCJg?Y(VdP%>aDzwuTR6fj%yVUC`i?VDMyBBSg&E*gnUUncHBjDeSfQ_L@I?5&D@l zu=B~aBs6b>v58<4cx15~&!tz>VXJakWq+R;ABFPy1d@lT>qXIh-!#_>brYeJ!%< z0=%H}`0L?GZOtFn3ipt9E3FIuoy$C#*Dv9|H@tOmIUJJ!|IvpB>?}S5r+4eu z!)xbs4qsdNkLqH+3GH%vQO9E^v;yuAI^UsZ^ITc}h$vR_ITH1*&hW2j(x6Kd3=@Mr zS`=E+g{eK^+VraJ1o;1+oz=ZjJ>jCBdOkn3X1jP1%Gqr5D=i+K((V8*{X>}N*uiUB z>DRo5F6-V5&ubUJv#%^^4vyEz#0RCdSGyHBviqFQ@~^W6M;=USz!PZWV=fOnBon{!!Hbmh2PBEv0K2031#M-JR~LahdJ1VB zq?qNrL)(qm_Ky<{4%^yMnm|;wVBja=)GE1ZhIl~Z4FssXrdUJl7B$xFt0TBI(>b8r z8YwEV^NVnVKM3V>InGmm1J<+GIx&yf9kIt`>9$r~`l9Dh*3@y#Xl3mEsrB%dCQPQa z-D*&iDHdL7+0>*8aX4GljoF{gzotQ3t?)0N0xTwYXN%x(PQ?#|$X7fCTlB?Eu0C53 zt-Jq{PiAn=g1Dg?6g7W&8C_< zmeOJqn5+saY{rj`9dEnWw=)olb^ z+Q~SkZ*Rll5nT`63z6%@Y0^}3Ff)#^eYY0@QcGV5M|ey5z?aIO^iqY;OsTMg^yojlu?)@ANAp{@L)o;N`M>E(_xM6m`7%M(exj(il zTmmVy95y$5SajU!H=qeK9HNNX%6~F@dxZ`RKj?%*_-FN>@YtOuryDr`a6@4y4BxZ& zd@fwM_j8hWiA47tnQrL3rdo^A*_XokkJjZ<*iwxEfRqT zag@-k;M;b8tBkDV!ZAt=x_%M(HFmMmlAbZNT>ykrWhXqMdNDBo_H3pQw2X;(e$U26 z#IJC+4PEASmY-!uu#L&r9ZI^~4k5HhJ5;YuZ-!I4Oz#~%i3fjrG~POSxH~-c(16a^ z_gUV~=o!67Psg+GpLj%4^shZS42&e=r?R zYey~H{@*;m63%PIeq^Z2&hWqZ)}na06-G5t(4`GF2=>6RNvB_v7T`IjG*a^VHM3#- zks}itrc#zM23%d1Md4tj<|2}!#3m*8GK&FFr~;0F$}jN}Tm~o4QC; zgvI@uBzZ*_3@$BeGLS_sVT!2roABjD*3D(v_YjfRqI^Swr5J<>k&Gx(0WS(=<+8BJ zPz#^?Y%_cGTbtcIJtIfuPXVBM69pg1;k#wj?FoS9vy$SGe}u%oxpejF^47+Ry1Vkp zH$3;IKv}D{74ll|9c@<05=zWoe`uiND*%*hgmxt+i`oVRiulco8{vhstKoBxY8#;- zud33|YD+u9EnD3SMc9fJ_H1csB;qOo%%sTj8S4Vi4hE-v2au+`cEXdfpv0Appa~0% z4ane`k7yD!d|XsX_*Xxi(L1o+;gxeM;je!@WxO5gSK}-Mut}G)iZ|MV#v}j^hL~Id zKb)465gI#FJglKK;F3zF6RTHr1@xDrIo?T4W-(& z@=uy5a(Ua(u5^~AxJ8Uj5VL38Et1j}@Fvo;mw0yLf%gZo%~1@=Ksyr!&cer9B*>&G zq#^@@FQZ{r{4eXNrwe)x@SdI?ZKdtf7FG?uwH0d9CVK(gu6#u^wurHu)j+A^=+vNk zw{+Bmk)>7mB7Ca>Gk9yh3q+X#7-Lk@Wv9LNHZg;Y#**cNQ9cOJ2EyXI+w+FhCjz=& z`MdDxGk*~#W-o;S4bBf89?>&fy0pvkk_aVG`Az`K_(T-=iCILkbIrJolp#fYMcv0B zeD>TQPyY4mCUWJqaa&LRZED4T?&_s5rAdJK**QBe&3%9c&}&Dk@szM(sl z)Mh|Mm%_2y3~Sg?$x+IaI_o~H4JdDDC4OB(_L$207oHroTk5A~S5=I=B<%NxNiDkk zMz_+l;PUAY>sdUlfPYwm_n`2Q96na??>I&o)=pPmeoyM@2Ni*-c$Ogn0?S_v$SFkDi;60N$x{^~>5_z=e40R(8Jr*@^HuJ;nEegyNs*{QVnR zxu=eSiv^-L-(3zDFLj5tN4LVS^)xiY>1SVA)OP#@^!<#zRO7nhP z6CJ!_@S=7hye+p0?T#RRYq!9q+_kZ5ipJ^_?x~nXh)A-}e40VR7;UlWki3LeAhf!nBi9Bo7yn?rA06oJK&B)hoK zANfElV8bRQp2ju$MM~KE#2Hv_NqtS{wq~?4HmJ8;Rx}#of|-HdZViw%a1bN4QB7yO zHZ;4-O|P5>Q;cblRto>Zs|al%hfd5H!=Z>SIFen=lNyDQqP_hZJ`&f4T>$WrvT$3K z9Pm03Gxx#Ah#zIgI#MK&KQUY``~#QMf!&qIi_T;L z;oj1vf9D?lTG%}NfLK@=f*T^^yl85GH95yINQz122j_BZ;9*@i&w|ic29;3iv%G9l z%ElGggh%a?-w6>1d6XX?XHe^b!$tLzaFhibyU0!Ec)=g^2+}$``BRoO&e_m_X;YU1 zvIn$N5^+zr7D9A^7U%7c=_dUX+OFR%*Z~Q+eLDC4wgl^w>_XKF{}T@kg}aVw?5SKy{M;Qg zJ6#dRXLXzYM-=BvXBQ;QkB09{kbgz-JpZb;y6e~zH}=1Obv1nQ(IMTgzYs3!o&e6& zKXUJo#(=A~3+lKQg6`J^f#)u-+L`<31jmZ~fYP=u{mdInVNpUpC2RKGIQaofIobfl zTjEj7T_{V++6&AvzuXxtjf#!K)Yr>$0&3zlTm^6$4`pmde4(BU4R(jOE-YyRV8|{w zeCXZ*-9Mmv04UZ3v0yQ*wV8%FA&t%{ZIlfhpd)!CutM9`a5~M~sf}UWzre7&L5Wv? zr-D8(GJ5RM3B3d`sX#;kQRr@#@#a^R*5~F=&;h4_66K`|J=R*a7b~-~*EYuQyuY)$ zBwQh=T81m$h1Dw`rL7rdf_4hjDGS1Tqk&%|e8fdtO=H8#Jr#Unq*GhkJHlI+*1~<- zu0*5E8K^@`-Qm(ScR<%yk#6DegwzLX*|p8+EPlu7TmK89Y;dfUG+-nRr3wFJDjjKJ z27Eg_+8Ms}^I7$s>g*H&ogj@qv)jkCJ@Ye<4cVL7fBoax@Yee)>cBM9E1omK(q)KJ z&Z|+h0itlyJ{BFkdB<+pw$!P8GBP0E{9@-(q@_s%`QL7pQetGmYwXVRy~gFd{-DC| zHQs~ZZw*f=d~KWr*lRj(g>b1l*9=G8tsUvJI?$&2=1moJK_mSEszK8gJzMz|o%PaA zabuErMbgb7t;VrZMe*az?2)l$4S*5-;?cHP-~a$107*naRB^9rQgh+IXxB2DY`|DA z(hR0u#-@e;M30~M_cY;LmsEEI(9Ly-CjHiq7Y(BVC=YE#FTqDastin+^`+_XTR;5Y z!oz2u3Ei8kVf^Sw7#`8Ne-peStc?u{LS>*Mff(sbH0w8Z8I<(Yuo9Q$31BQ++PQx% ziVbt_U&24a9vA;DE{1vC_&=qK|7K^W!uaa?4~EyYOW>$*j1Bi_ zSHW^Pt8wlZo*WM2YRkT>o9>r%^Zx}2w3jAV!WFIV|GU4R32*7_KJ5i#Kc3$kQ2jV3 zTGyE2QMyUPDZLtC#}J;K3m*|3=dOxQdBZZENu~5r{&;G8MXvx*#Yl(cc}#+Qql!hu zCtuw4|7Y*LgDpRV4Sz2$|RqJ)F?OKFPz z{>$aRBWV7H*Wr8z}LzJrI8k82BcZWKyN4@t+(Gn`BN( zlE+W#2eyf!pJokZvd#7^j-R2P$Z``g9H@$ znLl4ym`FIC?$9Q#qkq~M0K7fQ0&z?VNPN;tlF$Aqy_LuZs{{7|KRd;oK3*SlMp|NE zIteL#-lka&Ci+xdl}h2iepWad1v?*=kD}sa12)O3FJpD70KG4w^^3Urh%R%TiOiO?AK6NY5yOpq43g25fiqbLQ6YVmQc7op&k*2_x2{cJ= z1f;>FM)F&Zr%aI$`+TA@y~84AINgoCgyj#o$uel)%yJ3jv<@jF*mzkzjIW1b&l-=L7AXmIf1HJ3 z_<;{U;u+ze`O-fv4T1V$k2Nlf3^X2uyh}9T=O&w%mGillFf@ zAdgzhwRH@1$Z{p|d=KDl8e?SGSIGcN;~Vl>%pxo!-V^W~axA7)_-y-{-l5&zRXqgJ3%mkQnJ8ei!o@$fPmQ}kB?f@gh?wQCP<2p@kJU!Nvu9%6bbS?_F<8$ow=IX*4y=?wm3x^#Q!>%D$+ zi$=9CcBK%?4(L*G+@Ib?CVVm2OPQ4*MvB20l!*G-8&l!#&2i?1OI|G|0QcK_B?iRA zT4>_nE%aTQJ3Ic1WVIlmSs29++_F3&fb^||L5OzX|YKT2a;*V`iw!z z{V@(SiwO8wJQii;qd(qXEZ+o%FX%Z4^VrznEz@|td)+P*T+!r9$8t7SONUhywbV1V zPwMzisDFok5iCGA*fkyhpTkdFHGmGjGgK1u|yGY^ZVZm4}b8z&^X*3YDHwU>E3^p ziRLTZC;|*1!JX*|=EonhNH9w6xbb&W7@qYfp2zig9`4_49*&p$ zv8w?um{z2BqKvduU6!Eo`}&(MZ1)=#-^eN@;%MXe-2 zxJ%zGV!u}fJFk69jmCMiG}`alR2}Z!*%)?huG8tb#Q1fW9ZmNqqzLb3PY4GjlD}_T zoxN8t)e+&q&Un8ay&;_JuNE=h(jdit5|4L-n0}4IMx|U2f}3YYA!sMm5GQqyezh0@ zh|s_N@u>M9+FfS{D@RWchqD*PC1Fq=c1i&t_w2`Xa=l87$%`UtkDQdkIw`r{EQ0rw ztE1uLbHmbSG97;L?tp2yr%%v3TqgnT0RzGg@D&mdhS+~e@n3T9pBFbEw6EwY0M`RH z=(<9ki2mkA-St=A^)LVcYk#n~@zLRvoVz_derf(vQztPB`z(IEa!{))S&dRKSS#YZ zTJ{Dh?z^Tr8m7#o#`3zgHDbE5B$1wFtf*<&zCp==VnZOYtxf#I33RU11D6HuKd zkbM&2di%6QsS?g%42+eL9e9k}xogByerA7)o&3Ajf9-TLcxgGL@W}#90JDIVjY4J` z7NT5|U0O`F(N(4Q6J!$W#g_UFfj!y9_Sp34R;?mlSftiK>x&0Q`KxW)6D<>PUi-(Yo^~EPGoq{qI+p(2SQ8I+}AaA-V8FOI) z5JI!7D)Gro7!&~|UWmN1@$Hp#6U<>w$hfo1W|=WX{n;;RM+1>mYT?}G`Py@Qd7HcW zardF2$5gRwBSoVv~$a(O0sWE)zjCb>(Py?43Ug8@kWyTAofd zSG9;%uT>puwXizIrhn=b%ze~%Zlf&+dE%EWajaRfg~*TZ2|9bBI zYY#vIWSxhG!vxy?J32#8Z+{pb(kUU-wG1EsdD|!1Sh)WoN6;uNzNc}2kHnh!o|FedJ}de!rx}lz{gMX;iGgALPBw20*LOV= zrdzgXUy!K{5+!3oHf88JnhOuJ6#Ci$fJaHOOg$3h^HbRgtD>;PPbGQMCwQWcy-KC< zLYk*q2NheS*bSn*RyvDNYJB$UR9G$Po_qE*ih!<`c6z;ZG*G64i?Z<0zRIv=U9H-` zENqnscvD@K5tDVbQNbQ%s8!$TmR_ViVhorFza|EFRcOh_fDTMV@<%xzUF<#Gl?NA; zO>@%RqvrsGKzqOY&PuORt4{D&>v`(u-sle}qCnG%Sp@dqz0@nBxY;BRXj=M($K(<~E|+X-UEei^Y{Y=NfeArZAu)$J@Ky2W zy0NkD4t-&iY}rs79=oSO5*0PN1~Dc*9aG@}=}ovKX^G8}te`*a-(DNG>lwu3 zXNRorp1Qx;u3vOZVPTzKwIVa-lW5dV%DY$XF{tYlNUwqm&nq4~iF}Nk7~khvoAW6| z0tRce!w~i~%Eu-vcNcuqjT~jBHnT=R45qH{#Wp(c+`n=3-MRRG+L+U23VYqmlvtFVy%&3v-nV3&7~;919KjUp=1b0CAqiDN zFCd)PM&0*+a8FIxrHKN=B*s%ICp5|O+=)+)5Yka`ogz_7$q@0)2Wb~-(lM?Cj>|&R z7K>-|NoKG+(O(R9O8f&T!)1xYe^NA+EyB=r!R(o55Rubjs;Pnv5l<%8NfT|oHpA<5 z*X^Pd!SFQT330AB>v7S{LwG9gjUr#Vr0HyE8HN{C$!e8ufTmK zbLt-4aAYcNl1^4Dv}zbgVX0rIJjjg>@xrC~vRt)y8dxa=5S5?bsi7GV|_ zdl7(FFe+mp?XzA!|E^#@%LNrh&6!KsqDJH2cyh1WP9}Ed9p3dmb9F4N)#+WMhz9)F zkZ%yv_|(-h6U{|80LJHH=F>P|Mfet$gy#|1cFd-kj*7!LBGHxpU26LqlOct2>nuyf z&oN5Z00Ej9>Ws$TFQaPI?9^WJdZe!YLoD-qkq!a3GA{0NlJQ3Dw+&*@YCnU=hr%Lb4 zmxZSfmxqB77zGt}g1&cKgE9P&b6nk4BLcO;#P_#vs0)oE81UPphwS-LNL?F^(q5T)S;AlRIpL3$LWl^#s zG9T(=;}qha>9tJzPl`bs^6Xx%_K~#Zq_|L{N`xfCkPhd12Pbr2KaN~rdl#TA^j)q> zJaf1y+`G5It~i|5-t&N@PfG({%NDX`dOE*Z%DF2 z_2yj?_>m!_HXEJ@8$y*mg@{B!hpqr1y)i6C%PgaWDN{4SlQ>CtP2jsLKQ(nvn~--L zxk-4sFeL6IMmk@*cd@T$WfcZ;9*MO{k`lEoYvse!ZVY9n3Vt*#KTj>|oonJKy>s#Z ztT1P+`fmokCKLVLLnwTk%P^>mn;1Z^Dl~ILER4MZZtvC!uB`XnI@RInzh+JBC_SO; z*J@&gupQGR;S)n%?v|cEzNOIk(nM{VWmOR<84MLndRkNz&0>1qd4N{d!9-SArx`jw zFSA^8T4B;KCS))!Y;V>U7I!qe{`X&P4}bD}Px!B&Z3_oBSBHQ9Lce;97O>N!;tWqp ztF4}^(M0>vrSb6Ze%c$Z>DihJt8U8y#s zXXcNjT$<(BRvKn8c*Xn{gR{4fe;1RsSX|~TKk?7bUs-#xbo2Q|;=fcZpIbDiD}QTG zbs9F)Y_8edvk8ar;7#p^_tb?C&W`C#_%SKQiZH!z6uSZdJP&7&W#waIE`QsYmqP1P z^j~iME*I6Av7xZ_?QeyBXI~EW6CXm$LKqSMnAGjW;fHa*=*szn6F-daj+2` zVFpE5_K29jbY10EJ@DE{pTzG+FX_c9F$%aQ1K~<+ehh&z%}uWD-=s1Dlo;B~UMqq4 z&-lgMJeJ@nFdauZ?>TJ{@_RPd+I5K4t%IhM;EIUtOm8zBYeizBGoez~1Ey7flyQsN zhwB&@r678XUNJZ*?fSg7a+gl(`}Bk$jF4Y>v^89iRKpKn?iG_pckh)U^C#u-vQS45 z_V4QY168rCZr`p2WHeHL5vO}aW zhSWy34+W?)u)3AKPsD$pbb~Q1^vnLxU5)ls;tOvN7zWwBtBo%ugwer)REl40CB?_& zYMs5TyTBWJ94i(v{>d9l9$RsfzCt9=CzC2?%?4)eiZQLqFR!d`qgP9YhoMXn$fWRB zkWw-3AoDo`VDXJbgJ*y0{*zOqBYopjlM~|=2~V}VCm2nJ>Vo4mujtHaUrK^pA!?1`Qp0`tfvBwmzdDAN-F)6z=i zLlea_Zdar@S!F%&l*zBX=(iGojYFOQDprqn`p=4?K-+MtC^ivUYf~p!iXfc8L^<-< zSXp>b@6dj9Wjy>(zq300Uq9&y&pyy#@Lo9~ldb1N*>=>~w;hhxrlk{XxxUf(y%Gi!#Q7IM_nSP&b%dCAt0E$FfIt<$G zKOVF6dMI57^r>3`w{(un3t6cabvO*0tR3v!y*x|{QfGJb1wqSk7Ms)NgJ+wuOd;)l zfA)w90Gd#2Po)9vOPg(mVd$#T5T|Wxsut0&Q$7(FzW;(4fxvKMQdF8h7dAg>)2YrV z_Hb;392f(aLD|9I+V4U#Bo26bT>q{RW-~e}tv~s*@X+xeg!aKM9n9;#bbF)LU!?PF z#ZGf#-J$}iKiVT#eQ{m41%$!w3yDQg+o(+|Q1l1k->M%v0FVYC?vzMj-TNPt(!c($ zo1s&h|A$3<(VYpVxDcc;0&rsrzn)zT&El1-wj8c8mRDmbe_|2l@nWi+pP?>KaPuQP z;?p&C24QJS!KN&T@bh((&CB!T>;B}2!~p3|>fV3Xw#UUpX;%b~F&kG!%`=QC0NR~= z0XL`ID8l3Ycla?7+uZFQ)0e03wn|EKM*EkGIt>!`=hlY_{T(})=PqCZF{vb3F;)ikGnDEnve#NF%XHJ^5agxreBMg z@yG2a{vI}|%4b}lwhWF~p!<&Py_i6LzjLTo$oT8GU{f>Qb~nIl2;?>A1EAH;HM18 zi#kJB!bM%5`0b~qcR~02Z%T6FFP`g?6oweI67xUxi4YTVUwTvrRy!N)$?BKhl~TmZ zQKaAMl|tF%Euh-l_lXwhQd-8*PPJu?B!gdizfWmKCFK#79ePO?3sUdT8$goGj}^VBF!)|vVjSS;^i@N@CRa4MfDuWe{(-PAVJdzz;JnL2>( zNaP~l!M4vC0E=rp?={&k_NkfiiOI>)p}va7)-}cwTQFP)HGhJoZ18|;15DYl9e{{s zg0l?*6Q+nx77cr^FPSXq=5YY(v|QwxUGvcu0ec|R< z_!mDM36Dv>6pT-M=-~Dct+GY0hA5 zQ;zLHo7 zqFerp>7yiKPsSR6Y!vX)KF0jv6u&_)_+y(n=Bsj@?oCMqc*;aW*=+ZUiFr($&VEh< zwP`l7XMh(}bRLt_cZ)^h7392RXI5%!seK>x7Gf3}FAHm~G?iCB2#>t`7h!YP1rcx( z0bbRn6Hwjzw>o7_kJW2LzjX>hPU}0d=))d>0Gc%M=-?k|U#=1poN zFR|h&qG!v=^pwUJ1RR7khVffp%e{B;TO^WQqm$un>nqLOEV2E&wsAVI@pX1I?3EJX zM?@6D18S5+CO8a^)=88fEN1lnyc7=0)}_+$LTPMKe!-+kb^Xo<2<7OOIh#0NY zX*5cnn;NRMjV%i<OU{dO@1*q0nRIVvS`HDS-DX+4Vzzc4>n4d!GH+rYKh|4 z8^Z*h2-o$3z$RUDxFRM35~h#e+oUH9N5e5mlyXAfqU!*_!+=?=CiN>-%MHDL&@It? zba!zbVV(4~?A~0XIMd;huJUsIgE>S3BH{Syq449^d%~0VHAxykhkbemk(U#I8TT`q zH^5sCu4^EMa!pS(u3w|)872CU^c;5;##)Fwrqx_1m8vc44y+j(JanffI5iT@qB)p9is8WIGQU$CJ}G5PK!&Y|AwHA zC1p!5&gSm^nWPqh$&d+B>ywFL^=L9^lo(lyID6w-JuY`mYVjyG5FJvIu{-shD|RN@ zidbzjOeT;NV5aU;qMtx27UPv`@nS96q$F#y+*sWKn^2ntl$1AbYs47&_4{kX4;Ap! z_lCkBJ<}WxOXKZ&-Bm*$z(ad$!lqR$wB-_un+!+;oX{fOC2_7x9hzhXkM-Y)|Ln$? zeDW5yWRe4eIDZN|A`vh7M%Qc8?vMZgAOJ~3K~&s-^WsvVWfN7Jkry9p5cFdZgyWgc@- zof@ew4D*pm3ux|RkB;=x`w$CC`;8}>b=PzvoH(buxP;3OkW5zDagm+lEEu?03Qe&F zDvWar-6nA*#ERlpnD2rjDbYgXCGaN(JHx$ieLL*F{9b4%8w>62P14J!d;d_g1}xc7 zJ7~3&F#?iclVnR~XvD44D$VS?S$oRrMf5j|_;1p;2I5~CNc7mKyxyKL*l{!T_4G*e zUvH$_o$A4+sW(yfAzi)XbRT_seS%^_!Hod$qhI0w4&_UYsy7_9{&R zXo;tnm1*!Z{;9)JQJA{MZ{qxneeV9JbhP#3SPJUe66llN_oR*H;WVP)dEMiUahNa} zFub^gDOW>-7X&TO_4&1elp$cT1W(CmFZO(!R@a2z`tqu1X!sv~ z-YZ;Y!cFuSs2}XwT5DIWx+PI@Xm?{ce+>rfgrqZ&-T)73S^NGBN;AT7OxG!fB?dC2 zJ_KXvTIWRAB!az78vbGWxc&ijK6Hsuz>|el50)9Th?fIk9=P#!Ld6PG>g*8v?;IZv zUwQwWv(i4hF!&oh0R~no1WsgB|SDjl2iqxlNm^AcU^_}De0n8H@-1<==KJCDVUQijvtupIC%XZg3xeUMF3u!9F3x4Q zxQtB=)0#L#IHspn&9RzB zX4jluaIF25Af`zyst>L~PKjlW7+#eY*GKo&g|9zSZ>J%HnrspGdikT_uu-D@XRk{! ziY9FCkTN)EDwz>r`YioR)7u<|c_+!84sK4(O8O2;A=N7%jD+3N1m4*{ z9=i2R6!RBhNyOxfpLr5s(6}C!5@Jcv>{-pCe>#6M6>MXzCtfzp)8Xeo{7BBu$idVQ@h@VQ@ywHOVFV@sEss2rdL2@Wa&a1rZ~TKrCg~u>>M}+s z_{-cUF9>!Hr+jU;^aeZ^-{Q$xp-o|(-m-_;(Jy6r+w=;-7M*~9B1z4z-f_d5x}k6K z@&H#|A^y254?(*_BKcpD2>xmvXcT^tE#)kb7lkZlfuBn%x4o5ZBiV+vuf zU{-6>`0~4A0O-0X%+g(3Yr@@<;y{rh%K4s`$p1h5+8Qxh%EF)h?R80Bh-#OiJwJh2 zqe*gDedo3JBz~c?RqGJ0MknufWyE4;|1dwOC1BdB{*mlBu&Ykj3F_=+2NbsQgzJRr z2ECpz02+CMQTtc&`@(&V;rp-FgzI|J5M+7jAWr$V3pELV6JlCy(DQ#Z47w$D=tYLd z4m5_7Vg`?(2r!w8Y;Ugq0Lf2k@2(MB`PgQOR#2rB4oV_K{KZO*ZGXNG}$v(Gazq%i!E;7*DT^3pL3xZl|@?aP&*8n3A z!6gD@ap{rBQ%zNE*d|dXt^%ylUC&`HGW8m?Rk}n+K8rFo*z;4^M3s0g1|AcO8z=tF zU8EA3<`ZUctQ=oKlprPiH4zhs(OozXvEgBod}Mb`xOZEXPVq;=`{zcbWwk>0=4Qgb z{QF+Lg{@~%#2mS)r&j*-g+Ajlk7%Jsp-rV`z4ILdwva?6iY$`RVWEpaVi8dnmbYT9MBQdHbG~Jv-%|Q$ z7RD?)gE>JyPYOWZ>0D`1RBM{oI7Nb9gi!hMI|H_n?v+MvW+li^X0l=@Gt@bAU$Oq9 zpwHaQ*(Y*St_mSk=ZrjmQCMpWLGa2FpoOrt*u6$K{ z32<{nW{z#7W0;2$4Lf}$_9Nw{x~G||xJrP={}vJd^(g(*){p=mTOS?@Bi&t6`gbGr z^>v4Verf%eC^NzSg9%V*2y^3WgZsIg@NAh=Ts>j(b$^e`*Zqis-TnCT11It$jNLnV z`Yv9@wn$kR^09P?{=)!(p^=5_akKd-iW%~O_~+jL(cRC4;kzCSk36tJPc%Y^PlqQY zQjG$*3pxoij5PYI@yw7k;DMw-?cmB*Ca87f@C_rg2^_$p))O z;RR90D+BQwg8&If$UThjZL)J0ebD-$rL}0eKS~Dk09{(ftjTm1^cesbk$Rx}TvRy! zaqVDiY%<)V`}M#6M7x+O6XDHcL%N2Eqyt?VhUc_BTgrhB^H-aQ?HyvgtX3U9toGR; zcfE+@R$bA=fD6QKyBIR()SGOnl3yu9pFsb?bxCbNM|o0sq(O|(CL&g^l<2gKro`Cj zlf=#|VjSGNyDmJquhHs)6aE%m3)m&b$ffI}Qclea0NTF_&z&1#mehpKbufE^>1}|W z6Kf;tIN-kjGkP+xL46k-Z%VrLtn?DlM?uSsaHcmFny`O!m6WhlgfH%|4m-u+h5Oy6bY;?hi-A#qU!@o%T%)kJ zTJ?q7&lCbU%Ik}xPeD01K5^^pObc@*#be=h;y=cUFfH?i{;`!~p^-nEc+}C-O?Id* z9m----YUZ1abP4ZuTC7&t^I!bHD6GkMIgYCT151Mj6Qp3W-412GKh=L+B_D4h^VrQ z*D_xj;hInaH4-Vc=e<;^H99q7j*4RYXot76nd65S3|0}!i35S3G*TUKHjp3K>Z?spE26cea zB(Z!%_tC)4Nh$lPYR5oshLIyN!9_Q6+{?Wb~Dp z#{X)$r>(!J@90n~b{+LB5wFxm+|NL!C%9@8WyGEBleCjcyz`#Z6AIS%_$F<@{>tiE zei%gLVQg@{VXX+@!BOoqrC+36`%VhBLDwZVidk||V(JjqC`H7$z9w_15jlB(^pW=P z)yG@H10r^jVtx8>vu)?jTpbNV95NoN>{=c#H4vrZHCx?tB8Dva}1Ii zoqDASJpgO9_eHOX8Bi)>Vo~^89)@%ZjzkC7W$iA#(s=X2dK(sV2vaNW>E5mN;Y*LV zhc`dy52vL}k!SzxIYWyfXlYd|jo`4aq%q2M!p~l@l%cLSh>+i})Bjra!`=b zq=Pk0LjPseH7#prYO8C59;#4eGUtaq`^&>bVRwxAoB^=-rlPU4KOoFZ_gxG)vyr_VNtaZnlV-XKLW5}DGPu8oxzGTA4R52u%=EwBqo9LxM zm_HTdc_A?xi36o&;$+iazyxrp@Lze!M3IViE+_bDBDZ_m+}CG3`B=nU$WodXsVQGq z7DW6jJDYcvZgKgk-bhev^NF{ruIM;cm?bkLb5d&KLtWvCSHBtVy6{e@FP{+c->mn# zQTnI))&F!okX^Ms%dpBse?d=h%Ei-~CP$U1oU%qePlwXK27P(ThNDiH-;x=h>FW#q zy7%9U*njVU6pl@r1RLdm3}Sgp$RW!s2S1`ySYCJ2L$b!oFAu)_Fom$(zc4K8j~#r- zhxE`YzC9sNhsoFNvRa;`fo9?KACrY!%x#hM2f`nQ!OivS!+}5eov{7kyTd&*DA&_n zd+jIcP^2h>8}aHfPVSWv2PoJfa;vnr*txML963E=r^VNFlG-DYbq*pRt{~m?Z{RzcqsPd#@rG|RFsWZ2z{OWldZWu5G1fCl}4EL_arT2P(lNeluZ}~iVl%Q zoiJt~9`#~k*tVuN>=dH}g@z5fzQDf|=SRc4$ND7>Um3pqa7%ddP?OcupZ}!86x<=o zo*h_r$6p!l*LBOoB1kdhh15!qPPXsbQX3w)yD4lHBjNi}jCWZ|?Ec_a*61F-Bx_V5 z&52Sx(oLxDkLU`;&)(<@kL#p+Sj2ya+6J5%CZ!D8>hr9qS~;!PATQQ%zhI z{n`_HX-)>F&|2vV;7Y(d$6ykuJrs!_Z8Ry1s>l=x(oZ?4g82cnh}Q=2b97+pV2qio zv@l1|`SA3EP2o!-`VEfuvzsL)@=w0LR?@sv#@P5(F-tJ?N%9|7zr0&|2T+2zONy+! z)$fj<8nhPzOxiY3@9$&y9B;=ASLb^c(*%_GZS$#`MhUs4m78P<#b=M*eBOCxZeYD{5@e zBoKwE4KAYqeaV<3w>XY00+WT9{^6=l{P(Pvw$bGN8PAt6?J%+WsKgo>2TCNnZBPhJ zqHt=&#t{#@$HhvmiCW{#MwFCp*uHHANWVZiRmRZ4p<3n*euXLVQa1&RK%c(0e{)`MHB!}ISChyVG{ zyTTU_)Q7Jgst*6^XS!Ra_=sIu-U)oGe%V2dfH*U9%q zErAq23iIhT1(RAl@6=UuM zgQY{8JLL+XTQq|#T!vECT{OW0JkvHSoUj&+eJM0dj)X?;{WsPcArTjlm?Agjvo_!t>kUZ0Rv4~0 z@|K546qeOV+#li}34j{e^?aM{)KTrOC;$3yc7(1@DgKiJz=1(&AlLSW)^Wl=OZ+?b z5wrZVU_DlPfiU%aK0R<6gu47j0_ z<<-*ieoA8dWuiEC>lD97Pv^a+J;sO*7_`ljvbIV)fxaost|>k*2TZcJkfA&r2Jl=n zOa<;~Q(}m1nw&ln&xavAW0*-85QvZ3+xkrsmoXjxDOj~u2Bjy%*V0QGz{;+U7Y`u} zitSBoqe5K6M;0RL$DYuxALw+swXsHcis2z9Axh}_bh`iWLFqEkMzc$L1$J(!4`2I2 zn9oeg`5;472 z41+SkrM_PMpfCK@&$^Z0WcX*lzcD;|PfhsZ{Vfvvue9g!_H3>Wt5na0hSG1+Dfk&_ z%YXm$aF|iY9~2XSeQ|7oTndvwO*UHg(MFRe`vxU-LFBu)*My(E-X~(7c8xDFeDKMz zDFAGlD2~_xs0GU+X26Fra<}LB2=N^ff39#nS^)DEPyd`$K2n zm@!duql}u6QNA!=I`rJ1U4amjsa}kTn|f6MK_A5Yk%qV`X^I#U@5Idbz}S@D%B`T|aGacHJlX7puQ29H zZ1fnAz|G~FhfK~vM6H# zfwabIGSaz)!DRDeYfCN%3n@ANNS4eVY##GOxiT=Y7H+HxiGOg2`3N8dry}i}1C-7m z1vLX~IPJYsumX|4S;Rf3|CpGsID#7bCoYcb$ty8J#8|%3Um5P-uIF0B1o-VQG=^{f zv^PBW-mu!=ORK5Jtr1l6*NOj(r`3V}r2QsVN?cDO5QoLW8$*R#0)H;z-*QReX7XHu zHJ!ATHq&%Vfb{7ni9K{-`L4tmTv$$vh_wR5zvaf5SOG&{C}rrDa|D-4_Nn?8!>^d% zVv$-*Kbs47whwaZ@5ZM!cQ5H%s-RGmnk3nx*@lXIaVLec=|+Me z(|qJF!$Ti_KQs?^hdN1?HR;}em5JutcGmJwYzZXR&Rji#o}tJW3#}PB$`-=OYXyq_ z(D>h&5dTPSfa18w+M(evq?7;dn>Ry$f3J7}<3_yF4g3caAX_5KCgbOBd6`MNkhiXT z&-wzhFs(<*=I4HVflV01KVP~nFxaj8jvc?O@jOTiAv1AzE z=&4d%#$hD*O zA?i^kH>$hm+%j(jv=ctfCKz;~DOd;jEc_&@&qYIy3Q*05P^b4A4OgVF)83q_0~Xg92? z32R!b!>O}m#siA^_H7fRPKG{uL)UYUoEi;R zJ0*6n4XXEF>l>L)458lADBWGUj&fSh2Od8sCDoFE*s(rdE4iQ-1-|oKm-G%)hJW;{ zYb7Z$5q|KCp3prYT>z?wk9Ep_RXQvn%{Pc4(l7sUF$b*8)%HkTV300Zul`;yi347| zuqzBg%DNPrZ|jDP$U>9MU&%rT{-mKiTq7~&N^~U&0ZPAA#I!NIz?O-{v-w!S=o#~w zqzHM@Dypk1Ynpbnhw!?PwwD0N)PM5>&4YIPIX-6qEWS>l%7aD zZJo5BDo(dF#;$78WFqb(ZD3`=x|NA4u;*yq0lXX-=L!6jKoLi+q;SO)MZeLTbR{%80 z3HYh2<6?|dhzqMH{rm`mgsD;HiSZ4vyW=!3}1%{vKZ9VjK9pW>8cv)s>IO~X3jCdJV_aCuo|xAJqcnRw&n2}^uQJvW0OCY-$Z zPI%_XcfzLb3p!z&2`!RFtI?@)T!aKgb!x38Ys?-${g=b4TXrM#_@p>1F8xVe}muqS178`Mf{KV>fXPI|Gu7HiT>*}S{nhHmi$=WoY0Q>M}K)6eDavf zP{l&Ue%W}Q&c6;j8^`U1VUCx>hQx3(19(}x!v_}eosciKY!}Oibog`fKcEV~y8jEI zVgD21&2!b^=O;QXY^w;`i`o+m=s*F5eZ3OT=X8_`;?$cv`2CWsgfBlPKt`en7MlA{ zUepP{Hd~0rW8w*Zv`4Rq6)!qKZoL?w zvi;sKtqLEW9TrhJZh8#1Ne==8=ihzrT6p52W)bQQIz%eBQ~O$dAtGxb=o15~>%=JF zRR90^%WG0vR~7yXY05{!k{2(KO<>&e3Kd`Ki)#UB@yAdzbZZDn1YDkfyEklJUnN4i z-ts{+{x9g?_8b5JAOJ~3K~$t1?^{2(A)Quw2|RN*G;W^JsVo049Q($zg&KMKx#q>a5z(u`Q)u{I66)T<&yjNE$Hm<7) z&%M$cj-MISRH19I+A~jR4~=P&^Z+kc{Or{}wd17bFV$JvgQFdM4Ke=8NjU?J|*SGCiSJ}{9H96Ex*8F@r0Z2p# z+Z|{=X8V-99xr*)u*qHqu|+z{(1Ld~QP*w$43wv=s@p#R62Z6d3cO z6h#a~@~|e4J`MEMB9K>U0l-|5SQby*@s6o&ntVJKfw2%TCW%B~e^zwcWXlg>w?~Y7^JG zUK_Ac-6wF#2&4dd#QkJ~zE7wBha?HHcauc)w8&r5o4Dt1Y7rOryD}dY%g{H!39|O_ zK47h)Kc37sc#4rSI}{d0?kJJPF4mM;(6_`6elhn5zIe^wlB{oAphbq%is4Fqm#+}< z?;8W!&->YmAzA>4Ub+%yrQm=|w%pU zL<}HCUzk1fQ*QH1VZBCWE7&Q!yBG>i{O9KK{EB1#oma{!N#b*L(RHI(=AO>JF#>-n ziAT>Pq&;2|n3qqU!y=}C<_Jn4>g06bT6p%gZ-(8MKhz1@q=^4UX(E^Ce^QrxtWA`H zx=*Xvsy)ue-U40*Qn(*6%Jtk^S-nn2IsLEGSEtqn2+sBBaG37z3w@^auTxt82aL$D z``b$E#J>~E4wnL8&(&A7XTyn;T`#cP{6>I`r^QaX!nF8f+&>#1IN)UE)0Z7Ob~d;k zU)I#%M|#pg$ioCEW;`u%-A+7qcOrko$u&E}jm=Mms{R)33lRB^Bjm(cMD-OxOfjDS zv$;1ZJa5t4xK=pr8V^I1gZ?u{P=ZHho*yFIjIp#8X><_6$WFgX$A;XN&WL^j5ZR}n zK>S14lcxwV`AE9N1b6?-xN`upFM9(-bc3W7E=via_CoDahR%ESUwO1y zOp1x{Cwdj)zxv&cp;3e)yn{de{>^aZhMtI4++TXQSxk?K@Vyti^>kiSxK}6grW{nr z(wAUlpir8!Ik6A%&&fDS6W8k`zDuXj?K*j<+Nc-yT!T`o_pu07GpgIC4>uV@<>hyK zP4WO9BoYXmT*GAHZaw2=l?eJ~?O##g_qLSm?bUUR9eS>`M!E*-l`k(dT)H}~J>0nN z;n$@K0P97d|NPy4J;65`506YLg7%303p{f3U#wpRsZH#!wKEdIFmk!3A(ZT7zh_Xr zPEoAwRKPXu)$!Vc+8)LQ*ByE#b%R92j!ku;TM{C#yx%A3i4iFWEHfrduNX;pZL0|< z&J5`wO669EBUhhi!3~B5%p~%D{n$V_a$+EqsowFcsEEq`P$D@l#O{@p!PlQ^)9V1$ zhSxv&o%Lb2o-SO~Ty2btcO{AN?BlI=l?7%9*D0>wlpZj(7es$FQlu?h)*?xv7qN_M znDj}j61Ap{1uJ{Ps8Ui-jbxeRMhuk2lP#w6I<;!U*W##nGO?~fI#+hWtv2M1JxeE$ zW?@EGNXl!PHmt3#Yp+fi08A;?C6n*M0NtjsK4$dnvh&S)YN$8@QNjh`)s82~mZDqkD78Go!PK`cAl(cFeHzw}JF41ZwI0zAXlF43(+ zTdTuImnWpeZ&J_aOouP*sR;*k=l|QU4273ZjE3KNq&|FOW24z`NMTGFVv!=ik~zdi z{+MEd4)N$zaCbe1g=Z=qiFU+Qzde!LKP*?#F|Ur4&bI9WJ_VRx!KTOV2b?OvYz z+3t47HumM)4NK-OjL(a>sn_f@;BhSCivLlDWR^6hZK0JRcQcLK>w`bZ*XQKiMz{z< zn#9t+ky;clTd2ZhNugajz?lHk!e!3#E1hML%_jp}vw6;yvEs>G;^Qq1GTh}#Jp8mO z2c)!(Bw1Yj>O`>=lapiNftSA-4xD>6R85YC=C<0<)YM=^nGtcSEUGK6d4inQo&42V zSSM`0mnFv2U$el(iGCb`me)%3pXdG>bxwiZ79wrdc__YL_x?L>gr2Uh&}&NnCPYw0 zLK&Q?o2=-+m5+eLkR2wes_4l4^}5Y?z}75% z>5JHHe_;&>5n~`C0JGA*8D|=700fMaRmB0W!luNmz0JvUfe z7540@3m2|VhX3~W*6ZoE$?&6>y0w*4KN68kIU4J$!+nbL#ltP(#din8|L_MJ^j7_F zxMx?B7z1Nr;H#^{Z$I5C{R9)?+q#S2DT1H=clPpd_>M%||M?$ow9{mPvU}wd6BQz2 z`@^;kb>Vg0$>)hZ6e+v31Cp4h#B4YwvHneKYs10aVtkP}G3X80qPyi=^^_mR6wc{+ zy+@@(;Jssgp<4%4(C3oD4Bfgm(W5;cqV(tWEM32z0bDOB0(&}9d0xFSYR~Ph6Sdk{ zU#VyRn#I83>c*hmwSW1&e!DAw|Goy(huNpQ_B`9DEhLSWn%tZRru6QJaco0Hlo!ks z6daOtyEoVC`N+}mFTQi#^a0fA zM1JGy+HhISmMxN|AP$lR)hhhBIueQsVT536U=}nYvOf`4i^=fVA-zl?(fuR3_VA<_ zGnjT=HTcb^+QV-=Q5G5n2Lt|V75_J+q_B5Lx+kP4k$f)RmmPHe^-c4qN|Z4ZrqzpZNy=eJ zftUO(DD}XSB-S^DXW@A<(^#IuqGbM1W*dhYzc5`TyupOF?*IK{7iG^KZM z1qD%p#9-qpW|uh3KmTCFH29+AWmI)!i*6FN6w&W+_}YeASi0Che)+_IT+}VDttg~e zM17NRg$>06gItZQa0ZJ6XA4T2h7PuLlijE<6iTtNzR!WVQcxG@ zzktj=$}Jy3MRyVlEQg{Q;jd2M_YOHCP03+d7xrGaqdr0$qP3}2ARTjCKHrP=k<~E zFdTeM^yp#1u|qTLiMlVH*| z$!dx%gIal>nVqFaS^hsFPj`g{wU{7zRc7ci-#`J-xd3uTx5hf70@UrsbqO zTm2~xNgRDFpR7NAS>reY$L${Oc)HuaUIusbB`z@dVF#9#QC~`hyVwSoxcsujKW@j_ zzw)wpeBBTa0m2(q_2JysC&K8ey`r;4kkZKdpM}HecAimZGuXD4=Y>SZ4V^JBEDJ3Y zUv0|xqI?L4nRJHsEj&3~ss7R?QTbl!5`Y*ZKNS6ubG=@8IH3FHmpY`-Sx*Xn<14Gf z+j_F?k%LVlqASC`9gX4Ne($CTa!Dabc^#$s(t~Yb->$~+i0>vk8fa^WuVV$G{E(+eO zM|w@y0t^9gre1pc$BiMey0yx55L}js`!&IbV1@idlRqy4a9@4n+G>+5_}iDzU7-E0 z_I4kf84i!!+iYdsDGm57O(-lBgQr-BvK%R;wFs8fAZ^jdUb%Bh(zBBW|D2c{LIJ*w zzU8_ifDVFd;TgSfFenL#=B8njf>@^mrgu*ag*{S?SgSI3=(HW>dK|WQNNFF;g0Zp5 z@R$hs4Jt>a+Tpb$1EE_C8J-ZNIyQ=t@{fOObvXL*kX~1)3%~Y6Yq+TZZ$Oa0s~HD( zkA!=6*V_vMm#>dWWB-&rf8E>|^$XCa-v4M&j3Hg)P@R1D`OYvPCI!!b53x7aHHzAr zN@Fk_`*<+CCmjp>cPOp;@0m*@q8XCwvy@Xm{kOiz)e^G{zO83CGX37x4dG2o#*wWZ zFL7iF_gaj5t4E8R=8%B1P(>h+@nV%7^UfP%04ZUV@svb#%BtE{S5&S;p#;F_0RZC{ zfyZxxrF`!oQ?xtZLHK_bs9KlJWQ?2MRyNpuX=rMEbQmIy#WHK?Eg0{Xg?0}=D4Y;S86FF{?mZO z!W@F(c|z_htrjPtN{rbX^Aa-MvELU^#gXS zrRcV_q6A1?spqWA(Du*0|2k>0<(*mzF`(sxaLr?zc-oGxWBN}c5rlPP1 z;OBMhWhdLLad)wBa3DRuSelr!(CumYIy_=#-T0Hv@q*y@A7Q}H<{@WlfCCW^GlTS5 zxY$b>!bpPv`ib@TO6lJNp{!P?sATAfDw4x+FHw<-P{de=iUg6B#u6j|QX&OtDWn{b zBpi+YTi4azBl~(ldHnN|DoOtV7wT`3Nc8}DG!_1)#=H*HZcP#q|B{W zzb4)BmOco<`{hULbxK{UJMsh47~gM9g8S}jvi;BlcQ>jS@#L9j;>fo}ciJ(eMXNne z=#7bTY!TuAtTg!>?@GD$i@5yTmpa3X?}&gG*98spi1|avb7Fs^Q`+Zszr0cI&0;K^ zxiB22^fVo%M#DTcFeRo$zxG>QViusCzNc5jyY9uWZ?6fD-q&g;(eOE4R6?#2 zpr{Tz%JtxL8DXqE*nbTu|8eOWz;Gpl)AkOXax<>k({9u$_BIjQ;83q)f36C6yILas z$?aDQdoVF*bC@9#tkFGvl5VGQ!#{kjH+=Qg)$NTJ=WgTDTXc#?+b~FD{9BhVy3K-)Ws_8xlfA& zX4ha8uUrvT8>%z@Mq|@jDxU)|{Rq@I&SThfb?fQmYbMsPq9p0a!_wiF1$#6OI05e7 z9!hXABY0&KVp&wzw$?SSLR^9=1|Ve3*MG9!ndWl_z|z}|ZbR?nXI-eP=gQ#J^n?V< zee2@W!2Fr`zH0uMi-;l27-XgT_aY$K2{+1FAojVx#e~Y~KLj?4MM|1vlsX;^Rz^+M zP@VLRD7lF(FDrA*6*fEer|%Od{n_~z*3;}5#eH({ zlEx?=ZAE==_c~tD!WIC_)whp~f(Q$7GEf(2awD)rf_XrB@a$1k0^V)l&3p*n^U&DK z!qn?!p+E|zzXc^r32Ao0^O;!)rDT6hNw~noX!<)Veq3vdc+bi?#VZLZ-5r6Zjbt+U z^U2NMv%s1M8(cGUR9JQl5qF~NeE9NP-wHdfpVY=)x@V;HuTJ;=Ei)A~G65o3<{oM@ zSEa&Hc|zO)*UE1hB$cIz;9aQ&ySza}KllFmRwqgYr$zja42KCl^Vi$i5xT_$=+`v> zp8v`c|G;%(8BD;z4PoxK{F4CuvSCz-&-2;p!LQJGT8D?*^B}G>Blxl_2S)ZMXI}hl zdd@Kr;fD#}#`AG^Vg7`Z7wIn6>c0PmLt(l>C*Ub@uXeJ=$zqwbhcWt7mB((EcWQNjY>r)da|QD5Cc9J40mMfVMc=l*A^b>$BBH`lLiKjkuMaG7gMPn1VT8I;gL!uqW#{ zt?!d)c@@f*MI4iE6?-yC3~)k@62JTQG@9}~V6=TS2$9Vvr8wNI@WMp>q=&!I>Pp!Bh# zVmf@HGPS7PnzY|;*DDPbD!cUquANv_`51|HNL$6DQkYY5AD=zwGfx6EfiXm)Y=_(i zD^@gfl$wmdbaPQp8dwqNKX4u4%e5?$yMO zMHAa*tK!@g*ZA8%@3*S};69h3JU*!ui^t?Npp6uDCA4gTF_>%`l9Ty3F~-!%dSWoW zgkBeMiY%7PXX6Kc^Hk3*MU4KOGkK1j_nmH|1FewJ&{%Op_g@m&WCJ@NLQ8^O0JId2 zHguPYf09RD|Gxzl?6hP-krwAHsKf$i30TEPcS_vCnV4g8^vz+KSEggtG|4qgCA*@ZAT0#1xVHN(x8tA^>#gmlE0Zb9nrGW4>7&1S&f7{^FO7OCav- zn924s>~oncEQbR@?s=0wdpw8R!~9D+(jfZpXBG~ZFUH+jJn_d3!vF@r*>wlQNb7c; zUdL0=JfcN0V>k6&l|aV)60f*#5Pp`4{wUKpwsJK>RL3dW@X=3+8DF*^P#a3BUt;un zzF7N~)jGZ3wUOtG2f{NCt_?gxc;d8(dBnjb32Ap~9~8kmWSZS~ zZK}6E$FprsI>E1zeE!vrQQe8J6G2yHxOD2u=M{;ezpdx=c;Ns^fU7$7<^K75QZC1v z_1t&wlz9CMZ}do{T>CC5uzT%8NfaFIQ@2w;RiPlV>B{UIQ6%@bKkrn@%B46^%qiJ6 zi`lSEPyL~x9z)4%w2woPAJYzc18($;$-ly$4D6OPK$mc<7lDuAF9iG>$`i?g|Lj-m z!dD(^(aHE|_{F;{a{>ob;nh;Ix=0V=4pl)K?#Gm%_t}aOHZe&);~m zRe7mVWk~n@TN;l_*QGMTEI4&>EWEGl2|Oi;RPJBB&}&SQ6H<)$tM3okiwWam z!qCsyv%m9!o~e8<+MD6A4&=_RXTvHkwg*_01aXUjO$5E8$2|M@bUT2<}0~v8Sx4feB1Bp z%Q`_nCmwyB*BHb{&_SWceH6#ah;{WsGqv5IjwWgK#vhMc3cx)uResat-m9~qM z%CkIYuT2{9e@VF4)Xa!GIvxJ^AN1P32%^1Qlf4(gb6Dt?x@H4~o`GMI(v>c8Ua8iP zE{|&h7F;c|Ci~cP2yXUZN#Cp#mb-{L+A}1gye( zDuu~%@GJ%MQ}fRav?XV0Ln9p@O9u0)CtPWiGeah?EGwN)9`HNRVJF?0O38}lk^ZA}Vf{z|}? z4YWn~Kf=m#^a#$&HvE!rzI1zL;!YZYM3oKSVrs&!gCv zH11CwAT@yK|3}T6Liff8!%TgfNi51sMln4ToM!jb*#H6+I|<5$(AFq^Lu-HG3d=fg zd!hs*8w=X()auUny?dLb2(DW9u^~`J{A=IxN58f{v^3P{lslM`KlX0zEj8i(y)7cl zILWUF7kKtf#9x<`<&BJ2=oEJ(JSs(a4buAmW!=&5(RIi--|rRCEe-G@r<~45Qjh*637(=jlEcVfu1QudX1pNQAs5eErL-LYtnrbHgd~M!cCph~59<{hn}OM}4@VXB9U}+4dX9 z2g7r(_JqgpZwV(=4{zu-0O)G=<5TLG)FX#qm#$04fbQuYVSgz!z#ohn#E7BKp=gl8 z5cY!fDRBLwRk)BgofFm9U`=q4hE4%0le9)v>r-f$ueokP}XtxO{LWc@q`!e+X`rf^==GWfh0uoN-G< zDdj&Wuv-|Ioexd)U!B3P04!^rU>+$_SbIUG&|hvR`ce4j(nlbImiaiZ6z`?Jfn07C zIh?{ZD4!iLcPn*B0BdCmVOdfa88}mcf%Gtnm0_htMh0{-dgc-~C^>|-#7!oL{tPuxNr-ObmD|EpCE;lhrm!bJN{?R_}? z_Y%lzCY!7K<$7*x8TZfSnV$-nu>|ZDXh)EXZ5#=lGWKhVwO)7lAC#7QPVcL$^}2&L zWMyIktkvmjmE4aUYz`fLW#JVmhO4iuHZkxjyO^(&Zf$zd+J0FFAV;Odtwj=%kKfZ~ z$Zc3t9UhQ)KPT%$I%#JAM}CzO)jX$r_IssyfA5xB+Y53!JuCtcP4cHC0$wd*m-p(M zbb5cklm@a#+$BOAeG<>TE+uxlGO%lFy_gTf#vp(&+_tGU{NdNuTHdWXpy7vM4!ETI z@V|JwPonNM(iJc+-c`9y%g4e;VoH4Vi@F~#+z`*N)5-IM4u4=4OzO{s_F8M&D~!O$ zj}zo(opNs!A=xd)#CqvM_>C{=PQ3_i4A1S|CA^NE8kSJZwCN4tR2&^o%0f@!Nh(4T z4x=LED>#ZyOjO8;qp&Y{1bsD!KqN!7)@t%NsC)c_k_Z@A$NH1+>#0pKPwv|%W`wR` z{78iU^RIP>Z+vx)F**Lt_d2BeU^-mZRRFa9Q#Nvn1iE?%4%HLaXZxi1(4;HqA2e8E z=)*Li@6nmRswEXd!l~H9tbKjGK|(j3`w1}s39#%Z=@;b16@^B%38r4K4~h7n(G+t* zk|O9{Kt}|3he3<@;5{u#X^41~jE`vlO?y{}+TSOJ(N(oI{it5dk!eXS{Pr`gIL51iHmf6Od>ich4tUufE4j|HJ>v8mew*fcy?G|=QlkuB2~K6QzJ8F(%@su=h8Bm zFBRi{=|&5MiPFr5kS&ylGT{wLM4prNZE*JVlpb8iTK$H^ibP9jwHN}WOfi_n;xe^K zSglx)&9CHOBJ-Ned6D2+&$KwxOwv=~=>t+8qs8oyp69!$ux)E9!)vF;!ZY{OhKrgQ z(5`x>V?u=fOxU%qQd<0_*hC8fWrLfF;hrRh7Y61snvX)eIMgV;=@DmnO6BK0UpT7p zB&sw4Z`8Getx|~6EO9FCa&=29FIsYwEMhs730pSXXv*%)j(O&#xlmj2uxw3a?F-Fl zF5+=1@bdGW-Ln=0v&h~)AN(Ee;%d!e>SM9Ron8A2fZ(g@0-_d;vVcs9QaBsoUO>{K zS{}){ax5u2LGfQTit$EiQlBoC;W62Vw#vG}474wy75(MaMj7C0SI)%Ica> z!Bc;YI{mkM|J*ZH7^?k8M#C6N|2n1dzeo4~`y?K$HC{`Z^%saI!JO_- z)|S0T(l;BH@y@e?J5`pJAqmaq0bJbRLR{>`$DePZy%3h7m=pu2|D;cvXcoT2%Np{b z4oKG}g8!qfkA>lN_lkPr{<%YuH8okRqbELY=--h9a-aD1R9?;qJMKjw_Sqni5@XT; zav{>+WFq$UB1|hyLKA&Qy}EDz=7)XZzx?_JY3y&%6Mkrt*ULxnd&K=fN}xg)=XdBn zJtyQJ>WaXcRn_6i!>hs{fBRDSAOGQ2BgERJ7;sH{rHT80`H^Zb; z)))v%h_pZc?&Wat+Nd4KAYN|#CGE3N$cNz?<}PWV|IKGshp#=gS|{OU;kBdv;hTCD zfQ?X{2*$gUJN=d*`P0XqO-zMK4U7Nqe3uSpU_w#`p02A7J9V!gS{z*g-*|R?_|}iE zhY1nyTjbA6O+7k!zNS<3b!|2FV!&^GX|;&xiSVr--mq&6`*%tgh74ypmv4-Pk1z1- z9@3xEvadV!ABq`ppNRD~<+Zw1C(bJCpmb)$iy!nm4$UYd#ALRm4Xpj)3IIK|MNpY!giM`W;m-UBwqKT9iY*fspg)CiQM9ftl8XbV>KT`ZZC(*@FOIY2(DO!(}teQy#TaG;?5k zRcO?r(j#%jeOtus7FGQvF#uL+!n{wM;-@8g-_bK=cmEN^zb5V=c#nt+-7GHbnpVBH zDz2)XqN^pDV56B`ZqMJpntyGAK?0&t9O3ecNmH)EqPBH4j0L@!s{3egpjo?b>ggEf z#g@7mX8_=qa{NnD5g5tmLWx(lA(Ds`+brE_mKvbH!QNu;sQ-F>Gel zLD~ym+_=b$rM}^hNElsmq}+;qr|i30!5tBe9s(AT9P0p3{x1x=9jjDAVU22(&f&u z=bgU@_gs7{G)#?zrq((s<=30%T3l@1BN;Gp10aDDckUL1Z)&kTV@&;x3}vLuD(Xe3 zwo2^3MNEKNZJ42K*sYI_hAG|q@9z`?K*WDvU%&JKPFfJKs2_f;>bUt~Vm|rySig_r;x_=G#wxtz_Gv~y$-o2OMZ{O=UH6&r z(>J=q84;W1|A;63qUQXcz0oV>dy(8ls*&gD{c{` zBj7A!{pwFBzq6BSZG={fnZPgB0eAWldNltGn^7NnRF5Fb0REv{||Y zIJ9|3ObzOQj5uV03BdkywU`II`qb8}yXvyf2;FD7SHG$z{N&Y6-TChizy8Fkuy$3I zbR@Kd(`_T+#Ur(1R#ZqleJI?uz19>Q-q0QqZTc|5xbx5HwY?6dvCBSgop5iJ0zRHB zWL{$qFx^$)G>>6i^K2hwdE!u$JqvgRt@<*YnzIk>(_z$gy+Tkejs}GMsk4K2FjXa{ z1GR=E0;l^Jq#0~(P4kvp_M+X91j09(G=W7XzV%kT0hlr7GN93uVEPyaBAy-$I!Hy( z7W5C4gky*W^JPrb_$FP?*txmJo($|&J9C|6`}!J{bt0@%oqp+|=J4azekq`=4bMnH zB20q|(ueSXUMbkevx2}==FS8@v^Pp@;7|X$uB*o|ijI6dCOuw~&Paw9v;y6+xUm8k z4=V5lh8S99RTV9*wM`qvNwr?cbYoSJxB<9upo)CEm^dPD7i{i4JmQFmeI9%H$jz(0 zlM_?p+_WlYGW&^Q!3*;9MQ}lpOGPRG;su!@MApI;~UvZ6dt4Nwn*gljGrv z?%N+0gW#`T9|=1o1+ZPe8^Z0H#E>Q=EifXSFX|oK2~B3DCJ4$&kjUIRo%n;(8>h#lXi#^QwBI@}&SfYc6LUhZ4QLX4SJwcTG>g@BVKp)L zW=+;@jEijGEws~|-c_>prDo}{mYRO0(yhceTq#^`M>vK3@pihk=V zKngZaivj3;5PHJx{+*MdS8M_)lCh69+vF97dtj!bV%{-;EU=Y41uB9=J~3aI;r#Aw zRoW@N<pH&PGP`2qB018^(zz-7N)(zWW%B2Y% zf&|@q^?FvXUK?EW%uEV_6Q@VRxDwS@iwKhx*bY5$29>>I@F!u@*`I~h;T|2#i<#Y0 zuT8WvAx~wMTbDpaoNT{SL+)c@udD0FerLFG39Uh&}44dz{E{T81t(@Pu>@r-wSMwTf9`o)S z*1qwr->P@=AmxeP{7$Y!{ObW42z_CSev{~r`br|2 ziYI57dr)8g+7XOA`^GH9KF3Z;E1_@r&07aiuisvL=O?F&o3{*7EP0^dRQ?Xj^!O*( zue{2g@Bi>`Z=*K)ktTYcTLW@hsQ;7ybh`L0t`_v#zDMuzI`o3N(FlFvLh+p+osRb^ zF>Lb`wn!}RK$=^1UafozqHP}r`D6}=U#2-`psK$N0Q*(Of+tiY5)W{v{2^`~P)i^j zWqZ}LR{Sh zy5G%v-Msg;Aj@(PwRP~p(K)UG#8@G9bb~jh(#Qs0kvFH5Khj%2@zDO28uU6F@_Yzy z`A1w(e|N1kxRfn|!b{rvHz8%z823f`-FAB{z#|3jRVDh>Hqf}=7MLg_1DzqcKL!J1 z9mgUb;d)4ICwR1DE$aFjUmS#ivW;;+0n_8Lz3s(bh;|J-swLb*qdZ!2jJdHJLyujI z>+gR9yvZ{gS-fRSGJ+_;68U!1JcDPQUOz6AW>`4r)2A?c_~YjoJM0_Oh=1Vr`ymrR z{1`4Zvo=PqgDPX8Ox5CH{q#jo|8QsD4$sIqD*0#W`PU-vjUV(01K{e$$mx{VnNQ#S zwT&L%Kf2VW+_~YS_kKl+**Yp8zU8eTNhktwR> z-(^WE0eZ7aeB{9n9p z0F~sP*eD-5KFyJ@qBzR2`+xLX8^idRZGQO9f#Tc$>d%Xv&wQ)sKYs**3XQb2{YWs` z_{TShdSmdZF#g+y?3Y+d@RXm5^iEiM*8}b&e|Hbpat%}Y5YqoX)SR^|pjdVuk{05B zLbZQ>qvIElz@i?`M%uB@KMCJF7gDK~TzB?Qty=uP>sqBXJg3*M^F5dEdlhFlkD42) zYI^G^d!?oUkn>dQ*KfXT^v`l~7~XJIxN@9NVdE2DO!NDYbN?Sg{LgsqU*m~Ust;50 zFmWC;1ANZ_`JU6a=pAQT5d2cy#^?F(CLks@V{RG<`hZm`F{*VAc828s07T{PU4xu2 zzlddcj%0ES;O~8HU2zJd#%Cdb$0ogoFVvXXw|Lc^tP>^AsI{-_#`xnLbB^=#?4iaW z_9fsXu2lKgg8pf)k^A>QI28o+o|}_I*8Hk-Yh`}|Nq^p_1dzlDwbI}t5X)5tfO-D; zcTW{RK@#rua7z9)w(OOY?_xA?*Vf+H15RVe?!|W|A?(JAaWprT@K>GE@Uy7szyIM3 z*X9io&wiABmBtWva+Y5>WVn6l(`$==&9Q(#`1Xn7zxz8|ihEeEo7eTkm5GC>lRpgc zDuFpl9p^4^LlpbQ4U{8#62AA2$UK;hD+kvi`0^^jq27tGdEh=UGlMd0HNw9ZP=~t> z>U18mKvj7egbL8wCQ`zfN)9kT>(<4*hz>0S2-9bYu}6$xQpJ;5QqBva8=U1itz=Hf zP7)1hq))X1XI&R_Zzi2509|wxb7)m;$i&YAo1a65?LV z_^G@4U>2cmf_9V4f?3Y;tNt&;#&Xtj{ot*PYcFBhdEKMG>@?_jj=k~}VRJ6zK}z_Eg1m{iUKZ6kz{!Lo{auhVYZUk%8Wmd{Hu0qno_ z4obM#)89Ebw4Q9%QvJn{5ayHAA1_xQg^w59Hv+T{cK&5}E}lJk;6ev1wCX0uZ^E^@ z>rqA(hBQ-Gny=39#u|N_gsba4pPv0P#Txu?9$qLu!04XVNc}#o=JI#4anZ5)0Heu4 zmN;|YX4&ByK}Z})(jB5c5fEU+8T+4d#%*rCySVq}uHw1(ux@*tGQl3l&K1R9y)s>F zz);8(n;bcWC;+5$oK)cA4rE$Z*Zimv{-y;M(~B#u+k;>d{IBo<-iJk9)%q_k@c|=h z60yO77xf4u2VbS+F-H$^?I_>Kekz1(4{CdLgUMcXy5zC!Sl)B{G_QQ<<*%JzOcD z_1D@TC~@W4ta((wz80U_(Nt=SMIIYr0FvzT7@Pero$vQdmVGxkeJey!Cm)KpAV`KG zBEI(MFq{6Q@iq+u`DUc}@31MoiDP7bSAP3*L&aCPyZo&Wr#Q#l1@XicSi^0_i=1oy zAAfg4aVMHzzj$Ll&OlF|I9TlY{{LOHz4J!V!_7Lw82#(v9=9Zo;(V+h9Ds_Z=jN0j zP4T8}O{%a0UXop9|7M0w7iZNw1|j~n_&XkK+8m$L*rq(f`gP6k<`FKRrZKPEjJ$Ep zWwqLR$jFe0&t+yf2nuK3<}lwg@h^S0|JE-Qlbi3wXkHI#OM;#7$QcFjCnhdI@oouv znw;~kWGYo-V(iO+HaAd#Gn@k@@oyMK8W&;C4>be$P0h7qA%3RVv1JHpY;W=3a!>qs ze>zqSBT4^*@0`H^n=K(blAeWycCI9L&L^#b;v#|^(w#<#I$7v>@*Wk&BQ2l*j9&7o${}smYwC;{RS401~2Kd3;SxU0p4NLE5qfW`}i)uUv9Us~@<% zuekTNbk^K49fLp}E$v2GN2K-HG~5}7WjNwVnG(e}AuX3EmOLV<=W^xE+F$FxTvtm=o~4fV-mb2-UIpkv5KW4X zGD@@2UJkR1vFhr}vKmV9tS&dKt)%|;ob@(4L9%WQ z5Q>=I<0`)mocrGjckl?e5j=iJck$!bP%R^~szw)?-KQ>aXDlBYKXNj^R~nU8S^&b3 z)7vhLmIeaTIE!^Whl=MGr2Avja3c9|dKO9Ieg-wP{d^R)aQgm9xayu&gX{Ylt|ruF zj(Pr|MPT_y;y-nM>g4LjrJ4Az##PI>Uj7;ayvhPweh4Y6+OL;ebgRCq=FQ_&4Qu7E z&-YfbpM-rRJ+Q(=$}|14>dcsSg~T~Jt(uf5`*Yk1S+63P64QTh*a|c6GAgxOOlAog z)*3LEk-wIB z0>7Fk`(48gQv6Cgg2?B6k#CXow75pqQm;(wg^>3gt>1&kv7WAG{1B2PC3io3X_9Z; z#p3UNaj19?!f7p<&ixP{-n0IdPY=a6=a+9yaaOg5YrERxPV+$s1_=r`%uisII)4{; zawKeo&8ftTOy?)>9YoSPS-ktd|C6G4`lm(rOy%6a)KGj806K7gt(D1RFx?o8%UYCq z?1S9T>5HOfLg&x`s{cy=X#hq5BO`{(idiK6ob^9{`ZVYMx$+OAe@ficu+?S4-*0`4 zL4>CAP2!L08l3OdxExQum|lN=&rgCveP8m^GO93C z{ie$#5Gc0 z_Agb}&Ai`>fxM?)z@`OE0;RwiM>t>Yg5#$=K#`nrGc!o@spqSl$$xn7VDX3FK8A(( zh2kyMu~e#j?$9ZQBK_-9>8}^ZM&(L^Yp`U6hXq$Yy7OkV*{tLhJWD5 zY;h1nawoZZ&^7<`OBagMNQ-ZR(Et5!+{AT=FfK;tI2tipynl2$&Yi3NpNDf1fzc?i zcpTwHjtA^Vqx8H|YW8-$-Sxf*!`0;`)+thTu|9!Gqta^7?%d*y4ImvlXaM{WOFz#I z^F{$=XmTY_C_;nKCrLZynN>|C@mmit&C_39jEl#KdLgDwpgR6u7#aIMn8V27L@_}8 z*Pa{+hL4Ph+qd-;KY4MSd~MiDSi_ZyyeK$g0p_9_y@wh1n1htHV+)47Kb&Rm z&IbI>yW4=zTOSU^@;1xa-1OFZjj;3PkShdDs#wCzpXa_03ZNKL_t*Y zXKme8qHI^AqmRMvZ9PMBJye5nVmk@^IdV-SPsqo_eZl~^x`E15#5I_IhVdJpou7xV z&g^t@N$CDso%mBcimT%nJ}Ow8YR_i?06XwcN*3uv;<}v2MRpj&e|_)I#u@xL48!za zgG$i$^%@66%8o9+DqWE;+Mf`r)wHu~(_-pMD<#rUXKe1WH7x6o?zKc4LK&7tI`B$y zkdK`8?&ZqAcTRAhEgA}1f0bLQmXmeGcUTp=hH)?^HPB#^hpRFH;tD|uiL+tylNczG>-`o;^&fp>r1$|6{%26P)39JK3=yrg3ZE)pAz1<;j}rIoUyOtJ zo0nXwJj0M6Nq?j7%YbI$znU&d4H`nO_$80G8J*DA>Z;{6mvtrOH3;)cLG%+|t+OFP z`Eoh+JAP5lmm1{IZGl%G-W6oVri%<*Yv5+hBrM zoj6_wxYDc*5Ee)IPI_h81*Bi+Ig)li#;jiWC;znA@~3}R^l{x@FT_$m5?c+hCCB$S zJ^(yH`r>{55*3Y#XM!M&sRzyc9>&};0*_nNt^w{eAK}Y9tkFOAsj94p${M8bII8~; z|Em69xG>JSf3Flv<+(kuw#)>;Tbny26b3DGInJj)U4WCkwZDetv^lW(Jxp?lSa!<2-JwhWX4tAQWLQmKg~NVOW5D0*>uxVj-uxMi{%wpgA!wP) z>#s&cR5ufOv9$WImnFr1gO=3t6D}by^(?_3j{HIV2hq=%`$QVy?Dx$4y;#5>9z=_T zBLUiB@=E4Wj-ParX2+JUxE}D`_a|Xsbp{a?XSXp%ED^gAb$Itj637x$LzMUMUhbub z*jGbF;!%Q2f~?t@?^doK{GBgtEY?uYkAHfaE89AYUiLcBiA5VmF<*Rhy!hdB=ZoKb zbZrprUQ2k(mOdoO-57`Kg{jcV6@_Ck571%bk^z3Rxi9h77~AF+hMMt8%7OYT#{U#slHYHDK^9Hel^Xvv^PBs z^U>R;`e~ch%>lT&9XiJ#?UkvKaZgi-o1>^xJmj$^``sfC)_F4wno*b%G7=uaHp3A# zF0@VHviBx|hrn@5FfzXU_(<{Yq1ocEVb%!tCS)zR3%$Vw8|_GGcxWE*T1f*ar-OQ_7LgD)}uD z=_D-cM+YzI+PxysDIK8u0ZN-Kj{uB;oHf{?^EklmaP6jMwT$ZLmhvqRcd`6_=}(r8 zFTWowqmg@;>WgwMTMubGb95H$@bh;;5(K_~0;xMlsoCXka7L(Uz1CBua0)CxvUZC1 z;@$+ZJBTXU42W!yHiIj}GVE5a89c*BL{9nZhvq`UZ+o|G>oTn)GULg5)hKS z>O`njP)Q_M)ijM!wYOGX(^y<1(9IjG{Eev=LmgUE?iRMdcX?{E z7>Dpb0|Q_TEr7|1SvD!DukCM>Ni@pSv@O}kpSal(?n zJ?0lCpN6@euq^#LpT1YN83u=}BNP7;^tvhxRd`cu{afb_#ySsR>HpXrUoIBc?Fz!W z+$5E4s+N{Y$ZNGq$mg=FPuGMv#}Z5%Ls>}>M*xiLU~c#{0eg}(7kEO{%M9>#2*|wR z_MHP*OGi7UhjZ(MZ-o$7$kOfD)0wyK7$|<{i|dLXJwJh=yT#(o{gcJ}5cr!nCQZbx z%w35q2|$@+o6%;xgLD4&(J|(*l3Do?s^eGPq-x#leKd~u)hE^!52F3@Fh=&)u{I_k z;=c7)r;1S|vuiLCr-W9gs{PHJ1;4XmN8k~N_c0{Rf65hqCr|P0(*;YKs zdGmk&!_#R$TCE(veRvq6@sGZLiYwuUiyuEf3e#<_ICx~bcp0XHM+qc~ZI@d*Zzu5A z1|x4Arodl3b+-5^8UgMfdm*NkSS!>fg@2OcIS1&kzlRZpGVmN)o=VD-a|SwNnWH%< z-qO1`EyBwQ=l)a;TA749=qIm-_ME#{NOu6IPvITv?<_8`x10sv*!LU3Gxy!zA557; z5Yrynu;0!5dtX@>>hQxbY`*ry2)9wGZ3@m|Y+i%F{_Q8%A{1NX_5;rJQ_dbVHmD-B zA4*W;A;E8*;yE=aHZdGqXFXne;zz`9u1K*%%cJJ!tZ`C1K#Z_jv>K+ zjoTC?{s*B4KKsx}@%Viln_>!To9hD@CmI7hfR=^E``+9)feisx8Fh`q9Cb|$K>Vx8 zVEy6jPk!14IK{k>VIre8k3&ktn?V#5^o7IWTZAQl^WS>h@#v(Nm?tsv;ecb_l-u6~TF1FgUIo0=LQUBjAYPIq$D@0wixC|*+` zEi${=5;-PUZAuPne40Wc`2Jfk>;ZACQzGuH4@nA(Rey$8|3~30H$$toK|7l~B^g3A z$i~oxoa2)xGdzF~M3xqMEkz@UbP9Ml2=&MI^c1_1^gR6*hIK%qfBXz*>)1SMq~wFs zsDiP}P}AVs&yL3#wMAIB<_&c%xh()1>Uz{5S6An!ywTO)v+93NQ%6>fIjV2*k*Nm! z8vVlZ(YV$Hr%&%kQ{zWn>h*-(dGb;9ee0h8sC%a@|1v8#S$!2%);{5@5%?1K)qE?p zN=9V!c-8VGLnfmc{w8@tMkTXG#$ys;{w4&)UvH^ee5w8V8yScWg>3!RrQwLe2kcpTZbkfGjbPAxck= zcZqkE;(OlM@8Uu1y1Wk~;lbN`*}P&5>U%vWB#rC7`v7zOB>zewx|5Ur3#dnLJ->?j$-6G-d=C)2)rcl#3 zF0lc|Z{KwcO8j%~e?X&us{Rw9(Z9*bV*2b^RR2BqKZ9FmPWtvhY|#-Cx)PoV36!L|sdmTKViXE&-^|%{ zjO@Jw0p;RtlOh9x%;e9K|9s}(vLX&x(tbi>$(h&zgQ<;q%B@GJzdLU~2hm(~bQk~X zyC;iYRQz2JpSpX5>-z?Z_b_Jn3{v)AzCBrd{?qG&Abt>{{jmqu#0>!JI7a!KkCo@T z0b8|hRpYJueF*D+_Gc%G--emc&mQOpKR+MD=`9fSTGziBY5srpHxg4pg%cTa|M(9N zVT^DiYUJtG0Ov4#ig2!vcRrX7!f-8X_W<@Yw6F1lXU-OX`%CMJL2kxS^Jbma>tIoqJt%VA6iaZIBukYzKs(3ob6ZYK1E+@ zY`PDETw4nZsH4j88)S&oKoyQRVeTxzC>WbrKwAJ|9(#HXn;wDL11bwb{qtPQ_iw&; zws?XgOs8Q0ctD50ew+l?J@-25CCuY_7MdDXo4JweB!&Xp87o!z-oWCKVRYBiHm>q=kA)~9itL(H0%@HX+R-^ba$6e90 zd3LOp89a>ISw~ObVCT^78_JXpYyMpw2&+~3D~kJs0dRF4oo5fTGo0`G<9&AY#F>kW z@aVjAl_^r)Xr<(r_cs@wpO=?w^;A(-Szyz*EjAUoVXaDWfx5w}Iyc!zQ9aWzUN&-* z4Eeb>uHKc~p|Su0PKeq7@Iri0h2IZOAnX8K*eWduP!od4-;uPLN@;SKWu~xI_=wzt_{{jmPyY^P?`SvO2H1s;tIt znYDGsOZHbQXoZ8_u3yqoURtS@l$Y6vEE%litYat2sNtU#%9Frf&BeyGsR@m*E9Y-! zOy@Qxw3PED9M%j&5T69b5s9Wq+Z4y&`0%kO3^mh)B*PV3z4>x54g{Ucr}1;KweYOhC-dbt616aL}ZMb4>q7q1?eDV}|6qWF^^wMAXK zP`AAmhVU;4bA!FWCRquhcZGXxmXcI!I*!pQ`_S6vXUB@K{_>v|x9)qk=w6&F2G{nn z3GPYX$pj9m$OWLjM&F0u_mm*YD%0jLdpM_{61e6Lm^7J7@B|DXSu+(XA9-O=X(;%&Eqt{#Yq4r?mfs z$6rqC2DKc{=wItdBbv(OwU(A43Dtj}Ilu9`{NCIS!%eS}yRzOlA^y*AeF*zOT%$;& zYgj@B`Yn}VM^Q+WL!7XxLa);(*+w)}+!GwfCXvCGG0#|NS^seexm#gk^)s(WAab91 zYqIEKog~RW`zIL=xFG)JN|86>@XJzA^*nI4Re_Gj(^Ux&MbBpNf7zOMiEF!+t?jE0dG!yaTEF z5Jm*ifcR#W3tPJ*LmUTfr2eL$}TAq|H|Fxg9(;s7;1Dc+(ZKOIt(;|cbDiBVM7_VNb7QJg#a3feQ&_#8f>EHAd##mkM_pB| zf-^|hP7{BGO*o3v#lL>9+wU31|J=*REl=%}=X_euNeA&CC=_V-v;LIi&w*&(U_SY(s@t+ccKrPr^mw z*JrNXa9w^+Z;gNJaI_9zDc;nUyHXv(;V&-W1g?Y=;tjH2`w?c*Ad+ z>~dUwTAz75_y6*i2aA&!{kzyRQnsJ@tQ`mlI<1sD=xQB$kGty57H)rPx!m$RQ@s;u zxT^4fhBbcCylHnsbZzBov(MbC7D^igAlB-UR1ZQd&d#P51o4kI&ie#>xV_DvQ4 z^Y3qu^WfVdFxLR@{zIsIuh%Ak@HmAMfoUUmvxdC_Zu_S05CEw%e(YpNahg8)gKr&; z>;C?WuWpEI+05GwA^XkWxT*NVKRb!V_bJx)Am___i+4`VhlTe){i`#@OK)BXLi{g& zdN!D7cK9so{^=LaffJ^Rk9(dQbO10yT(X|eBbk=p<@L-8q4It!-;5zl zy0q@n+Rg7lKQd0a9+!?|8C`50G3EpiD2^N847~>TWcn!K?gmM9LyVtAHUDn<>9!p` zAz4@D-gCE8v`GzFwP)|3-;~rJ=KTD6;L|o<6_C*v=Qf_vH=6OI)G&mp>n6JUuF~#QRieQK<=_#=|7)0DE@y zbG!itq3TpjscAG3ytUy7<0>=L@6tQiNYKFIvq=4qVg278j4K(VkAlReFX+#*&(z}Z zd%YWG0!d-IwqwMvuXtqdV(~f}Txw3WWjs!Y=P|YQc5r6)#NpZaFjBDdy>u}y_|p`n z0>z(x-Nbta$|mGrPWG{SX1w~b0{R97*15@S zP2aBbCl8oi0c>fiAx04Wq@S zMY>ACEu-wtDvD@+U!JMC{@AERG6w?S91vakNH0eD!DLmlthb^%brUL8XSqE<3(?*- z&Y2;CRJvC2xsO`KT}jy0ti4zc4#{ExsFt3C7@1>(c^?~Ji4+NuyV)R5f>XU_YBLfsZ%2`K zSEK4QOoIvX?O=1PDydFsk&FOU{PQ(dGG{$cyO}G$)_|)$5BtUk+*i#8*E`Q&M;*8m zqbzSg)GV+&-32q@x1U&3?1QNI)1RC#?z&|lq;oO|&O<<`68x7O@j{qibapGf#h@(G zvd&und5u*XKR4nTcP9vAC`)hJkh(qWfAcSk$KU#o#qh+Lf*a&e{rB8I8i5WFzcfxY zPY#I9Y;0&n8bsUu&Y@IinZA5+>?qFO{)J+udqdI9W=1$vS-+F{sx^k%(k#vzct_Fzb{yWh& z)xN~eExpCraqLwfkl6#=y=WU~Xzl6eFTfMJSiH4=qWG_WXA9-p!ejvMZ+>n=asH9T z;u~C#=UIIgN^KYi*6%4`n~_q1nVEIiub3A|MOcXP+1?~9C%TD_a~?0EWI}ZXsFNg->$1Ao*hi~ zgBa_Ru&!SJ7h;@1pw5asPpUwf7jJU}c_pn~i zr@DT+x{fpWNbo%Zx(Rzw8ti+>Hqbvep`x#m!frN=>tSZT#r(LLTNQ4Hsd)%Ia~HRT zc+0{Om>%9X;Jx*m!D~azpLN49f*KssbU0YnIZxRWFlp4lP|E)S7Vtesza1R=-r=b* zaQbzx-~--2`Qf?ZU2xnkt{Q!xTME4KKrNKNfcSrpaP0^Sp&#oq`LN4=%fyCUM;KlUaAf4?noH?S+1aHIAR*Kpls`hKc z;1=-jQTjnNse@^qOcwX=M zc70*CGt0ref`S|7)fMFXNRobp9eh2DzVcqK^j2)nD(`sRBnaPXFkWh$mM)PXN5_(D ztp1X3EkJI_b29_T1JMkhRYga8%v0M%Q`NV=B6g;HSxDZhmE<@TU;5{ z5RvkG7I{haTJute)rh|Xr?KhmhfwtjyyFp^dSD)mWIsRn^t^nttz6Um9N@rWCe# z{EgysFaO(O^O^T)uSd!TFw_P?7az$~V)Z*!+r*X=q%PGWAcxUo$xF{sO(#YKJ2dz= z1VuK8#I2jHoG^KH+SGJ0aR#aXxpT!B=l;hhxB}3lY9*{fX>I-h zTDbn~avI-ro@!Y+U2|NuF4F*ct$gF`edkHc6`nbL4$T&~001BWNkl9zwled3O zNbn{q(+Wa1Vm$A52=Cirf^Fd(b~ntiJsd50`sK;EM_v_c_eyVJiT%*2Db~wEae*M6B;isJ)L?>8VU*NpTOZyp$rwd*ZP7a;t8 zOuQ22aTo>~sgt<1|Fxsk;CSzItyCtJc-my{m;6_Ayf5X=6@dvSrZE<++7p6Hj2kPS_-7PhqjY2WEiB9Uj~>SZqg=!}I(556=}h zZ|5k)E&Va)tmn!5hC<^=2Euw7lccl09huD&I_>l0u$Ld1}P<>Y!<5;Fr)07 z=U^O3BYRx92j-_t-FjM!DGSD{OZ(seBl;x8(yLY(f0Ez*es;kei~7s5Dn;gJQ$=M z1QT=k3hJmW%qz%qeUqZZBM?o1yZ+rMZQ{ds{M;OyL^pVFK|vTjY;poWQ~*(0?Z+y+ zKpgDWRZSCj=tL@M^J8TR0j2AoQocF}d<5gAl=ivn^+$QRihw!RUzsZ}#R_14Jp4#h zU1kQj*Hd!!F6aK|`2z0cs*-O$J{adk|KKl2gE{c*J6u-+BK0TX5voe{CN?a8gB$T& z28d*JZ$hReK#l2BU_)3V=+$Oim0tvDk-~bt=iRlGX`AcFyRp&N8%{f}p^pvt7&v>S zv1figK&OpCS$Acv8Is}4M0zU-FPFe?mA6_)uB(=gfCyU_QA=@YPpv)RsaE9#4!A@y zEi4^w%~@11UA5dBOxTjt$j-FQJ?o(u#;>WcVV#W zW{7}SAqu>|{(;+jk{Uk@fY*^CDFr=vd?BQJzj5Cn1oR?WU<+}E{}$Bh*CGkq3IU|% zxf@O0cHWzv>sCTY@W%BDPR?*&ISdE+5Oh!; zPP@|n$_B!OJAG>;KT~@QTkh&{){))(wn^Jj~(vuBEP=SE?c zOmOZWBVc5=D91smx4YL|v`<~GI=$8Z25e<~PLuQ2Qzc(Dyt&-f;xaSB^6mND`?)@! z*&qGFyKOO_#J}w^zEvFrhs$w3%_ke^Gz9;d-Croa`sIg;jhojNKYVd4=7QJXEpVQE zRO{$ebOxr@VFUvnRZ+UBWdCinPX6@i(HOTrgaLyXSW8#5rD0tMvGxpS^f!#m7Qge^ zbumA+p1!!y7Ue0??|_jLM*Wx^@sDwIQ`_a#=@|$$u7PBosWQG1>9*GcK7;W#jkRst z*i-a*1t58$;o``Si{#IKe7g8KR|p(g{a^1QJd2 z2Nu00g3Cp&cqMRJICBsBxDm2)jw9=v^1JwGP!F#OUGIx2}1>#pN*(Aq>L#m z%ELl|f$4aUVUS~)5Rk~U>M|1P1{oJ~objW5yO0=(+%!fdg8*DxmY=Gww#mWQ`7v7V zQds;gqqFpXS;v%_tIU(-a}#9&sVj#+1cJee|X%yg|xWrdg*Va^%5bL zw4M#vPKfk2DB68T=897sYr3EF?YAQ78baFcx#s8NKIZn~AOC~RQB}fm;4yZ=*~s3- z`ze==q_?an&EL8~X*OY`i6>0p?A&0U!)VwA3`V(GR$^~iKYM+O`sdk1cgDu}p15x8 zBAeW~;(O1Hqvkq?x^-{y8mhFf?w_V^q^_t~pI{TM^xBQRDyknqggGb@7blT|#Q;&g zhP3J~!PC%t@;h2f=ezLHBK~*v4;JksCGp==p8Ho% zn{)pQ<6{v2XNyrZ9=!5zitn{iR^!O(cO*LK4m(#b3 zlQb0`(>P{6{rS1gVRnaN$0a~OcdML2fd9} zfCSoJ2uTG6-V8A@(^Wjp{P&tYt+pTJ7@_C%JuWDYiP4RB*OlR=s=vg)7M0Zm$SRe_ zhbDj$U8L_2mCtg=`XI-09@;$+gz7_g!XaZ0dA#Kv;MXRGYVW!QmX8`Pb7;{VJ;gj3 zpDR9f&v0BD_x6E_kTPo%Ky~*X)~$WTgAQyf_Q53lpmVn90T0;Y4f8k!#Tj!>rc@je zz!Kw%peTvNXmKpSoXpJ0MSXZ? zqKh^3A&kVw9vDJvVW!x*4WoD9qtm0a#ee^Iw$ev^XayxL00~l=h7a!cfgw->f+)^T*W=Inacw1oIX?R3pfnYi z5;pyHo;JG6$<>%6I+22wI#yE@!T`AXKF@>f zv-(@?=$v0zn4cZ(Zfh&=Rav=`a&E7j;5x(v`eha8x?Hri#l{qNfr}U#&X}(-ji*6? z62~(0bQ{nJcxYE|@f07p+#xAu^}pb`x@%sbnZU27SnkVdDog+oWFV_pgJ!YdvemJ< z;BKmd+lBfM${ z7~Yuwlec;g#3nwJT}-aC78ok1u^557Kxk(C7NuA6;EZC@Kt(CIN5fU zl58n_fXalB`8wG_DKT^ds3rXiSaH^X)8l*l<6P?75Y%fS?#0Wa5aFM_X8^1AU2(qD z{2IYKh~(*Z4C_6P+Wg%&_adR>ys3=OCg(Z*W;e~|wjV-VC%@t?R7|y`?|y8SxCvnS z^JgcDV@Q0qqh0Vl?jZNr)GbK%HKKP2m1PO0PwiGxMcb4fve8!+b`sT5rGQIFk|gf^ zIR?3lWhB&G#T(OslQhLdpS$2 zfdq-WIY`=xiDDed|M}7L{5bcI7K9sb=b=B7`4y{v$)fp$`OH;S{RF3eYKk{pm-Fb) zW$D-Da;jQ%l>AG`>vDPNt^VE|p7UKG;pm<{#hqXO zQgQpbouLt9-cXf>l1X!oGwQ6N{a8BRu?b^uFuKl;%?Baxb$Z@KFN{i~!!R2!o3J7D zE_RXr)3aldz7N7}cCM{>=Jg5A{P#2ON-`^ufP_7>p+@{OUm*T3I@S{Z^h7fHXOEDM zJn2{p72%hdYG*CJ!HpGKmj5|Si0wD^v0v#5V}P$6nB+m-6Ky6X<_9U${`a^qKYcdAJbwk*Nd4l5* zJJ68Psm<^u`dzIrZxRSzMOjH`JekP41F$4yjD}mEfw3VsQ3){b8bHk8XB?f9r-Gv> zvn+Gd7R&3$*3Yto|QC~k{09^gZ*ihp7To`5Jqx zGPueNaPzHnNreC17pID6_jASyHNb=gqtM!)^jWLDE+gWzN?U#7Sx>94T5mNbb7>88 zh#D9()r42zuMV|yz;3u!S1r@BVs2ekp_TEus{H@|$mBe76L2NY`P|CI*fC(u>oR{( zTjgmLmapPlHlOkuZI!7hEGHGzW@v>o&#U?>uNKgpBdwW8LB{2=)x4MCZ=U2WvaAMQ zj%y(F0V=DqIzAT_(b6~x0XM-ToG|P|YBDJC0K@ehYWI5~)Rn-0h?V@UNE$UtrIAvv zgi_UAwflD={*SRKzH57L;gxv%kgD%Q;;xofc59JP?c{!NRYTot-@mK84~qm!a6I4d z-P9KYi%eWTbE82SW1Ya6Mk@I zZg}*fqa91}sxcr{i?Od&S$gtAfc*K+FL{CcBK8crxfwx&e;WSlRKs$5 zpBXOw&QO1=?WoHxi6*P?Ap^j?)iQalIm4^Ycl8w28aOn#u~`4;Zx)+xzm56ULm6$w zVWh5;NNSyf-dFByk=f?8mD^E^AL^S9sk+P6V=H&v*2h`*X{62&sJHirR^(CcIKSXo zZY1ok;bGLp1+crj3(XmfW!}LBOA(IGvx8Z4SI6v~4|0L3kVJ8jgdXGHj6VHIxqCbc~$(3-n)9I;` z=8CKA@VkczVkz(-P!N}TCXxm*mIy-MDG}TuSQ2;6eXrc}IzMr{gqt=tgr$cy-pg5k z3FQI$SB+9t*cB|j^v(oFO?!&3U_4Rv_I{35Yy_8l_MzdBu#X^BzWdhR(E8Z|!=-~R z-pUOI)~lU@+Y)FYfxeY1J)529=^bZP=x0!+S1UuUfHx0KLX4}iu?Ry5<9@^K*lbuV z-q<$=Zfq<5v(K$5&S7uiJ3l&)vC+l2a_=4(3+G?}{NlCoIHw++FkLw#wqre_U|od7uz-I*|^_oW91*wA8# z4+5fx4YKEv-$Awb8MLf!V?+BpPYi{G-+ogXWclKmPu7;TC6!9H9zZjzihoQW z=SGRs$-I4OKjvzXP|hNKpN=#1TqTCI<~LEH{V7t*m$|;Fzh|tt2L{9sunhhezZiol zaUn_YC@;6s2Dml**_&+gGQ?iyE==_kM1nyezCu3 zpOr*qMuo|7&n%-{%N#(8#P_7!c2Qt1GnmCRDB5oz{uF0hU`j*fbffy;rsRJB27uPJ zOkw%cNDz_ypF4B9xG;L57#qV50L&Q2#yM%3bZt%YpX($jT(u9X{^oQh&hf^zijM-D z(&e!HvZ)~_Uc%qrm4RS6#%H*i--)U@)0^)!niB_he6Bb=zOxuO zw7|K3h(`*sY>nb+)NULGmIUki5q=PYt|@Q5IFAN^1nmxv)~p*GF4jZny#O;y!qqD< zIfYT|xrKEIBTT|lX|WnN8zEHhzjF}dZ`>&Kwl^nbb^pqfg&g5=1VC+o^q$%zb1)JA zX?~Zz!a{Nnru?1}2X#U{X*MZpUJ4G z1Y#;%JeF1gxQ_Y^mB9CUK5?l;@D#-KO&Cuc@!UKN%sz;DjV*gjKq7kwhV?uu1ap6 z`4=1Ml4u99&%aNH3L;GIcO>Qr(r*w81G5&PZG$xGl{eV@aAe8WGdP z&3%k0u_RBQ(1f4TJAnbbCP6ct$0r#{=YZxR>rJjmS{zXi2Xowz|R zpHij?&X&dAFJfB!fl4>8opq(Ifxxe2ro7->(t|PqTzWy-B;;jHBAOD%8ClC&_q2ef zT*Br}#%1cM8+^-(s|N^+ZOtxoTAN$nh@^7r>;H6)2~VDD`FZ_o`lQ6`*#mjwmNyp7 zvo(jWRHqxUR%z<oDhr zcO(6ohCuh;`rmzGI1EkQx@oew2jbyo&+XF&n~~MtZ$@hWd9EDO=&DSER!+&9KMC*? zY;HZ@Iu0QiS8eg7_d32Gy*fcTgFz^))u1a&iC1WrMrTJ-K+;k( zGL>JSr#U%sR%Ch$uebz9V^x)CypgFARMt@m2`|OQrkUjFi`A5X_~v=BIQlk{RY+|a0Yn8Sd zuirE|tht4GtX@Eq#XtxT&~M}G5~DTN-o1)jW@lL|1s9+_ybQA z(|z|rbfUh^@syAVL(r*J<5hl}AqYLfa)7hUGVnf8nRap23aJhepeY7qFmEQ#w#B?H2`+Cl2#^?tO3X6QGs_1uNl(dG>p5Jif=pMH~x^1z+_ z9OGHU#=u})pEoej#@TkRgF~ZItNYz(THXg!jfw{SfGM;>RZSkc~4TS+Y z;nLkXkO=%t{CiejHGN@JbHn<)Mo*l!ez+Tk=~SUgzSi}3a)sW9;I9Fe&1p2GB;J4a z@&ttbOtA^Weiu1%w2$;R!5r{d#VItKCRta0`Y`E*c7RunE){Qr55?!+65tre9HxHp zjz2)M>uWCerHmZo6c));@HT|~7*^Gmiq|&2$E^a5_)x}ASsqVa?0+qvcSoUKQJKIn zT{)h4zbQPX@K=S6*KqZ)avl&+n-Nr$j?l?kk_BXAt(_<7f-ywjIXh%T%c%5tv3>pw z$5FoasWmXp&@ADbv>)v*uWa?Ul_@k+ytKsrAV-uJ^V+hTniC%cfh3%wQ}sNvOBj54 zwpcbfQLWHuTrKoUJ@y59To<{C1Rfyqv=Ks{e|SG0E`5bQ90G62khV9KaXEEI&9r4D2&!eY zOjTxV1xM^vnqbPWd7LsXaWj%|0ksgRCt56o@X}0 zsMC6j$bbIXq1e!QJ(ru(Em)WS;|r{J001BWNkl$eCsI)RG76}IUex*J8A$d77wDryhwRZlh149pXZFT zk{dU6ZhS_)MvQ;rFEtrjIy%fg^XK$*XwvwFFZ!e$u1fZ@mm{y6$&}whmZ#0xB5^H& zC78CB*JL@c!EYe0e599JG5Ix~v7rql*&2$5E+EPJnSI6hk#~#ZL+gvadv7Y{PMs;1 z7y#F2^aYb@5$Zwwz66!g5ln#eHAsR2fN~R^!K-+B5SMmo^lwA1Pv%ESDeAAy8`>3qCmQMFJ4jeG+-Eq`M|7H#Wta~ch6#VB{9WQY@K7Jb z+a$O~gL`u@{zfsn=i1+U+W^OT7SM3$EBe4)TBP5;p&JQ(Kfi9S=!8i^La)F(!Bw31 z!xXs<{3Cel*Fb>70PvWlngBO(bZKD;<`#Xh9meN9x0dJef$I#m3ha_~7&EOpuQYrY z+aqUSF04g6;lno@h9ToLJ8R%R?8 zIV=(M^|)wH6q;~PFo}TC`kZ5_s$_4%b?Z@qizT71@Ga&ViEMwnPa3(vcjR4;fqnH6 z7%0rGQ)pG3L~G&T+Q%BdZB7=|>TS=AysV36h5m%TK?9^P;z{%TOJ#&VS!A{gvby_w($Jrk(=$kw* zxrl7~6K$`QS&hzl%Viyez6hq-1=4Bi#P*A>LpYUrM-L<^ZwXDtAfyuMHM^)g;L4F1 z$o$@%qw(D`n^WE>#J`Z*U3O*ew)`~iN?hfe6xpt(oaQo8&*lEU5@=G|+K^v)){ibn z*)dt_vU)|$Gp8~2YGwG5jvYy3mMeH$z2EEWsjS3+aEUN;-6~CTgAbh?gtg~0yZNb3tLo=%sHvVFT@35l_j331 zhe!v16N&x_hye-nN04+W(eNDUJR2S*|JL!^!CB6%vXLgu8qT@uzWCr^sO1hJ(Y5S{ z*c`_>c;Y1f-7u*lDUm;hI^|X*|2+bRd!1{dRIxqB2KqFcRpEOBA_SW=T;=6mD+Ii2CvH2O1a`fa{H=azZ$IJAPz_9*%H zXBpAAb-uzFS$$ZCfEjz*p7(lXG3UCgVw< z@e;1lgS5$aUt=HW(L<;vEC*iNXk0FTon=oo8F6#$R^+NP|MqdfNlJm_l3b$|U zrLAZ;!3@xF=rQi3A0gi@TfLSOW+aS8)%&-AuQqY?L8FMeDOB%=O57)0n;`i8WhW@A z{I4H@DMI<4g})V>Bl|I4_~P5+#jQJfIBwA!I7|!w|Mbt!Q05{8B}Vn=fo;_H2FH}v zqrLGCwy2!=GF^jV$`OPK)a$jOq7u$4FeYRUcpPDxYr1AnxdA+m(nG+u2O!SWr3$;R@o29;W5|} zi5E5*0fH3*s}fO~-#IzR_fIVvwa>KOu!%8R&-Y1#hkc+h=V8%#{p!$ zroA`}M{gKaC?!{)M(Xq~=bc_X1X5OK6bYI5p$#cVtOxRmmfBf)e4bqA{tp+(#5h*5 zXUEhb^7<=RQNt#yOrIasxCCG7>tr85Mt~{#Q*HojnAPAqRtJ%#;mgU5PC*gk>x$0) zUMW=~{!`iMbFjRahVc?Benc)KykG5XT)8pPZ>eiYRP!v$aJ}KJ_V=>Nt}?(6ZT_11 zA!=-mZ!67^dWCro)8i0Q&j+3fztd9 z&*j#htumF7Y(tWdj$J8P){uyHmiYpWkRc>n0BT#cF75cZ@%B8gcROoz>L>*97Or8s zV+&GNzJ?mwbCV!mdmYtG&ujjJudFThBPsIAyxlvxiogG*kszSo>X|7vvVq%HGD6Gh zYmbL+N8&`iRp-6Ps?56S^~$6f{BOQ5alTYMid69cc=TOVXwPX#3`y4@b^xYe2Hd;} zi`Xz6-Z(T9#|9+O?G-;Uvq-yUXR%7%xr79gyhvKoRe)&|=y8R!Fl^mFO;BHUOBCX! z*InT`>K9MB5w@>Q8@L+3csuYJfzg^g7?q~gz4}NH1CPI6ou$U-08gWfwloI$mT>6u z@Enry$V%(l@wOrH#9xOom7of1vul{|O&O~7RMX8~I9_aRKT+)1wt+d-UGyNyT)b~v zF>`*lxH#<@VZKM4)yIf*5QItwWdzvYvH7;M`5)iH8U;XCFYluR zr1;EzgP|#)RQv72GqI+;>ER%1-B0XArTs{{z2d}av;knw$?Ta$E8yu@XW}|RZ@JLa zUvL#9_9gzMIDtNhe`3>0GmKF82F?-IVT5N&p16z$v@s&lri~4c0@yzaWW0HzvlGS> z^_*oss`5VE*BM6~!bl+m{oY&qiU+wu&@ztG?ro^Td$i$wZaLThVf_HtSF2Pb-skfE&^PaLFj`UlWdzvC!Wr1v46}AnN&{1 zm4EWQtxZtEzE`^pNCGaCCkH%u(x_5|K;sOn z;Ut2DB*#TsA|uSirAs+;V+_pjmwRqP&{g6ub1fytXTLi4k`qOR7C1!DUkme$ zVDyjWRJ_3Y`o?G0u)dgc%rgau@wtg&a=jH;EZ16WSQ%}3OSMK?Z-OCOR{A47!8tCa z@NZ5~_tT6kaLW_JOlO+3^{w0X$og}KpE*roLh8@T@)PgJ!+pX4xcYIb&JO+lVoC6v zUznYmo12-P@9ydBlKcOwbk)ttmDKC(6;fw%ET(87i$B!qi39Ozt#uRXuS$!KV*PXt zAJc=JaebZpZeUq-w#ITV0z*uHv#Pl*m21bZ54(<&gYLeXTl@ZYgi5 z@MnwV!3>CG<;FHr0#b<`sxX&P4Ud&ZGb7(>Vm~3xuF{N%3hsV$vgrHfoLBySWeBfz z`LTg+9TgaFrT%En(pb*w4ZQ3!FE?Q`Fjw&IykE&Rw25R%Dv(l}E6=Hw@*BQd6XMgq za`g?xR*B$RM2QTR#l^ZwHLr#*T2@_|RMqx3PvII2Ej*PXKnJaANujCyy!ELUr0p}; z=^Q(~B$43jOPe~`0QVrdn&7PcR-_JY+O?MdI`_+a0DnM$zrJ@X#J*O&RiEFCYW@`I zHn92Jg}SN+_q+ydKZd(Jx4s3{dhemv(*Awmy<176%74Bx?;#9*W$An!vg8}XO7s{8 z?#7Tn-O6UyGq2CTHx(+x=h*1o!3`?Y)U9#9!)#(Fkih@@pNxh&@mW-j-v36{IakYHOLxq3*{1BhvkG^Yg+I|$%2zRgclR{hO6 z^ZT-L?T*r=Hm8@q=>x^xyEheEwlP*ylQEyye(vt#?7lO_-2T%ceU!LplaTB{j})S8 z5q;870r$|cy$e89+@WN+XJDY{Q1U;h#eWDaH`>ARnJ#7}{!g7k^&g{uXadMcg3nVM zXSeVYzZH-Zu&K82=eTNHjL6}UsQlBMCdV0WdVl(Jx*VS0jTa_=OxM~@S-)uiba))2)Mmf8fpm+OmL+$Ykk$aj`#a8ril7 z_izo}uD+1aZia!m2}6BK%a0)O-vEwWJAxD+=A(q^T{rgy!;-G7Il46F^(gV~%e2hz zjUU_46nOca@nC39p@q~1V`Cp@?ZxJw!LaDhUYjWP!NeQ_r%qrG;XHjkiowN2K2URL z3$QGTdB(-|Nhr&()Ih28LkY6CD#+4xjAML>b4=pJM0~65FL8tY0&r1QZNamsy>X=W z&TMplE0HTBMwjMNo>3NBaaLM7N~!pA`W#k&nl638NW+T;4_|(BvUr2JCUeOn7Jd(_ z>pv2b&wex9GH6z~Ad>O9H%JV2QjsP@V0z2TuFRHSc{a6)kVsx4{>UHxl%?X0bV6g9 z$$&6rxw&w_+(=N6S|5Gjt6kW+G2t-lYXohKY|kd@Cr|oRDJJ@_+8-&+YJbZ@TO_f*rM9l#-u1gT7l)sDmn3$k6DOlGE6?EJ zy|LXV41jAJA7_dv!Jq#8zIbtdZUGIE3q|k92Espb7Yo7KS8($8M4T=i7q06yRBgh~ z;*!WofvE&uYm2We)6M2A23d@z(b7TWc<`=O>UsRxICg3kcyfq?h`zw{4;Y(;L zzY$-yyB_k<`w|lU={}65;2zGh+-;V8uQg>-^#GA zHqWeowY3pzEEnCPV{-k%QZ1*Nv>Kj^sy)ld)nKfpZQ-f*PmAbApvnZcN!-KMJT^EI z_Nvx~Pyb(s`It&x}<*pk0yc2Bz`_1a^;!LYfb$z9TI)~Wn`6T{Th1DR~ZU_X^{DO_0 z#>8I70F`R>{cN_CsG-Cfc=B1!sUAErQ~c%g1x$x-7zC)Z0*f10H-i^6qzc1$4&vXj zS7K$W$5B1j<9ZIGdI5>Bq|NX=5+yg#8RrP2`D{m?-es0$59`tS$hbM?odw_`Jb9P> zO-cMqDj5p3)McT~Ij#^1`bo+zmsr*o!STt;398RL@vC7Ke{ORnD7!ib6daI8OH#u`4DHbB}i3aKgNCY-XZT= z^yeAo6Q>p;tT(l zZabFom1VuQZ-S!^3ml1p$q5r=2E20VYniHiSQC(PU8Vk_zljr zTAT1B{Anm}5omh*8;y_2C62326~Fr%;4hrVN@VzGizba)`esFgGW@BM)JW>IBn!6N z@;*EK#8`?h!I0ofArV@7OTlKjH&SFH2Dp(R z`}o1))bS_USejj!pPQYYJm0rwJq!Ro{2y_9V*OD2iu0H0XQCR z(mF^f>zQ-iwGxcV0O&81O5n%lhK-Qzb1AzDY_}Ucgk-TUW+PiR-+!asE_h zflL7j_Es+6nJq!CmHaV??~4-WY;4@DZbdUdLP2dPRrV)2lj^zC8KiH2_2MKFeXLTm zDZUTYTI>14KR?5k!KCW5t+iZ7ixf7cl@r_*`=$Ya1o*<-MDf^;#bTg+q8P)v^`;FQ ziUo}G^$xEudiHE7+O{1i7N@7;%x^nG8~6w!M|JB(7HNAIQept{TbgQCp>Ui4?aoHsvhOD6vH>#FtSbcW@hVfxh=Q2Kv(=k8+n z7rs>N*m?_0v?b28Ple=O;#J~aM&RO-wG^RFuEvh%>Ae}iIqmuE57EY%m>LVK^WGaT zK2&(3{XXL)ush*Gs_L(Ojdm8Ygum}f^p}=885@bE^o%_M;cDQRHZ*;}du!3AoC2ne zBR$m5O-opbSDLEvx^XlXK6~#FR}aE;(EidU!hqHD@*XQvWnM#kGBtN2vG)wTYWzE3 zGVa>eQ)~ujm2@%c_g;ILde6Q(3o$H|f2y;mBLH*?6}@qACUCKm{kHNni}eXZa;47+ zQ7+IfnH#0kFlTmkUm2p2kDRZZ1W}sVDNDvmb`~wapk8l|sXybpP8LUv&hkIFxROIe zL4AQMD2calk)ljy-pEIc-#fvx2*=-xA0+P0S1*>xvLMsz{5Bd`uiL`Q$P`5Zbx*A< zl7MA^uacHz$%cXHn_Ny8Wu+RN=kB*_WtLflIwf;&Kw23swQAZqj<&$@k(uI!cP6+F zb0EI6UJ2=ulo{rAYLcB-D=@VoI-OwZwMVTt&(m63vZOlGGnJ4F5~>7QEniv19hdt#?`a%s?v6|LDP89C`9&yxAp|_K7b0UYV;D_4|ASgsmZ=$^Wp!& z3lqf`?(ZvZLAt(&>!ZX$kKffFn+B!&c}R0xHmyzH=fS=bH<3W~ehqq|hznsbUmQb= zX#^N{A^B3me;VRo3W@xy7}|RcLsLpH_Fw?Z4f6{~wLHh^Ra9u`!m2e2@&tc z>G=5$+Qt=ASberuH{d>Hq{`@6L>g$n`i+P=#$ZMWe;ilC^7yLiX`HT#QyS)G!=y=R z^WU_Yq6{he(uJhQJS7v-p^WoN@SQigbaSbct&VtJ~Z zzN{+0*4kGKX!bPW?HnC&@~3u2H%FAu=5z(hf3Yw%QFQlXSnaW0#n`clV(9``DnfNQ2Nsbyx62Kn{0fIGN~q;|=&)pC1Z z#uJX7nQ%``gkSWF{sQv>{9<0rOhnJpo(@m9yTjcMS+;D+vaHr_QY0mA06_o*u`h+% z_kI4qllR=4_tx`N6$nt0Jxt)Kn>X|1$&>5NbMoZL7I8{cFI)U#{-;Mr!|2GUcBv=B zl$d{xvJg%A1d;#b&BtNY&%2j}wC+5NC*l0u?{N;BJ{=|vbHCFBE=C}*{P0u#X%nP* zkPblxOgw(4#bJ1_pF z@Ra7aA!!$}8^2QwJ=c4Z4gqJ6=Fv`-VY}=_JR<{ymxsBQuu&HKJEbMiEW04f(spV# z^>=pUk4OuOmf$$jyV_YlC5@$RQv0V26Pm-uWl)m&j@w37Rqod$4EXjdQ)XX;`mzep zgT_>}>Tp#m?GkF~$vlrCRT>w8fgLr{M0HB@DD$GtJEXDn^jzW4gSORhuxCE(4ah*0 zK#`dP7RP)NF~oQ4P=tt)9{>O#07*naRHXog7s(8_&!vXL@bd?P2#FcSza&iFRZ!Ny zw%${e3C0ZxX$2QSV;aFyZJeUliL1--8&v!Q9X5+len%$CqwtupjL`=lb?fB;R%v1$F`=!0J>7_NVt+Ia zj=@MYJ7y$!Ys@t1EO$$0HJZ^&b_yh)c)r1C;??^N>8z;=VhOT3GEefy`fBoC&s+MA z)&sI|t!Gx78e7^2hjeDJMUqyUnCXmPtOSGm$MNSQ0l?k06Af@qGIb4;zn5ROMd|o>dV0_lANkk@9_MsbpH6?t;(pSt zO8He2lV1rSD~OlJpTJq#BA`?cl{kl{bkGmuk~-e`xWd@;Y|-Fny~_)#`s{LV>uI!I zbDl?KW&7;)B~#NsA+>rK_Es$j_6^CnovzC}CzafNyISqsK4);*U4LkQtInXVYA35n zhO6Qk{Np-1&+b;Q4DqsPXSd#W^0#ZZ-5o}#Zis;&&`|;Gft=C#QG^Mo%pTq)gHvMS zfBY_NLKJAedTu_vE6dYE5)>Q|9q&t(bxQC@w5!FjflE49%b8N{klrt$1B^dcQE~i< z>c1^vg0i$~Yt!PMFti6uXI3jZ>YDk{o$dbEdu%*!i`Z9e*=RUuG{6isf8^5sghc>% z33?B*d|`ArciJqW3(BrJoUP^njf|u z)BYVP%d@NNsWSdC*Sg?&1b2?(yngUof8@za=Fp^|90`w5@_QXR{JLjRjWMe9Em;R` z1VK~(+LbVP-#}QHnvyW9Bj}T_z~0a;=4(dk`mG1IhlV{eWHv1UfW``Kv8k)b`yroo27bDU z^_S%7<@cwetp0efx~!Y!!BvWxE&sPpv&WFp>(C}a0)Kb;^km;db2oghvkWL z+>VR#v!6fQ+7YfF|9rUJc{sd$W?uLgY{#54=FC^fTwqkMiwP#@^+Y7HkJ>^0_x^Z!EwZQ(25 zo78#uJ_#B-!a*G!TGH-yw=@mz*SyjpO#;;WSJXegrP~BJM}0)Q{4jw1+IWE}KP1ch zxGwb%#wY>+w3@ETF!QXe@gLsXq3h*j_e95_P}?7spy*v0E5zde8#)reJ@lV>vQGw3 z7iD#S!7TfqQ#{Q2f`lNPxo0PTuQUa)r}CpS5~3US^yyc48p5`3Q4!1PBWPXYwZ z8F1W6W8wG{S1{dKUsOBz9Fx*Yi9BVx4z-dJAv&^BCy-f2hDbort^7@(noW2-h_=_P zEWS1+bxK1zFXvUAWsyEoxHP8L4b+IVy-!@yseqzMpgVkpSTC8Yt~I`281_Cr8xRC#SM;e0RCrVQMWi z?l8sH!C|HsH7dC-${h>x=cRW0rX+qhqy}jtA)95`l}~r+NyC8jNysJ^3$!Y=PzVfqPd#5y%Qn32CM-EIj`>1~J9oBn` zt6EfN?xB0DG?y7((lPATJ8KI^S^@Fz*!ooKL!3sBNl}3Zb;8v70)a4Vk4k(Bi@(J9 zXOU@=YI#fPl|KRqchz#$8b1!3KC9`dQ^slhX>_PEsR!Gw)}ZJRZ^D^-&cU;De@P$w z8zU>>5v{{8X;oq;|1-yPKrqyAobHGiO&2AsD!z#Vy(c)7r(y z;1p{6EQtT~@8@lYpGEgLXH10%p~Hk0xYJrd!|bDa%UppGEEX^=B9^+qs1{lQl!K2a zyZHEF{(VmKw&R>@+)LRy?NyEwIaQh3a|K<+OHO zI2-&6pBj*Tg6VKg?S%8Xg8{{U00P`?{W_zp#oHI3>kFTfy#%m#!pP`(NX!6M!IyLv z8CMiXJ^;zgU1btXng8Mlf_4fWehW|UpJe6rktfrDL!&Eo=@?uGp8=w}>MrqmQ0eJL zWz#^ek37;n7IsK2dwF6k=*XY?QnSvycH2>vm9^2(Jv11`pV}XmFKMTFYCf!p&PLS# z^+X$^QMcx-u0}f)?QLTIdpY+nqkj@6n4U1)umlN4-V3@^Y6k8 zc}sbEUQVym>FLJQ25;|qKHO}7AT+5?$F%zmbK0mm0pp6+_p?MW{b=JL*jmokDh4Yc z<~nj_w|+^L4YQBx_U>(+n*Z>}>;3MR>in_jt#v{UmMYb^;WH5YOeX+-u3 zxa|Sscw7^@D7ubG#edJvb_psM!r%W$7W3OCC6v&dB|Lxs+N5bW9n~>{D>oOz>5J-1 zGS0^t{ZVN=O=#}q3Q@-Oyas=>>Ze`nIVna-s2S%zW9(HQ%&EnQF*5BBV~3hDO%^>% z-z&Zw;_8SusB9oR47=oF2cu-jVB#NxS3_^K&Wrtx`6V4nWb#(t6F$J!8q}u>yIW(zj7sV_ z+#dOl%i!cM>KGnZ=gvw{WljUu`c6i8){2T!-u{7#kg-}aKaX^*K-Il*n^j88MeBuz z)t1h_=7t`rY26%Gs5-C_L9_Y~qPB)mfIlnukpSTCYu>+gG&VnbpP9TlzpyYnZ{o1K z&tpp%He>wL$zw|h>jH6o){4~57R?x7m%bMJWJ&f9f2lA0`AgH`jf=6^=@@1)P36R) z3IngovdJI6CKZd&)S?N6IR~aF8c16I(W!nEsPL`2cuio$UrNIliP=bwMQSPpD8W@; zBHfk1?6oe_@8I{4`FE5&@1#D`bRUM_nP)po{sA*!0g}4%oBC8WAOj{mt&7;_%JA%< zR{K+$7ip@Wm-L-(Q)S@kx9*7BsE;_DJriQnJW?2E!U^-bl`jXWl~=9$vE6E=BA+-; zH3o&oa4L|^FqmfzTf4`Z1?P~AMoq}VHH*hbb#>AGx~_>M7%f`7Vh7|C4>yO8OI>wR zyG6(MMdlH0fIXTUI8z&UgD`Ft^R+yb4#%!D4jLZZD;NcHW|#DHV#ZO?=X@(?Ie&P1 z#uhl+#Pko#fYKH1PIu|*sjFI8%xH0YT-S5GA(h#~+EHV{d`Y|cUD{RSD!hxb z3$hOFh%ciGtbD1X7A;gcu7G+lYQX&Fu@bKN0D8=+g0bEYofzpNEf~O;t(7uBy(^4T zS;+)nb+lD9R27+Fm~mSwgH&}yzh|Kng$Sf(M?{fMONJ2I!39m^IiPEom~EHEXg(%2 zx)nKguU8@`IEmHHGv3QEiGDhi0l@3UqnA6;9)2rxbmj|4ixrj=0G5F=OM||1nudONt zoz3SttsAAO5m$@p2h8bMo*51Y2c~T2cWz3(U`1Dwi6NVt6t|}x<%PwiFwmiU(hqD8 zvquL*!`nAPGYr256^0(0bPQlsmATq1jew^1(AuXf|N3P0pL73MwxmH9^(~#A4O1gy zVQg$%0)R=i-=g|$-0`O#VY2x-UGkbEZnLu2imw&s?NyEQa5D5b=y19Srzg=3h-amY z-@ApUQBa-+<{veF9P!{v^TF@o^5*gE{Buy{&7p_G@O>vkL%Y`Jaxl}80PU=+-Vp+j z$i|nvjPq8lVeBRaox$h4JjVod+~2eUP?w+5jo()_kF3goAVxh;KF}kJ^x9q5b)Ada zZ6Dm$rgr7Le`9#~NRQe+$nJow?&}D^^F($AihX-vXK zt^-|E$6rxDIw--xh3kvq+~pY=+*>wdgBU2B(mXb#@p)VDsOZ11BSwe!Y3`F?^2%-9 z$Ru_BA&vEI5*i@18`bdzB$S-XXG5k@eUq#3*sbpq%xrelhhtdAtn>X+A8nCl140CM z)@HV5F`ozPsd~n z{u%8tt;gQY6N-(HEh2#@Y3Xd+p({lu&s|X>nw+T(B#wxuw~V|$pDxZoKcBSyW1`B3 zAy4x!%<6)vMVXnAK1`kAbywx{!Qq2qGi0_n+yn@i>SR?-LQh8;&O(_TK$w5dA-*SL zSno@vY`au$cj;W()lscbvZ0V`0cggz-FxAnPJD#8-}ACHt|lG-I1uhTnHw={o_;G& z7X$#CGjP7rRK~tjWw?AuJ7RqVz5YGupYoG7->454jOhAWuqv(7Nv+)z=6(x#?lKMW4Wj^HF#du>pkMr@nwKzVjvA&?yG1ug= zD+I2G54488I|QST{EQf6jDlj-*gw+k+HJ2o80p($IC1Rg!=Rtlu08i~v%AG7b-(UZ zza=LB?_^x>pe+7By01-Yt4lgEFfSoQhwk292p6=og#l7_uhB@jJvuF1tJ?WnvZDwK z+A$kf`DwRlspy)~Y}F6p&__6ZoEeE)vA_uG?IXX}zX9?m z!$S^U7r@gOSG4Weq&abs9bwUa{9wCjBw$?}=Dkfq4bC1veZ1Rt|47eHB?iB^8qo1U z3+I=&>x}PbPxk6g?@loSi`o&?UFJ{1__vzS<)|2$y*i2k9C5=sws1_=!Jj|T6`nb+ zE9X>J>>wa?fyQg<18-}`5aWmR8`_IJ$xqStr2On%&NX<>)tBa3 z2Tq)I`cDtoNWv!J!9^I`w)=`eBiN@$Uq zey@!7!2r%rj)p05=xb_J`f|HewL8D`@i2MoTVdtO4g21#Hmsi0B+dph7@{`sZ#tk>K*Y#xw#NFyFSyw!g&+|cg- zQpXP4&1MdyE;)9*pmj^P&fHH)>j&n4w^ZfI zEq_W53?3M<8Llj-CSK@Kyw&}>!J^2GTt=|dT?M62 z@Zolic4^4$mwg_-D;%BU`p0e^W8szns*W@!WEE1-c|UW!_OvWmkH@@YKI#)j2sv-; zN@dv?bnCIoR>J?r=KlRVGDCn=IK=oAw>e>3&+S8n{73+Bch#E?75x4KD^>vY%|XRf zlcPya?=CY^mj>FMpi`GD2JrfXOtbcZ&`if}y}j8eWnij*YXKJrDK-FPAW9!2b_Mxy z4t7>yKRKs6t!20-?w+mBqgIHi^5nxsR4A)8&1xQGldi(^a8 zJl_yLW1G=X?LW-&d0(-7s~FbTNZf5&A5QN6EnWYys^axRvRqZltnTTKIJzY51v6|a zpxU9vl0G}=*R>!V)cN*-9^FALIIg$j?EE{IWZ_y1&mB^^e?%(!Pal&dXDyDeiur5h z!!0J6og(5P(Lz;HQ=4N3mFJC-Hl4@UB3E}w-w<9XCqFFf5FzAx>DBRb=Yro!aR zVmKsw1i$>E7(=;E8AW_khRnYDgE7-gz#tiYllnq~;>E|h!moY2&yGVJm!RZ5;effI zzIW@|)@@pR{qq<4b(Vi#M!jaj^N;q1Pbv)?q`oVI0EhaZzTUk$7ykIG!^YSk2%&(5 zwSOqWss9pHan!XtTfD{O3W^avHXWwcld|R4b!7nMtcnV^?}p%0x1QECR{jcnB{qMp z2R68LA?%O_MeDpQTz78|T^tixS_s3sqHl6?GTeXSWSAFW-8=Wo@RfG;pL;Nje{CwP z%u9ns;}qc!eWtmsIW%MNPeK4Q`p2Mx)0>+MGh+J3W%O^7bN@PEz91nC{Rw7C>(bNm^e_kX^bX_kDXfQ)CZ&s(=Esn$wK68o@lXyFgJI;s;m+gz znTESRH~QD!7e)?0AG-G(4uhQ->y)K`31QkK{lr>6$6*fWC<{l1Q2jrCpxw^4@6y=d z`pphW33@UC=ImmlRQTI9cAAx@U1lBHWO%PjV?j)NZ@V%7F!-$PhC0-K?B?ryfOI}3 ztdsVD)5G%uSr;d zV;s}HVz63;#?z1W9?t7IzQt%uU|@o>#*W_~;F&Vn>4v^y)uxvWfsK7fMgq%_M+~%e zofVE4BcvFYKCuul7fT=yG$=XqgU{iP7P#CA1{CBJbMvH;fi*NB$S@bah#|)3(fNjy z<0=R$;PK`0F}U;>ocs`niYrLs2#wA{`6Gg=-yVZdxPPjw{&T|dD6T+d@6|u_m0WOO z9VDiUaFIE;%tc@9KN$w$EhttRtJoM~Lg1|A^i#A-_$KFdfk&Dj$F;_I<&>_<BGVR5*SIzrQnEvtvCQRi_s;Ia8?jHlt-RZ=K(5EIHPFq&=jb^irEb-Us zr&}(V04W>Rv+c{{G*uB)DmJGl`+BKQw3ZarbGF3X|+KbKbc-W9(5a#d#jF&SopS#gJO2S;0Q&Y3z! z@W6Rz`ilu{4FbkLG86V%=MVH5M$N4@OqCUjPj>}A4~b8@Knhom^|vB_;EjP0Zs;sE zj)ULB=gRUzINtVN7}$F#EM2-StN$|ir?dOh;_~{X%0Dx&`{Z?1--$bJ;N>WFiPKZU8j16M1|(|bJ6Djve13!3;5PmlGc=AB>lT|s#|jQ+VW z!}0qQxU?+1<6!<#{U2>^4dah~A{=?<$uKxHVCwuAq#ZOk&|!DmAJlbt^Qv=8C;jt_}jIc55wOi_5M)_ zEitg!qqF)KZ_ewwyd}-YGU3qPtTX%?kJ5F&u3dU{hw$E2877tg!Tp`G7tk8M`O0KC zeSS{m;)s!MBDt|74FU;lwYEYd3&Vsqr%-Tj7^{Q^Y41q5s7?>LZ5p%2fT;n@{zq16 z8K|Y@NDuLx4j7DDpUibhIJvO!agq+7Ft!jfc zkBA=6Om8-45UM0eDuc73QX||V^(UqkvaGbID?ZTNsmrof-)m^^+PkZ@qq}u^W>kb)7h=kTuzNta{mQU&Irg@=rB2^`Yp#ptpv>3Q9+aV)jOznKXXmci=Zzknttw>$qM+16JM-5o86HfJ^ zE`LQkW2n_qDYx165{=24#b|Uv9^=^-iqtFZEL^pm#U&Bsg*9W_jmYLZ+Jjv;bJS_( z6fN4K)&W6u)lMyTUVOACeDY*h=oK?y*Nll#fd1e8%r=qU5O%4)KxbOtnQFp`{n8JX zJ0xMucU3>X%X(Z*S9efijM%bXK`sv7=i8mZo&HKj8rp9u$Fd?6e-vQsX z(9XfQ8v+2B?^a#ihpm&vWmNgs!Zm47EiB03skU-fbbMoRvB{23UAeg$W;OPjH1;NB z`e8yw0J%aG;lc2P@|6I9_hsD@Ff%u=_SUh0h6U~V>qcTkeDcS~S)?S5@EFos7R8W@S;oJX zT}*9onvi|2WiGEebWF{8TvE0Ytm31%p{Rx!ABCUM?^M$x+#h3@*DVV?IIE1zA44iB zvOqm79TmNi%i^7UFAhnfI65XKJpD%bd>CUDmnKwTKCL-G`mB&-MXRK*S13yERZ*a< zB+l2i%7}KfXzM&h68T~~gAlkFow?~`#Sm|`U8sEN{u`*aSzNle(@ZH=<{+#cQ%BmMPPre&zDNldrSoQfIdJpS{? zwTpNMZbmyz2nE;~UR1xlB$e^^u15>|ZQ9{~UprE$l>YGT8M6!Utj?W&TbAT8^2ha2 zRAaYxhj(k|{}o*?W$Nw<#Jc%e2_>`|)fsYW1gMW;w2a*;j8DPqa&ri--p877PUfPj zOFq_SYEV)&qB)@j2I}F^*8m5eIB!qVta9IaHUhu{vV47$r2&ro?3f17qMK&MZUXZh z^BOz((^BolGIooYg=w`Jd6P9e8xJ4s43Fu~?N{HO39p}-4j+4>KYaFy9>J{Tb0k-K zjfs(i5l@}I65%z~-)98x?x>Cd{LbgLhyU<(o&8o`ySBxcE-~cFRssNs7J(w11vam5 zoSTsW#WrK`vF(6r^JCJu_>;f775+;8-xI!57iPn!pXxKK%wsZi_P_q;o4Q}TEBwt5 zCd?2ZHz_=OqFc<&QuwRyPgwtSn&MM+uQDr3DvCc@aC~~*rqj5OOTgWNc1#rO+Wn;` znK4V*IuH zKQe4mWIO3u3)npFe#%4*;;J>7!Vu3pFb-dh2gc*@6Yptw_c#O+9!EF~ zzrXWzmo^(|Vg6D5$MK%xw!j*Hr~}fVH86MVSUB>FpO@_A8ZU$Wt(pgyB~;Z-AR=t%wq$TG_oMSrnW6Yoii)l)# zuhW(Y+HiCQzFm1;WEJ8Jzl}e_%ten2`GF~a(Vc+@X~gR(?P-}fOgUu%m!)O)t$sWW zs1WektH7D5+EHNRx$Pfsjy@ z1=_qw%vt2aJI(e%U7BBthH5B;06uzSF0}W0SED=@lwhrV`wRy#KIvAFT5<-$hRy}* zz>y--+9)DdD|mS|+B1@@-6^Er$8^jOX8%8YV_bGAn#22-B_P$sTQzTp;O8XrBLTp@X$X2_ z^%rJGu1&2-1>jy}Q5kn7l=1UX3fk~R)1LKM2sVC3&+<^(Fu4{vN~hm-?LM-QXZL?b zA6Cxuy7A(T5$c1Z49Op7A3G-?osDDky1#KcS{HoR0mW2z*Qo9p0{^hrM5qcxlAc=F z_iD^5SDuaPD~GR{f!b!H#912pQ`N-}T9!D8PQ2DdfJnm}Pr8dAae2)8r zW34pgLwV80#QbI;YVlZOx67{?fPTH4J*1Zbr{-1t)Ja} z+~bGaq}JLP9udCO!MO7A1oBY2<3V^KFl2J z!T8&KIxYY|@}72}Z^{rAYV7BAjousQ=8Xa5$Sc)yQ)iV&CxNw|Xxa*>_ro+Z#wW#O zLMe5w;+t^8s?+Nq96U9|=EEF!o`B-uy%s~`(GMV zowdk7Sepq0o_(l0+%Lfh=Zz`L+ZX0^mHSG#sT&K*3wVS|7%@6&Dx zLWO;5YmPts?JMK5!LZ!~3EL&~=@*UAzbYvRbaRLNoNhlrh~%oi*VK;h>Krj;9LX(*J>sKy?zQOxK$H4vJ_QeZfRcHCb^i=3jUs>8c6b3&3RG9mV?`g#-m2>U< zuTjbB*Q<*%@F(tcPOzh+I{Po?e`->O=THe(c^EP<*-S0I`|kyz$X;xo?mUd@NW;_j zYE`9i;Bg#|)8jpycXscg57x?m^5#MS?*)XpBb}@8XVZa2IewnCoYjLGd|m@-e8-M( z{};Xx1`iz6QHoX@TN7OEsd&cbsK)H9#!#pFJHl9mnp_FmBYPNJ33@|o7_9r>(%gul zzo7wH-q-v!u5J$0SdE zPtv$Go5U-1ZedxPO7Uz>lx0LUQ=EF=K_X)fC;7`;>K5gw(i_JU`3{=13W{{nmQ^8c zDWP6gvjr9ca*mn(jReWq=INI)VeAU=4-r76J5ZLBRNr~s)B zw1#L{YwPT9Y3f00@65kXeGo|Nc@0(&{QSIrBmlTKZNccETltUohSA{*Q!7h4EO?jB z276_mxJ#6GmE0$h_jF&j1bZ?b)+Vc;tF}{xC2?u7-Id!^KzUc#f8G)^p>9M|{mG6l zVP}+?B;~K7amJhv#YV1>N|!%g;B*`tr3b%%_kpwg5~OMNwYqW2?33PaitqyIQ$%oG z=k*6%gDlTDBa$aja_k5=jaH-j6X{B+%Tfs5Z~`L_<7ta_rh8B--iNe%Kd?h4=6PCi!MKc*et-MS{~%J5=%N2>dm_3Y73KG*DB=X}2CKYvB% zV3iL-1GE*EB&c{tJJEJbIsI~rBzBF(U)w^DYdoWHLT4*gC!~#zdXE0ey2hfdo-?waek@u0UW z691sm^TVO~h#=_gkCM?0Lq@u_WLMoi5)(GVB@@m7|{k9J596d8E>>W`(3@V;(KK*Ixz|EF}` z`44`1C#bbMvt;pI!iQjkYZTwTvJigbliRG75a4W6|GiBgl5C0oZtWoAX&=g9C8jZb zU}aw2k{ss%z2g|)fOxy6%u0kP|D~t+*e}Oa-we_M9d~@G!qs_K|NJ0sZFw&AjlC9D zr=+7IEBzh1y02q!M`+PCeNE!jn_E}I&5Q4bq22pK@4$9$1XLZ!R>khUVdcy_q5Ik6 zq3OL_q4B~k)uW8+suM1Y`R6Fkysr4093Kr6(iWJQoHhZFGyjmwFJ=C-RJvfi^obOmN8p1|Sf$-6s`qZ|kg*d3|0N-kP9ru6)H zvvjJ@F)`jvFMKA<4IK^VrHbFI?R6c?*ID{Sv%j%J+EL&6$&>^r(uR=`by$7*mgZ<| zqO_|~uqVRRp-ZUni`bUdHO-lG5{8LM7Q@btJoEas+bdG%UorvhoQwlDOUT3de`BR> zcb{*Ln14Pz`ZZXXN^X8V^}(PXcsFC3Dh&OVG2wGvi6PL+lEHDRIPi`zhhRm-D%(KrE zDkN*WJdTA!)zu7(KzY`Nhqt^0LLK`9^GYpOtdaox0$f;p0 zXbp(ai*HM}K1*l<@;zk!H~PFtc|qg+7DZHLGRjp+E=i&?=pDS})YeY3LG-H1(A3b{ z6*@Z6%}b{}2upt(V5yz$Pc!r*0l>YfZ5r8s%sbZTqgT#Pt*tJ)O{))_Q@W#-BH4^F zN@4G{e^wH`PI3R7A;t}8ar*SpHama(rqt=??W05bK3Hh!Zousso04sfH_!z%4w9b1!)n z^%LtA3?5#^7Wwp;7jfmqSp1lmC*Lv#=%9qA#^-3N%zsXBIW2Fs?%GZT0%;$ot~BqK zT&%x5W7Q2it}3_SSUyX+5VMW0<>`Ay=UdXs7*v z&XscJoSoT=QWZTchW|PB`(+6pZfK|cQ8D;`^k>6%m-^#}bv2Zja+oYWd>DFr?2vYy z#8ht=GmoljpLU`ikY#;T{y74GMh!HhR?iPd+6gh)SZIe<)awuKYB5->N53TX@ix(Z zUMl=7bZ2EOjJ=IFbd}Ywi`v1zt{v#98SO?QCs5Ibb+7caYzmC1OqXw| zEtNS|{8zO7KRh0fCGgQFUv|)}Ugc+p%lie)KMokHYCYX~-THgn4KgSTVqxn-rZQ}- zcUp-)2E$K0#?zpIv+x-1LgNCP0@ylm$6BR9i+JXgC!_-ZaT(qFzrJ!i{Ql<#Y&U#R zf{w3hR|2M+RGl&c_Rn7Ev$p1nJg(sDm$9&^nKj+>EhBEy$Z&_zynQk###LU|Mi;_+ zFcD((f2=lmQC9Wc4eR{;pMG;hJBv$dE8UhLn$BO73Z#gqJ^frVs`mfso44&Ih8Lgc zQ-6xW1B3!t>K~V8#?ue>NL4xZ1q2f(k9N!0;%so)3My4~3Pno1szXT;^rCg6sc!cI~nA+}%3+-?8g{r5Bctp3u?N z9wrxbq~`NahWS7Leps9pybS&=O08~A+BDO;Jz#2LOus3!-(cEyS;oxGzSHi-=2^4? z?Gv4cRo}Dd(j$ef2M-K!X*^W|O+1NbCBT!ez%%{n)!ummkI(?-pYl{4d62f&6L@x1 zxbkoO~3snNgSHyk{QP;`EKY667&|{9;3Ox$R@lrKO&K6j<{snl$_j4d9svJX9f1?<)qV z_p&4Py>dAf^%0hct$-;`b<@zKO7fV6(0`n|3723v9UNe zI;&N)1OR%~+k#epcH*#zi^_4a(65D-iG>L! zi?i85Y4o%!K{S+5+&V;lKrg-Z2_q83&Ui_EsaeK=2Obq1(j4zxS8P|P^5Q-V10 zke1I>eW&^{&4mTvi1SajElne|lW3C&%wkk1d`Xe8W_Rh}HUdEL1G8C-+Lq zp0wZAoU?@y+G+4-fy3$cCo!T*uQ0PNU}x8d{s|PdZfiP?Np^wT6waFNrWTCz(n&pX ze~Zr6H%awfcioF&LM<2nb2?-Hu$Xn2H{Rb8WBsD6wC@+AZtKNHj)Sd*Uw^SzH-2^6 zxPYPOI=X%P#5871D%aS#J0<}F_d2uN-ld&d9B01Yk@_}F`Vm=xzoaYgesX>`4C=@L znl@bfbbGQTym4W{1PDLSx%}O-0dV%(Quxm6vKFr0dai-vD!(Z)7+mxBV=;`-#*X-H zskL)F0O1E}vIrh%KhD)7$gw(7#c`YmDZbaNQJ1~Y?r2+>%O2MJ>YTCP#;Ew$Yuy(V z^k3!(KKCA%!biXFZZLh)?$F+@I=QX-JbZtfuC(j39lZbjFK(FuLhs)&|61yc32qI) z_TqpT_LlI}1Ke{@yElg4{?vfg<)8o8F);|bYE9>RU(vb!U;o556S6oZZT*5*9dMSh zr7zyRK-{I9i{bS9b0&YSfZdy2do-jgK@aO2mnuHo-+QocN!lUOOk+4bO2r^ogp1#m7+`A>*@|~S787upg z1Si81R-L`PEQW}7(%7MrX*cGttlbHxjUwa2TWksM2R;Q5v#Dcn#;i64EdgwhE=31e z>YT|>!`x4q+_{%J?_0ST9(r(h=vufL*5+nH>)Mj8{zH1U9G3Ln*xnsFyZS?Ge{Yx^ z9tq8(qpB+znp@o))_VIx)5J{Zc=kkCJas87zJ5{1P3FU#+GkEi1Q7ttOibrS|D1Lh z=9KyOauDw@gn78r?avgZ8s_gjNxv0X&ldrJ=bJu#6`XVt(3_(!QT;DQObqwGPJ=%Q zCqL4;0O0(-hr_v!lVNU*IakMO6lpV+01?o>rTJ3BCo4>LMV=;o>!TJd$}$E8=ABZ+ zqd_qBF!563M+&T`NrNRQXePZe{fb8e0OsEW0G@_54L1pqUVa9No{*t8`)fYD_MSYM zH}wi^9);fmiZI4p{B9GOIfYqY6|AB5aDOV$!WCa@EQ-YF{ORdx1pAEb zhruW>NVJ3m5J^k(i-n;MN=b;ZH1fDpMc7(c?DK`T2O@xwyQvsH1A^ z$Q3(XrPOs^(s{raQV!}&m%nfIX~R~Cp~V*PTTPh3F`>nU9tDdk|J?OGsNKvJF<9@( zsx7;as58S9!SuHPfv9)6c27?fpsB$`g^Ym3iX&#@={|Mmv$N zQ~{;Ra0&pb?JT`Vm0ldTM;1>%3r?Se(T9nFcw_RjEIFRSEC)7r@$U^iPxumynS``2_m6oP;! zjw~B9$CY|Fb$%a)?U1h6dsWx%os&VTUTNNN&VO7xk(8}P7OPvNy852Z_oIG4qFr4K z=`sFbfLXw3Evua^D2{!QE9~+&UtOl{5WzBN;mG3hn-i=KV_kyB7NdIF0x0ibF%k8M zaFA<(uxVgI8qt$A8OhDrm{DD^gT``?_PT$tN$2XZhtO=-*FArtL&AXN@HJVm=d3S_ zZpuinq3pjUM*ryUcqHP8j#7L>*KVQC&%NLn+(V`QFTXn$ej+CQdpg_y-0|+vw?C@T zg9XO<&%QOH`AnAkKRuXVp}3}czM@_Kb80sXIZ~!^^{w~R9{aWPh`{CLQ`2F)`Wylv z-rqbYhFyh3W8r1xNFX4|!*->A_Tg@6pK#^bnr>;Bm-;h; z7}2FXugcQ-yRvV9V1T|MQq5)rLL$hGyZ5w5Y%l97R^JN1dEb$jKH}3r)_n|Qqd(R| z?9WC}V5W2B& z7k+S*x`y6ylm+IWU3}7ddU?&IVffuqc4z+I?cNnG-uFUS?A)cfjNY%@azwFIUVrp$ z;<+IM=UOQ+@b=x5x<1Z#@*9nzhp`t^4{iwuOkNx3g4fZlIgK zVGhn66@I4(l$bFR(I~Mq0M;+)9U0CvpDaVKH~Wq&EM}b%phvauxxI*--U^;HJdPpZ zRK8U_DcrsA*C<+!wsA$eLLEB>TY85&!t8CrnPeCm6qF~w51T|~@xk3k0)P)*cePT| z*y(S1d0}>XZBeFuTN}$(x@x7~Vptq{AFyA=nb&eEI=7}MadNi%&g7$k9wm0!lT?6 z2!Bo1o*uO6vs#03(n><*^$DyNvNSIBJ8XiidN zAOJ~3K~&6Z3;%{VSjE?K;H{I|aZ)bNs}>s5Bi_eZdYV@PBuuT8Npx)tKvQB?)K@4+C_~eQ9@c(>sDm?Q* zd-%fRU1D~Y!wK!mUzV{n7_^fze)d^0gjZzbX(60PDVzPem>E7^wcCo*$bNLq~G#io- zjkEfT5)vE}(>g2-1B|$_TW@OVDjU}ZLK%0s!|Zd`9@<%7Vq^!#I$NIPMgrp*e3gdb zE0_0E=h92|%>ptU5m-zKjVnMqgD-q}wD7>-Hc3NZNpvEBAP%h_RO{Qs z%wvb(P3>aC45QZ1LMl(6WoK=zI$IU)E=h9`d^{)PdXF6{tmtzr;(z$!VEE&|z9mD2 z&1Uz2dVc&+M|eT7?x@ed{O*VuGkjXN8E^*pq|W^#y!_w3ES2q!sKMm$OA>H?^R>zF zgV!g+K51dh=pyhPX6r}gR@o>zeUN%Wz%(htWA96N#C1pDzF)iP-+gsb*NI6e!F)L{ zrcd>-tajoIKSw}tmt;rf6HoMpN2DR(9aVlB z;4U2Bxq7Zvkyhr$!?Awd?AxGr7L&g+G8|S0J41JGZ^mB|hlawrx84YCgM*>>*paZ(p*E9{uj7FOq4DspF#dy6VOFrSvvXlV+9Zr~O6;Yk zAJA%03Qb;mdCjG*;c19)xO!n8AF&iITTNSq10T#dbkU1hL;}Mv_UhtYK{*}xo%tv2 zW^@A&3_sv8y?M2{BV0N7nK0dZQ1ePWnxkHz80DTIG-H_7xu8n5rZGq~U@-0GVCea$ z&TBjSF!kB4zL2Xhf`h?VSR+~j7N;~a{0BZ$`&Ss<(Q!s?f`~reAf&u4V@s|%6?$qr z82b#=0QjVqnEldAZ5*407W$O2FB!ZtE%JrF_(t8hE8;z*{50*0G^j{wq2!y6G^?`= zDgKS|Zvx*yM-;x=+c*lrG@5(_O?y>(;Za=1E(JIwizNP_Jj6N7!Je7NV%>@_F6J<=4&X)UOi7& zkWEin&3p872)C=ngUbSTP^gZYK=?9x>aG z%340~?2Kcv{z+NW-!CTYw&H*HtjEX^f_&~cD{#mo0&XsR3zcVLVf-JbV*fE24 z(R}*yVmKqlzNKX*{8)mr)9*|DS2$r5QQ6)mn;K_jc0EV-ioWyf&yCCX0Zt@Z5c-v0UG7Y_n$WFQQg^&XJ+XiD7ytgiCff0 zi`sSOj`?xUIV%zkh!@3_@6jFiJG2W;9er76@nKwXSr;&W`Ui$@LAVB$#+iR$DLeh) zsbiht)caj_#uot#XRyEYT%Yo!t)zCZdVJ=1XZX99$HJ@cOshVZbX8uowvX@#VF3mc z$93M{&*z^J)BRumenjok7(VrQpN3vmko%$JKC&&@s2>}Z>7<2QM>cYS~Ow6Z$?bv zd1)8y+Z7E&V$^V_e%us*kcsv{(1TILIWg@Bt$yL@J`)OEP+yzWb|`0>5f~w?#W7#+ z8fa18t>LA&vi4Qqxv1;U{z2Lczw$!AZZv3@eS|Cn8vFw~ZwHd6{;i+`Ua2zBNIUP| z2RFlEg2@`)-_top-gAK$FUpd+yP9-q@Gw(K;XUu)d@Y`;`X#i*y1LKddKx05+Lg7MS5QPQgQ!xJu=i@+_W$3M>cZI{y z@T+Qaes$GwiQfbY43=BO3mVG(oo<^Xz)U+PM}iU*RuK+V*4 z0I{L8KDMZfdTEn18-U~`5)ApUGKMnh3$ah0kJI3|cq)>3x=gM5wYZE7aDxxWUqh3% zw*^-I5MPCfsUx7pRnnxdX*~Ws&&;2~-Yb7fU&QG-CpplbYV|nGsAs(itlGxJ=XGDH z+}Ju9&ZM9|bn|ou;sEQZOQ_m{_YTrS`-T_+XlQ6{?jC6F*xM&iN*KFbY<7tD-^Qpm z%;&?6jI-f~o5w$O>@;rrV?N|ZSi|(xtuYM@|K=%ZYt9D32HoaPn13HsvWN@x0#0;jmdmtFBb9CiOrBKgyg3W zVNssCgux#Wv&6BHTM``Yl=X3TW-m)6`MA#9U)S0EW7@?(AjZ5)XP04$X2sN<)=oGK z*dD3l4`}y&hjuOZim6#q1wF4_UYNPxda)-wBpkSZ^(8IXGlyz83vO<$fGLB)$Dx)^ zI&ILIb#8X_r^UdM5B-~+d^*(?saq4*Cl&A8V$fmY5elGI&Ccq}r{}^;XJ$Kpb&T`B;E4wHG~Q?!2|-dvye;$z&f?fb#!uWpS4;TP$9lt(8j!o{O~Y0+ zJ}4D>=-ws9@_TPg>a6>=@bCV1M1}^Vp*hy=pVW;6-;?IUb84g0Vo)(YhfR^y4Q5G> z6=9%`wt@M6TlL4C_h?5@FGu%ugx9_~rt{RxvWw7Q*7AKZenvMReC_3N?P#w^Xer@} z4D{{ai7`J}443c$?G3I$WH6S(`*npchz903 z71^{D{O>*>;+^zC8%*0pe7>&ej4-X3Oe$nyVz13KeBB3l9TVP&o}%xIT+ z@G}pFsV~ojgqww;3d=COZGfm&s#;+sr0GjRL>gMxU(Bmz5WX$U*|AyzpYljUo))WW$*Sl!N7Nk=xyGUir^OJ9Z0l%^ZIdpf#z z%34r9HT!f3;r`ncU5fgr>HkOoaPMlHM)rp0X+wMF_T|xrWtj(NC&fOWcb{Rwblp9! z5(cNf6j;2Z69hYb+;h#jRaT8e3bGm#5ZN27!Zu_2*JJXOMGRD@--Jk?+Ktr!?I-}ewreeq zog)^SMKN2Pjqd4eu)E?r#eiRt5b3b2+V20Hh)O!%LoXF^PSsAWO@HG%(<8(`XomCU>G?st@}8%3(an<45Vo{c18v(Vd(d3 z=k`8XS?7-D_q3ajAOf}RTT-V!t8@IQP0wl<6~?wp3>ik>xHlab(sSP}yY=sj2}F1S zqrV_);M+tOYSd%eAs(63CsS}LihWGkA?JsS43YWl-56~TS4E1)EHE z$l8R)kwe3R_Q+nXj##Hka}8})V@4NXyj3UZ&_Wpy?I^!cemy?uvvcU;fUxo#+3|likt?X_U49PF>449j@Gz zT?7eOF6rF-A!!)ku8l3}>b_Z>lV1t1oSqIZJl-qY0wPxxvrl({|K!|kcwI&kRTbd{ zS;)tN0~Yj89PZM6;nEO6=Rb2VDgA%?#_e!b!h${tsnE3f85jwEMFUL;%{W3gw z;J)_o%tJjo@N}{0wdW*ry`|Ps$d-Yp16)W;K5;H(0;Aq1zkY zxuo;^(k$qfuxyXC2HuwKf;kC?T67kH`4J6KJDjyJ4smfW=&Ub`pwgW(*{q5yo|-(R(0p&zJ`lo z_}nX@yofhdiyPsZmrDeO2;b~Ld()n*gnv&V*ppf)cfZ{(9IjG z8fXn&9bss&SAqfExG*C766*MEhqs3vzxiZX{?_R*dwy7rr7@`-VYd0TB0gFq+fUDBOXe4jooCbeaQ0_>Fjt@WZc>bv$9R4n^`6(Z1 zxGmt#ZAZe*z0ZZ!4qa2pB&N1X=@W>_mMb+I%N+``>EkX9j1@jS?&*UJaMhX`{ z^WcI8s{+fhfWVjJRgQ>)h)P)bb$!}cGUc^CDkjb7DDw5zEn{}F>Y>Tg3!qf&`U$cO z5&%^SL%8_j2_!}4)k%`f@8zpdo4d5KiAInjx$4Y9X_fwfkADK^q@=4tMCelSbGoYL%h6p}DK69aXSg z4ob<=-&V2xOyE8e0Nk5u_wL0r{WXkTJ&y*!ox4h!4~^+hD63?d#H{ziNcCyKi@J0? zXRPbA#4&J|+3woqt6yi38#ZPH{*$TA4gg0AJcvojGy#}KVCrklQb`^uAMC38#l&N| zmL{s$E-}v-8$TW8G--TR-D>Tbm6&pZ?9Hg2_^**R` z_}j!p!L-bZ>As|^^B&mK7LMwCJ=W^k!6lPhVzOb_xZnPqtl1CtHfDFP*CfxF`%Vc5 zI5Gh94bz1XK)jgs$?H1ff8~~p?kNl=eNv24vnqr0{a3Y9%Z@U;_9&`+`mxS%UHSi? ze?4aJ56CtE#pc{NXP|-QEH;dILqk+&$7mXL0#m;r5BXvj1IF|G^#v^hqcJ|}pCh9% z<7Uqw`~Ib++VB`i2IwDAm||~l&TU7RgsC}Qo1qEjP3^#rGIfN3x>0EtOieF^lVUO- z*w-FTU6>2!&_<9tJ7qyDVvm^6hqRM#_s&a*f#E$geqNV7gCS`*{EDpad&l5rgMaab zZQ;+vkYAKW(4T*MRJ-7)=eC4jf4(ogDf}moblNpsS8vUSk3F(oJMYAY@T!hWoYoFB zLIi{<)Ti%qdB0v&XGe(is2Kduo$NLh`&J2!FyQ$0mnN*{N zo(-RTtj87~Cv^h=XXyXkU)~HoVsbf~KcYVHKmWmAl}Ex$m2pMoyK#FyynSIdZ13rj zR!M94)lY0U4Us`U1Tnv+=w?lh-n~W@K?|S@}{5rCsbz);z zZ|K<88CrU8hR!S36pv=iiiB&kq4kABy3@WZEWCO(tWGajoj@m}Jbgl+e_mn2sXOT7 z2OLkFKjT~c>oB~fuvNdO0p8PSYPU31#@}Ih`iw++-k}X9p51@^o)1rV?)Q8M2bTP} zyX0KwV7PYZlVP<_b(@|0&xukzE@uve45M$2Ha7|*PrVy+E+(Gy{84=$0f0055;7Zu zuXtnrqaZ*NqLKHUedI+9Pb1wE0=YO=ywB)dh74JNqo%N%E|C(6yzU1+*p!KucQ>R{=69FwId&l5Yux z;C`m=BLTp@t9~E#X}@k5y?Iu92A@~xYdy6OAc ziDjp?QwwQ!!4BzsFK4rFjIP?5-gFdr6*NfX9o6K(sA^NeIk%S^$WbDzOrjuOvxqM! zOEf4hEgNa#L@anPlRiyAyndc$J>yk{21x}${;CMeBnIFuyDVY(%TNZqacp`Nx>_HfyO6gxLg5f%JnpfPrigGYON0Recy; z81y~bslO&hyI<{oOjg!+i&6UV#YG(pLCrl1gB}tyIHVnap)iZ+qx+>UFD-zB+991= zY_{EYET!+4APK{IIIiKVHSkjFQ3w)+$uslpkm&zLxA)8B0mHN z(G{a6Bi}5;$I7G5l`iWv!^}R?4wN&&C+cH#^J+bd$ku z?QXLpd{Yc0yX61sH+P0_iuvUVxqtD6LDPJ=q%-+{@tv{oiq6KPB0nWH@?%f+hJX2` z?Z!}ArrDn-WGK;8&a;Yu6f`?vZbvod|I6gKS*$-N!+yuI`|KwaenyNlYV$qnCoIss z9^2GrD@*)Dd-f%=c_``N7yumXZ4J-rxBzG0aV?sB5NJ>ighpR{F5bHEpw#!jBcapu zT!S=6+9gk|N4ZE6SSF-;$yOy z?~c0p^0&vrn-YSUz(9qtrKxZuT$>d`&2GFqj2%97xKpq#;g*CAsP_N)H%CId`Z^jU z;A_*34Xu)Hxb_NZ3Ew8Bd_-Cc?qZ!q+{Uacf+G)KdI3X!&EdPc!Qf$OE1+$1MOO}T zdw~gj)CYb=S{mDQYr>0o z_*it!E zT=tMp?-_y=j{#NwFgMnM!G;6Q;_Oe%1Ew*KQPHT5g7yQ~DQ=griQ^I1F25D}!tKyE zI23yNBplkkD=c0o(!$i6JdH} zM%n}Khu&V-iNIfl^>>GJ=AV3t<4L|ao`msBap9*IBLFa2nVz_`M4qM^ z4m>;m*QD-$`Ov4r!uF%eD1H}6W6nHTP2kTWV7$d@>z(%Wc>Edj4-;>UePr}y$wZ*h z4~z^t*my8_a3ClUV^0PR4WdB>GrV*bE3p1xFc1iv-&n6iVzS&VZlgb5C;kmt4;%6M z#>V=156LRQU$bZJ&J0k57UVZ#E=KDy zV%1s-PG9QfZEIA@o#c_GbH7DzFwM|{z(fOv5t*a3HI3rf*^Vu!`j($|?h&K1UCh*t z5iL-~lsqm2ckJ4~rXwB`dOs;k?6mbwo!Li2{K+FSPzJLlWL%H;)FBzg5>t)#G<^id zm7QsBjd0gp+_+}Dq=b)ar&eoXIfM-C&}b1UJlDiTot9xXEbmW>Q9+%bo#O>9kegMI z_jUY)GGMX)jSKVPtc;oM8Eg%^=5$O&=eapsKP*}?OxG>pLB<29Kd(ydAHl7deN^(* zUt2_?c(cs0;Bdd<l+HEO?sr(&JO+Lj8u(P z-fhyf;mS9JF^w`fwyJWpits=9(vI-eAC8CL`^UVoKS0|K(4K;g_+*fBD7j zj@~p9_UX*`|M<&0Oy&KXKhhoK!jD0`E2=Y&Mx>6NZ3H7+Q%H}&Fe7wxb{;kQ+Y|BX z!D~8#;cmC`{L3FM*{=5s5BG+D_DrwU^Q7AOU1=VmUe8Xok44(hhYd$nxW*3QjvKF| zFTAE>1h1Z&3c7$tS|-h=y)dCZadT`zyX8yT9d9usc=y(6pQSNyRss<01I%dLP(H5S!v@4r9ZzW$uW?HPnnsR|2*;m&oe~s~w>yrXV91UmIkYPbZ-?mqz0YsA+ZHg4NqJWFoxhgEGART2ST2W( zR3+dWLOBrjT6<}7YszS4o?~orZDxz=7%e89@G%VvG>9J5b)lCexO!58oc31TzH#|t z7!tCb_wSW;{{x|ARoWv`>7N@N3tdO{ht6H+C7e>d$iQD)SAS^QzArQ`-Uv;7+d^Y| zcUZf9N>>3+g~>5#flSSZu11X`O^P>$$HJt>R8w2GuE&(7QBQ9;{5ziy-LIVs7r*&> zSdxK2FE;hfk3L8kenult98VAD-TSJ?6NXFQ@mJw^cNp*^0N|aUs>t%tBVXy_C*RaD z3;4Nz@TGaU-=C!O{K$(l|D$T4^Lw5S(?btwLPl#SLi3k4r}wG0B@PO-^d3DuU~t$%;MOlMk5xBF?=ibr3 zSvn=;`*5djOZfpL%8K=m1t_e@(A%bfDN|DIlgZG{0PEu{W7_*|W{(>I zj0W8pU}e>C;N2#Ntnm3_kru<%FXmsJbkaW7 zpw*2DBcRO|4@InfOnl4Dx#c1{`iNItLRtY)pR^o?`lv}CW!osdX9x_iVDvf_Qh(>e z%x*Ocdhik6u7xf;)&_?H&7^sm+8RIiyPD9usM*CBbv>U?@Gx%{`qsJ~P zZTj?K7Gn)MGrtr*{cwjd<7fxqo<3S!(PjbJAD9T)y^_(mxZ94E~%XV!>O6@wb!O(5ntBuRf5M3w#$0{f{qWM+ALLQ?U=$`afdl~ zywgun5g(P&xEnfS&Jh)U^DMHndZXS=>qPXKp);j{399wsD%!znH7(YL{7i(mi z8`K$$_kx)9DG3OMrD1?-d#iTJAeCzjUwV7m`WWqaL)Xf=>+EP&9#Vzx?U5DxHftN= zF6bQpOKMjHIA|wuq@pyy1rw{G(X=;ijlqV%tf}wn%Eu1f+Mwo=b^N*TZ@wZ8kI6*| zI&>R@1U+%LE~>eA$O=E#@=@M)<%1^7qB`Bb{fisnV-iTvceq;cKYpWGf(6Z8%IDxN z%c}H;egxmZ?mS0Fa6TXLhG68X&guW~t*P(}&-P0oAng<#C%B+Kd0JNgwM-Bc0x|V5 z{YJC{|8RCUIrGlH{p(>d`7$ggtp)2Jjy%hUJITNO%B1>xOZfa#7{iR?P0=PORmo$du7FnimZI@QkbZF|7 zR7VA!pO539p{Xs5Uq2uEA9*k|Ow5GlX&tpdNFexkFWn5+Z{CuIk8F(e^r?TehOwJt zVPL0@a6EP-Jau?aIQx}vg^{zvDpQ<4Vu@qDc`u;U{ODzj6vBaXSb0k>)=~^|xHOCy z-ofSKJaDpL1U|)|ruY0j9cjVCk2v?sTMF|ynwvCirJWi&5k@2cSnDW`94XjbWHgk@ z8oub8CR~C#cJ%dcP2c8}q32u8dm{n>1OsCH4VH6SN~4>-g;U|A&zOJ9P%2||S;E%r zBf@%wS=&oYT;k9AZ4nab_Iu;02V61?Vu00(#bob^pGuc=`C5GAuVcesCDQ)&+U9X1)_RHG!KQDU$J9Hiz$4)6sp-sJd0>kZo^f5j}FxEul ztl#<938u{ak$#Kcq=O-VqNURhTS-P_8O5D_P>B@lRg8dL{cYhs?OtCUMpI_VuE&GP z=PJT+?IPaCBs_sh;fM?R)vY`lGiaWo;?Vf?@U z=9C0KQlNewdk*bp1Q6i|LMN^)oD*FyOXFc$!kktyyNnqa;KMo=fu_SB{l^>Ozx##l z;RmW)t~dO|6Y-cxI|y)sr@egm*z|1Q5XOVXlKeEK2>}4joE;4?E{Zum&Y+;8yoM6E zv#KmwouB4e=$i_K|v zcXo1~&fTwH=l1ti-FokKPxpk~1+gGeGp}#m%K6rxXPU#|myd)&WdB(lV76!Aihz=T z?nG$qT^D+x?pKc;MkypLO$_eXI6yuN^4!sbp|!m`G-55FXZKa1v8^+VjhqS7jWYn& zL&*JC!tn4AZKqGLg4o@;*~u^tcR*unN0?az=)~H_h7TY@u&hKE?)^L93-C?nFGkYS}NCeJ3V%h{8q?!fTy*EVQ-G%3eLO|YM1o(ZI z&7V}T@h4pXbuIuA2Lk^Q!Byx1AcVD?%8V7WK&&@`{npD~wJpV(k7fvb?>hX*N zK`S?Fd1xl|Ee*e*kLAKI@Lze)t~^Jov~g~+p{cRGv%U8QEdiAAow-$Z#NX?!BA4?W zd8QlEcckdQ(S_#kp5MZS>B{h6*TS9!E-o({KO5nN>#Gh3t)H`OWzJQ z9ezJ#X|-}GwBhc$qKv48znD@ld{UMtkimZN#mR8*b(qc~PD-1yw=WzY3*!KQUecq+ zaf_*aAuO=i-0|kfEA2@a#?)7l08M<&{GfTcPVDQZ;S@AI*B&6&hbu;uJV^ zrjV;bKu@?qpkKPbrhP) zi{fjK2X1bI;@?)2cQ?Xr$kMMi_v{2Jt-BB4-rw^_rvY^4F^k6K8S1~3(9b`SsP$5Q zXSis0QK!g(XHf_z`}3_=w}r3ZpTm0f&`h4h#mKC2XOzo$iYE- zXo`p!pX++pMotQwH3^0HcfN2gdyyp(7Z(OeF=hvPdL(Beb`1>E*5M{`_K@8}&f`HkM!n>2S#S5Y$0KfXjXT$&g z_jg5Zlk0c2M$wG*$UY0K|JLUQBlTYZSb)9Y^I^!`D0!mln`RPZ(;#O0vYTgMB6krv zT<;>jr09x_L?#dJ0QHkBASa*J?Iu{@*MUSC136-!=NQi&AX5}A$nIxn)NvV;;aH?!XzrmhuZ73K7_*+_av=(vn)KvKVV)Dh4FSIjGjBWTX@H~!=dh_khfRXXdP zm&cwTjpf{gXo1!+e*KTmgdN*j!wn!GnqA}ggrlbl=Mo+;dbp4*@@YN?P z;YQBG{hW*At_75lz87VYBFvsWf}RA{z)nP5MD*MRvQgIkY?Z^NSg*jp${0oLoIdz; zXqkq~We%`UoqSei9`DbDBeFyFnrY3Eh)IBh{aU=Itda z>|;-P--xLS;J>c$59+^i{8IF5dH^^#3cm|BmLbvse>BTym40+`Lpft=_nA1j{wX`& zbJ}vS{!-HDbwJ$&F^Z@Emk(Tw&Esifih$x#2mI-Asa}gIie8#wg*VrGcB|!yX)M2# zHs>inWByh8P)=ttwdQ($tX6S36aIMAEDKAo#ci0XS zt|--0Dk2y4*XrqaO;_ib%snoTZuaN6Gz1q~p;{V$@fk{Gto+w0~>c; z*n@a@{#*+D3w+z8gbGMGmjnN%5GZoBYpcEN9zR$O zj~;-P7AmC|C*`xPGqGFqQPyw%c+wUJL=4PGfK*y+JAZ7eA7bITB6S*JlG)DG%M~uC zkWW*5Omx8?S>oHFe%*U*Ti6Lz+xFgoBD-ggaLIxKy9QLv#awQ_mt0+~ZRwT2rTjHu zv=*5@GW0vnhhJ?zehd|Wjnu3pgFiI3006~B6a{%BT-tZhPB|>3^qv5anB;xOUx)U!77ya;7Y=X!eZ`T6jf$0wpqb;G{-A}msLNS1A>+Y=QOrE&2- ze0D5;>({9dz{2@zf4Z+Y1W0N{pRV2 ziWm0*cy<7kbRfO)?wh;Ax1O(rM_(92$y|Tf0uZFre4oIrNR8*9n7%tA24WOS8RsHk zDbQ(|n(Gtz&rU>@W93-?;a7*lOK^4w{3k${7DY(W8IaCfEWDT*ZUoBP+S3}v9~?u) zP#k;Z>{XN}kfM0QPlLR;397BK_hTTuPQZ;Ir-bQs0{n+gP1X=+WpbHFt8c*Ba0uX7 zju*A`cc8&t=YG(&a#q}eeEn;17Ca9kYYX}%Hh@?-h$j8hnD=vJhgid7{fYan(>_L@1J_*;x zSH3+8r^jqmWZ1+$Z4%8)F;An|@lgGptm)F|E z0ONWF#KH#VUeS+7pPz_a3QOCS#wBJpB9@a1%Ul44F^`>w$gWyLL8>| z-K5+dw=&Kg%W_V1w<21kb8h8aGLdcZcsb8rYhk?Qno>k&cycD}f&1pn%TI?Ltdk}V zx>LuG!S2sm+qgaS_H`lW57qzV;jn&PcbKe9pqrvEoH=(mw6w2-YYMTKD%>vX*8|L= zkDoF>2f%wYoYwduldnU>)% z?I=8j%i-pAKe`*t@4L=tPLtpBGsk75!4RzYM|R$YHH7OB({HPlVS3AOqCDSI*~}a7 ziSnQP0{SkfnznyA0|-ls{1TwQNZ6Vz0$`kM{e(pzpS+3v-^E$JWKHx^TzI)AW!_o60ZBh&-7rE8bdynC z?L*|z>&Msnh{zwoSn-lS^)@aEF1?hx6{#n(hsvTZKq`B?0Pq)|s&e_&q!tJVGNkh; z^*0xl52*-?ma3(RI2)Q$#x@szQ4zxU`2!@yw-*3Wph7u#*@aJ_bm}hH^1t@dR76O; zE0kVPGaZB+ny2CeD0?1ruQs+MpF3a~8s0)yuOKAt=5)hoM(2>jc` zZ2*d8r}8{6!vcS{=`iKI26gl*fLST_%9d||I=BxrdoRIBPyzYy6pHn{Xibp!o#+Gj zC;#pY=H0xYHN-H>RP101MQXBn+h0WkfEeKpK>i;gT$Lw@y$UmDIB z9^(uw#&IRgvE#hl)v?mX*vB-7Y3|DNnf#4$VNnt7a~bA#EH66Mh2lZDTQ>K$h982G ze;djVby8K=18jZ^Ab%Xh%vC66`-yk;Mz;EQ-30ZIzTN|+aXqZ)mZK*4O;ClU=5K*Q zFA^a;0YcY^*If7H1mh>tAp>MB^GdLvaz6+RUWXV% z2IkdU(Sz=XQ-~QTx^OQP_xIe|m9xV&!8&D*o_uv8T(_e=0*H5Dso>S4lMz@KDPq~# z$<^@XM~0&nfGLvN$cH$gF9?$pe$wFwaslazNJAltdnbf5tGUVzN^fFSsVUp`FR1ag+Hz6SP^ z%KR$i{iCl9MP-MhDr}@2=T=$vv_4Zlv&;71%A9ysX%(OWaVOc_CXo%RIrob7TZ*j6UXrZawM#cBllpxkliv(tqMdc6=!7B%8$nR1 ztD}Q@dJ)&??M8pZz^M@9#EG<&G%ii#;K;2c#PxdVB9ti0tuIQEs{pk)(5o z06dG*)0=h;hM~iU!k%^Wp{u(GN_{o7_HPB5!(M@!yq0n8M5C#DRFi&<9i8Y^=!@r} zoGM+Lwui}a&e7>=Sc`su!O<$FLmR_}RuFM*tstr}!#Oz_W+jGzn#yB&@kxHoF{WUFOl`-%DF=3L{%@XYqo_ zWYVlByZr4<@1hEAnR}(6$YIg`p0U`pZ&2+}$ zEH^FU_?rCoG&d?gjjjck1B-m+M~=<|!n=DWyBwY0YtJH0&Q=Rw#Un!Aw6Sa_W))`_ zzw54iIlIipm?a&N>~Hd{I&S3w!@pX(baq~54 zFPbRs)HorW`%F$G`0-5LuJ_C>Rvzo6d-}pE%4si*T_L1i)e4ap1}!Pyb}!oxaUT&D zVHj2#FcEsoxnV9MY{n1CcMmmy>pRnibBPm?SM?y{>Xou~~W8U;&L3F3^D&mo9LH zpD>SF<06H}%|aOhvR{9u0-I|)_THPKT)CIgvj7BMsDMji`87GUbZV#aQ;eljX#He} zET#Fh;$rHq(k=g3Qg!oM^zx|pu$lL1oQnz>-D0ZJ7x^O7dwq7Aup2|~F>0m<4} z*gl-^vAx;Pd+H-&Ng6NMZCuu+T&e$H94e32i*~{yt(AmtbD`XaGPEDKwJmBVx6U2? zE#Y5(dMNzpJt!rEy7%rIlN{;*m(%xQqh5t~*I@2Ujr;uonOT#5|NeX>g9^$#+;a^q z`1A*YQm8`7lSTj4Q(V6&eFQvqxh{t`ufEdZ|1BGVtohq4_VhbS>lI6}Nw z5H8-a1P+{MZ+ke?XD5QhWs&F0@X|6#Yc6IWQ7LDhn_SLH&$y3@f|nu&(p+{k{=2Yw zE}%3CVDb!$>)&lJF>{Qx_rOr4viUjD4T0n>+R+>90gd=U!$ zm!2F2K`;}3=A)a!R`%ZA=sB<-pL%dGoP*WBd=~eyryh8FABZpjG4_P}-^;&1^E0nj zq6x#V(Xn^k-WwI|b%Eggk^7c@DMJLV2qFKg zN2YmgvM4YIurKG*COCZLraH|!QpDyekXAPU*dISX7ZCw>BRaMT-4QA!6&dPNmV8Zi zo+3{_NFITFo4W~QL0&V!!r@2nPY53oD8`F)zD;B_j;#P-KaU=Y*@!@@B2(1I-s>RE zUw(TW+52<|iHtaj1&dpd`#*4O1`!J^OQ0NeXiSBW)98iJ%;`dS_K9c0N6{AB%(rL? zAie>coAZ++;q)OmnPzr|4QqFVUQGQ>96bcb1Z6j4=8y5)*xv=q|9KFinmk4K0!Y78 zCx*h&Lx%%Le%P~Te>imX6r52NkiZ}gIL>F#7tq{@#R%kuX1FwT_pL+mCSn^Pw03Wq z4*R!n2$k`%aGnWh>1__x7fy!RqvPB`(^t#6%0JhH`!cQ#o_;MHtL5{V-;Hx*iX*xP z{98u;(v&ZZxgMfp9)Wme|1afo8_cgi>kD|PcUKrd?mu*HB2=n-ZkcWN`%zzv5jgif zep~?dBj7GFfOR7BBm(;a^9czcu%D0tN$%fw2Ru{zBj*6M#&@4?hGIj+br=1#s0d3U zWA*mMrrH@@DL4fz{ktSO=gCQyM5e%)B>r(Gba_V8+iHJfYWHxFplJGP$=^_TKBrz+ zA?Yx=tgN{&mrQIz#xk}G{|du;$s$%tU{f!2=?q#i>cYe^q-frfSlf6dWh}}3op>o4 zbJ=ZTu=Dk`aA`{d;NzA$p`@F+ktYs%NcmApA9KbKsBbKoVOv9e`l)&c%{ zX45sW^7F+nZb-t?$2G>rR+riS>$&q0C1#I9kNPILgx`H#YXmk;w;Pu8o!Ez$HF<_g zycoLS(-BGCX2PWpI#1#}R5S3RrKv{7DQ!$PrMGFf)oNcDGS}t3W6|+X+|$XI0#mio zuQ;oh=kW@x?AZL4HC|TtA(Wf}7txrM*eWf@kG-&y?{DG>X&u8Gw1x1pSC zJ;1a88Og}UWf5xqSu|*G;gYL7{1ME}{V0m4q{!b4MN<=KUUK&#r}~Q@?~fPYAGo!n zI3Pp#iMu=*QQEU;gxP*txzbd<_=bgS2PQCaC_T_fqVI>v=B1I)~u#SD^w55cV-B zP`TnX5Ep@b;-w_IVsx$}ss3r68G#%T=g06g&oME7TtC@4|7m)2ru=S-T&tr>IQ8T; z6W?85PSP?b+xZ57XqQh^fLH*(^%}@PClS$!Hs){H+lIw}`S1)11|tE9>T3J2C_b-Y z`!AJTrFa5mB5ib!zcLv<_waDkygtHZKRbKiy!^_i&xS)MW?=X4jx7CO`qo%v+dcvi z^2>j8HvHqC+7>CD=F^0dd4BEfFJ(`)@2)p)=y|=HHM7DepK@QCa z-qsTpIOa&lUL}mO)X1%I7E@=+k7wm~{g`cZ&7VfA{RA8WQb%rQ`^5YEX>&{X!>=Sg2T`%3mw3A;HnQXla<9o<@XWy} zL}8M}0+B5$dTRlo+rpku4}eZ~^@mW<_kaAmi?&{ zHh@CCo(OD;=n(LK@7ub=CqI8CV7x8-!cT08NCV5f6Z!q$|MFCL?Pw*u05`zyO>I#e z;d*pyyc@(yruLse?|~)&f9ucBh9?-8U-~=SBM|xoZ1|o9|MAh$Xu|OyA~NIJk<&=P z-?i}^$_HJq|J}bi8ZRa3ytMY@ysS7hiVesn{|uV>xtPQ}4qRUT25Mb4U&Pa<6n@N^lUX5uH%qZ$(5xeIGA# zhO}@d-G+R==hR;SbZ-XY6%ly=?fSdbSHk%1;!G?frHW=nrH?Hj5Ssak2-7*Yu1OJ6 za;Av9JOLtMio;8e0MFj-at8n?4+8wZfSAgGV*t#E*&w!$t_)4_CQ+lWqobssa(BXw z@yaofTnp7G%HugQ0@8H=bCT*$IerGKAz0REuO1Ft;5690d1E+!;$&!U?}FXGFPuMn zmU|(46X3lCdH*JK1k7OOZ*p)rbaiw??QaiLjf}y>7zFKpL{`otB2Wpp-f{zS{$1hV z;nM*2GxTkieaPNok{9Md1|W9OG&ddEyEli0$_Nt=mq=eP>xYgssMHbN4V~>_mORxP zw}#e@l`wPQY?!Crp1V$!dq?Mva()fdZ+J14@mWqwRE>4taDT3yoZoj{j?-^>mYae2 zavix1`DuDxF30ek?-+9brFtWPwO(!Z)=nMeqFhr z0Da^HhzNj;1n_Bo5d}V7W32Ib4*9g#$t8d$w^Df7^R2d%I~WrFBe+#b4*;Z%V*7!j84}@%385&OA5H~CFMzfSGwC? zkb|UG()V)yi!{BQ4FBpqiFL11P;OT_ciF$Jl2u<&b1quf%f@u3X>LB7y&Xq7Ezb))bzqM2XUB&4QqCCetv9fcD_0> zKQ&fan4hdHR7b|AX9q^ALkQi?oEWK093Pn=2P&C?oI|(}(a3rmkee+|A|7bKoQ<;|8Eqi(T_QvhEijG}~a; z{Wb_pd58;4m{4j`OwVP9m^gwN;HqIOVs1;RyY#_I?W%{SdQxAkF}ZyBI2@Y)qpEme zgrF0h=|v8#p_AhLtY3}zdp2@$6>z&9Wl;#nF94K%^A)J_Xw7~Prt<#s=@344X9vm; zr^4;XmkLOpMTYjy{n+`YK>Mh;!F61K6YD+o)5SYbw&hsp-wWGm(Tb>qObb%7s4B-S z0^k&v-9u2cWG|oMs2YQ+XxXwA`@3m(YXp>@I5ZXZ(cb4!&UbnU(^6a#U*ys~2_W~s z{QH3@+uMtHnuhYDlilrRKQdW4CuKgG+_yT|b=1!oeBF zUx4Oz0IUo!*~IIheE%41`M>&SXCw0J(WU z9(YF|W;?OjjkN*K4{Ory`@K-h@3^Kj>ORP<`#Jwz*L6hT@t1z?_iU=I~pn21UXXV9ZC8UDXNI30F!PPkv4yKxY6EaeEu{`bFnH0(hZUuAYx z){gtkvmlN~t%Y@u2sWMPlk=MUZ5U0D&JoPvF*#}Th;rjeiE8I@5ksb!kMWbW9vD9Y z`fJ!oZ4B>T5H@Exd)ClDbu0*ozYS{?A^>*7%`^cJ-hobu?I06Rp$Jjr&(?Kt9dUMS zV{d6)zm>RP1N1Do;+(A3(m0Ku69HP+8M_dL>u7xId?8hj*Z8&Nv@DZ0MQxryUegBx_UN* z-X0LZm7&nwBew}+SO;DMd5cv60My;Pc81xpfpCcVokja+(}w;~eeP(OJ2n~?IiDQm zIH!(p;m;$V!*iM(ZaU|{A43{{JZj|_w%nQ4eC(e1%<+cneCG1=yHA}rX7ddrkAHaI zd&1NP%p{^G!5r>`>}ua_N{awFV-+dAV(x+vvQm*++ zPrv;A^#K3N%eY9>FGzZ&0UmqxUY2unc9c7MkufUg`cC;{^(#!F zP0URzH~00lV@ZE4zz;wgpbLvD+G5>rwB8E~H{{Any`b$Y7kZJn8)vIiGjr1w?6*$NPh;O|4&K)J%EVN4Xl$`^Y_vLZ zVr+W+?0B_ua%_HnN}Z%0Q5m53sLLDFF!7f<<rKkl*z|a1w=OZimpecO6%W}|Eh z-qoG3oj!YHCQ|yY;qu##mhq3iqm#>*EZiYHjQ0AE0`T9BoW9!aJMV%@&ZT!9ys0ff z4+1IIqEJwZsV?<5QBZxaO3k964ldMEwhjVN?LppN7T8Bnpr}0mI6#D#LN&W9hyN0n z)bjxAUWf&1)m@-@I4N%06n~8}WCNFCI|%ZD`zFfPkPoFkTj9K@;7TCrNst7}mLEC7Y|QRKN|HJ-v?o}cP-1p z?HEZh_ApR>8kjK3Z<}wqQ_NsL+VuP2o>+&ziKn50pFwe-m+U;n;OM!qr|mC0zUy1( zp1TgkiHA?M0x%}-6~i_C_v;`-x)FO20VzfPF?2F0`=1a1rdsA$56aO$f(CrYSOtf_ zK^Y%K+(GT~u3we9D;go^&8zOkV`ytAnrP>&6S>g^HD7U(UVwZ1A`-U|j-UNl01%MA8^xlB*gu-_T;JIYV9bhO z4mP2GWKSW3pK3uDLFd}=4CjlK`nO-35LUZD45U4m&U?G$yW`#gXT~wOua1L&aledJ z(wVW9Ggt+(M_7}u$Th+Edlo-`q#9mBl;Vf)>x_W&Nwof7wS@_y-_UB}I$YD1#0Ffy zPe*PExfUERz5&IcIaY~tgl`RVhFE@WZtRQWrMS*~bs*fh3&awd_ZJ)CaOms;30n;# zBcoyCo~y(7;29Qqdzb^Uvu5Ysu=c>qVHPfcUX=cg!kVzAqc5C3eJ%`ENxx+S=ki=Q zaqwgq9UTcxoF$60%*<&m#WjYhRR(4fJD@P|ggNvE^mJ_ub7DBghQrM0SZELd(A*k& z``3l0Hul8KWEh@q3PWq*BDr;I=-AvHrd~Kr+L`#Ra;)vE%OI}5;>ja^v*S7{!s55G z2se+vd_mN&%jM~}O!LU|DlqT+a+mAQ&m3<)Z_48U!!PW*JB)6*B`h|>{gxMRuFz)$ zs67{W5qOrGk3UiI>p*`Q*l%oVAwB{7H4XstO6}(v^BLev`#x@2E+g8aNhg`WAB@6trNP~Lv(($mN_fe3HWCxfF_{k1=EAn z4^nI}yUdMNg8gdk6i72o4Uo4m18`o(*CP8VHS}qzl(14uHIlLyUHo__Z$t_d5aI$2 zD2gchpgAfV;3dPFxGduL05D7!Khnk&eH8$T+O&&wRwXu2%so1iLOU0#RxY^8hYH-a zbLs8ka`+gm+V8rl136kQV8CzIyAEpN&wj8kUaIZWJ=bxh0JQCdk~IoIm*wtl$NjL@ zdtuK2nP$**@twAK`4wQ1THgtPF7;ow)L|~DiU?>r?+h%|*P}`QdZ_zSl)wGTRCtC9 z_LHzWtEKuhR7HWGjQ}CXp#CdcF6Aw+9qUpn`iMA3h8q3m@p5829IiMHzTg}}XCsa! z&p5}qpknm%Ag9YvaRJGT!GWdFq%1G3pP0^yR&i;H(mYzf)NzZ+K#N&jZ<;0C)Y}pj za|t+UvQEne-2f#&iLLqH{On-(Pao(Dnv(m%V`Je(fV^7MErVatT3`TWkO{!$xzTK) z2nJckk>H9M;*uhxOEk;4r(Bp$$5i4ZO6>mh>my+Zw)S}GG_t7Fi{KcDh>zXd3q`&T z{F|gp$}|A&*u+#sMht;q+Pc9DD_jg&s83=V`Q`d??)uXn{A(wx0Cb&ke5IuK z0-!xY_-7wH53)ih2mVI~CVGaAzOD%|iHHbO&tN z*n+HgbNCik0|X{B06PfcMiYg5u`r-hN#d_ydhQ?ot*sGAUI&uwU;f z4RAE<1X%nWve>5q{B}X<)dZmI{I)~=4A+80(cKAm!R`EXdH%0v9De@CwuFE2Z%;(3 zu-q8G_xbbTZ+~z@cn(>9&D*8jKzm}jO%aGcdb$eo0TyxCud9sPQy@+rL5ZQJ{JQ9q z)O*hww@Q4*QUEGh(2v6bqWF@OC9z%e>&gIYnvi&j{p&95g|lgtpsdfZ{2=vdt67ooOclc$=(n-aWgFWQnEFZ z=iD!M&hbrq+gFT_LqisZA?i8#K}1{>tq@7@8aha{B=I!XVN`s0Ke{ZW+8;YR6Ta|m z#3LA=^&o7XeswbRL)AY=8o8{VWDcI?dtw84-25SaeLE0WX2?AvR zod{S^Q0ySP*aOB^T`cuc%A=K2rKjH&MJjauE$fG9svHiz&C{V1S^PPu{cW)IPfU%5 zbH@%bPUzt1=m_Hj!ypqXq4TDFDE|X70oOn$mH-AvkA!pQ&W16}0FI7~uvgI+H8mAR zF$d_$xOrn=*nZv4@che%!pSq|_&&^_6cEL#0HQNvLt(B}T`(Yq+u@i23#Dwk)Z^(j z-2wfNp|59aXqj3QTB)OR4Q5j}bcOD{JHyP5{&4Q`gQ0Q^vxUrqBjCvRbp7O~eFe2p zBX1e!d;XbD=hLw4%x9P`;B|2}{kj>J|7- zH5(Tx_R8*)MnGO_eqFXd1N()HKO6w&tyutI+{_b^0x`dN{ZU+gPd;85tx_}e`yH^| zm*YIobmcQX?_Ix(ah1k2(U%gh@Yiz6Wz={7(!_Z_a;Qa@$2*6=6`r+rr3=DkHYw+d zgSL8}m7@&e0kD3@~a((2{vTe2RCGizyzH}G~j z4T+sA>d2kQ&nv3B7>(kw(vZTfwYUcM4J6PsB?3ro&Wq*##;lAq^ z$oDDGp8Z2jrbtZ!CvHT&gR4Hu3VW z87={stxzR*V!H0+AfR;tL?(7RautnekQ=~4aOqi>ZPU!12dJ#y+Gmam&ZvD2AAIe; zd#RJ9y$>L99g2`-dDf&~FBeN~UrWJy_s#79-e_4TZB%3j5pU1`Uh+2v_E~>};FVzzWpSaR8f%>SDMS<#~fBD|;DA{W!p!RA5cR zHCr}7RuvZFn|3wFad{3v_i@_sC^Gws3%_myYHq9QYatak!*51|C@6A!G9vhQ*@{KdD1q2@K9G;MtZ z=CwHR@aQ)A&%Ul~BNdQ&)#jQcQ32G?~b?gCAzxgQ-3 z+1-Z_S@D9aLP%X7@hV6=1y#1XOq9WR=jEqFdOL@LIBYCiYqSmb(e9)9`*ur)&( zJ&P^^0m9FGb0~63e7F#~aNM#J+3?9P3?R1+wVk}qvwf1|4 zZ6GaF26)T9j_{dpjD#`dz6BnK*}uS=kxhK(#@47EUI5dwWc|+OCY>`#4t)7JpKO28 zhb2Hm(J*3DaM4)b69hoE8C@&@03ZNKL_t&=^MOiGY%gh|9CDE-N1N3fMHZ84rh|(A zi0o21oYnzUG^jE}IhoYW;Q91^^c>uF6;yl*SA@wkQU#MkAS2}}(T(62(bdyY=kkaV z%l^36J3wR>-H6)rr$FlUgLKkjz%?Kr=GT>cqv&|p~L=YYXS>RyJatJz3DzMB>Ko-1P+%M`&P%-2XZ1fKOt8fIk zUer&JMl$EhPs1mp3iN1w3Vb|^*D7+jG+uwd$*vq;<_R6U+#<|lEf^BG`8qP89 zQwu0$1zWv#uF5xHgl|bDEY86RgIwBLSZKyah8b&+BP}3!Q9(UCJkG6iO*nGwbU4}4 z8rIBk<}hBnw{8fNV1C-#+C#N8Hb8rLbTu+WfoS69@YE7E0 zC9|_q1%xflmvZO7ahvCti#*GBuW~Z0T&db}nzG-t7i&*B?VI9f(_cyZE?MVFjbBzl z{dI-Jr6857}iC>+@APZFdX|)G&qmz2SIK{_oqB1)-QJJ3}8JnIuH##?T zVq|Lk*yzmU@$t#Yp-jd1ND>&YSD!lLyGLLCm5;m}R(=}4JWr1I$jfo2%XQ{5%kkzh zt-rUd%ct&Jwt?S64a<{Vo^bsO)h1+7Mu!K&w)D{{_bE}}T`QOGBH&QeV$P*(|Az39 zD`6Tk;Gb%!H!sQOvqHJuEk6k3>WxVg)j78?U5u>3Poq@mx$xO%ePM0%;th=BZo)hd7hxGbvzAp&)Lha&~66*xtW>^r#39)l9NpG)I9SoSqh z=H*xU?gOxeD!YHvo)*~cTjJ$?8~|efR;cr&(eAVNK|jL2=a2C_uEmU337~J6PkD*6 z)5tOdL@63zeQF>-h7u{wM+s0)(^%!UF$4nVKtrU^f8oiANadHZDV6^fF5D^#6!7yS z>wV)eY_#4%h5z;o0b)x~oCN~Aj|qijFoT-1`)Jch3pS4(sWPh$Pg ziBd%wVUy-f_OZdX$ zd*kimz148$qBvb5KBSE`3B(Q)3>f zhK~ar?*h2{Fcio(D7U)x$chW_zKUWp**-H1u(8T>fAi__sJ-7b*$E78!vvfx-O6Q8 zLAA3@Q_TNWtToyGwL@Qa&bt8ZdD#1(KRCg@SO}l~+AxSQlneqCxei1I?LzU`zAfv+ zV=tlk9V)rp3D(ohI(!)pkpJ-Iq43|J2SB;`F@UqLW5@lSw{%6jBfLEPJ59@yfiuw@c{oIdlLa7|G&4ej(6X4phUtf4sBtS!W8(RIHzhT5; zbORue4uKpx4dOv@1f5G&_rf8R?ctY085(=a)+K)C?m3fadIiS>%;UGC(n$j-5*xcD=y z*;&gIP@9RA+BvMprLd)c&FGgb6=3@0c<1Hr{Vkz?>-uow$paw9x;d-i=<4nY)93@3 zWrL|pb9&$;KsX4)^E*Q4#!aE`Je)oQ1Bjw%iV(dILsgXaDV8KR8t2zYg=5d63N; z)+5FQrmKzn=p5~8YwZf_c5V%gn+L*<8-~NNZ#*9c4-SL{_Ol}!*Ie#q@otzikh`Bo zBZXyuj`QhFS0Fy^K0GCt)0Kj1U91y$~+++ zitlc@6D5CXIhI0~dgC}3gWx*6T-M4vHQt^_^ zmr*}u=k>QV^%Bs3X%rb^lUB`JPww>R@pk=RdbI0#-_pMCR7V`xJR$hwIM)J7BSISP z=iql0=j8zvpY1!dFgr6lw=gr+I9G+9QJq8_e=-62QuN2irlto*7sgH@i+^}@di>b< z1XO%35t)kbrDvs{8J2$;7{A!N4bAb(pLWSId>Xg>X9+JMb-S-gyZ|?lK z2+F^>xMnM3bCcr(gYhF{$Qy9+BVrAOD+B*o-aiBXD*^tIkXz)PkNmpzgLJv)N&YWs%o*wf4@FZTTBed?sb_Wn^rx zgU$CiN~d;jS`)5Di}P&&ky`=!wN-xX@^fB}Fp)98k|413`ffKzt=1VG{` zSoZypD0i&0e~z7(ZRgB5m6$pGerPi5FEC7W-b?ZYAwN?@ieK$-PMfJEIh_~mM8U`* z7kkpUnk${|gk?lPT(&ea&1o(11s*H~VvegVeC!=)b!L2=%e^Qi+|N912dEYi^5MI> z!WTgfKx7Z^0f3ZsT-M|4^l9d;SvBBs?WN103c{>ES%ygM^aCz+UK`=J?C%J-V$v%E z{{o*{cz7Eu^m2))_)aBl@g7M&kv!jgej;3rMTT|ViB;V;+_19^&EeWxAB-mYoI3&L zIlgGty3!i6&g)Syr!4yuFTz!VcJyoE643s@r>4TSu!H{yZF7HXqy1+;wkets{0mG1y1xZLyWw(>6Gmi-<90O`3!XVx3BUR0 zusg%*y$fW}1GfQ0F?P=5VJN^-q&=1f*>^|bT-b}A0Ov^&0LMT%|A(0~B_^H#i82gp zyA)w^MSxX=$Z}^}670|b@@+2a{rII{KLJ9Ay1ivWK4-r{}|c-0xNSEQ6CAyvHC$U6Jdw?^Z7`S3e>BS*~t`3Gmhk3G;I4u0}< z_(wmzEu2O);~o$o4}GrV(cW+CbngpRTC6bae`1#0{ z0ml+!c`v3bJ;zRCV_r_BBPdhcxuF%&lu9^`%>5T1A4B}56;1=pEk0f#ITB9UiPOM6%tKL_%FeF6S!44nZzt$fFJ> za+NTSD8kljcZGfHIzsECFNc%gIuhp4-QlIr?z;Z`{P@gac^L9DukG>-c?*|?KcOJ; z;BtEX<|)7DFp&lV{{v0U;kAA54%JQ9gT-kfEwdCin<;Su=oHW-2Gcm!N2K0^zR=uX zqWBvIfbR!I4gvG{9-pRD6o7Zq%e@o11uUBQxbI9?)EUCHu6knnFtKo;A)lHS&bFYZ!DvH0imSYbf(!Xv7l_u@6W)!!@^>s-EA zRw&#mFSmV5vd432NysH%-kk2GGq%2lJu?%!jBhhkd>V$yJe2LB6BW%XGxM{Jub-66Va~aFSeK-Dl!g<1e-@SPwkQa>4yokb@ zg~}Wf0PqXeU7ex69(FmtB?nf#xujgH1ON54n1TOz!6Df1Un~!Q2L3HFntoc=m{^MY zJbLIF31_)Lt_9f8RFiD?UC3#+ae*A;Qn`~$sTas|0LE8AC6bCS0N;huCs~Zu>@3jt zb`5ulxZlVma&P%@e>v``p#RBwP#L5zPP69z=A1~4uuge&TE-?m8F?SS>R}e0an;_ zJtif2ZJo04B6P~-$WC!n-`6E=LgRQ|!o zH?e*jB2`~%l=H5Z^erg-dp|(l|N7g<<6aba9Dr3n54U+b_<=G{i-mlyHyGo>Lx@m3 z@p6UsbcCM(5GPs99YQ|(|NalBA`t1q)S|?fA0G*S7a%<%1xWe#erRhraOg1d(^!qz z(T?VHc<=x^jDPaw$uIzNO)Wc`%go9Q`?aOcT$}(oSDmS#m!LiF2RUUnBO|U}gnjJu z|M%0ULnB1{U--!_HBJf78g&%7ZYon;Z&y0$gvWg~Tb@ZuUK|KyCuj>FQDT}=pMMPA6lQYIMP{fCv96!h! z=z^5&T9#6-4w5GNBK7|+0R4}^U9k^D$p84ax5n|k5q%h*hbolx{Lw?|%E;FAapxJ;FK2!S=p8yQ2k?jlC+h zTnvByAhPN7@vBcy#<9~9fX?s6IHFLFr$bgBSKm?_y|jCUFFOG)`(008j$PTG($>pa z$(M6lbLlgggK0@>Q)(^26jC?S>kG)kxx=9yD^Ckky;xIe4U^3vs7{;>U2p>Jk*Ft-2G%~J; z3TTO8A#B>PfdgcKwoise*~(CMJurw)2-5ez^Y*a*x_#l$XCDp2$A=@=i6h`GR+mS^ zr|Tz=sWC5oaI-3D^b#Zl>E4hl z2GF%<+4=c~$}DGIKFH;`OZeltc8N4^cC;KkSA+yu(!X?SxJKeSS>8C)<^{VvZiRQx zo0Z&Z>p6W(QYQbdl6|EjYiXA^?@G#8vEWMtUU~Vpu#}7aVF*Zf?d2^t2Y!o1SWzorEcNraE7pM96Xivw4-u+`{9La|vlGXMtD~=tPfVN|rzolT z9sv%szg$_a*muJ{F7lC)(=LA+UrwLP%jt4_PE&sBU;du+FOMT>Oq;{=vmCD9{5s>m zr(8bUzo#1g7H@1`BtGN9LTfOhgTs{sT)qC*$BR-adtPnJf&Y4vl%fnIM&O?W`B_g} z_-L`f40rlSc@t6Yx|XWvPF({q>oaPS=925hS3BLuxw&jZD|8#k04e1iP|+6`JHqYz zp_oHW+Dy1w(lsr27cA5_?`cKp(R{cSN~LnC*$H54<5>;O+<|MQv_???P4fNDmqsFmP}%(p5XQN@b_ZvKOLUr?c%Zy+=06997C^64#V-@+9W9&cYROD?oV_4&5Z`SnTDcJn?KncDV!ta#pRRLd%$+;_FLCxm zb9_IHnZ3uMG#^uZgB15+TVAD(I_}=#EWlJ3ZSAC7filerc418-oI^evQ3Z7yWLK`I z1Ay;tY}Ee>X5w5wI+uzF3y1f>@kuyaRLX~DaK^0WXtN>;FEO6?-O>}47S`hMIL6!H zxcCP@wI%%P-#rn=p{QH0NQ48&k=F-k*9m;yftL11o|y$0>_9=BTC-zRxQlk#-^oc3 z0dR3>S)#QE9UCCzK6Y5spAeFT1Y zv;VAfko~z2_VDd+%gDyBD35cg{)`t7qiB$)=0t+6wQ9ig>-0|{8uwz zLlZOop=bTJ(9pjPLnGqfX=n(zY7*t z5t~QBe!mfy*J*yPRF-G8e{N!Iu5xa4s(N;0V(jSX!tkMy zsfm+gQ&Sv53BZ@p$0H!ST%qrVJJg1GG4h$i49`bLIm|TWbo$F__2)8kT+UN|FQ>`j zWQ}E))8{asI`ipF;~JubWZ_<$mXw;g8M9{pyWE3nrVm^+L#7l{x|^oW)u+4lII!BKkWwS zxDz|?y3zQ=zS`vz3YYM0-0t>Xy1GVPrH{m#MInFs0a3y;@QEKT|@O;OB{}t*g2g%~4 z6A>WwB(>BQ*IitfL^%%HUN^Q81knj7xw|)XMoO--@j5l|f9??!R>8Y{ntAf5f8n*p zu#-8GYOMWktdd29ja&p@cyz#fUih*5k#|M8mF%=?0TL&& zxUBUGRP)b1I*f=x7c9|%OKnipM41BVOY7y z6n{B9{`9NoL+cN0MD{*yu)pnh#Q*jCr{c0P`?WihNjQOIzo9BMRO#QJK~c7R)5P`U z)=E zML3XFP7>2vpEBxg0Qfy1b&jCZV;|fi*Kk(I)gnc{!kShI-X6}o7C4Z0gW!;be<$;Q zdT=H@uL(-dI@iY2Xo**>>E1hg!g`RLu2(smKJk7mk5He;CY^{B$5teV^WmCNpNZ}j zDE2R5((tb9y0HW?9UejyLQ{L{n2@vJ^T^$Q2B5y5a$h?&8x9_y#suU{w4$)SA8rB8 zF%hK0AV!r50|41F8c^L@iA1$%FJ7%`Wrj<99hme4*4mrh@AXvWN6ZzF4; zF|G~`p&JGOorCHnI0nvQW3Z*GKXh;oVWKKj2G57KOb_;j$R*+D0TDMpT#|EpRxp!UI_<@aKs=qhPKKN`{7z8Y*%jNNKU!=W8cM88@ z-s}bBJuw}nJmU3nBya^M(m>$<)vit9{GR*5V$Ze$NRK;>f1~GA6o{l)%8SpmkK!6F>N8z=-hH=s_BXrQ{VNAt&a*r~ zmy`Yq)8w(w^Om2NDu!VwAAy%j{)Xc(wKlG-0%tDu^a4%*D#~MWWn~uMfh)~aN+0Vj zFPKuC-sNMk{C!#SC9lPCv?OfRmwYI)U|rKT$rbMr;zyBSbRSP~lq|xc588TudS+p6 zuDY;@R(;IoEiS-YSe>ZM&7d-P>fFfe;K`BciK9^Q4@<=#qo|Dk%SS-&N?v|eS^jy9 zl;6vKurL5Ct(X4&u-fqioY#iBqg}^H001BWNkl&vPtSAu5vG@GWL01rY4 zaFl}}FBSS_WFJ{Q@}I?PU&}oAXd075xxNGdPCzgq;9RXk1r(L?@Mb6I!y-5F45!_6lIp z$;J&KzbyhNU1HKl&T!Y!oygkX$6Czn&j0?)!ytp2!uwEKCIwwqb6Lr?O5i+FN?bq5 z&b{v|JL`TQK-+I4xBl_>YyjYest@JXHU1}G8wr2;=txwAxf%IuVI~2y?Qpb6$!~$m z-wVK=fjM;u$l36(e(y|p5#&G{@ygy$!)h&}NvHX^-~Q~ms1)%2o6s;`gy+_6hPvDe zhVK0ERJd+WJJkBFTAy7)Oz^XV?W&>Z^!vyd6#m z0rLt-zdNpl^MG^VZP&NM$oi$3io)h~(i0B*-`|A1)@@hzW4GpaCFA{a;wq9vWvW zp^ddAoBvv<;4O=uOXtW7f&%1v?}n{m0t*Af<5Qsv+=7Zso3UKb%pJY~8T@I^#_*1P zVfvXPp+yee;!cuB#}RWxTs00!8TjWly7DmVU+LW*xbsgVvT$PO-C=h9Rfz1fU*aMp zfjyCsS^vpXOB+!ZmPP++Wm%>@vM=H8 zU%59o$>x>a^5&M~R`cg`EgnzBT{3>W$dK-4DQA?$S2h+leFgy?q43BpPR%wf%uYej zpP8LOUTJZnIx~yHk?Q!wbX6+;sgb$ClS8AUFOSSjo*kc0RD4TBi^_S!GRON8fTW@wbZ+`!4 z^ZY&n;5##wdBOPfH#apmK0P-*F}k*`r$2*Jms7QSe)*x6ssAhGm-;WezLcCksOjoa z%fPJ{MJch$&31AL_Hw8e{JXB^!T|M7cIaj(5syPX*M9U(P`uhB3xdF+0E}&L64rQ{(gwK^Y@4t1P?ry(cukGk${s5#KE)ZD0R3X@Nf(a`9?=yL zf4Wknpt3*Rl&LWv*d&QSd`epTTRvfGfrZEPWmkUBTpc<7!g9)a?Rm+GNLW(#viMTc zve*8lOM3b!+qDQ|6^SB}iH68YaSkNXpFKJne)dDixUy~>{BL85O<>zOSYQrhHC8dC z;u}@SuFi$db#^~g_q`yX{K;uD%B9*lKgwJ>r@D;1(QlWe2GX}%_ znwAyYo=ELo0D@B)WR`I^or=+Z|I6pY#{rCcSc|$3ysZy*==tywWZcIpi(vx*_899- zy#OkvI}6YyJGXNE0(7rHc|C~yx;iY>;GZe$a?%_{p_*&=X4dK*P;wQ4(1f02VxJlq z7e!fq=P%Bo@q0de;2k|R0AKDEO$bgf9wdt#IU=;Og232V{>VoEEDGCRfNi^`5uXWD z0iwDIvJ=ra23xX>N$cqA=a9))i~ebl7+$m#6VMXFCuz$O`szqN{5%!{=sV42OMu9s zts>1l(;`9-1%fc<#G8PYE)rY5BaVwxL?4U38Yb1*6_t=<#Ud~quXQAs!qc3mI19_s zNj%9?1YQ|O8fsfbD0G8hfjJkx>T8`2bfqmK|o%jWUPn zyy+-={~BxhkryUFvNlB|>~nB8J^Si(+#8?z25j8`@&e)qVmNZ>P;&b~mT4NY9R!Yu z6|HQ<*e7j^IQH(*2zZg!uB35~GnT>$OdLVR>ID7M zGv!EQ@1)gcCHl*0@SDkB`CR1P`ic_Fu)0f?t`c8#XqDKa!L?Y&#b0iczFOM}Z?C)< z8mq&hdDE?-m3gm@jD&{XEn#iv$*^G~=hhI2KjiY8+B(AM(7Dh*yDy9(=RYzw8PmMfci{w}tAK8>9Y$+FFa7pP45<{sh{|ohbfN z_GRx+Pg(tIKz>2-uf0=F%wt+OAzX*P$N6=^7mGfwvBFP9Br7kd+-hT9pUY!n?zpaO zz-2g_Q9tXJ+guYW_2=fMVPc(|YMPrwx(qh` z8Q6%XM<-_I21jSc&y7rvpBSDVdUd2adTeBJ@|=t~0{C8n1lE@~$#;9_N4_WLaVa$bTj2rsA0e$(m7@A`E<%fntD$ag}h|pH_gt@@F5-zoqhe6alS8URsO&(30&bNv;KP+?SVRf{r0t77NIf% z#LGs12vc^R$5(Ax6LvtclzJ|5;Km)z(QKJ4ty15+xmXIU$BSk!R6FvtlCD+Wf7~LE zYj-vy=cvs6LX^#);3?o9;~531SbpCHDonE-%H>PQxoX}_4f@Y>p;cr+c5g563jh)) zxC|dU3GhMP-5?qiEBMyS6PUSb4X2RrzVD{a@DP{f`>yXm-Vsg6Pz{xBeHJ#=ZP=35 z4)$XQ(2~prtP>67S_v4LgjHM0B!jYM4OAC^_q6l5#4;EHvFD_+aj{lWpsdnfqT{91 zi-bpqKU}8t>rXvh8fJL;avKXTeE`cRPE1?;ky|5k2b9CJzowk3s5GBYwmn_UY2wlw zL@m75_*htxQ)poc5+K*K^3yt;lZ!dqqI2yz_j>?bGF92}Q*(Hgd05M(R?&-C9^tRT z)-N*XdX(p7w;2H2pH3F&&wpzyDwkBDWUW6`7%y~$C=&1}?9d;%r$2HXXovhOPme`K zejQwjE$dp4S-VlrCza{_0Dgl2VxL1}y;N$I=1IlXB86fBFC3Zz2s;se{DJl1UbL)h ze(y)$y)Ih2*xYZcLiidQ*ar(Fm4M+G2&DbnL1;mpKRqCIyfK^xsr4U0gml1?dou_L z<@xskJiZ1i_in^vK6rO83f4eAL2Xy|yR8t1kuIxk^jqO-CTU*PTumwv3YgpUI zk@x-rruWvfmo){L-8fW45gTKaD~o?}iNgNWfr;=hf9GVZ(`B$`jrum4!VkW!H~iVx z2O~1Ui&xZ~&;9~O1LAEq`~@Nfrq?n+5(QuhmDZzsL*$Rn+d!7b_c)A7BMsv~h=-!< z$%MH2CA`>cDLC#UixV;8(#uE=@j13bXB*`_(keq05t2z1B;J6+Nwwimam9HR{R8j5 ztp|mBjp6sOJO3_p9mt6y0^nx!kbD?+`+jwn@bir8J-Ie=1>6k+N(FmGcjCEHTg$2H z_*dnJo-NAS8?Twe6NtB{$3mSXSM6$nbE-K&XNh7luC1r2`?*))orM9q!+6rAi8AJ_dJkO>@b!{95fNFC*hz$TpR?@0`<(sxoKoF6m47Kv)9Nm%onubi<+n}c#X-}9N}h^6z*P*U*!>W=dum>Fyq-y~H0 zd60$ESOMrnuD$^|`}xIJ!?9z>S!;cvp}ivvo(36!OnznXTsS{Ag?<}=`We~l)med_ z3ZKm5>_jDWAP%6y#Re4m^`NkCt_gs?e?8(P?O}WjjsZ9W!rH#jwum^#`t@N$*LIMI zu<)Np!#|B%U=hrsEN@C6cWO2w_L`XNS&(_I<7VobodlqV(%zuu5;y_Y_Vm#PxZ(y* zb3UWrhIAc#Begs+wPt;o(HiH=h&F&w^py3~5a4%2gcb~Q>;%!>!@4|{aZek;6nQqx zka?jEi$xoKLPnAq<{cF zXG&!I=Pznvx|=1^4pVQt=G<++<};)-ml`d_HYl?*Get;0*|#a^l{JS$ji-} z(_idqbM4KtW?wAJcO~xiw~yX2VD?d$`#j(aVh1rT83gjz~hAjTv;yky~SuAW%&!BLWE9y+OVPU*F zJ6)Yvn68Y^PMsZ|96LTz9XdQRIeuh#X7t3^{QQ&vzCS<1{>ms1S_gStd`}5OyT{&GYGp8|LzwTnsr4v+7Z+Nb!Tt-S!FEhXYjeVxm_-}0Y zzoQ*5FKXBZ$3fMNk2ExFdqb7RkIY3%5LjHth4;g^wS_$!`M`6R@ZzDC>D|2da#`L8 zHB`1#9pC5Zq)Pg8*IcuWOoj7ut(^XOsOZ`@-wJ}@6!P}w6G`A%)q{-v1OUekI}#A5 z-0m|_rUV=xgiUppo5b|~MW|KE49{bBtqqDQ=D4_EDI={3w5yP^f(G*rE<*NEZiV>e;n<4`iB0Vot#Fd(!+S}A`DNLcKOXKY0Nok5&q#p$o{K3z z8$60}<)W7Z{wW2`ExvXcL6E{%IxlmM3!m0gb6%tvtL0~>7b8Q<&ZIA4&hb4rr};2$ z0K4$-K`Gj^P^C8k6gmHjn@Dk&D`hoz6ae|bXU9PXHPdfuqVPOc-pU%ldO3$X;TGsB za0qgJJPtxYZUe-qL;I!Ooc$9fj2rYXFAtmkh$okr39EvJA8g`;PnJolnSUL_ki0e#KEJ^VD(dd&I_ zLsH(d4vHT8;6acca?Na^?7NT)|1jJN?$J-7(Ou2`aVi-n74n^b4%51EF1a!j;hkJ% zdLj&5|7EJScWEzR?j@a~3NfoM#pR`V#C0Ix@4Bh?#)Oo>dK5vqU=f9 zy2Oz}NOA(w?VLerJVQ7M2ggoi?G>G{ED<}M0N$FPQyJr}a4Tu8K(VA3Kn&iBxw;O{ z6ZLl}Cep(hw;g23)^&|hUx>Bbg1JVw%T^F8B59<&X6G3vd%g%x=TYRMrV%S3E=6>? zcICoo1*v(%Zj>H^z?6&Py_i{i^!X|xR3Lzed*rzZlrydgM`^#}NfkIrCg5!9XRQhJ zoJU{7;F!oyhP8lOA`3q6j;GcEjPp#2+%7hda9gTkO@<-`@HYd}hQ;7|6uvxL2G(6| zUdUiQrJO|~_eM^yhkck5;uS27LB${6Op~8@ajqj>`TVjq`5ZOA#@&>&n=*Y$>xV?(Sp zkaM!>BbPr16@M1Mzqh9+Tz%VhVLRLb2VZ^-U>*gSeD4;Z*{LkIacUwgqWOM?0hlJe z^SgCJe`sF-u>(im0O{w}B2qUB!jto%4Q@QwbsPEw)@|O#o;?|@bu6~^gz*tH`APT@>l#L%#^nuLxG_JP0Bc3Nl1Z&CQVmuR1jhQerYJQ11*2sS(6PyCy$-(8sZV zBW5MwY&m#7%)_OGdJ{w%K#0O=ut0fDu=@?7+)!?P6P z;Mn8@c106_FDsujkw+m_ncfZ0KR?|5Oy@I)=VuQ0nZuSpbAH23m(${{`OD$U)8)A3 zPxI??c=qRK?vwA?nKrLV>siT}=KJn4Mj)Mag-ErfpzcUM|%mowqv zppOHuDhkJtWEkUMuXwdbx5uyvV867y?V(CzgChMB4i@P9Lm*QgdURFxFoXlSOK%J= zrgu;i7>5(r1P(!f5Xp~;0aoJ0X*hSs(LFx~w|I^|Uxvt`m2Z)ucNP44)V`W|hVmSW zIn_D+oydOYeXHH_MXI*7a+~vW|2*_NK8D<8PA`N2(=#!^bSe_)I-&LmTS5h*XC+h> zEiumJLoJczNpz@x`H9^@*ii)jA&{(J{^(vf?Sttq^rye{y$0gsvm9vEPtCf|BE|?6y?e$?S;CnTU zU<`jB#@)0Lp@B$swME$VS^uAYVsCK!Pa>uAES!Gbq$veZg6rt%=VsIEXK}YhqQ>I( zu&zC{8#KbEYK!9cAHIJi5KPl`bE#Xudn$u(BKof&0r4X5h6XoF=mO>vV)*|SEw*eR{^0_r)>A>Qw^_0p#oFa-D##I|V=dsQqB@9W1uJ4U~FmdiYwYBnVV!sHk- z9}-1ePI8oeU(YDw4`R^GfxkK{mtt|>$M{ssufDtkrlbpK8?L#K8nJ#dMHGFF%B$o# z$eGl*riMXvB6N`bN>3XXcu(~#@CfVWEja0_`8FwoO5d+Fo z6o~fK)poN1@>3hMqnKmtXh#ppTbq6Zr2oyd4n=YD+{rYHQNN?NonXyjg9L>0^4T-# z_B(G&BcpKXvGTuy5x;(r?3o7Aw}TKFvEMK@G{84>G`;@T84!D2Tkd8JEOG*84Pdmd z8*c(jAmHaf+INFo4?^8t=LHD2e(0Bov@glQUS3Ia7p|rO31j^j?t_~@ha`gE?p5-4 z4X9E8Jp03XvjH)5nSB5wfc--WD;2S4u6FgMHB^An3r1oF#GPl=X3R2@0BcMPlEbks z$L>6uMs7cf6vIqfqW+<=(X@a|f+lPBDg=wQ#w3y}M^G_nLZEEmr3dK~4Dz984B>(P z;uYa41d-D-UFpL5!)amf-DzXsAd-Lsy!&}#1KDS!Tb%zu;(agq8JDZS>6+8BuK(sd zrTI#^SYuKvqwc&9JLB;#l(w1Z&EL)d-}cYDfi0E9Ixow=ByMw!_jjATpUC9eD|EyD zb-vg)C?I%yyxqH;Iro>2m(_a8wo=7oFS=3vTU2v{BJUzQPdKj(U7_c6+b@D#{IzZ@ z$H2^AT|>dPxwf>v!B=E?X>ns^rm?&zbMG|SX~CEqmRN?yGVl3RHN#%ujoFTYiKJ<|Fnhe51WQ5JgrYIfKB7wP>25PXpax#YLQ zZGHBn2J}|Lg_{TLZ@(dufdM@b5Wlk`4SR+-#B-|G?b$5{F%nh<#Q+b%h5Pb^hC}HS z@NUu?<`Ush)cFYB1Mb24y9e*17^_l>AiMu^7gbymnW*Za&%#kt-N1+Quq-!F?u?8B zaOyzR%K)iTK-b_hV;Bh-Idn_NH>%@5&GU}XUoFx1aIo>PYF{;yrQLvgkwW+gUIT3B z>Xb;91c2(H$|aw0<4$f>?Y2N%_qr{Tf8A2o&nz6jvPOi?1cCbg>fwihiG4MvZ5Af?K|EjNdm8Bs2|YGh5J|_{C z-S=oHGWIgA3gsqyfINk?!u_{kED~7XAEgBvh?9>ap)if)!u0GeIQ|*2v>v4aj<9C` z@EL3Xuts!u_YuU)4^`s!mVf---MA%O4(@Z&!7lyQj>R9nFr7a6=xF*sK6eqj6X^7_ zR?C^m*->goqQaZ+EQWmy-^)iZBqu>a?*byu!l}L>G8{VToIFlr?CT7w0dfRI^o6TW zQ*{>hG4e`qK!}|K@s)_?JGEWN^?2xZ4Y(9+qk6Z^nwK5XCjS`NBnYM<_c z0CE>1@18IP5#wPHdc8s%5ZM3h6}BW3i{42iOh)qwzywMU)*g!#bPx zB2*ylQP{WgZ4k^rHLc*g+S-aLfKpHN%f12ayp&KiQ*Nv4wW-$AN{veDMRI1X+MLOp zmi8jAYPjCMfPSyax~|t+;=;=%Gk9@)4J}E4eEZ)1#v@cu7@clCZPe@9sG6mHh|cNl zG_Z07g#1`KdVGJHxqKFp`dJYDzO;Dx0+#s^@t@?|#++)~rU6~Qdq8QRnbdt{^IT1E z001BWNkloWVn0)~UFnuy5a?CJ;`(-BgQpu+sST|DBl^F% zxPY|F2r78G>SWx|bzfhB!;hzce#Pmr*uM|!{XW^o{IcUz2#SH(i-- zr1`m7q*L%V0D+;Kvdilj@8)|->+}IH0Z1yaHK!$zc+7&KLV#@*>KGWs?g@5FdJgSR ztEdq{uZn$nX7VyG8wAKhM=@mBo8}jA%?YC4rxXN+Gu+ppC8XCc;#zn0c$y!5IIZ*@ zMc;oUo;jYyCn|`zNPfHr)iv%#?%N1{SoseX00<0`UaovoBoMHua(b@Amn!P7+VI_p z9WvT!&$nxF^BOHPA4}og|B3aqxz5e?zxyh$De)e=cujpj<^)IkX1ZJr-A%!6+hr&9^{*VScMXlpAA8*4KQ8r)l* zAD?PA&SOdc+|=ULx2BqNZ=s7nC4ygc@m;F*;VN;FbAR4L8jsI`uv`5K+*WzfZORpx za__Y>UcWE>>V%_MtG^}BtD$~hUj`+=qF>h`Y(6o)4;AiI(HenG zFT>U8^YgeCf&qQKHJ{6Nen3izI`W^>I5^h0|Gs}7c3(K#MCTvwJc#mR=<2_XzUbSR zG=zufGRVF<%5TE)n@22G{a7vhKZoHdIp`u1iur%*m3jONucsp%#Gz%vY0rAD5cxsm z{j|~+h{qg<;9XcY4h#GsTv~pYo2db<6Nd*t@^Ed$K|IcQ^vwk)B6x6bA0oJYp`$E9 zFV|DiR=?kh0?%_`I*ktX*-Ic{AWYL7NQTj`zEi*B_#2mKU~sJbsQcVLzwMX?jvtZ& zrfSge4n)M&sXb30QJ%~|)u&^a{_O|J*atCW^fvm8%P*_z(vqSu{0~IG1KaPowW(`E zeKNN?3D@(lEuB-gDp!LoRdgcsg)mT6!q~XyR?k!`Z}bLDw4oU~m#{VEBYSSeK3Ip> z2N}a(`KjGOgc0FWeEcZl>mq|9-={IUs9w2T-}9Hd!)={JsRL~qQgHm`%>L|0#sYc# z20Hy3sgxL?etS`2u^+l}oMMgCKlUPJCyqoX!}X&!AzWt$#otAEui&a}h&20if&Scg zdsZE}O!~7g&xA<0`rLo!Vc5yFAkwW`iAXyKf)K0Mv&8*8x9eIl`48VW6c+fEVlXfa zVes%I2Iao>!@2Z4wk>}6_ELJA`ys^AuOT!6uW0#IqzyjzM@j;$rcZxp41<=m>+-GY z3^$s*PbCDB$&D&92KR|FH=Ltm`dtAf*e?SPf#?G_{LgEF)xt#QeTFgPIUQf?ux9J< zz^(g25m=3hI<8|7Ee;_`a|xt=3_{35clATG>y7zdfH-#m<8=>W&Hgr|HEeH?HR0T2 z)(Aqtau^AXd7=RcAoXxR>O8jLx+uZ*WS^8CnZmBah4J<9z#w5!bp{Cs?t^ET$0;zH zlc*HkhuXmFc!~H3b9ClPclw9Fbp3WUS9Z9I}79%+s5Ko(J5UM8hR$ zIxZ4Sv^q|#;Zc5Z5oZw9oN!EskYXG-0!N4aAiL$ zu;p4WQ_{*ckN5Tvke&)?EtZpf1`qWHyke!<>9^A{JTUYR3?TA<7*~4-)4u%&Q#aqa z<>@Qf;Mk9Z*aQSD2v4(!)g!h)F*6U+y^@aM8n6jczXk$+)It&9&XmAsx zyaz((z^blEAzH%0?;C&!fI+|GN0BHP+Kos(ga*Xzn~3WVBT29hvAPFCeG#g6t3TDO+Da6<`?81lR{zYg|RNzdzl5*NNcvUmTyrTY$!Q*@Ka^8ri)k9XfUt zgMzaV({@3GN38)O)YaL&X%1t8-2;P(?S}Kg6hsXSWzNszbzlJr0Xz@z{hw##R4>pC zp{hFW{C!9o%q(M!avB4=gO8-hv+_Oab+BRujKq^ zy?;DqM0v`DG(Z;p_eBrn-*WW35CEdycsXq^htjrdsXg;0_fN<5CXSk04n*sn?#y*~ z%e&o~_oLo#J3norT&rqdQQy@n;r*FcYsoeFc#7! z*YwxFHk*!te7$}iglo6%`#2wO>r>fLLVU1M7w zsO5Ni2=kDvn7)VV@4m7C0)&nw_ac(Z1B%pgh`)e)BM1Vca6;5Q^lTxn-VY)qVkoRz zY1!d?rehcsoWX{{i}a_TXA`yQhV|sfE@&vg=)?Rlk_mbOP_Migr;5R<{Q>m)p*D?<=0kht$a)y?lPXe^-KsIB)TcOhAdNIdG=hlj zbpv%+UqA&Fgri_7!c|M@ml(st_`C3st9!`9+F5`TuMYZee0d^GF|WHo8qJ@DGprbR zJ;?2U7@H5n9FTP>r^LzcKRtm?{2+SnyTbpw7XEz}`~3jxt{{dN5T8GV>dGTci zJUz*1a%?4Q27mV7d1(gG{{HlHcnnayelKF?dq9Andv!MbbFAq9BI*xw3#)j#n8l6W zOwjbd`TR`U4H2Y_dwHKrKi(yj#sryqEUBTAcOKjAa;=@<+g0 zW+~@DDP`cSs&5|B6udZ&pWYgLXEiA3Jj|fitcy_Xa=dW{bspyX?&BaR5Lxa(RNwb` zg8BEI(-Xtp*alIB!}m~Ryl&XgZmD)*(33|Y>_kHK$Fj>HGJEk5UkV8V ziL=YN`coo7j=k@P#ED%_GNG*TJW7m|4@$uNGI>ZaQ6>l0`$;epRfx z0CsJNDmLfTU4`a(ujSXGRu)t4yI)@Rjury>uhKe^eUr<&+Ek1-Y$ociXV}-;vkB9= z$8A~0Iw-f*wpqqrkgY=0cTJ^j$V|-5_ZzhjWWAd(*}9I( z;d>rQ>!;sDw|~-?DQT>~dt?{_65{%}6x5yIF1!h>_VlBpPaSK^ymuPg>_w~}bvNGq z$?2=95AlE9{LKwRBv_nDd-fdy8OIjR#3ZUdxa|d@UxGWo+&hA;2t4}qvEC0JMr~#o z^*4-+4(~-rAFe%h4y(R^+QF5HtBCLOeq!I?s!|Tv6`2{o6huY|dkg3TcA=V}`oJ!T z1_N*ihLIL%Vhdn-*GPJ+u`9j3a%Y+uJ(1S>4}-7k;?Hl4iy$vT5p}0VFv3@5UCXWalKOqQqD8LNVs-D#sgd<#`?Kj)zfLRdef~N? zC97J?UVMhKw9B=C{Ul!BeIGrU_?-3G%6B>Ey*{P&W-h)p;Zif36Jo<(>0U+)2J#kq z_(<#XkC$?d7i}H#?lSK3nzOTOaPjA6-kDsUK0UcOcXDcB`s~cg!b}m<*G6X9?Y!2f z%Oj{i)BP1}`<-Wx0*Lu86Qh~2OZyl~P z?)^^q2^)bO0>Jw_A?2m;YN)@+D{IRu82TW|lW<_28EC7&7ThjuomZO7XoSXt)I;@< zdjZ5&4%Q?bec#q%Z9I@diiu#w=bB6r-`CG!B^cvC9{xS!`r(S&x$mYPDgW_tB~b*7 zvw4VlOH2^KlK>#1uC##Sz9$h$){X$`f_$61un^yme!k+?T_L`2dB5L&Nb$;-&T(-6 zJ{;9E_#`(tRDSEb5z`fk*KnKp`^V7vCVdDZ#4*}b|5yF%f)r9Cea{G@^_ZR+qwNv2 zT}9OA5b=E-V{S+Gjii?$5@=_j7euZzI8HYe95gGB@v2JrfLoqqN#82eP7HBot#zlA zD9u8SE*A#o*NFPFX-tkuiUc~jgsFBE7eG{%Xs;zWbsT4Wg zS${q1tNw^24nZ_1;nS!Th>(j^zKyzu#wXQpSB&}?;`w(UYs2a?@N-|Ez|bGkCp^zn z&rLJGaQLwgAri?;nC<~7)o`Ge;zu9=9Dztyf+FV++>W8E?!{0exIleJY1ip2K?~Zd zk{CqDm6G|&cc&TW-t-W*2Iess=a^1{EPwuM6Bs;P4VP|L(aRT2+#pZFNX%K(a_!36 zrN4UG6anvpi#`njK~;x*xUQ{XW=O4GmsZZRfp)&tJI>LThhy@*SW0gN*6+S_9Elx? zG$P#R7-L=E9Yx$;I}0CxK(fMOcp0^fdlBFNb05ui78Z~qdKlM-k7I1lakv#jdUGM_ zui??GZX{A(q%Z7CJ-ANF8kvNHukl0Gc$&=b!>ByCT|R{f{zW7%_9KmSzxxT&OTMck z5d6*|A%tfnp1UjQD(}FaT^K1v$_Zl06nozkgb3YIUcuO&*7ZI4y~HyprEv-ZOV|>C zkhlP%=X>I7fgR@PqSLLKg8PWUzgxY&T@~W*7z-^jvgt6(dr=SNPWXE884O#sVR~Hx z3@9ht-V0>{*o+n}b6d zU2KC~H?~zjEU;aAh-lep37r&&lFl_F`#FIX5fKSE_HgFP>$v#4l0Ns`a{B8J&!&S| z{NIh<``q+6k}T|1i0Y5tLK?>IhVHmK9i5s=moH5~>>k5asrx1)!J?f3?lkT?M<(al z4~_%}|AD*j3_{+;=|%R3Wxjojsc&_jZzKC7ZvST4BNmn*XtCx1nLuX0y5aaM?Q~xI zB>e;F0DIKoLkIY-N}Nh*oNr(gdtu$^{~tVzyHy6Jd-p)P8#jL^$Ct2EvBLf`l%`qp zvls*H=^jXza3zS>?;tn~qfXF^-u_S@-god|Ad!6yTLDcZ8bsHX>}lXG&~J!RF1<)C zbVKauM@?X3a3oD5CGgtJEoo-xLF^tth=3RnhFEd=3SDSZ)TBJ3)`}>&iQjw z<+kibXAc0X^&#pn?QB{8CnK@eZ&rGfT|AidHq{H--tupy1f;NHF=?BADcL2mp3 zDTlwdP%a-sKGOBzna2+wdm)s2txSW&2ey$BjTVE7LV^6-TYl8U2aFFry;Qs(W`a9t z{zGC{F=cA~(Fj+w`RZwPSH__S_P02g+oeY^zBj?)+rz!C{N6-lIu6&>;qw7q2(s0Q z{&~I*yNm=+(Y}!L$(nqu-M=OY{}Pf{N~gY)sCr zhRCn_qDiM#x@0(+q@1qCp!vifsAE znZSNpjEi+!%F0VS-d2ebt^X-Hu=TWvTWJ;Srv}6fiWnQL+qpK~e2vg)e6GQvu?Z*B z^N@($04%3R5ph0#7%u3^X6QV-PUL{gA$=T9yS5dyg8vSP*1vgjE)JjbVzs%`HrEcd zezg;G%r-g3aR5cKgt`t?R_qm*eiCc`FTCM5RcRCEn|kcGR@PZQ5hN6B#Ra|_#P9F? z+7ZOFSJH2OWeOL1`@*ipcW?_S=Ut;%B6S7{NBTkky{E8OLH%9KzsB-@?_1O9mp-;P zT;}OE&-L&IBHz&X!(g7)|2=doNxiGPhoP zcyPS|{J}Gm=|zn6DKdXrjx+>;1?J;hs4%>WRKP+Qg`-3%96eT&AaPd_W)>vXVPok=8IIWj=Zyzs55f|>gwX(@L>0M-BO<))4-ca9;F!4SzZI_gK9&s9Yj@p` zdq9Xr>~?yGSf%eu&|IBUY6p82Aoq7-B)4a*Kdm4zJhh1JnvpToNv2R~Lqb65GrI$q ze*=+!102ZIx7J7_Apc!Md!WqEroC|TcWq#RaskBt65li^v($)M-H?*WX@PcUFHT@o z5-AiG$nkwcsMtY-!*fA{{aY2GCZ55tH6CYyRqPcEQ-0>kcp4bnpRQhM0E=~hV4KUh z4s6WuO~vC1I{xdc*hry&eMlVa!QJ5!Dhx{Aot(h$!thbN8tmh}6rtyP}yo8h45#hK^^&zHmsXvC0q#^{cEp|Ix+29%4K9fKX%8H zdh6QaA4|O=v~Y&wz{WQ%L<2YA;$!=gBjWl>*V@wBS~o8YKDU=wS@=zm{Dq0>=E7B6 z=AE8w&YYTPOus$7G<$A#WdU&+-ZFk33H=$O#p>$QmtR5jJFg|*t9h39S5Gf-(+iAg z1+HGE#7mxVh5}#D?~Ds)nxR}vysRqIOWZn*8#>{0>gM#4wsZXxG6L-#^iRkG{e(P5 zd0D--e(Ouq^DE1%^SuK-gPcU)RaXPqW@GgeYlVi5Kn%)VMxaHGJIRR>!n{V|MZ-3el47{+GW9LR)5 zwd9J(VGy~O&@i(gS6HOP8nYCDWi<4cJrN*YC=$gFA@JIgJmB_}E{$D^pAoM1%jc4t`$H_;e_|{f{o4(Z zCXCqO^V|?;MX!|8wVI5C8cws|c>TKHW8N z30QE}71{pk_Yh^Jy!xsJ+t6j(Z(&t`H=MLT``8HF>E1v-pT%9^FmB|2{R`t*mmf(F zBAN0OV*1Y_y03=-{yv;^j36 zpeoKF2)F&ysGx{vh>kl}RrzuyCF=7p+2nIDBI3{S(JO`^p<^ET^p7@FIq+aC@~-Cr zVI`v6c?<(x+-RUq-|-^p;}|vk`48_&pZnS*b_#|=eBLqDnAtH9`cp{jdD%h7XedAjCa&^?k0x7~NCaM+7|9Devn!Bs>)JKU_&vNCT;|h< zFZG!tLp_=qMYz?O`#WScA+8L@eyVeRkZ+GnVt(1tAy(QY(svJ=Derzt? zz6(Ndb!#;e0peOf9Pg_Ayg#;k7jseIwz+PPH&mUbocl|Ga}OzxTPM;)^<{%8ZMC~n zQZ`+kztxrH)SNlXcc>BX+LwQDKHYw3Z`zMk*w}#s)v{!^4 z&i&c(Io_LFaCM0*KsImpRdkn0>%%DJr8E!W?SZ>aq)~_hZ=bsWfp&&^uR@@}<_+W3 zjWj|JY7A0iW3K@jcaPI9!LHr=(iYro@Zy-#uf{=9A&JCXDfifF##G?@S( zBJZ0cF`z=~D}+A?0_yv7A1VTo-X;uCpj{>=+?7h2k_A-=qQFh9;8NnfU+e4ez1Oz6 zhWei2)0TU$KS|-5{*)K<2A$04et9aNFUPawRC(9^rjX7dXcaDgHzFylN&a)Q0>y1( zZE1CRzS+ILG{1r#esdlqA9oo`vu{t%Ousp`K6QSkF?&Imc^csQ>mzm}&XsN1nCaZnzLnb(t~Nv`x;4CZJ8l9Ea^2+4 zU77?Tfb(cgiWcr4?MrW*UP^mE0B34Z5XwO6;uhD=@E=MiIAxG?IZMiVCR_>gSTD}I5z)%^n)Kq zXZ#t&*VPqXP%ohhahMghB;4RyN9^mM&gWKj=oz7>H$U4h4oY%uXA!OL^-#vVDVBW@ z9qh+(jV96LUw(NCjy*^gX}|Q5-RTd%562yD)D?8auLAqGJ_~o8!{0yt!>K@$AHe9@ z$3XVw0N;I#wa~pA19Z*w*^iE-7ZHaR(Uz$2>tCKpPgP zGL}(6nL=Hoh<>|XPGc2c8xZ=fFTwE;$v=7Ub`Tg)Mw_!zItW|>+o8+=HLs#Me+DC5Zy04HHpmv^uw`DAvfLNQ`FBq>dyPpI%i6+FwiYH z`_hMmMl0Ai6RQve48SGWDUD)P=IZ0!chYxE^#%3a?YBPb)vq4}5f&MDoTuU9O9b+n zOur4}Tw|Ip@*f~MqaB6|lW_APn0*|A#xcbEea73Wch;^v%KK6eBL5O&9An>SE$)xq zri9Nb^OGeZv^8=B!=WPWFP&OM=O4p=tV22aN`Ck(zyF;%-s{y+4}g)FW>}w}$2P;S zesXW9_58szb8zWJ@O4*)S_MO;@iGa1u62VK$HqIyri=Dkp_+(1H9)kNSb(T|->v5l z>dm#aO6JPA%{z((+x5D}Q$?sO?dJT_fJDgtvXoqEo@xy zj&delFGRoivt=Kug0>Z-9)EITd7kUlZC<>J*8w(ve)26ChT}BCnq@4Xerqay?2Xgu z19u%uM{YTsE?&8U{`)XCE7%**2auS26(oLS5c?Q-2AHS*MZO#BEE+5=z5oCq07*na zRI*tN<4xk-W2k?UJ#PR)8ALS*467Rd!)@Sf8cDlGAQYs9w6TOZKKl4g^<8MViQfH2 z4_tfTCYF&bSVKx_27+YQB8YwiA|Db@aOu1D?N1BX5LkmsdE4<@P=A|Cry%Th_h!BQ z=EQ|`nSR`U{IJw@-kpB-;3?Evu+f2P!lm=)u`z(5Kh~sg)h;|+jO`wQc)F7IjP0e3 z5eRb&={2N*F2eO+7f#*l<<#=x<*B*Ja}%rR;?K^#HnrTiJO>wFkwPeEf#jE7 zm#f2O+{0Yw)x45!p1(SLiI=?k)pF(+nEJJ(*V9VfC9m_|^b!h;_r@Kpl6Jkgb(YXs zUrFD&?u@{u5!fLBY#NUD?WVl2^((Fb-I8v@7ikYL`& z?jKICA{zeO$;Cj(q7MudLT6hZP%Tsc;96hVsVz&BG0wdp`Rfk0`HmZLIW42~`yM!- z9^MaOgizJ;-~0A#8Uv|2jGFA^3#?3R&vSC;K6-%T@=G@AAfW>{QwtsOF#2NRjThF+Az{+`g7~$L#uw z2zZ+Wz`9%GLmlQt8gYkK6%{U=_gU9mwZ*Uqp+lG>5VX{J*KUTM2~_KN1;qF>A07>Z zh2MB_4y*M85Yu+C-f?lsd>+7X;TX0Hw5nf>>S=eN39&^&i4r>>fPgduvaT(Gzxfvq z&}t5f?)x6D0;6hH{M|%#o0zNb+~F-|?-NR5R&GFF_2{nBx>&ex(-NQ2ZGzSbMz+*D7Ph{Ezxe1=Th8%#IP<%!#(jkwi)>xK{IO zBb~P6d0M$X&*t{c+N!QrozY${lM%soWwF+)>f9T*lCo$)n_oRbD{YHNXC1ETdf3$a zGC3811R&?E9{m0U5zfx?-I+fBd|FwW1}p>mPCR{fA^qI)t~4|UQTXE7w2meIVUXiF zIQIRl%>h2PgMGv7$A{8+5b9}=_dw)Xyh^C`!X?+6z{L1OjQ!vsmi$@d8@TCHf4{G9 z5ZPmhYTYww79<^^`*0E11+u^1Kblss#NUOxK$=Qp8;hy858?n;_}Lw>(m#N~zy97H>rP&EYs*niiLzTdJ=L6V_D#HwW{p8ilaQkU#c^*jv#-MK? zq#yb*?zd}XHv|c66hOp)wvb+(*qtu)+@Dqk?n>SLdjnZ#(D?6Yw+FOv2_Se%ZJmNPdgsuQY%n|6WO_TqX`k2*`2gtJEDYe>JZ$NAaFzqS5A+V5ys1QyKC{ z`+GBM)|y>jn?vgj+MHb774Y`xZV9$!V*MPlCBPPm9k0sfO=AoAZIh~fFZbKO@jcn- z>0VdHWgRSEAuNtOt1I2BOPH2vHZdlNa?JeP^8ENrvw?-2*$Wd37}{H!JvrH!x-i?E z9hZw=5PVOz4qh3e5-;hUSMxi6!uYcef1UZ>mwe*|rVd}?B~Lg*fv@M6xcQy&l2)#H z&@xB0`GbRb_f9PddO~ApuCLbW%s4^*EN0lK)#Es4vh{iV&GiY%k&!a) zMkVCBb6uu+SP#+t8Ues|)GHS;R|nX0y9hisjskhXpl~1?Ze1cCK8i@J2!MnGb+Ma> zQO7|t`fMjNf{?d6xRM|ft9x z)!5m88}Wd3FPuxcs^5ME<4kg1>krM~ba33MFfRur zLs+BEwD^L-!;$R;;!nEq5=vgA@h8?QnU*!pvCP~x)&}cBRT%Z#ZR-HUtI%7gy;+c7 zMc==N^vMU{z-uGpEsWdkV?Er%nt2c@hc9Aa@E1P1C(=aD)i-wB?!uz|H0AZ$u^U20 zJ?Q?@AmQhJ2nk9^_*+@s72Nne#82UBQ)7ABY-k`sppnRN>?iz}fBs;48C3?QYQBw# z{uRdmGU>~VaTv{{&08T(HI^V&Fc;I;UKF{tW-3H5lN^h#pbK%_>r-3iQ4Br?d>mhZ_m5*rn8Eub7R&-EE= z+jtuwY7iV(dt(T=yqaZevzul2pGl&xRQ7tc3zBH&SL-Z03` z4;}lVWy%W_hYzv=0(Dc~GB#U6>X5_nGWVApAzFQ1_Tn(((XUK*H=w zS{Q!=ad?FEs%P;LzI%E)y>RkETA#gyi_fvNYoI^PPh%VptNr7=GhMg_>>CD(E-4vdXJ zlxP4?ZwANMb9SYx=T7lXE`UW1K%9WM=KBey&-bpEHhO_sCEi6{YA(%h^zrS0P|$xO z&5z!VB*0;apaYDrd!`f6o`e>1ZYoH;lOSA(b611_^>G6E5B>g(?1$)o#p%zY|JI%J zI+1_p*u2tiyuZ|4!Zqq2CF3Tq`P+2^V3$et*f#}#gX;d+X1h;C=l$#V(;NOkHOGns zqWY-gZ*;A7%hF$6z>nVYQggY1Gl_+nmBq``%d?jz7pC5sXiU65xwLo&<9nAI&;f#r z&!=#;($CB!g;^d?`HBT8f8m8rQOc^Qhy!34qJ~4Q|?Q=T=Ssi z{LZ*Awo`(2lu(bCw4LkD2)ySJ*dYMC=ONs(g7U(ajUevlF1|6#xgGqdWN$88fBQG* zY=5`u08}cdww9YA0{9&bT(0VA*28j#0#PB&WD%k`D2k|auTFhrM7L;+!w!s(@b_K} zfr*4G&aEE#0vtgRWO%EAxGbO$>ET1&c0+J-I5<#!5DkvtM|>Sj;>sk11r91*BI5)l z5iFv6B9Wh7M03>*7wNEUH=iIm*owk8uzoB@RpNva2694`P>_g{&%h2A&sBZR8;IPa z;s_@d)dd<^Vxl}~0KF;H56tHI)1Uo^?;l7X!|MGB><*m1ypsO+&rgKGu_2@reg&@l z0bq_JW$-la$A0mHBSED2d%tlxt$|cM0@C{d5b>|R*htgp&i~nmhteR3^FR3yS2IFH z8<*fr|HFSb4wt7d{jFcdcoWhMzx&Nu{7|o@KmWvN_%FxNWEgWhgv7%$5D{jv6#e+! zsAXWp?FWcvzj|gdJ^vPMo#;>h^O%#2gVz4eaH!n|XPmn)jgxM&P3L;N4*XU3{b!5FMX^ zaN~H3?5@F~TLMm`Uj%d!q+gx;!-$^0fWa<0%z9uxSu5Q|bY zKdC*m&RoJZme&qth(}fY>9bNQlAABVLxfvod_RPiSqMRss3+Wxddy>R;NJ$}p634N z;pPi-3hw!N)K%_=h%+&}p8oc)9KyBTLi!s&pE>l;p^l=6{$KpWKGsm)u0IAxy&evu z<4e=Q#kW)TL3;pl@*Pt}=p_ni_d#`mckrh077`8j-#U=~!?$NJs0U(C{xa{3>wX5J z*D7pr8E`F-h?wN~(1ja@tiIDx zNp)M+h|h0miL%B`ZlmM{K4~B4S>o+SjW4_ z*Z@St#dI0Ne=BPk@WZ~)D)lx=+qDY=f)Ep?=P>rSJQMHbAm7Z9VJ!ONVs!);flc6N z8}k@Lok3-6KAlbXr^UUGr}e?3sS7ED9wZg25o`_qX2d@u=fTN$&_v{EKYoGa%h8tz z;5Em~HK$SD^dJCGj=1ef2#Bj2Ks9&yJ<2oWdaX@y^sT<`Tb*r1%Gzip+TyS`z+EqH8zl%|LOov6 zcCI@k@M9l=e4_lZH}j{ifwCEREgMssnY_H%1%=cD!g~!OMCK zO7^xz5TI9)?T5AcdiZ@U9|5=4oX-{5co^mA04#FY*P_0n=R)lR z5xoZ_<1C!#OX@>{WQY)0AMS(^x3nU4x#eCW1`HQbU1JehG``4Dgc3i;71!AFz%G#f z-H0IHhN%BX5!JsPgjfsVaxuq-`ye)~q&MM=zk~#U?I?jD^0UnN1WNBCN6qljPA4-Tma{Vn@6LYARU9Nv}w`@eiJ z{hfb&Dcy3gJALY5xHQ!P<`+LW9LT?x>NOOnT?D5<>*#;<{5|#vv zTH)LX*A|`ieh_Im^)H=TO8245eG-X+xrf%%-~E+?>3{p&l{BGyD8_5gXcj5g%Kf8o zkPksrnMKV1fBiR?(?du}eCm;5Y%UyXRZNhPOj9j`RCq7jsT9q{> zfLzM}s{J8>g6hCa5PA`@^+#4e0B*m;}C70eSIAxg?-VF zfB(%XT)Z_yKgu3#x&QRMs4*FO)3{z(iQs&~H^uLQc~RJ!049Q)@^E`_H9 z)g0m&&oKI2|LPB}2EzW;@6N#e;~nMwbRCotb+n3yjgr>OGdPxcw~0s)0esiX3)Ed1 z$S6pq^%(N&5xhNz_u3#rQBSRI${{?Lw3#|m(5}h8--uHvba|F~Q#nq}(I$W5>YI`G zGV?t+M{59OxI7AN0>!m8ZceElh(ya<&OX;eYk#g1-TzC-dAURZ91!FxHpLMxPa>s)c%MTeh$%k+LH2Y%B$lS6!?f+RxigYsXwuWgWDT|9bH@ zXpY6?2&G~z024-!GIo{ z^R5*n&d`_d-qnvGJ&e)PfprK2Zd-lqc_OtNxa0FPJ&MG@@W@bFZcHO3b1*IU@Qp-m zZD|RwHa&aNf&GJNtOu#4SKbP@fW7oHNDB}r7Ky9kw+=$Rx+4CClo|c%8yLbEAbS4T z8CY7u(*~Xf7Ri?&p=&{et&vY)%~Edv*a5zWxGqJ<|0>>Mdb*KRKyu+!VcEetnngYs(3}KJqWbwc)1A*jP0brA)bATWd~<<+WXAM|!Eg^O-upw!C$? zs$<-i`I{3RZ{SVz#r7e%hK(qx=TMn+P{}uNwFiTHc*|SuT8G@eHb1{SKRvtBygJpy z?L=el?a9^gvy(IPCugv-zp&oyTIlIv!KEILPpI+pvB^Qi-sTYg=U|s-(>&w;a$Y;# zyz(pg!W8(DSJFy(ujMC9iP!Tx(@P%Uo8V11Y;|=NnC`DLPEuK|MqA}OJw}17&k4n~g1)=Ka$8%JL%4N%=Hljh_A1j2i{dX60j2)Bx&b%3-GsSM5ui zFR@#dLtG#^R1$|fzv=X@e9)p8fBe`+|M(Nfe?Phy3M!aih*@&0&-lx55uZX-_}0Vy zA(AfApjfZS+agG&qP_XZ3_M7ShRXVOK`c--8n_XVD>;cT!>OKvD{Xk_uE8)GcopJ- z{^La+fAJ%GLAvqh4x$wz{c!g8fsDyXRQljHke`>%=pCRRPOJvx5KO~Bp~Q*-xRx5$ z6M?c{4r)HU&`+A21hHOO)u>wTdkk3gWa~dl7~F?7^AE#i7eTClgz0L!{b+Bxj4t;j zIHkqUJY8fg6Vd>EaDDsXh=cGU()}#%&dwordHmq6;2_^ay}$UxSb7E<1{3IbBTSL@ zV~p-~+#~+8FJ{8aDSWm6-CsKt#1mBuu0jNn*kM1^Up;^b_CXLw^~;Ar>LjixL7>~b zuf8}RhW0d|xTp)bdj@fD*9N z;1K_Jf9YTlFEr3MhO|Lj{6E7h&7s@9aiknBqKE$t+yyEDq6@v4r>NEAq-RXI#ie}? zGj`P+tBM<;N|1XmY);FtQ6Pf{m@9+8i{Lw<$hsVK`|mra>o~{gJbn8hNW4T05!(Ok z6MJZ`JADO@1CQP_jOF|x*5NLU-*u(W{xrI@Jd;5ql%IJldqR+aa4+r*??G(ezDR62 z0g=c15^T4qP0YYO=PqvUb)ej~58m&GR7gszFSXHi~-5 zEv%zkSYt}WXm{bcHz0`dKx5cJScPzP<`VA!L!;Eh2*`a5DVN-9hJ*FyppI11H?0wm zwNRjPuPf9y_6vvF+}Kxgb{^kYDC9U5jO*qaNF(8zw5oj0EJuHe*UDR+A*!VU=dxW- zJGSPjcZ;B>jS>PGDK{P0vTwGMqiWV42~h(R+HS1{75y?lTDNnCybvSWZhcd7fE4fm z+~QB+kUAia$@N0%zbY>!)VdK#!nj7Z3Z?v3dDly`HEXQ3n!!zQPy)ec6r>6QX`iqP z7G+}0DuO_a@}?=w@VT=5x1JKjfcoIp0JFoqs%cy0nP<+w2&a9De)^rt|4NZ1^n$+d zz0>Ju9=|Ug-#eI=yRb6@w|oNxesy&L&iNdy(PfCh8YD#}fP4|!1-t@`Pc49m^F0|I zL&8SFfQABB()`6s@$U5uA?b8!I$gYcC7QeC(1En8*$a}6G+e^1E~*JiJZTwofPHD5 zI+q}Nu3*PR^jrzKIX<>Z$!$PDP|3Or7zqz}M5BKa2O(DaePyK%?mL(^;QUWvlVEWY zsepxMn(rD*SBD-+%lqz38$-v~1F_S?`%;!d8zHAb`k%$|jk^CbDH2~DIogS|3hB=T z0Eq$Rmo5Fb_5QO|0EJ?_3Y-Ix+iXv`_YwdM+Y$0y+MB;e0Uc%hQ(q3(!nMG*k1!3n z2it>`oHBOh{<_y%z1Hvh@}5EvU)nYJ&RZ}0K1VjV_fU-x(T4`Vf(^d4Wfl|Kb0|zU zXJ*%Mm$%foIypamW^!ff+|**@3|=eGH@Y@f7FO1q%RTFG{!@=^e35*+Dq`-?u4}%j zir25gME(|6;jWio$`zRUb*p%pVz1_J_am#7SK{SbroghDabZdu1>UPc_?@sb0)MPV zfTQeA_%Vz?=f+buvbEJEtopEZ;=~kLz4z9#NO?wv{80Mi?YdEStBzTv4u%Ts|W08ggrKOtNaeru`t-Cyw-ojLQC!;uzIQLkTQ zOk;F+A?|zuf`J^*jG*xq;ZvZ>zzL9It+4L~QTzyE;rHPZOp$4kZ3zk@v$}Ni11mD9 zQ8BkHWFIe?n;05@!kA}(;vNn zyC&qFF+=O4ToW8CM@Llw_42hCugb$|o=NflCos%6!0GH4sOx*LBbo_^_8YjrdkKsC zfB92;(nAfjUjQvY{P&A=H-;r37CepirekSH<+clxI>peJJb zQ%FvH1O)P5|4~Y>fzW>Ql?5!^r;s@K$_tKd?vD?d4@#^uANWSWNeMW)N)m>;n0r(e zFlZ>TVi4DR2G>+spIHhZ+Xb+UV;PeeaJ5FsbKITlJj*#xmxMK(#!^Dj?|=rc@EvjO zQj|Z=sQS5DtRG~(H96dCDuOjKvbg|W1hz#KSLS$j30ZruSS-PYY*TRG#A%P9K@sU>JRDVP0F>`Gdtr|UA5#E z@@XexHml64J*V7JRgeCl zl3wcQ?2qZy(k&pZYZ-@HGp#%$C4W<5$4!2Yj>KBodL5-7*Y+_UhEkh*q7+J`w32fq z%JZjl-NbBF9u_)#)S5{PO9Z%P<}6`mt1%PaWhiAg@BnZMiL^@pze>)v^BqHv?WrG} zPEWu1cKX#{dLpe%vtRC7O~;RcOs|gN-f}Ljpd&xK+@J0|xIeh?pjN4|JPoo9^1V2P z-aZ5aHlTH+2iBTXynl>U&nQH@S=a)zsk_-ow;aC>WM6{uOxg_+J-qjDx&=}FCNBPF zFcve4+Q0_sS8?5UX=)Z50RyBVaex}Y#OyrZv}N@E(etN{2GZGka0l2-yVKr%``8Qk zj!aIZ^Zq$k50RR9X07*naR3kU;oio8-+sL`C z{iMKbeJ%65b?yyQElz{wJ-8u!4ZwbGZoTY)HK2}Y)m%sFR=19ONzdOl?XC#`xq~?O&scqaqTEOD6E3&XpxAU60R++TTyAl>xib(1L{9ELK1lK0 zUUdO+#b6#-;4mryPvDbXTL5y_4`KD)uGt->C&GXrh)_Hi>H4E~l)HIAE~#Gxj{}zC z&jN8g2`K}`qwhRC0H+)^0T5E_3qw-$4@L-F)W!6(AH*0F#Dsl#ZJI!HjdN4&V@uoy zd>-2JT)Kp=wf^hhnOIA|{-vpeZCgaUcZELv3vgv0#Tef{5nuc(fAoPte4J;W>c@cj z!nbD9Z+&AX{mReKCS4tdb9)M;{#zLAd*Z&q5aote6vplLk9MbzVhr$}TW}l&fk0z< z8f|+MF>YM}Iu@4@BelKHerz{~y!G^N;TreQUx_h#Lb#1KMJz)%ePJbyffQ;K@mZ|0 zTmJF82UYTmgM^2z7;hfe$!o10C(~?>S?jw>Ins?x&|IvYb%n=zRz@!d_@~lBV}Wl^wtKU-fqKAz2t4nw`cY{J zccgl|m`{7L>_2k&P};+HqKWN*8Fc>7V-ywPYY=*j^zA!NKd|oKt2dajbQ@j;8uPEE z20Vma7zVs$udWHFNm~Np$9u=X66XH8(;SisJ&5r)F-AB&b2Uv)L4@d;Pebe@S5Rp< zKk})xIQ$SB^M3XPo$@+gwOR6=0f{#R67Oh4ngc8nYCdrh_qeY({jIo!07d$9deQgK z_YwrG$FkH@A^*`H_t9pwCyXHUEmF7tX{=Y zk41iw{F;E|%gKjxveC7|r;0D{8cugHG_l%*l)N%Gvm9LfE0aqg_|1uTre_yU&$1rp zdNx*;ux^5*I!h?!y|2eh{?2u01pdU1zzzZ6{hwMlk*$8Q=`2o1je;94MjA_IIB$%vzyX`CnIpznjLet7>7*3bKK z;f5F`2q5R45SP9Tmvx;wJ%IRlmRGD>mwUM%-RWZ>e=qPnZ-ZoM{LHq?=*HQbXEH2m zT#(P_6jBNrZT>SDXgdJ1{w1Uc)UiH{2>z}U8|gp!snHP6w;lbVUxhO-7y2~z3cmC` z{n>+HGFIcLEojwU=>v%=Q?uQ{eLe#6{)-s!g3PWWE-E+sJ|r$gMBf4_KXq{>q!#w?!4EuY8|srkepi3`dw=C%`Uk&t zHFJy|=#H?}A**BQY%1a0kAMJ|av{oDAuoB2+6I%r(|DE)6q><~6tM<_b5vbj&c%*^ z?Rs=k-Q=#L1ED9s8?Oh?!kK>@1YRR|OkL6g!rrmIu&;0@QY!C^FNIjYwU6!Y!H0bx zWp||yBgXHVH5@^NzG|JZ&1=(bVYL-#z>*8!@y9Q5{c)SjUl@U5Od>TWf#MWrRFU0qJ0jNPpl;~B_xO&7g(R3~GddR=T@A_jXfi`pLhluCT*x~4Z=|_G2?&2fx z-0SDk7rypfdhFg?ac_$Seag-?aM#NI(+`)u8!@U`+ynL@mA16FnC?1pJPmbW9B{f9 zB7w-chGrKNbY%#6YiXEww+o_!mil}82T`M&PRk(d8tL1=2jhI`=r3a+{p^K_)Qcg( ziSY%Dh)yGA0Ku2K6gcYYMM7?+CpGZwaef*CG~d&8jP~^a?{yI_|H{leX>CC@g_R)k zzd19Q#z#M$miIi23&7p%Q9OXbp>Y%TM~L|g1l=1E{`|{vC)Ilqc&_X_f!K@e$Gu3u z$iI12+-obJHlkg|pxU$Q$bWZG`G6^t5k0#8AK%OR`V%_#>gyM~ZtlBi{<`&aW`?mn z60JY%O~eZ#6yIyGdN}bLD=_1`k+fggSX+THzr2F@=z4Ry(Oj6CUYr}BTAzPs3i15O z`KxDUR+|%zjkP5{_bbh=)ivzuBI>xZ1b(lyK026fPJJNzBsetnpIs5Io>t;@B)+88 zua@=RYdv01yIy)JSHDtKt1rgQGk7hp{8n*cY`26`&ii`2!#?;_= z4%TEKMB2aqCKk!Zn`v~Q7qQCabl=b*y6f6X$oA zV(9#IJMh!@U=|w;F8}D77FFV;0VOJfQXZuoYXWd{sO&%JJ6a z-x+k=pL%6J>>m7?`_%)-pdsS+ccR<{$J3wt z$XNO-xcJk}o$U*AJEH6-&vFo~CRFtcA4j6h3m6f6`lUwt7?Ku$_0yy2>n|>(-+Xd5 z#N+?Z|LSP^Z~yO0nXzMmZ9AB=#%}H$mH75rQMhW6%x*~E+lT#tR@`;BKRgm!S<}Uu}Ga^9{_`cD$89q?FB1A33eGQkB;{)x^rg3R(an z-%+_vs9@VgHqAU$QNEqIbw$_7XZ5!F-C4NoUG?;g2-f=`@sd99d<9V`V(D3BWUKn? zgHf-2i+Dv8ye7xBU3;$WYIIFrZ+tQdk8cb*^56&D+|*BlI!Acj*#X< zd!t&`TKd2K{kM_6I+dQd_jo$GXAnXu$ao)L8^rPF7cs&Ig1a!Mwf&wnFg%KCRVHNj z?ZH4U-<`#G&clI6FP{%c59&G_2m-FceQ%%{*o2rcFg%p@AG#&Y^4*=E!Dt|^{+hEB zY4E_|^w9Br>8+D*q;ZM7-4Jv8P&=Sc@1W1$oSREcYyeEnp~k?=unS7F_DmA4Q`eW_ z`uF#zE6W%qUA-$c_Ix01?75rvvuzR|JR|0=f1a1}v8RaC`;TXF9AbV0iT6GBTT)#k zP2^tK3h9r0(#$LQTrC&BNHgyEmNx83++~=28}*jAxLm8O)}_49t%Qh_x!auToqOWe zWio7O#~Oar(0(60Yvu2aXD;^|aC<&<8|ve82toF8bs76m*wbHGoZncQm~AdjVr=g+ z`uOimH5(VE8&}UYx|bV`jb2ReFRwIF$6sDq;bX`baCte5>xtNlsF$CM*2nN_Ub#1| z^Jkvrwn{H)<{L^qUQ1k<`h7_+X`REIfl3%8wesA1RuATA7-1)OJ0y`tH z{Rr$30Ja~S_mbnL)VV2opJpz zGTFC+$j;372WMJwc@6A+7%}*eBPhfL`l~_2OCZzQ1~`L3CG7xw@ct1H>g*3*WLAV& z6SKkfEDuqx(ObI{PaIFBi22o-X80%{S;tZ`9D2_mV_3W&97H6W{)lG9F!JEKnLC18 zxm)nS_IuCF!Hvab9W@0JMEUY6!~v4H{g?uI|NUoX(;jreKZ%aL!{nnY8K8gk;p2$x zbMTY%ZWu*6;sLDk|Mt_<5JGU(h9`vkAMJ-*jUGSGs1dw{B`xtI9l&@zi*I<5$Irk; zHk`+!!tZ`_ItUi}Wf$idRg|A+IkLA+QIU)Mw?BI*{r!J&5!Ztaxcq$~ivGpt=F-2X zyvF22LRA6Sr@e*y2GT#mE&=CB2o8&k6BYBw#TvJ5w+}SlLc>Z~(~Bl zE2vv6W3K>xTdePkq-*eS1~*(9lpJ9!K8?{mZ88|{h9GeF(TKMG6s!J9Za9Z_?2Mi& zsMnw&%Ud86>1y!@sD;cSk?~W^t@`;dy}gjWgk}80jJ5sz+&8AuX>{{1LyS-?zZYuP zr3sCL=?W|piC)C8rSAMJ6kKh1ID8deT^1bB6mOfLka#l{&8E~<#_xp z>9l8X4(g#@HfIRd0TSTlh#D_Ry@J?ecuTe_RD){~9Ic-?QSFLD>ZF?Vk z5>4g(iaLBb3EmsOUKdK4T!JzYsVb;SMjg~uDzZLr1M#^*{jEa6^SfcN;wspSLTo5$ z*IaK^)aBfEe6M=03niB(KW4ZPUxtkbji6ZBiU}K0`^h>H`n%~-@VKF zTH|q@7F&Cj145s@Uq$zRe&Q5*`}3Qg!LiC}0KoEJbu}OJ@^mB3;$rpOm6`Oj5AIJ7 z-?}eNZR}6Cu!pX$FQnbQ5WH(hnO))6~#IX>st*)HQH`@3X2*v?x+;OwPP@u*qb^ z-m3_^*AmZ2e-_<0o)P+t;Fr9drvAS#taY^s0IZ-&+Mu)xP`eM&eznS+qH4pdy++a3 z_wwg@NdI>AZe7MPDJ61*E)()!4emJ~oO2L4T3v0Ti{HDtg1No9#`5Cg+*)&dW?|v- zABfUGiy_qW|o&G7S>R}?^;7GpXu#cm|269zk)9QY9*#$ko0nOXzD*3_kOE< z(@K85jB!ILBTRuS@p2Wm~LlD>1@8G)S< zco!qELjZUegY_;z%Z63oBqMF|!dugD{o?!Rj{BYi-^=#F*N>-763S`3b~4HzG7mQF zyw$hgI4^^nDo7_dWDW4*(+74bE1fM@{>xID}$29TJh82Wh{8Cx9jVq2G$gy*kw2 z#t@$_(#kM8tkno}KqF2a_dw7%fk8HrPNe}p_vB3I?JISl(KV5OU9%Y^j2wr^@IU^I zqv`Me`o(bjrf>DHd~YuO@<&E-8@H5x4sQM=$mf@_Fdu`-v-gIvtdwq{o?rQyed&$g zRA-g?s8b_>A42-z_n)0fzl7(2fB4&%)2VZal2dLDVuD^2e5O5ctzSYSVG?B7euR-m zYyo`jrTK6zsPu+L_%7i#LHs{L>tX3iZOxeHz2oM%8&^$35Z6=>{S6Nf%<&*=LZf*i z=elszvc9ewhvDpNcR(X{51<0^HZJp;NGr-Uoo3$(^RiwcClXE2C3 zJUAcqe(ia5XlX|={Ws{Z&vyuq4Gm6bYZyb8vu}6`NeW*eB|>N|p20Ql&(M#!uxoM( zLPv}Z?*+pYA>cH+SQW@cs)7Z^D@m=?R-^*p60dtj{MsTLi1Kz=PkT~Zu&qcNu3dXh zD_crCy%sB{8Wd%6@lsnYkEri!3_RJ@ zPzAsy=+c2wbW>(Y-1-`#y!EVF+0t}9d)s)eTph-->kRcIcB#lNYpcM+}35=rOV#D72MWor7Xt(rq04WzsR>hVz1xED$k9q zM0sCg@8jNOxyIso2Lmx*`2JED-}^XrW5Cc*L+iti2k|B@0jFov5*&Rztfr;m!L%~e zhiw}6#9>u|y3*L5z3exOX&UD3^5Q~LYii)lg8Y|$ zMDzB-`l_wTF}m4MrmPKLOjDA0Rp`Aa6|Og% z-Oc9WO0&^eU71D~e`0#EadBp)ad~QX@zQLX8=q?~uQKC{OI<6o&DF)F=E_0?61SrI z`iclny~iYf_M%)%+|jB3Ot0SyU%%ffZW)7lrM%bjE9u@_pP}S=t>@SCO1xZ!Ex|HQ zXsM@6uIVMz;p_2|zjNIgft?X}pGRPa0PsE!XstRovHGSLo8RoEiw!;)?1XKErB>#; z(ej}yl@?$R*yY37%}q!FbY${vZNcQ-wd}zn{~mlSkP$dz!h6VWefP+Za=EY|IdBlb zvrND*fIy!{xBOl>v!ig>2SJGX!O#@rA3#iU8SJv3t3-fhxZ-^nD6{XzPrb7M=XpLv zy5&9(f;7$J#z-yhHMptg;0$ZweD{#fjQ9%CrpGb6EzU7OnVwz^ze&Av(yh~Tqw;A?WoQp(^FIP|I{eChjh8Ex_~Xy7#9IG1^_jAG#* z##j68Am-n};{Weph5wSAVCwOlrGY?+00w=+-+8PrI5*l#&^P>F`}E%Qzx>w4^l?P- zHCFf6er{iS7R z2?D}Ps4u9?{}xE|1Se1Xrv-TX_&vtf`IH+k=ikuRhx!2okIy|h9mE75GtP$O`NS;* zj&kbSM?Mel+OS?l)ki_fSD8OO4@jUnjLST&+iP_`+z%qczZ)HS?K`Mi;k-QYzz}-w z*g~M~m(MJuPdqxD?qSW`cYH0}=^cerz6XPd5-ASug%d`9Rn;&^vVARPc(-#YjCjo2dJM)+;2*EGwtL+7)#b8@U+ zoGIEixCT2zB;BBaa9v8lnm|wNC!KX|bzeuouh+NEveoXvm|xpz_s&*eptc`hM{+Z) zK z%(kaX4Q;vL)^GPl+B?M85V55zmoKJy3`61f8CqgZ)BS+>UYm{XPs}i)??SOsj$8bhQG0j zY~OOT(OjCH+gQ3fvp7FKEf;@jdVF?qg)jKr>_T_f(js2-n#)Td`K$9F`I9S1Wr*PW z6REBv>Mk{#@@jgyH?0${GhdkUGtZx))Ms7gS5GVPaxE~|yIQaLh5}c;HLdim@}fXh zW~+Ef+qv$Hz|IK#M;?J40>F=Vz{`eNHrn;Z;^pPlmBq!Lp&?Agfkkb}%DQop3bqiMuFCEIgD)z#qOaT~QD?i}a~2itDg z(dz2U%@#*9h)k;*AfjzE){hWea9US9h?z$HvmjVsL7(~*1^_kuXFt_y+b|ByB(Cu$ z@olyT)q*?F?G8)eQ9O5U8SeH4tS_IwB;rdyKuF~Ze;BU>ii~?+8HVs+-TToaKaCMQ z9N$JdJ&5s8r(Z&Zh^^x2-EfGtQ=qtbpfFW`qtm(T5!FX?;YPoOX8{ci%JKJE^<^(| ztVMo<2I5Fc|IdGzPJadWf4};PF~*pDo?qgI*7z4_^Yc$lr$7HwW7sP|q5?#Ek>`I4 zLx%tAEBdKUaL+jqR>*|yI7m-nSW(wgUweKP!%>+albD5 ztO$MB1ExZa6>5mddD5lfEeHF9bFb|JIr04xb%57so?}M0(_N?;>;-W@dvzHd`JVLP zZHVZTPId&J%`p~%9)SKef)R)#2T;wR9ufP)aMzE3@R#6vaxAr*Fo#W}L+JWjRwIVG z>C>R!qYzOpPOd@}nGO|!Z{u!J8wXF|ap8BqITLHesngmvD%T946gP=643d0}mmtCZVB+!)*zcvRuFsGpEFJ4!JQ&-sO01%Xp+z zSLUGH2W0z?$+>s!v=WQPy5yVM-_{sbXA@3U`MrR+-0T`a%Dg+xV^3fMBKxVv{xq}ui8McSOIq*S$2X=z&PCdNP}fPk>lvw! zjfb?1yqgA83&F4MYx%h>byP48NDvFGy}-ryDW~TqGX*!kG?XjBagP4jt-uDLqjSXx-0T3(w+7m!)uR}gWVC_fjQKkv;i@seNCx63PV zmJ`NMPb>A8yi$L;7We|^eTiF-!FxmfYTOYkuqD5qZrWC%)U#FIPTI~0?2N!qzzDQY z+dl!F`4iZM`o@_zc`dT8G^cvj(jmW(EPOC>oI zNrhamwgnV*_udiC;CMdZ`ITA-pK^=VS`5|NS0bKNb8w6c@5I_C!a5{@E zgzvo4fY9PNtf$>ba!epC@lC|_=NX?l2teP*<>D+voBxl!H-ED1xbFOJ?N!~?8@d5B zfW|@)1PKr%!9|)8sofffBdqZJqKI*Xe{%S*@Soza!x4_~5+g@w#$!ve9ST_*krFA1 z5=oE%u>-w#t#98Ke?KShxi8I|o-Dr|GtM1FpljoewJb9NqxtzSm(T8gP>OXNV zHp*j=7te+sw*dEZvtOc0Zbw& zcEIiVIhY(~a)T^F-)wl(v{YH5mu8xFO7Twzj;1j}jL!IB3O<8XK@3@jsdOjY zymRh)yw@nh@PrI7N5FdT0dH3Md}jYJZoK6IZSzosEv29x&3t>B{hc#KCF=WxOfb37WLC=9MUr|~#`5iCwG!=(gD2|VT! zC(F9WNsc0rU!H%(0ptmJ$YQ^Gujrl_9^Dl;W0_^rMVoxt(nQ zSb=9I{?2Y!%kNW_Tp5!E&a>)iFE<9%F6vBV1{C_TbdS+MW@WotQSgywY~Q<02T45i z`Q>zgJ#~iuuHKX~xt6@5!_ZL#>7$@9h9dyeJkrci+E{7uj+E?ge{sWX5j?NiX_k{W zQK}m4JvmuHEoE>9R2Ya^)a()Nf@~&Wn}F3A zgqa;@5B@nVaYuf4w9Vj>mchUL?3%4CcuuPheoIPsOYO3vPT5O3_x?BE*wnFCi^;8> zWesAiNWou9p5*K+xpf`0h=u;xvDe=nZ9=OsaL=(_#RRB?%lqI0BQIc!y5Xkg>Ny1a$@(pJ~cCc3{c2 zB}zD^Ifr|H@&v?`A*|{haQ=LTv;u^f!nBqc5W>7SWP{KYnuDo9F2K!hMuad`4?{ndb#54{$Yx~DG}4GredU1#hFer7^gN2X5q|NgIUx^!>9PWAdV(G z9me!6JvT38IaS`dDNllU!a^#mY!yYyf_F22^{w}%kZ;@f(QnQ081j_!ebV=Yn^1Jj z{4d)w_fU2l2sa{>(D3bQYI*+Kw|4X$XeO^eb3Xa%i%%pMo_s+np*~6)Y3&SU1XSNs zwk2Wlf2kjq@Goy%(CV;@dS6wN2Y2piAhv7otBcxl#4#ZYT1{|neN$HcwL(s(4YXu4 zKy^y zG|lE$RG_t~PIVo3&wcuikFTs!nIG)@?AfFXg|b;qGp` z-EZG%_q1%k)vD^iye0}h7t;&e-dtqH6^GO52UGSP43kG*tmD-Hs9=-g{C99!>yJ{$EV+6Gs@PbD<$5-QjuF7mKQ~HhO4}6e1u2iL8dy*{Ohy6S zmcKIqa8Gm>zY#3%bL8CGJ?&jrK2kX;&H=~l4NL#ozyC8G@x}@VCc4@7&kQmO@Es|! zD_Ujxmp{@nP|c#V-2dI1va~O5tQcS`N482=je}_YC^#}C&Yph;H&CSMTcv#PSMIT=vArtKQI zn`#@jTx`l1q--ABR*Ws#EcoNUt|ou_gL?9v*EM^k`(jHo_wUGXAu9?Pq}f(kD_Wwz z_nuaUsB_7{2Kk`~wv?YWv*JzB;=nOQSape8im=_U@@)^d0LCXqf`MG6GPE#22jLXG6lo$R_<(7v&1HwL!DyC5B?O9kMAdfdM~ zeVZQavBHSsWCzJ*?e~A>najyY%KmtHE$MPpV5_S4p^mt{cs^-p@UyEu`*$j>WK~=0 zHqLD(PhP#MZ`5*f=fSSt$JlNe>(rX%q_-m5DGD=y&i7)!(MvvVZ6x)LHhX8xmr0o~L=*$1Zgw$VoEuFTtjKnk~)A$jQHq2R^9zvD`B zp6^7WDGWqQmoK4(*I%H|9(0Jr(^@3Fltu$A0}nNyKN@HszIqD%MzhnBCB)utqubSN zeq*QJ?d&)E-DbVttG1FxrPUkmG<%J`PObT%HEf!Kul*CIq@%=>3l|TLhdrKG6a2HB~VJhBv1|jJenK9U(V(? zYj?H>Yhp#B6(39tFh;gL2^6 z%ne1Rub|EWJQz$+A4&rRs*~cZ5TN6LqPn~mtoq;95^@G2wx!^sgrZF1LdQd$IpH%& zgSGlA7najK{F-&v7J!QQ!>ib_KYk(ksf_QbUuMSs#A+f&l}UXyDemg9>H4AetgzOvt11`P==ZhV0XqY0!eb!gY0cRG=9f3^_`FJU zCHXfpD#*5pKahzpHlrnzjb~lME|j>tRK8z}Vn#ym3x)Sx^42zpp1BY4rn2=eCso zCu9QwIbht8fdYC$FX_m=w?0*8S#svSL0-$scvo#@11PG0&$cbFVj`;nlyAwc z11d~c6o&-uo>j$6sWhl1SSWfd(v(1VK)Lf&n7PXhFgVzJJs8&hQ@{`*hbiSRhokD4 zvrcm^Z4yn(IRS(avY=9)?0$-u@diZ^;`n(N6nHxI`IHbha87s{iph`VHgs{wv|Yd^XF|NL|E8?W8asYsuh=uWFS2da}5BPR}iOr`~=x!_RY^D(mK_g8`P7;(2k#tYge=! zzup+OG~A(M4+h=c#;8|q^qTExTH&P89p%L&dbw)gNut{0aE^!5-255 zN}xaj%|W1adqp?o|K#gjcCu6RZ(ZXh_Gl&z(Kt5VGe@;`ESudZ2zjD zNQHs;2@d7*bf9o+OS$go($+r$$TqpUMKzApHpH0pgRcu#DO%*r~;(!cZN3$mcU zZ%Qaq4KWW>x33K4j^ zAE%ul9B%Uy5S~4Wi5=fa@E2uWK-%(`o4-fR&`)&~pF!1LdP* zX2*kMTgTWwSa>n%UH^76+I%rtmd$`g47u2Yi^5M?g5p0t5D=F1^N>#l3fM|D!4Gt# zGgv^St>W^jJMfT3oaY^wg)N<+K4zrJWlgIOA`se2Qvf=pa4=dNj{CiFr@J`lwujx8 z4m)TxG!WAmbSw34Q|H(Wv~<7K(tLfbF{s>acA7i&VRx(5*uT{t4o$)LS$saIWaXEF z7N+sIJl*3Cb04}mjc^PLAMAh=!#%$|zR0t(c$(w7?>Kp%bVTKN9tO`{j022#-W9>} zIAy$)Kq-Mz0$SNzx`!zNf0?_l4`6Fl-?~%Hl*A))FY3e|L2^Vg-zA(r?uFkEOFZyn zeH?z!%*+R6@~vS-0cB-|7zGpe6AxB?FI;>`5bZ)W?($!UuC!|C(Vd4@Cn3G@n zh~x>5%r{v%=oFcFG=hPlJx&*366dOB*6EO$VMMXGyVpy;rsMurWZ>xu&F;UerTD+6 zJ@N0UoNQZoTC%yP&f~YgdNKL>E9*KDV3nPVwzU4G>#JrHL0KnzTK3PN#aCWBr)BhP zUkncApY$g$uGoHf><+MRpMj0->d<;?r0h`Su~iHF1|-`TVTsbXK#?Ejz> zPF3NaVIVcEpc9_{!!fgZck7+a1&)=$-f3QNdz#XF&fh!a113DftyI^t|G)qF9UXPM zoBaM8&m=EiTu7RF*RE;Ser428v?d^VN&~7b?c2Yl(*#C69r4%iB^!$a4PeXe&4Rv} z-FEVE_i9qR@|(%%(rd}$`Rn?2aFj6jJQWB^KSpG1)*i*%6!_r#5`WgPSi0k@Zqy<( z-WSmXzNDoC0?3(kISvS-j(q%V5J7R-!Wl0~a9Wc$(1%f`dt@xX+m_Y*dRvC|HKNg| z_d1P6uT^O-jGC=Zvs&-G=%}1hB+1N&eGs zTr@@botv7KQ5N^KT>o2NI-gv>w32+h6%^Eu?sm;E9186hW$FL&rjC-k+Dmro{Y0nl z+Ls%P_H;_vFL_Ujc122kT{G--@NBz8RzWXiimyQg_UzN2(zt>3b>cR#tqme!mKw)Q zK6PNQpeH(xv1@7;{i+mgEcsv2$pb4|fdJj>&#&7Ncg(PVq5%e!{4c+>W_$g=`Rcjk z*BhJ3i`qN?+i${mA-Sv73h%w#(K7x`&E$s}dU?4c* zry=tgjmg|39QvPAn6_{fxOGHD6Y|T5GrlZ6ouY(Bx2n%RLy?L$JO~pO7BapWLM}0l zdKri!cj6Nz#F0{8o^Bs=lP5;egO680^53aSI572-IO84)Z~Y|Q`W_Ys1DEMvrEk@|C9uo7FOGVnb4=p zeSpsKr_oLv3u^R)eBN1q207eWk?eaFo=4-U?^^ZlkMz9=0|4NJqKDsj_Mg4@_Dox4 zQ^xSiDj#6n!@dH5M0-u7For=fR(pG=p8Wgox05$txRCs-Z+=0?yKW`#Z1;5P%DJSi zZ`V%cu2v*yHI*KOmcA+Xv;}}q>5f)ZEnWYuWa0U*CkyAFPnKBjZ?pd7!{Ee3sn5bT zXc5xGfPnC+2}JZf&RDuHLTo+7IfT#{EXC`aq-qrr@)@ zjZP3b1i=U2!=6Su7je?!xWi(&r^kMrPT1qIpND%q#u2IIkMHS(am3vn7S8S*M~?iM zE&`XqQUav}N(r331j+$`vzMuJj6V>B{ev{@cRRiQpw(Gk+E}+KVyBSro#6;%L5Oj5 zU_ESrf}gxnlSdg@CI`8&%$*Km-k4NTo?)jWoI?jFbS|X)tK-tvEPm{;yL(&K=6kZ< zzr3W`dK7aV`^QZGmiGNWEd~FY4AXt}^XthsHCXT)ubtP?fy3k{AGMON$~M3?DbyD< z%gyrlm%p@;yr)^{AAKN0OIrGmO##aHjApW{>oWEyMZd3O^;n8eho&bbwWV|2*kiw> zdIx0>V{MXST6FqzjCG*IqZqTYfCk&sOgCE?wC&P5cTZ?mepQO?*4{9AL9_7Zl*YD! zTRUA_t?&nLUP#_j8K1henlL%@iq5I0eD}2N;JO9}UVlMzJsKF;*k~tj=yZZRQm)yP z&kR0S?4H%CiGTBZPuMmF;H+?9>3nQpk#f^fL=oSUalyAg?bud}Pp-1sK}N1L+aL7n zQSz1y{Jo=-5-w>qg$_e9JnDE)Wne%6$G`(JV~|FDJu|MzzWdAPf*iZbQ2jzv?(gVm zMg&M4hrS+^Spi_|j&@L@DV*w9#(GFfHys3)vt75ND9X zf<$cW)}NrLqbqpCF3rixnJ*tB3n72PAL?pav;ThH!w#QT3a}F=GVlqmXjhJ38f#nxzaEZ0UetCYi|EHiPBQ_wSEa-0kuH)PC!T(^2N z8Fd<}k6>we^mOan%0l&UZ!Js72F5!v9>gP#GlhSuE?~>?oxvjpdtK6-?Yp|)>?GfN zuan%<`}*ng8a!^xMvAQb@5tC+TSxuzI_hfW8t?nQMpQSS{YG;6hoS6@k1*DnR@ z{>ndA{9WmHKbx`74-D{PS6N6mT0_=lDxTCkNNoa&j&F3laUIR5BxuVofI~oTL=?zXSU~ zO6mRGo|d?;$yUHnM(tLTie|09`T5P{_rHEo=g>E$FfS%oE-jhT$|(XZDe66SlHU2W zWi#lTGH}<>ED1EiQV9S6AOJ~3K~$FH>ASJK97pNt*q|Sp;EC&)F9t70HXuO%ht8H} zy!9loAAW6RoP6$?br}p)$4nJ{Sw`w^%aZ*SDd=B+<(w(JpK5RZALyijx|Za#%HUfX zlwcYEvr_UoMz1F2oBjOH>KH-n8GPx+s@XwcD*)E=zoq^B>fgx{bVnx?tXXFdS?K&C z4K|FWr0bk$DfSF5>}nw7feh#|laKOxRdQ&s4^(wU`R5dbss=rFWK&^V3jcMb|LxmN zS<~14eVxbvepfpt8Bn>c*`~!M%`h>TpwR?uP@>>ts4?xUs$b|gh)y$57$pihnxZdU zBD6KKaT+CuZVw$}CpTdF15eS#%0DTwf|l2hyps){b--15eC#%umPn!UE@d(`kdWe7 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 XW6OK9Z!DB1#@Eq+;3K5NXLJ7-K@uAC literal 0 HcmV?d00001 diff --git a/examples/CorePlotGallery/Plot Gallery-iOS/Images.xcassets/AppIcon.appiconset/Contents.json b/examples/CorePlotGallery/Plot Gallery-iOS/Images.xcassets/AppIcon.appiconset/Contents.json index 853a3c734..b3e167fda 100644 --- a/examples/CorePlotGallery/Plot Gallery-iOS/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/examples/CorePlotGallery/Plot Gallery-iOS/Images.xcassets/AppIcon.appiconset/Contents.json @@ -1,5 +1,15 @@ { "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, { "size" : "29x29", "idiom" : "iphone", @@ -54,6 +64,16 @@ "filename" : "Icon-60@3x.png", "scale" : "3x" }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "2x" + }, { "idiom" : "ipad", "size" : "29x29", @@ -116,6 +136,12 @@ "idiom" : "ipad", "filename" : "Icon-iPadPro@2x.png", "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "iTunesArtwork.png", + "scale" : "1x" } ], "info" : { diff --git a/examples/CorePlotGallery/Plot Gallery-iOS/Images.xcassets/AppIcon.appiconset/iTunesArtwork.png b/examples/CorePlotGallery/Plot Gallery-iOS/Images.xcassets/AppIcon.appiconset/iTunesArtwork.png new file mode 100644 index 0000000000000000000000000000000000000000..1bde034e43c9ed26136e6b737453d188b13f65ac GIT binary patch literal 191272 zcmcG#2T)U87d9F&NK-mQ5DXwyARtY8$AB~erANAy2vR~*YNVrpbVBba9VsD5Z_+y` ziZtm(iXfr>hxh%z|CagY&b@c$XC?#LXYalCIh?iEv!3{Tbk&#A4DH@-vbRAX&K)Tf-qH+Q&d3&MXbj^6vJx}8IO8F=T_u8rWM z5EE6NpCvq2IS_%pL1)dnf{oT8|AU_oe*3-joCDo-8xuVY1pm6(qnAtV@WNNg@hlt^ zolB}H%K7yBmNv(A#W(Kw*Q;M&Q3jbBbi6+Gs`e_wjMZU?gU=P_;h1mtDt|*<$&6_T z!)4}jczaMJb4y?Mw_+rI`9p5CzK(rW=@>YLBT@!ImkNj}<~?nC^>KyUE`z zxqdtTwXg?=V8|C}2BtgH<6oBCwVwGVPI$%}!jnpUUVX-FG0ATkCf{E{i^X)hSDx+(m?sV- z^S-6)T6%i0p%Lt1a{s|x){6jX*+tketai%1EF$WGL0Yoixue?Y&d1O3D^Kw{&kpy_ z>;^ln7kTeiIlVvOn6$9Kd_ELJ$eVgMJq);U zsGGnzF!m(kZ$SG!8_|pgikBxb-+Rs=zy3z9X7LaTzL@`#igVI;{Y{l)Tj1spBlp%sG-ue>;mF*~Xt#>`_;qSL)&MrF!4|wV9@Zl22Z?em+-i z^^S@F9DvkC&Db3TBB#Cj5P&f0w?H6Pkh+TE6K{eoKjJ{nr-_~(LzXyh?m|loHJT?z z3Xjp@7Amu17S|b!>1|v+RPlz>U1Gl@E!+5uTXSLTgk<6D>Ku}tq?$t_EOv$Co4Wz^ zLz^$P=RTVHnYT>K%4#MqEjOPhb%HCVCVaG?Q{X$b4tlsl*njDF`1+2Y6dmf+L-7p1^uwB# z8!vqWG|HZ;LR8@;mlMX!jMWly&_o{Y%}t|f+K8P;qHt@dUzW@v4%r;jJj6X{elHuD zySe`HQ-9_Z@b~72DjmPE6OF__;)TfKsuxXT8#ssPZin-{+DVUt4>9F-CIKG;%OlFU z9~O|KWBk$&v+i4m4zV&cwj--4;RoEbr@vM@QU}sK__KcaN|?9{SLry*rS}dP_w4r$ zhUJO_%Z?3MHy5r%K1XIOOGYq zHgxYVoVs+scP!N?ukt;XOaE%qZ8;#8L^&5G68*#);r4F1{csU zguJP#3CkQLdX~|}8-i%`WTScqdLGFd@P@!f(?pZ6(q8W@H(A)+(dYc zdk#)Zl(oD-;0$nFI0IO83}Vy1)Vcx1(eXQzesSDzOZ?38Y zF`VORNy0zR-2fd-23zk^Y-oU+DlAV6AM zJ?0w^X`QQotQpF+YgkAg)bcVX<%ZULg(ieBU{2{iBc|0n^}kK5VSJegp&%iQ+=FUT zjL@hh)1>Hs;qjCBMJaK~N@dOy#jp4zUKy+#-LC{8gou0_sv!;5F-8|tgpuSjCx^hm zu;VcRs;Ha=Ey`F_ytiF9TDjpIl zRLfX?6r0Qa_-)NJh2sRy@C}!6);?F`HKlnguJ5VhLA$&fRFex-iU~{ABO$F_nsp*h zgbVsftRFkr&^$f1Ipjf6sW0qi!0koA0>l1aEzqin8c~(aa%cvYGTIA%rwdvj37-+@ z`C5MTj;ZmLNRBjz z^l%ezmx%fKB7Do%+h?Y`_Iedh9krlyJkVt31z}G7{U8R!&(r*C1W0paI3kN#txnX> z*MkC6A%-wI#Yva|zJ>sPH_Tj3rv-tpe!$O^`ytZJwoS%EY73+C4kmn^rki2f<(_~6 zlku)mAIIi8z%aLA;}puWOr7FwC)i5#fowZnKh?d^N-H#Ju@wOucX3cfe?Gop#={`b~(u(DQ)IA1ZN9^gEK7mEoy@@IRPh;5!z+`Q6 zjNq}ug&vq!dN=CB#ne%2?WY)am*v_w7KV~SeOho(qb{{kcMdHdN#2lnQXcIsxY@S0 z3`NFQ!1;_B$SeCX$k-|KkN2s+Q*Ng3QeQdXiN-hD$e0m_^YN3$=2IVM`Lh%2+q5@g zo7Ug^fsFQ4h^ouD@5S*NM#fo)lLD8Ab*aZ5yF;Y13^UUl^wUzzya{XraS_&QM}@W5>u$nlNn~(Ta+0KB)RvP*>6F)HxgSy zc&SyyBvpjuv?uri$o1L79o@n$eA9~!FBl3{s3w0=wH-_7R-6fFMzDVDWkc_|=03xl zrqKMe|12%3H0{?5aiWX4!brM%B3>=Ow0s2C)uNz&8$)~8H`ks(l8gB-hWh8w*NDv? z0`H4K8ByL28AIN#C0iI$mDSgi^lCu(2|LxpJl9$bhlm`7GOdbxpz1@9$4vJ*^2SV# z0KdR&ide0a1P{Z4zIybtp^IMv05GEDqSQ|5X4`w+IHHjdR!5ypK{40Ktb)7YQ&bF$ ziEMQ!w(yg}!(>eU;p%e{u3f36TaBuEm^2oC{-(E&rmK~;%sOER9SR4K2{8gD1%-s! zfCiI;3liBZ9RcUYUu_TW9AwtLR5)04RK)?f$Ao&_aZohii84e#vTklFs~~(fc5E9S zQ1s_-xX1V5`mC>mp{g47&?G{Ok52Mxyq=7&BU}A=JNi1Em8$Z}aSlWf?y`Uv>K^N& z(VUHrNXbVZy3{giF8D)W$>cq8e-BR@4W?uQ8NY{#@k7L;TnC7S+z)72K2~X1sH(4x z5w+fvZ4xDZxK5MJ$KbF|PsFN55;Y7{oR|hSZv_CYKC-flFcO_1u&CMUb<~}!x#*== z_Gvh`emMgCOiqRn3w_!G_e#A=fYHH8v_MnLo}@yL(98B7iq;n>ZW7yp3#|!$bHn5u z-prM($0aov2Che4+i>|n#^0}&@4b~(b!qA*RShCz_$HTY&Q{{Mv?B}-1hdrBvGA(y zi3TwA5b{$;J*Vy-EuiZHwwJyyG*$Mn!j=p@y5y5hUUZ9za6H>B(bV4}k9Z@CzQ>d} z1Kn4wPQC-9Yc9$+s#N$fQR^>@=(-LnTEtWpglW2d{P_|c5E(}`&c187Yp1PJ8Zm+@ z8&&DVkO2QYL!#WHnu}2kmY-I)Bw|GK!0YMNs{<{I=ohB0#gJ%aw5;`?Sx@A}m$uGu z6O2bGeA%Mm2)76qB@AG}QE~K)Y@ak@S^NYsr~c&&Qh0o-nx+&cH5@2v@s z#yr%pWHh7IJPZalkz@owgnYR{p>$9S1%jl;O&CBD0cK^IUjMAYe%S_q6PH+%)E)4J z6pHQNWn8!-`cjxJ+IVJklljIReIC7dOGpBzK`^WK>=zV9QA$giz`xg4l%}Y- z?v*juM5&FkBg(At!VfautaNBc_m}%IGPQQqyN$ruRijX~(aZfmP!t$o7_9Ng)*b|z z>r-qDrxO^Plu8nGAD6V3+xmswnn}(fF!SXj-e%XUQ8U~$Y97#9&Bj;8FI6MWL$A94 zhDL5?rHei`G$eit=e8AQEc@WWZ@#j!sH1&B!_r`^fOEJQm1?Cq{kF~os-2J5Ck1 z1_2gSEn0p`svHYz>!ZW%0|7jEgvox>#Ncg@!xcn`HmC*g%68NDbmX4o-NGx__%+W7u zDgGLwCVHsNHY|?=6x*89eBI%KpQV5CV@^K>Jd(quxI)n+ASv3`b#lbEej^5!!T~>I z43BQliQ*!GhX#rfKdV7PAU(FpRJpOOqio@v2Y`QoTc0W?v%vIP!RBQZuK#oVH`}ng zsx%T4(+bn_j*#W8?P5R4k+JVJM?-a2{KQW0C~JX#Vt$wgP(%uny^<5@&~V zV|H@22RU-5Cr5(jjK+gsJ*MYApiW2WshCZr7`9bg&bKzdU;3xD{EX8Dd%_V>frEyS z@O+-i=Ia<%<;w5`@PQ!%uSOO|>apC{v1z@xi7Uf;RBKAhZ^lo!4TnDt+e~Fe6nvNO z*KS?>MOr#+SaRP0STb4xau1q5HCObim`1!^*Gn{;QpX{WhM!L{Ax|KmdTkVVq0u(Y z!#o8faZPG>)mAojaa3!gdzO!=IW}V-#tuvaPB)Ub)RDlhHpTXiHMIi1u9OY$3FB3b zEmdYx6gH0;3sH!PrqqvQH4YO6rn*x=9(0EVT1cl@P2m9U^_6`DA(WMp)8s|lu#Az! z;eqW8{0ilpq6chk`P3W-hdc<9KWoQAzydt}+X7;u`!p>k=-3|JO9(Nh;ox(xR-#%4 zto89Ggs_psC8mliCg|{@d5Ru0gtDp`Jf8vU$`z30rYjlWLbDpDI?$@%695EGW@|}; zwy`bL`rkBo*YJ)Ek`9&b!OPOj$)Fe z8{^*Ah(=O~31sjv`VOie=xkQh6Erz}Da@@GZNuDcUS3}IcGk1C^bo`V# zq_4gBHviZL8$ucJ-KhFj7m?BFBS=~88Wux&qp&84ypeOilJ1DeB0!P+2ol?BRiLd@ z4$^aZFAmk(-~dP?^@HS__CGw-Hna5Cv0ClOjTe`1-n>bnoe$yney5K_BJJ#okOhU$ zFUnu!0l?$~=_Y7?hQd!`l#JW7m=we3T#bIK$2~Y#WcI7lxpM8~@6l0QUceo1E$X#Y zT8n$&-kp4Ek}L$;CPV3+FtcK{umcc3dg(Rp*fNrK_Y_GhR%_=xWQ+!08BxLoAcmC2 z5A*m7Swsfn+a!Me`SOQ^OFp1!NArzB%tIi402}8$ys6Pcw2k=~$r#{){5}b`9BM0# zg(TKl_G(jFx4Lc+<&8PcySeTGyPI~-RztVP9^y!8d3~%`tUT&>b>kvKUnbHFGG{CJ zBomflwuCzdUJ>X2Umba$n7PB>3<#UOw}1=rJtJ(GR|ZmFDEhzUyZ<{9=>tovN35R+ zYgTyB!8(uW#O*;!4D&Ci7aLB1o6_o!E)U3T=*EO&^6_wa!4fV#&s*as8n%Btk&|Sz z_OfE;(~nPaTd+B^ZK+Y>4u0lLI|*3Mx}75@ST3-*{Dpp}xaE=`PS3}!6}zkf7bHk} zu4tvGVgL^V)mh!AoyH-hztCdjoc+mOIoHn|Lj@%*w@RGD_T2n$6K0|XBsW!v$ z?oLuEhYQk4jbc-@A&N&40G>5wH5?P~n0Z-E2x^eA*|eKPc~}JwL-S!QMx1L%EDQkW z4ob7#r43vhYx&<}U&(X353dPb;@{ ziJmL4U|mMdHK67$^P5%=w^>EXkLan@mA~haS&d39aykLf)M^yhhRz*@A*x1Td7}(q z|L9h;u@gA5K!AsC^SU%nII@Xg$9`>Nqn+g@khY6WN%70QBgyGy;JOJ?9y4J!oL<)8 zB}_(tt)&o3MxE|e+)gRJy~ztqx1)D0=sTNGGJqf>tANtcY%`Nizwj z-st@|S47Kbg(xpw8%VM6m3rMDwP=>Szf1y@3yhsj+1^V)K8EoTRBYFBz5hwJAtWQI+4zz2dA7X&8A-dY! zEXQ<6*S6`V`YQUi#YaMO2eDiA^BmHJcpbO4G8c#QGBn-iD08CY`+;z7MMeSK$sVu6 zIr+2Qbny7e>XUMG{NL3Rh_y)@Q6iD&WU?)LxUi%OD}d9vdJN%~_Jp#SbZ!L6|N62r zTusF>tzsAhL_pC1mOh%}%`48zP-I;@8-Aay6(5qBdFR$>pAMO2J3uyV^Q9<*dp*k( zfB=eVp|B-AJG^4MN>WkWBY9{^mDm^4WGJ>TbJOs-u#NLo-NE!TOl`0lX_;LQjg}(Y=B4r^V+v7iP9dTL&FbQq)t;bzI%k zKZjPiviSaPR|~%hPLTmrD+T&PX8se+Vs4EdNBl$>eAbP|S$ajgyvzn=d8yI%!?C z_Rs&$UG8>JE@=iOes}F*`TNnZ=_3~FZEsH!t&t2npZ)D`=W0f3>Y4F|Pv>gv8NxRi zprWG_9bZf@lQ*ihX&@aNkF*Yw9oI~{7=8$E{Krb+q2P=2vX}^jJN%k7*qfgJKFlia zi9JCpoJT;upQmT>4M>;)heUH1N-IuKE5GGr#oV4%k9MmOc0f(!U8L-Qb>A$qnHEX}mbRJ6u&Q;!TA$mLXnvNl=Mrt)Z`vfidW ztT$jAoV!PY!*PwhbMxi@@q#4xnUn$UT+I)qW$}K)xIhD!*OqI7c=D|}o9`h7wGjP+ z+JhkIQ|&tJqGN@xguZxynT`Lz{hm^zDyyDo7ShA?YWyZ8&tTRZq=etv)4G29LDRa{ zB|huYXU^|$o8Q68;M~bny`!U}=kK2aj*D)s1jIjFI&MN>#^;?r0i;lyb#aSE z<&7Ia@uu37E7NL*oax9OKG~Ynk>0LBRx};uLC@`#s8ht-o_vvKvqXkF(B|V!IjeCJ zUb{=s%j3NsDC9IJ>`tUH;VLo55)~m=av0SA*fNZzFortLBBVAiY&$srv(R|`3=XQ;M_@8dCrn^(@=;Uc64CfeS zFRg5p5YJR5xbmZmz6oSp^3iNIW?Z`_Zya*@q%AGk!WG{weUg3y|Az^6QOV! zbtO-c|K#DYf#tY{J;vl!P4!Mr7vycjv{Q8OOXY5 zSgD6-&;R|Nu>V;KGJ?K{q<7I}|&xkiSOAN}|U(6q5U7i^>?&2f^p0bFlhcdDrS=%QMKkL0#}SikeBONLKpMv?!#=7&}uV zfH?aNzkA5dlvioY*-khAr{(;>{ImDo;k0>7$-r)d?_QMo*|K23I;~-k+ZCFvs5@Pa z;c=Pp&B6kOF96E=)*@E(wwW6LAb`?A)xRyW;+H-LE9Y~U=X18nh|rGftUVh`JE2$i zU-5c&(`A%hLJm%Cmg=y9p-=9PbE9heQ zl7#YnS?F%S2eK0!kzK0B{u1O}7YX77E zXaVs0j{|F9TF6%PBI;m zSh^vpjdd93Vpg+vc784aGDEw3VG9eqZj4$s0W-S=3iG>(2RQ=OKrc}R_$q63QrAW# zy5<#+_PTbfxJ!= zAq?B(c__(yfqMUvZfG9kRgj4s9twE#c#+O!uZ}-@&Ntw=1L|@Ef4mf9XOFh0xT=fg z4iK)iR7?j%uC}-?b+2XxT;xW9e&7yWQ|9)Qm`TBR)`n?w*((ekW5~`~iHF=p#__Ni4SWCv5hm?T_-k}G$hJPw# ziV3|VpnosTKs>MN%LOF-N=nHvux|AbLCx2*D#o)dJNXVy{$srBUKb?lOPJiBoC?2f zWKov?$#B4hd-_zcYu^eKfvj5d&^d@Ph)BD6MVx%gBhfQ(*2J(W%?Oiz?UO5F-rp0L z__!SZW;u#f&hz}3KHNt(Q-rTUS^jZyb5#u&^M4OGIzG} zV2PdHtn3Ig{rP&Zj{klZlzz3PgiDgzGpZ;3Wv&`Zhdm?yd@1uXKfYZixcqN z(>(2VX(O;10)%2}37Ka;?)`j)Xv$*?`yp{pQATBUA zySA>5fpVrjs8=um-~Y90zMCOcG@H;HcRd>RC4~1>S#it*byYON-V<5gGOc@&>Lyu0 zS^y|JDu)d~#9Z>{>pDwSW%jQ8WYbkkN({!gncuhPE6zb%hRba+-p}Z7c{H#mc+;>8 zPEJVvs~d43Ds&`r`QHBh=aKlpHJ1jypKC!SPorh_)y%eoON=>f&CVl>takG!pCDpH zD@aQNHLpkdxPsfj-I@jCK*1{|j=q(%O5!6wrHW$IPJ*V0)<+?Fdnc!^L2|4(k=uBo zR!2i<3$V}jCkb?jhzLoxcD=<;CF&f)G`~Eto%;adA~q7@R4{#1^ZQqex!sJ%m!TPm zV?9_3J>(fi#YK?2wF=zYzg}IG`RbnR`F(0=q(6@R&cQGh=f04qCPiiI zJtv3t%>G-hUv!5QE!3iAMvMb*_X9}tE)la(XW8ztZg|lq$sk$2-yszc zcQEOJwarr#Fkrf!{Yg)jemMNpaSJGc1H_%5)0`=Oi89ozGy1%%IVGUnV|-JBenY+& zzw}bzQs@S8hvIwuTx%<(u4rh6tE1V+O1bcn|9mD_tHmNE)FY>ZwD_i zd#_9SS1jt@)REZ>ULDRfb067EDG@v%{_+&CnU17r=$<@zwHV?Q=wOo-1-hrj5Y93- zCM9s3%ST3-@3AM=6DeI7z4C^i&0?Y|za$kc20yhz4PY^XHn=qfQOD?L6{^ti#f)ZH&R3A9hFZGgGZZ`;sd4Ar(6hr)r%duXw9*{d&atzg% z>4tURVr5oMS2~u#X-T7W9>!=)o*zJlF&Q4%J~7FloCS0YKjN<{WD_a+J))E zZvsVpT>`vl0bOf3W`60XtCHO*k*VET)rabSW^o2{gpM;!(v^}AfX6C+u9o1P*3L7K z@>k>nhLrhFw=&bN_u~P|> z#gzOEtTCl~!^-TiPJ{V$noyiv$BICWS_LK7Byqj1V#dX?_5nNrHBo&{jhXwPm_&rF z>sQY36Gw7o5k?7Z+V$hjZO`yp88ISz`X;4>uaYswtreh@nhAdmp2`zF+{`WZbs+jgMPn}$N;VH z(Q(b|n*(pO`d(?IWo79~J(hB5wa`_6T-`Nr5E>a489GSJL0&F#dfX!)EuE|l>(+)}usmtBuukmtXU= ztkft`A7pc&yP<_I2P~+t4q1gZ7EiZa81SiY295ZP84TwO-h&cTE`aIQ@)G?6?;d&cidM3 z&y94k%&Xxqv)7J`=}#%5|KrJNR(x^h_+p3wfCNJovSw;Xo~?rL)Lzx3|7?ZVcs zNX!!4kqhu7UFXIU24DxKA$ zWiReW^0onQ2Y=`!Ju!7i5lSF>=LFC?n&>atm@_A~*M3V0+Tca!-+ccetEF_k`@sv! zUph~bLe{p|R={rgG>|(>WH#;uZd54f*T$1b`nDR2WlF;Vd_9r-4kqX}<8G(ukN!%l zE;8Raq0{cUhOfhX4WYOh-Sm>*D!cBJ6G+9mxVX50^XY&tellY5kicZlMJ~QngC+C^ z^kO%xGM-W)K! z+mCihS{Q2?nQf*aDQ*zQ{%ggzYNcg?KBL;vHjU{}3WzynzQ?*0nd`w1^p`Zke&6++ z$L`NBghAytit}LDd9;q-hCX(35y<-_hg2;5sSdR+c8q+_&?iL!C)~`>&Q}92?92ww zMi#y5{#^DgKxzBRq@xuirun*(evtDz9U|a6kf%xyeA1*h|FJEoF`uOqVE(fDJ zrR$yy>6vfaXr0n>3~jL#nbN!$4Ff2+^)*u!ZRfiW)qTCT3&pVolRlBpCn(^?iudeU zW3-i6EIOaRDW3|{#esm$_L|H}E|7-JP_zY~ zESEX3wka#mO6S?)Cj%NH1R)Spa$XZsDLP!);ziMd%h<|d*s{(9h}K_eQ5S2I@_Ec4 zKxB)AXzkg8JUnKpTA4xgq5NX_T^Cl!gMn7`c*!wmlT9y8DmNJ%ImSn@hK-Mv7m-|P zx1REUfjo^!Ta|fm(~eO>K#0#Y0kJ$I@Kj)$<@1REANpH&#p>}?+wb9ychSIOCEDHJ zFKS9`DW^9ivj7xvPjRc6uPa+xD|~yY0=V`b(A>Vkg*g`MkWa$@x@?>~kJd$LJtj6& zkCcA0m)7lDcsJ_eGpfwY^Vs1pb*k>17*hzp9*{5>6fP0I;Vm1|YD6}#V7GQ_*&{L0 z1y_`4V`X%S7y^J7k}&DTopC($^@4`fvwHV&K53-*)925`A2%1&*xL^m@zamjPKu3s zLZ&=u#T=|X%3Cf@Or0BuPMyqDI77O;c7a?HbKm-Uxo)d^kkMTFMvQeZ_NCI%JBeA4 zA3wH_z}%O)J~r(BS`YDZg1p<5Z&Ng^vGjS(tLnnB4c)R2+py9lK*E?&RYX!g7A562 zW{J8dg%}+5gf_3(vp7v-=FjlM0W0{B%j1|!?BAcStKI-b(ajIMFcYxR<{DdaApihx zZlD>Fx9!T)t`n{hyZN(etUwcTvP(-)dpeW|pP?BG#o@MT0bWL)_nkuU>q5NPV=*sNn;NZ}v&*}1>jzY%j zc?3%m1zCD2uha}@e6PiCF5TE`VXd8c7UfMxCN~@^>@$Tos`aT9+-nfl#iWB>)4f=U zN+e5Jh5HC|GC)ReGeI8dZ`%7AX8ywgiA}j4j7~_I%oPAtu=Fu1P=9AX7V!E=tMqFt{Q{z@fNU}X@SPc6&RO+znw=TZfowdgURR9o zFdLzxi2}|93NsVd82A?QUY|@fhOpbq9?PNc`=tVMIBgr5rg8Etl{cWWrg+ZRvD)5G zCB5cMcBy;HhQsT?T!&?QaSZisz0vQ~^Q^GP^tXlNLNIN4^T~$v4))q zohPNtt^)J-nw5%nSBLHy4?iqBXl5r~-j7k0KT`@toQ(#RXaGg8W`Dy*Hyu_QA))wFT+^(FktoS8w zBy(IJVC=pXaEB*Ez~bC>0914tEqi37NwN!j;k&o|iWM9uC>Pze7!^~#y2``I^(!KW zaOI`CZo21+Nc7oynk=@@pI<>O;+_*f_ct{!G>^HsO3gnqW@AFj+^866qecJD7;wl$ zo5~g_qFoUt`~)e=waTdtZ&uFQsh<6m<8S>jA#^ggYatQrDa7-eN7*aeq4M{i0hf;5 z9o5;}KR?s!0m9|y?KPxVO6Y2EyG?RyLF@~lmYy&Sw58jScdBMR2%KkguAG1Muu3D1 zpGMkIvN{SuQ?5n@0i+mw^hldmU?uBh)+s;DyFiiw0~Du#2%1NORnwEyjI7raKzI17 zwjd(n)MxlU!`#U{tjAi-xORtFQIcFEc%~mZp251&|IZRQMXX!5Y+SYn=Urx39Jka5 z#%M}??2aA>D48V}){SQ<#E=0cL93UtId_jwhY$ka?3CavmO1=EBVReG8vP+hPW7{) zUY1KgL_?>_Ou51M#ezM~}z|C{;^l$j*^O1rWroQ;uXAw?uynP4WTZ=rm8 z=h;Pu?f1*MLT;GpW<2RQ*X|xhiWwN*{KJKwa42*!&L7)yR9kUAo^_G1x&1WL)%CDr zy(sIVNB%hYH4~X0Zo~B2q3@GMLn~tW83y~qXU+$pv)6mJq-6)ZbfgEkP~4RcGms1Criz1i>d4_smi}R-=CVePiyXNfA%*0y(Rnd&mJ}N zgD?l$@QKj+7sN)c7lp2TaF)FR;~ztTkXg&{zgoZWU4Zs{6nmPaD*jtflP}Q5Er_0V z*POA8Rgb-l-dAE#)tnH@0tKpHRWTKmMS=K=25&zX-@-hv%|GTtNRww-855iNLAHf4 zF)vupz{Kr&!EQILy+bW0c})E3{;FOLI@ zySQF3rl#3WBL-d9HB`DecSrX|fg>BI$0shn`#q=c1zXPC&N{)2EpjoEE4O40DTzz= zrbN#s8}_u;(rU^0ewOYdd>geQBkr_Z z^&K6eI70nL`*+2U>ea56QThnSM_icoj)=jQiUvV%+xquXNW-~+!^Gb_#5Wyv% zei@W7)lPt{$wd4Nd3Va?LeEjI)eX7CZI*ZFDsM*p&V#14P>^i_?ke#2YdP>h;Zd6( zlQxu)H1{VWtb+_jJ{bKnVj289sy_eN9MovQH0q2lv9=Cj+vX6eo z#U5ZxT|TrHc)uwaWA9mNk+XjZV9$P|k+ZW^`Ir*O-T~qC>+Wt&##Z@&2==Ur6ZiV0 zA4YB~sdkZ#McPXIE4+b-3`hPt(YBzM6S9ufD^L2f@J4)T0T;*pd#%?f=h^9l10^ns z=Lu+{AcEbr{v)zG*ri>j1RdW+TAByq>4|ZuvJ)M%3lhjX`p+Lb@^zsJUP*n;s-9f# zFJ&#pN4GWnMe8>{Jo>4|Nowl!M8tCz@v!`5=}`A4Pn)cDlsWw>u?0IZ$(SK7E(IKU zvq+@p2}mC-!*8wZE$Qw-q{kjd>+pX zan4pr3OS+A4yHHx6h~<+CQPWP86x-;NKkB4jVsn9h#GKi2MqK%zrfqA^x~nrJAuF5 z7g^m!=XEu%u?^o_N}uy87;F7S93^^C7*Q3IDCcBv#Rw>ZtJG4xT_4aQG~Jzb!=20mx5$fnzHTRsCQpa(zt}0lqJf( zjgNPDU9`a(NT~z|dx~u|0?Uo^0g|HFT0MDj)Ck2L%Zy4ZDO^!zKy*)54>)cisZ~O7 zx$SRB`8`nU?CNVzI{OzZH9!#lEkYq?g11I$*IHw1zH7hqTl~0uE+VpK#db4r2mH|X zj}iprXyQ8umEt7+KaJ{fOl(vW^vR?~c%y$p-7PDAf~yjX0BDv}1zwLL7{Q>3 zNB$9h6TUUN6|Jz9PatzT`mS*`m64tSRluouEELHENb@xyk%9bYnM6$zk>5R3jt+mY zS_DYtbsJycu30=W0e0jq#=XZ(TcXq~0yvl!700_^nOZ>yRC@Rso3nrv zagvhoFn55=ja$ig=QqU7JOe)sr5IW!?GAZ0)5Z*S9tglb?<%EdDcKvtfpxOVIuN8> z4@#8j&Dks-PS{}xLlExSLIM}SH5nsBdB#ak>8)32ztvkj7z^lZO_9pwdi289_Mo?g zI9c(_CtEL~!)-B%bc^L-Y`Ib8o4b;%_j3ras1%vrMLu@>s*zdXUjc}-X`;H(MAYXV zRG26YTCg!WXfP*_Xh16_E?BI!yttAta14iZMLjTVKAQXrhfB=5zY_Oz_IrF==JlCK zm>D+zRjtnpW(brej=*ghY5uNfg7>AM{MNfL*}uK-6bCJAkv{uua%GyOh!xo}I+?L2 zczYl9G#|o7mFd7|nHB?QyqU}ZGhCFwXMXA^Q>gv-bLPBOhIG&Rb z8vNMiuI<2Xug!{F+WX(e3nmR=-48}bjhFj?s_N+)U1U5GD7{$@+>kr{HoPeQD!rb8 z;+g4N4O*c*CCG2>jwL^r6sA>H8vzTB5schs3MF9dMOWD~!_kwTjrqSv@-fx1&0eeRmeTtv0?umG1zi7h0 z>2d)#boYs6nc=0N@BC0?U4Q^_1u3)9Kq727Pp5pa-)ZEetzxF@E0O7NBauSjbnzes zn!-s-H<|LmTrLVYzzZDyisXAl(LDRPQF1s0e`AsYQm^fJelQ@jG33!U66`GBFJD6~ zZ!n|%()756=$Hh{ZgAmLRBLHJZ)*?1Ni4RHHj$T}S-T%BY?amS0;etx%r6hkugHzP z>q_M$FqaOeNh~o9yy$Z0_XS1$u%&Zj?W4K!Af#M$wszB9-1Nx*J+s^A0&meN87q+QEGeKjB zJgyPlX7BZXZD+?fUHqxEsB|mF62Dn_Ga=CUBphva(3@Cs7f2~7w#IDR+ieV^jIPpD zAkl5uuYIYwZ(eCZ@N6jJJ45kVm!SV%VVd(vJES=<>Fra(;(V>bGkWVBxnuH?(hHewR7q8$CA=+VAOi zes%pnS^(Qy5a|5HLo-hcxi2Gkv>~mcqSik@-I$u!>z0L63sGt5y?w>9KKvt>c>^mk zLve%1f%nejuh^rE^s|yWgX=m(ZMp=W;bnrqQ+!^28p;X86DKaP@D;QTDSL{Y37lRy zBU#)(z8M12^ViyVeU;B&6H7;IUx69I0M%DlPIOe>c3eaa9dV_oWWJvO#Zuf>-Y5U_ zS3j0{s%Q2dwBTmZ5LbsSP15(4p@^QG#hjoM#ZR|Kr6~@) zEQc?O++O>*==ixLH8?KBeG-&h{o!shU1w#x=VJBaLAVINHxoG1Q}EkH=l(EsIQn+! z9pO_PE6`R4EddiL!)XQ+S#-z+a&pWET_*s5GyS!@%|}; zHeuL~QW#5Q>t3|?^;M%N?arTSPxf}i&#-?y{S?d5ITr`HmX zaiQbaI)qu%C(|glzN)ond?HxjXG2oLM^oO}=ijva9{^QBs=hE#InchOJ9Btj<&Lts zx0>mZD>n?q)>h~5;)pC-0z?6}e8X|ONyx{hhW!M7p81#bl+^rn#_prcqgpnf+Bxfw z(E@b0+{avU&CSXob{!G4Ao*LdV%KFN z^2gyrx%H7NGQRpxa{hx2<`;T)ZxilVq+-_or{(uERv(8aCj_rAddriqU3%~}^A{~z zgjL2;p$TpCopW0c zHg|hv&TGqDKfAmudmw?b8u-_L%j;T$GrBk9-_qdd_a0r4{6!=-2d<;$AafxT#QMq# zTCLWx>S-~h>(3XpQHN4v6}d`!G$9Q60<5kUNx<6I6-#qQNtFgYhxXx7#EVCs5jOjg z##Ok#7FUMN3f8@S>!R!CxHO?-C2Vy^1qy;wPB{e+R>O$~+(3_4hjCQrreonyBp$RP zkKY0rkN3h?>s#OY)Ky7D(cN2ZLL;}lZ$)Er$CtqG3E5?Ea=l7Mw? zu2`BQQaIAsu(4`4I(=ce!yOhA(BWK~;E-?W(+d&hqgTU+eeSP<*@Hx_dUM)2*tsH1hjJaMAuo@P}?b+ z0G7XHTk!t&*36d5o15q3cE@nHHf?!r>#88YFRZFy^VzKnZ#2)q9`j?3CGayHs2SLH znR%>*SzegdH?x1RaM@1L8g-dfpo^_=OC)>kbZI1jo#OsB9=WH@xJt zENIviKCQvTFq%zw%x-(*mYLVioBi9|ZUwRuVh&HAztQ}3#DZT1XSF|%xQ~_|eSvvj zgKMF$5MtMT%=){;VaGdWaY?Lo!N=!5_c`2ci${6l#l?6$7p{8)lc5O`WI5!MzmR1u z%mbLm9ZZCvAX@0UN~7)KmE7i<75E)5>st4=?T1`Df3SJTJOE_$f}MWX8QX#bg5Vxp z-yd#nBZP71UteEeUS9sgAN~-J@yFv+a2*pS*K)Ps6x~-`T0vky`RamCRi!a z)F8U1V#zaBY@PGe)M;}?n1Aaj;X@UJpyru+?r`KN0y!2~GO+mM(@*}zj$dqe0cTS; zyzz~1Jo3mRF-4F(8BTX&*UOTPc6YqOTt;S=EkW%IRXVH2r)wLZUR=^$g5#;$aeTEh z%G2%*p8Ba6HgH{Ga3Rn&FJKNWrBAm%!!6{P9qY3of|e^{;_;Vuf&!jfsqto!ns;GEsdf3U23W-oU1@({ktgGf9{+$EL+xA?O0$-gcy95};fG*W%P5`g=V>>r}bNy4ldTPsY?NUbUA@EQ+ zA3<=KHi0;@E165%_KvOn7q)Hx#HNy7JYi?lH8DQnm^MK)7E|&OBpHW`ckI}~M?qvL~!QGuE@m9=ZD`sVfzg+~!&E#M7tU0gZ8;GzS9r9tH#%|(OeRgJO#WKNKs3aGEH`TivS ztN&YlaChyjE9Nyl)_{n}OtG9JBfh(N|AVYCFJ{Y;N81j1pLAZo`D7fJyz8~_N? z0%(q?Ny{Muv1=Vzq`U4CbA>4mwCq~Y!^#iTn}^E5EG+@LVv*LehlAOMLjV$}cV1s` z5PCt-6V$D!8Y~|iHb?PH6l)Qq2w{kv*!(?xU7D6%)M%8hj*B65(PGiL=`=V*5Y>T2 zWVItOT?mB0Ey}D(H33DgQ&h zuqe2GTCgKn@Nk29t~?fLvEku=VcS2~{QA#-`{|#TsasWj(9N^WE_8MF$~?UK5>dvT zKOIfxZk^ctah(DFh~Ri0ULk>N)XZgS0|Ol$9eBbwUK@tP)o*?4TYvh~pE3l2#L_K? z7zpLU0*;3@6IjVWu7D`i>;664U`sT=48q@lu0;E1J*fE-?EE~ zw0P9oH^2GKcf8{rnBsl!d*8z&Y?-rop^fTbGJ*V8u3X6+s@kd!yn3-#795j*__1N4 zV0=d&h-QwHgo^-axh^vvYrwy%=POEf?x{??ez^5uNUudSe;L(wQInQ&(bXK6U1`X#U$zZ3|u& zZZ<_h-Lo}P0jZ2n4mvk@(cQ;4|N1vPQNQSY2d;T*Yeh%to_$F8$4rYeF-Z@({owW= z-gy5_trzXybim4BX3%oTL3PW_iAxapatc{BG0N%y>-9pHizriHe5?Vj8s)$p1ZgE!l%wrh7G5}PpfC8q?@#GS@O}bBr9p7cJVUvrl@C>4U3jb2q{CNz}PNd*vWTsa7iGJy zrN1$gnKw|qsuK5Gdg_}5!@ap)M^_z4CW!iCD7xrmFsi#gaWzMa=c>cd1j+ehR6MRztA-!`M> z*{Y)5*&D}VeRXX?7)Sj@HdY5WGT^d<|NYm@5FxglYI|Y8O{l zN{W?|QV@(;>R1A038MN^d1T?nGS7=j~OEEts*fN2wGWq(Xr0`a9RfL<6HfGz}4 zUkt$=Ef%^^M3mVTceFk8d(G1Zv9tyFyE0rkoT&?+g%#R#Ls6=`1);nEufFCL}5wLLl}r^9N0H*cJEW7S{veOge6c2Mrf|ELpMyGlT8hw;z4< z(RddtGQqV7xPpy8N2QExbu6Y$Afa_`7(y2<7FS{=$Rj$2>ndr)B@)DY5#TTJBab|? zV#NwP5gjjG-SaT;qM-Mn-r~XHY0uVX4@Sub6K+ZJ2hwWSpV1ziVP3nk^RTX&znH0K z!IQIsIGH3Dq^$YC=CY1r^8gbp+|I|!Kg-O8k7EhAGPP{Sl=vtor^udBO8Sax*Hzcu zSC4ZFS(o9Uq`##7@HTUGOL0*4x60}@NjE@x1_BK?- z!Z`(II2zP$tn9#5-nbvAHW*%CEay8s(|GpEwZUPTV9~(N1)bCGZ_2Lth<&0;i!efs;_C)aHp^b;)`~og=$1`~Fq7XTzo_{#4fY9vn z$vv=)>=rpV^#G5(m|Jbs%{G!LE&z{eYcCFatBO{a8B|5MB~dK~o{E)522@IYDf zN#UbuTv6Q->;&$9*{(c|2G}q`ZaHFH#^aq053u`4+);~3tm1_ zk|`O)vj=k7XIiV(^84o12k)A3=gc|3l&i$8@$qzVBxdC=SC~7r|J=Cf_NL;Zm}_)o zhlUo(SKQjv_d#=^==OJSo)bPd)+cJmv0cI0=8Q1*m$QC04?5QVGdzkAo^bS$n*a_D zmgAKlc<2uP*opk|_iec9U$4R)^0=XIA|?mPD>3#qJy<>JsD85CM2zAv3y!_ud0kqQI(u!Z2nA`v78j*2 z{p6ab{`%C?JC-iJVvQET)B5oAE^X0x?FE}n7xRkUrA*H!e`|eZ?WE-@1K>29v;cig znc(j`gEM<}o}9fOT4%D~V(iujaKtrk`K2-YdyhFk7^)ZwUcI|#PERJ2nf&#4P=xT61f|&avm~`DKyhjb|lUk4}=yYm$8Szp;TT z`~)xU$Hha~VC2iSt}-~lOb+mp;@TDQ55k%{b?Q7~r#U#kI0(vj7R$a!)*`a~C+|PG z|LL3FZ=M$4!#&RU*R}2M%?0ULYX30ZOa;u9DJn#u9WB9j#8NXPA4WSWkJ{B-Bp{b zCOhz83QXvs4BpyGrDfmcRX> zbx$Kk4#{?pVO*y<_dgflwMo_ZhL0?G!T}zB$(h>47hh~$7db-Q^WUz+b_d6)d30a# zE}US-ZXcJp^%r#>X|8xMPgXt@|9aXwOE5*2W%WOdJRamvRpqVbxE7Nfp_u==@;6ff znN=9l$jo3gUshIHb0a9efS8|D20in7nVQKc>9}&!{#Vb$EP7+IZ(EQhIZh8;KT{nT~qnnvAP_n+H zrKJUL(Zf^l<%xDOiWU!{!2@;h>T21UH$G8U_Af0x3;N9Cb7W$p_Mf%uDzZlpj@+9^ z5tuwc>v85>sRucrqm3S%Y!X?*$sqjrwg1|jixEa{#K=dN)Lr(DLl<#juP zH-#sYf}ru+Gt0J@Vk?QA+*tLK6_$0xQ2AE#hqb%lPV7zskoSS?;l2 z+%&)Oy2jw$9c4dmn(xVDYX)yYY5*OnVn!KWp>m zvfXcQo&B3;bLdQ6H!#As|7+!M4~P9xI%?B5>$kEjm}O=&c*f#>K1JA!O-LqdEdwPx z!$X&j`s0TTZk{gLZ9h*Uw)hFgo>#Y-ht(Vx4E;Vl2aJycpAPn4Jta8Bknp1V1kH44 zGAn@diJLyL9&bC``LP{4ug|pnHv1OP`S;Wh-&a5F@p|j-{K?GCKUO~;=MXN4xCc-r1MTpZTZk30#MU(`-)J++7u%+7sMYUEF7G0Cwdj z`)UZ0(_fRh;QaG1{m`X%+;PXh{L8;!Ht_9lf18o;Ac2p4>|=Oaw@eZGX7%I8TlEW- z)>K3Im76O9>?84)p~c+VP|}<47oTa28+4x#9{+tQP7p5~w@9vzs4ZONBN+AQBo$KJJlZ{hOor2%d)#|31!R!_rq;Msd@!edgh-*sdbZd>MTk06)e1K8V)R(yYKKU*DmwH z4U`R*kAB5`NS#{EATI01VNImn7t}2ew?k~xW>>JK$$NT_b%jY&U zyt%fbW7OmA>7EQ~R#hMNxkWo~>c*Q<0$fC8*!+&D+|<5K>W>zOgfF__qQCpfiLEQ! z7JsAVH^2D}ZUn%iiy?tq1o4;whVGx1!K>`TTiC)6PySvg&7f~MSQnT_pcdiGQFs0G zd-DuC(#9KrgJZ(VwBc6+Z|O14{nPq~iiUQa)^Xs02VQc?C72~()`_<< z;e}fI-VX_ahvsfMd&j(A&%*V$y|co{vkwlE~0g$CDUSs-hJ3c${tbV8&vEXagd?YB`ML}9md+3yH=psN50ZXc5pJ)J;{sdZ! zB@iP^;IcymLn0+Wm@d1H)mI-r1tI)08U=HRJ?sbwXY__Y@@+LAKZekTOZdlJ#*HQ0 z#Y@A&L+`&k_n`xCY(_G;y#!CN!rc?#NNxZ-58J)wTdRWb4!FJ#we>t*S+%i36tX&2 z4knISTzR_ep-<=uU!VMSTv^eP)n^^3IaGnkLiR(4G1vNM(+dA1m5~^`yJ%k_e0*{-rB|1-Da z;aa@69k)T5k54vc`Rd_-aQR^G++LjIuGmqbeRZs?i*X&bxbk$_wWceUw(DR6mF9Kl z(frL$GTfbJ$s;=u&;3u$^Of6gsS8fsIp^QzH{k8k;gVDSnL2Yn@TeR{@)o0Mv8X(0 zFWFTb{H88=`_9vXxBvZ?(|`Qw??3wJqj+vHcH{Tndv9^w$j{)~pbvK)k9_YS7PH@$ z6~}z3d`RweleI9BM~=NCu9R1d(lu%hJBDHxT_2Zk|4G?vN3bJ;2xw6$t%FhK>9V_G z#VUiGJ&6E>B{m83!Ihb!=mlhSLnp6BE5lLNL=>o_Ilx?)7{HL(#LZ_LZco|PByMK( z*^}quUaNThHV9igm z^8=j8tNwa()rJa_gVHfM#Kj%O8F49K{yMHCfY$oQR0k`DP;gviafVp54ILdL^=?I`>NyKPeQBH0p0a4bP@IqI7HAk4zn$hB6 z9HXvWTT$~umHCQ=AEH^UaO2tb%C6NnuUc{EiskPbxlL)rU&oTnrPXmIdUC6C)0$dG zb4KEu|AHeez+m-2G=DRm$Np3HKMQ}}JpYn~m8&s_8u|IJR*7i@9)6@1{}rPd|2DD z3vUgdr8u$^MmUMcxa?8WjF#vbr{zgH9sgh#=x`yJoUS$f@i8;a@k^Sl>Ee3d%5i3z+GCGjJYpa{?ud9FBOsP!bxM)by$IKYO1R1r!K(hd$n>IU{4qqO9Q+@FMuJeP7 zzjo1A`(M$AE$mBQ`V#i4vO3^a>?p7JK~vv{+wfHO>Hjgic4d{!#P_ICFw6m~Yr=)t z0OToo3BWg@aQSCfWF!{XOXnb!*}0^r_02nig9b`(nReK>%{Be{^O6Lmjn+T^&syv2 zxIVFD%aPWl13R9~ea}7jTyVh!(3cP};#KQBC5dikS_Yd97SHV`_)C3oXcr2&^WdK5 z2O5p%=(>%WKmNer5*G6jgrAYw6p%o;L7=H#SHH@Wc@Syhjel6@)1OM;%Z-Sa9J2 z769?3f{@Wlk%dg7@L7M&fx?(}S1hexC{6qrIOLE+mMvSxTb)rWR7Uc|y5m(kh}GNJ zix1IMB<}lL(NWTki;=J#Z0;1D%=~p7!VI!aw9aiObmB(Mk~Z@if}FO0tTi`V08<2M zNA{l>h7osZ6=zEDxXHfezN*&jA$oq+&YF}2xT_1-2DP8n6MTAR!&5c?pS>>ukfW&j zubrJ^XZAj_yU8B8$;FMJ+{Xt3B7A@dsQg7h0TC1hQBfn8pokzhd|cvz3332((Y$XS23 zZ)^X_saHMo=D(Ks7w`ASy{6tW^=I$>4D%0w6XkBvbBj{-sgYu2*}WqwqsFX1N<}7q zj#v4o(9|)_n|Nha&Mt1%mB0SMiBR@@vHPpIkY9UUvPW-ouy>D8aBQgk(5{*{E3i-> za`boyBvT=0LYHHCq;BcFdgg;y_5k&G5>}5?0^rNEov{0>;LNOI)TQB(ep!TU*)xbC zVKFV#vDRDmv0O(;wgb>+AU0&&v8TM{c7x0vVpF_24}6=Rtz3V6_e(Fman^ljHkCKw zER9$!Mw0j?k136%@%n$2t*weTyjVde9YBzL%@{;lF2#aN&9;>{#x2nrHVVtP^gz;z z;761rz#bS>h- zn~y({83YeWwuD=78?KK~2ZGAGJoI1xW=Z!}&!|@`{TuvFc54A_xy6ze%0v|xw+~DV zZmg(WBPUV2MeiQLvW3PZYKsudEz-h1${+8uo}L~YM}E#Z=b)pNXLK{*5hF%$Yk+UT zhTvEO#$nMc(5G(T5%zh-1!C2zRoq0#Q~wB}E(OejvtNHD0Yskh_A4{195kmeCiU{m zFJlK36#2_8y9{!sPoIvXWx4pznLFp^1-DduScYYFRK##`CNgc7Uvwy9i4|Q_smY~Z zS>px6Ky{L*96f4_PFgNsC#KT(Xzf)avE+|9P5eeEP84pmG!CNvi5Djdd*hyn8-p5d zbJ3s^{*D7X)!gAyeE69d22_7WLXo?lyl2t3<}X~m(Em&Sop;`eLq<4JSSU30jH%)+ zAwDRsdQV#wprz5O2ig!X(X~%7R++5+ptSrGDvwV1E%|6@QvO)?OWBH>znXufdP|81_utVbstTF4dz2Y?g$6Q*WOC4T% z81h{L8nhgITcf(ikmS1WZGogkfB)2fe^uQpSleOdT7UX4YW3j{jbsX8HW?{+9#^P2 zy!FtolEp=y4q7^twi6X86YrFY^%0yX<3mJ)y|9o07j}=qIpY{dcO zmTAr!?;x}>L^-I+sC|GdC49!xD$^QOa&%bAlL>X39}kubu0OX;)W-Jw_GDBtW5$eu z`C+qKeN&^!lP9C)de3Py4UsRDq59RuTMLWAU?Jq~!%sf^_zRDhmzB3{YAM-JELUrg zFz7ArijV#BxaI`;zrf}j~>gOgx>t4Ow zL>Q0|Fb@80zw(Ha~PiUsH!LdB(`Rs^0Z z26$Ti^T5Lr3^{r5+wtoX3^}HX6doE`-zw8rDk3ATUp&MnjY$!#ihNuZL=pLf%AZGx zRfIjP!UiBeMpx1F-wF z9=EOQXKgKiTEFHSZ5*SDlq8!N#>}W0^Sj28PgP?)%kVc#wOyvg2W^4{3l`w54}XM3 z0~eoAc+Klz9lxC|2hX+xja3HXBjJjgW9I|0e-f_o>t%%eWtGK+2pbQqzjLiP zDI^X|Y&d%hrU^gs#1q)x@Q;7|Bidw;gV)WkfBkFp)*OE1;mePj^9^w>0*;zZgF76B zB3Pgv7ake8U@|igTx<#2vatn3tTaXvu3xul( z_SaqYND=ze+_Va!2XV}Ery5+6 z2ne-uaKeTzUejWTlP}51{Dw5ilXNFzfmqw|omc~j&8fStY7P6fCWp+{zq3riUAp2In3Sjd1{ z@{BXiz)(8Ah7k%qD0tb=nKNhp{P}1)Ty)VzSmlAISlTdS#tbF4uC5NBbeO}a#^dp5 z)TmMTp2n9Sk4h-!97Iz@LAdOTe&E~ZZ3&L3^LFnJ*s8^g5FXE1BlENp6o9lp_F zbIK{FU`%k*6O-0`*Mk#}E>NeP_;r8q7i}n-bjalP zgF0hq62iXaE0B81sn(?%;y0TDpxFm5RL`Qw2h21gOi!5^E@=Hi#j$Pw?v86W8=kGA zXe+itltN7T>J~f}oM~H>_LkKIw>N$qqRPvHnSg8Hl=y4^G@{^71yyq@+l6NL*;({phSB+TUFrTTgk2{dQ=auVH$R>t0A9V~G^5DZ{kdw;`i~aJVpHRR6@F}} zmk<8fh?vp!6%l3FRIxw%!P0PEj|$9sy7V;b@xq^#hMhcaz4g{J&pZ=#E=E;;@{^yS z4**ZG7XnT`!{`I-0qui_AAT4o&|{VcrZ+zR_~RUfWjr1S&LSXo2ibSueX+{|)>2}G z9@~iN7<5|4sbkaqb$*=({)`_)KKwe5E{BD%>%^mD&}lRXuDk9!w4b0oXbF3&o_+S& zXe~u6qvfa8y)9lv6QTUR5jfb8>kU*GS?vdHZq!8Bflcn*mySWl>4YsS{`&fQZnx>% zyrMBTcI;TJ$L5(O7QH#e1-6D+RV^4PJG!^}!$4O2gw3>1&@35lhRpoxPgFQf&y=q} zviqRGp&v1>?lUNAbZ{;n@-DC@Lr#^9(kb$$Xa&w*Ewa^Xi|k6Nge? zPD{{LI**#>tl>QCf8ckw72?ZKU^KE)L~Ej0$O>s$FQ+`!{q=ylKH<;6K-l@$d}XWn z8ueim{jRcpc7>RSW%u5S_bRZB3RWTNa##qvx*VNH$Dq?XzwWQo1rsJrU|H~0LODL> zi;j(9hN>r;F|jd2g#H>f(d*JcJ3&z~T6paKSW6Qe71FbrUch+8voU1=lAiqbci^$h z2SUieE@|ukuuhDV;^vD{H#B;CX$GlNyt*76g3eE6PnND6a`do9q6URu51S+2z}7%v z%otgC;p7IXg4~)=AE{>JTVL+Y`iS7^x_sVzGw7xV^}RD#KAUn9V(u+ zr*(*LcH_8>>Yvq*e9oMbBB40xr1j*jTW@S7mbcxbuW!s6uO1ffp^`1d&=NxE{<_|r z{88=VyB`6uasjn4MVjrx7UP(ght3A|@X05iL^}Yj0d%}$JRVcMFdYHyi4#sZ0TUk4 z4}mUX>`$j-P+>th;Tej*E?=jI3xkr0g-h38fBlU&-iX|v3LtTIEDVH{IQk7RX37zSeh#IIdW@v5>Dt&g?dw^0N|!_S+V7BpZBBMjd_ z)lWbDv=W1PvN!zx*PpIi_`3&hQJzc;rT$#|qmANtvj{xrAAMIHr8M*E7ynw!r4R)p z=9SjGUEvN5+q=&xUfrLOe)9Y$qKU{6m(=t0QnWrxHyit==&8}e>Se^q-zltWcY=Yf zh&kzd2o$?20=_k5;pOa3rsUjI71AmCf%>yRCDuadw|$r^$^Bz`hO4~iwgSIaG3*2a zE??PrxGBv7!KEU?9;ITXSB#5^S^nnxYtvs3RG^d~S-PZf4yb|~G4dmmp98AkiXbi} za+vTN0;Sj-@ghUHiD1F665`~qCs3z#ekU8CA$F_FcLs$(SA%9nh18B9HZ`!v%izq^=&(0 zi~r418f8dlb~@h`&O~{#{h;2+=(gew-m#C2RQ?pDrZ>K|yHLfNHEY;k#{fBe%a1HP z*l`l$@fb}24_-n%9*^+_ynfI=Kv)c6;BBOYfDLlgEz`=i6X1lW?$5V&mpR$ZfnN!9 z;u(-Xw&BBC2CR5gc<|wlcQbkvP+gue?(~=5e!1b+QcJayH6QuaNcCjY<%B`kgA)(? zW7r7uC{?=+4Fz=6qh)}jXrTejrabSw^SFti>rIz$^%rv4t*jDr;HOmJ8bbZ4>L1@m zZ{_sbz)D}~`r=?D_|u>M6sfr8nrpCu2fDbB%#%(!2|Iz_`}Dnk`p2JDw#w)YN8x0` za;umOLaRUPX4Y)};zmwO%?oAe7lFp(RR1gdqaPW8{%L+CBWkDovg$e0;8nU5p(jwM zbvcMDf>T{&`#|&vKc?q%eeOynT*<=ZaDLk9@#=V(##4YvPrijO?v<+ofG_D*?_0y$ zBARbi5If<-@1%OWgg)wqHAV{15VkNN%Sn`ML(oIEa%w7QU+^5<%*Aw#jSOJxks7Ff zq^9H3@W|)Ob<@=4WJJvY8IC4L=OGI-TkcMBh7mt$iK}wwc#)yhHzL!U=9d9Er*!-} z%}*7NBDMz)Wa1r$DjP3045H%}Edz|WqYoD6X#DPXze685wgUnNBfSpz(E}VSHX0Ly z)_>)^z$Q99Oo+q7G-*Jd*`t!L2x2fV?^bW^KPyY$#7uX(*bJCXyQcj_>SK`~ll&ld zYIYQJbv!nxd$J7Fuq(_U~6kDMvn2d$I}>9bc)Eo z{IbCOv8gB&G0-&T=0{5iqvL=7``;BCzHw*HoQYTO-~RSDD8yUhJ%9QI?r!4*FRl%8 z*bj~e>>U$I*7Q}(EpvxxSXNK6ibeO#%445LiFu~z_`&ubn3{?)5$qd?2`DTlPyJ)B zFgjqAMrhOZp$=(#)IX&k`I|;H9r6DTpY`A@Y%hW9)KgCdcr+2deaW{coH+4+e}3xb z^_!_49@hHPx85UO^N3^O;stNSO=9V;Egy`)QV7v z+Q9?^U>8RdVap>-GRG7rhOzhFdnXbJ%znbV4a4eR|N7Ul=K&rm*ox3$#{+TN34uSM zobxdwtg;7GDAH_bGYoufPQuur=-#iV@;wYxX1Q315*7EF8@@Wn%Th2SsU3r}Xt+%h ziQ*(}mawC)@#Dv<@pyFD@Mtk70oq3I0#1i=!eU9UO1KmM_V&*o4_;Jz?S;{D>xE$# zOxN%=`C585BJKP*pYprz#&uZObW=0{XgjMn(s~P91qQWG>E+QFWxQ{wLRkHQcs()riNp3 zOfMEec;u#v%xA`%)qd#Yy~RT8P3F}*C0H@9%t(gw&p`E=l^^5rH{5UoKAK3eT(bwKP#ui@a>NZCgvK&1x)J)rdJ?KZRzu&*|{d9c(1xpVHh=c4J1 zArf6ark(Qi1uQH?ClJoyKy>JGD{U_Q!2RK`i*G#n>XTa+$eA%t_~FlxnZf1~{sGpX zk#OYhzuoilpI=_Ia*-HW@Y|U;V=xPA8K%@tG1}~>3vrtG{Mlc?lt#1mlo6XZdKwLy zfssO`2fLZ|C-#A^{z;v?y-?>F1b&oXceMXkWEPNlc;&DM%!!_Ke_eQnJcrh_Lo6z6 z-?Jw;F5d7$1&%vbF$|;qE168Nst3>1Xnp|>dU?}=; zdZJQ1R$1H`pjv|~QyHZlKUt8AmM8ULlDo||5QrG$#RkJX0=v)dO*yh{pJ4giQdTK$ znXv1PC9tdW=y-I0mSB;C`H2@_d@0Ym$|4HVke z82HC*5{wW{dS`!edhjf9&h#HnzvNq&48{HjSARbA_(OkO`e@rPW4*=e#ZhANJyY&| z?Y(9WabjF?%3z-AOADk9hw|A!)6B~VheaR9! zB7w2#c}l6sb~)K_HeT}6WpdbrS8nH^yl7Ii6oazO}?S|5tn%@4Mv!y49!B)qD+|v16S-CKZ79`m);TQghA(#!0d5t zZ~TFkUL!;Ii2^xiAHmmpgLM7p!^6Qz2~v)7ox(c#O95$zVWjURh56^0{e;D7Sm_7X zj(^d$YsD#A>*w77W}zBcKLq_3gsI7hqKhU%Zv3I~;nfeV5^wq|-YO~kP|k8>1IuYY zHE)(|?JR7VQ(m@++6PE0yH0WGJc?Nnxx=zd?0JXrcKVHL_XN^;eliZtcZN@Lo)Mo6n1z@ru`B7=-9AGHFS~O$HF5@u~)B< z{gkfrcCgS%vU14);)6jfbpy83#<@)siQ*(9S`rm z_pUgZ3c?)m(VZ2y(o<*r>59my?vm9hClPMCF4gM8to3JfO{BL_PM#PimV9rcM>f_; z&TMaC&}Bfvt&YtJgU+*^>(7p(d&KE9#Mbk62u%b6Y`b*(L1ytSxH#i-+knoaf+!;C z!SY7q85JGte}A0!hE{0*O%{#PfLVNsdszEJ3K9wnB`lLyqGXx z^dB}Yg{+stOP6ktb?ha*O-3338A0a0_fptQPc|2Yfd|`mDt=F!M`dWVHdfSTton7* zKXiykY!Xal$)j{~GbpF9PW~BzGj9+n7K34M0W-ZZ;EL(!IQ|&@;e6^bco`MkroYsz zN6m=bS}dynP*;q-$xQsP97@O#^dBpX`%<|M`~{M>!@8)S=G1Vf=qsB`(-rfvpTJ^Y z^O7Q8uh$i!szIfG5W4C&EXzcP0mkE@F}_78Oya{T=;xk$4x1=oUV<9c#v@iQ2>X~f zM~8P31gZ@g*%R*e!w<=juj5yd+6jf<{)l~+U%JWIpKXDte4_+{*`H#`!+x;qt3XHo zVo%8ja-%>Q*eUH!{s?5BM~S@%(TqdO0Nn!^Yr{a>Ew^N>5`@ofx7~)YXe;ovQ%qmj zuwlc^ci&9)wh-q8&lpiQBH#;z!y!t}5bPhSAcPEsDq^fIFsyFn_pT`(Xw5i`cknfLJQ?sH88UZqKK?vY2O=K&5ILwgmP8k!GeDg_VN^Bp-2`dQ(H{EX<^ys z*b@A6Micav>4d-6+*Gmb9lU9z z9a{7+0}}+xg@wIx^-w-Kv;3+PIA|MV-Y>oM62`o-s}CQ2 z1P1g*pjC1H`R8K^C2sS`aVR2fw_+MihdCi@5^fk;`20{6i-@-0e z^O?=wsJAFYot+lFaT+;l&{;7s4`v%+paHZ+4`?Xh_*u+e)Z1-J6bPQafHuTezxq{7 zU%)!yC)Yi_ylF*T#OH3C+a7NZhh%pw(q&vsSZ*oefu`LoN~U1`)#OyZRowG(w>T~? z+69h8ubEd`@e;4}QL)P~3Y!)-PyMGc3?;0Vf|8Y9xt$Y^V5M(&&JGYc@=k@exf7KFi$;U-{+UY3yRr0(yteqJbDqUjiq2eUd2}3^kbyOKm1pPsp z#s=EgHx%|1mTeo@G+iesPSDdaYT1AGdbYKYK2+j{mJ%~&=vRAeByI))@z zxs<27dRV>6cJgO?Wfy{}reKVETw2q?B8O`kgdhy&XQ9qx0A`4~Oz>}C{3CB{@B|CX zI?9a2PO4;b`ZWEs2WO@Eu%BP2eD5ci?Xe|N+`jwnyO`sRGnw#(ggIHff$r90IyYb0 zGVY@B?#+c!e>8=6cSE9?WV1PKQnJEB&IP z^h0d!Ci53q^0OaaU_2BZ4kfIfmaKAk%$t|&7vscGw?B84&_<}&l*-e%}op? ztS;F}PS*OTFjP44=!q@IwTGHxfn`Oq(8@O@Bo3tfVws#%ygIggXuBLt%|ZJhD}H_Y z0t-iv!sD0Bcx24O!7oN9Y#THBgwe9T(O&;Mw*DD)TkXbRd*l5h$~KnvmZLQ$ttCf2 zytC_1-)i|q3YdEc?8@UZ_hQbfe@lki^UlKHbQ>BQ7Dq<$*U>6U&P0~U+QWE76u6%# zPXtnpb1I5gaRbXq4EZ}@$OpeJH;*PlU&`G>Z0P;49>%3h%A0nAo!zj)LbXLfq&YHSgw?8S@|U+9P`xkViM)|PX-*{ZNDl4>rojezDSlm!r71vT z6q4VGXUF3AbQK~wI2M_v@F@I7dUma!d+)th0m64JhQ_f{A9W=LTv41>Kd??5OubC2 zezCIoC(T+OX|@5)51;;9f4ET`N{F_7p}Y297*4QWp)nB}F+_8Ep1}U<1GOJ?Fk%+2 zC={+ZTb@<^PP|uJEdc|*Q;`K2=z;xU%V*R(Pd)Y2PQ;df)K2w}yUSDaa)~UaX1m{L z^bEj$a9C{qNCwB56+cfq)whAd5E3?IJn8FSE_yuq-K#Es{a@@ zU~x!Rr@MOnNt?^vSz5l)SGBOLfP1oKhGo^id@>A9=jV*BEHTGtytydLWL40Y8uc88 zW>Ur7#jZYMk=G!i94P+&n+Wvsl5dejLBcDH^PrttBD%j5dO&10FgWq+Jm^N2Gs8(9 zfsrnSm1$*c^4%bxF^~BHkio;@Nld03Fw>}ye4sh(2^SYf$}AZeGT%hRDlMPzQ!I2N zTMJ0Ce7Gy&PZVO(Jv9-K3j|KP*we&MTD0?M>=~p}*n#?I2-R-*L#lKC?v_W^<5g;0 z6GXfs>FG3Eb4WC0%77mP|Tw(w0Ly3Sy+y0ohM7(AV;v zcCptwoGd);q-l^02~K6iNVx6Cf`@MjiOfX1Ox@omEW?AxyupvQ0x#Le(MPz&s07Pb z+`7yii9esXoUkR_2`aopE5A5W5a%>tr4?dqO@vMiU|ML4XpX=Mng%QPB>IFfp@E9%x(x zy84-$ zL>Ti8xg&rBO6BX^8O;LR5VH(RQL-o*DZ+4AvP;#}(0B}p5)TP5aq282&-B;%ZGa36 z3}%S%{NG!*a?Nl(wuDbecv~h(DDy z{H+2z9+D18#iV4FN4h?TuK((}#jSM4ix5YKF>jzC4mcT2DBPk7Ecp=UHW?_0IY0Zs zq6u+Q7$-sC!hi)2WH{+T_oo2nWyix$;17abJuLI5++y+NEtPLnZHsP0iyWMG9uAB7 zjM!?4$GovHm4lm+8^6rSu9Fw$r9{xl2~RowDOAvYh+9` zSR3sNq((h8f)m9NDPZ<^;lofZ{0jfd->#sctG|~{`*m|xIcwLh#bic{9B^L!i>p)h zDePIkt+SJh#nA1a>%d{De}Ir{PIhY>ry$Ham|KHWiPB$fJoMYdQpr)I>s~A~;gQyVZkea+@{y zbsk+Ey1$MFJh)|-c~V}1&g8;PY}h(4(Wb_TrgwvM=|(5`R=So~1qb0LSzST{QT#09 z#;|ODqFgp~b}66{Qjb>g60y_qhif9ihKPTIuV_6jYOw1cxsZX_nMcoGU5+KVy0zGV zib$8E^H}^7g^7qiT5(%V=V@E(?i%TBrR}7REK+J$gpAd^QxFEJe^0AhEEi&;z>BXAb;*#eLL1Ks}8Y10+%-nCf0EtPSoFF8#Pz z9qG;*V;7qMgvNxu8$98lG39Q!?4J`wX;+^#Dpi?8hRJ8#INCo1q^nI6ac0nT9CrQp z6IK&6ApDqL;z}4tZyc*W?gw=L&5|>4qlE8=TaD zB~?Zc$v|P5Q!7V024-f2x<7}??Hb28*&|2?lV4`*uo2DK)WE?>clFO!>rtjTCB--_ zp872_*x~9j`Dt)`Xx$TQXp`#Mp5|X+;fb_MvlB_LtS`C9CA48b!MhNy{x5lTVdm0Yr{q11kTG5sgimAvJaY(iJZSXO#lAB zRfbEFV_vNetf3v?El}ZuB@ePHPurf3Ew}xM`6c3D>TKM)Pq6AO+8{;OVGg}180d2@ zD=S;M65EkdSPTm6v(G-*6A5z+^#!6V7CcFRa_Q}>#G!IJR=sHXd|ShY5y|pUS4p_* z$~Fvnw4dAB@SCQJ4{1X;jCtc6NHylIV^aV?a3->=^W=kHm!pT({d36SNOfil%?#|4 ze34rH=T$hiSiI?NxV6@Wjm0uAy$;dy(O!OCSmlovLY;upqIEG}t9R)5yZ7lemYq!u z_LlX!5{2ky#)6s+$8Sq~ualOSZNxx46FbC3ojoD3?G2x&!%Z(>sob5S|C)bN z&%vm`$m;Rc{3d4PSdcdEg7Ka2Z~N%O`S4*~Dvc^4xBXNsEb0`!NMNGQm?EX?psy`+oN)IMXn)}RXqEsMJqj~s%uu3~zfKGYza9{@9yaSEi>H2T37Zup zJbR`D1&;}QE>;jiWg%q@y8NPt2~7kPt1%HY5iA(&@N^#w&0#klWX@lEuLLzo(v`%Y z@Wc~e=rs6igg7Y_e}TI|7`^B?n6_`Cbd}TS3Caq&@=|uF+b3)iw``g8^WXZ@EWhi% z(kVU{64MgnzBaySld*-2p-P*5I@uWb`BA^+7d;ko%OoQ!EO`ex@yet)lNPVWd$3zk zmL|fWv8jNH;Ci0=Pt=8HpcRKf!0J+>YNe^2J*DwknYPP)#}wH_z{w~}unfs|adD9F z=$TPEOoIJ&SLe}%aX{wOcvul|6`=<*Xe}(UQ8APJk|0Qm!5&yWQUvp;TM+u6ly4W4 zjzR^LObWIl^ss^D=80VU8cNomI?<}iQ-l-eF#3nag}2^-U1_Lqzx8;t#^eZ8l1+v0 z82!5o3#b2bI(C~^$;1)8f1L5hao?J7_dR$2?~K#nuhgyx#hfN=_=^`7ReZN*>|tZ4 zPH#@LnUqqyBFrcB3q07P7e@vwPaK?$9guM9&sA4lg{6tul~O%Y#JE3|> zG9JjCIm}wf3~T&qwnsjEs|eg${?sGl)-DG*%Ip=Pg)vDjEV1o+^`|(XTO5@@V=FY# z7_u>;59U{yy&^19FobGkghlzLq5@0J7x6xFcAzEvFx_&K0G$OOGMWf_TOl16K8{l< z-zpmJrE98L`SI;`b@w((Z^<$*RyEMET^JIOuCe~mY#KYMm2yJjR|Iip{;5YqK)!Tk zM6}8g?Ko=6L5OrEA!SNDjLLKg8}pk4Vb=eoK#GO_aIp)*w18aLWI`+qghx+f-uOM6 z3I%I-goswgB${2(NdyvW?pkeZd-thm_&e?8K&j4Dti0Vp`akVUr!9PC;qgZwuk?l2 zFizGv;ps15BYxQ=4miwrh|K80*pDmhD*Yfpb1(;f;UqvDV1Xk6RnYzS-+#`WIed$q zm2t?PdSnn-6x^Mxy`;YQrZL>UR`7r&)? z$*5b*swNjt-t~`;%A}Rr6)|A_=fXB9{9-Y7KclN_(f~fCILLrpjQ3&f9<}ha*OOiU z*q}(PmV%3LVA%G8#4Q2D4uS?6@Iz1>F61BaVQT~oZlW|TEbA-kLq+DmKCIr$O9ae) zj0mjpk>YTnsR@GHrR*bJPK-Sjlr(j~s3dS}hnNni$%jQzmz#`OjwaB_OcDb1MsiP3 zM!Z^Bewv%dNYPHi?-C!#<@+C(qoHWm$u8oPEa^kPJ6&C(?k6K%Sged|r|SQi7oK_H z)qh=b-uL_kMPbbMY$?Jd|CW}PEl2bmAP)UNynW#a)v5cc&}xZ# zqX~E17x!UN-{L>4s(Yfk`t^zdV%)XZX(QVYOGR}L#`}vuk#oppQ5bajEqgnFzd+2N z`w-#$wczRYl)mi`yi11?aVWy3*}r$A*V7{N&a8jpf>;KZ_#(->i+V*-MGv;+)Zwp`8fz4DZ|58)DfJgY`tJ(hk`p_rF(l?U`rFc97@n6gGa^_pf>VX@*E9n&Wp zF;s0)Ss_3G#ui32JYZH_i15NgJAhw%C`%@Oih>yoUUR^W9+(&Bhipd3fYdy~Gm2L= z7bIaAu@q>;%P?4ySzK|aW800quq3-K)=EHSy4iI1kC?bG}Sg_ttekZJBW87@VX@1D{5VTSmn19#}OO z1am5uh;Z>rB?^*BZ@B%W9&t=`^D!GYzrV5hH)Bec?zlQ(Nb0Z!Mo-DqYn!@%*As1w zVf`vsGQ>5s^2^81+F~1w2MiuZ8JeLeo zz6_tmFdw#iR903tk7^!s*B)(0w@ggz`O-I^edeiW(tybXrS%TPeiFrr-m#(b zPfB$;1EtYS!E{9oJ)rXd$1h>BVfWPD4G*moWn#s>%Ns6hpzc66W@(>J@^$>^{0)7> z=$sb^iFHq{5%*P0y>paP*j?Nov;R;d7p*sITceV|k6CXFy!_IP!eP3wcn6Yn{ZqZi zS;kSM3xd2i@uS-G(r!z#=GleoAM@q1qsy-uUqAIf7CDz(SyjF)P_~9v^lYaqS(Fs} zOW8^EX2~u*Ks2*Wg z62OUD8YGuejph`>((SH_zt3ghBvtHU7n&~-cQ`}&DpPj0{(ZE@hpx7xy4%{?=6^K5 z`rgvUZ#G80+g(4RzM`z0VB;E;{jC4P`jv05Y?-k>Qa`9!35*N}(CoF>(@#GQ6gcnd zoO8~3YWdR}{zUBqx|&41M!v~3`=_=nj9LPB!ViW~-)a!|lo%5xk|GcqYHx>$cPISD zX%h?7fmCvbtNad2C7JXj`#gOKfh7r4^`-yVsK~ZH3-u4DVtDmWGUXo=aB&T;{>NSg z6|V(6>)nGI`pegzd-e<&OItq`g+271>K8xOKIAKX;C$R3V3&Fkc&#Id?5zZ9hVlR~ zTCXnJ`w?6F?~sc|WDz_5u`46x2DKwvJRranMDoxGg^u575YR)(K}?dQmXbvS+5>v1 zE-INuaIHm8v1E&D7sn4JdxSX-t&+G?30VJKLjC-1yA{KRPvK2Vc*$P*JNnhuI<~ zk6Y}8fK>+QNWj4spDg+0_eb7htYh3HYA>w!;pkLcx|z!l2GThZ`U5?(6gIMKdbl$7 zOv&c+wpBe_Rx`g+f4qCqa)KCg1c@G=@*5iw?>-ZbjzoQbB3EJNR>sRL#=lT9Z+tEk6d2E+U z7JsOU`m6e%iy+^mWNNr#)v?gnXk=WX;qTS%P#%L69L(8e5Y%X*B1&K61~`%0d~%0x zRiSG`ft-jS>nku(Ltnb|iq1YhN3j`rB}KG(FC!ub{nBLW-uSMda6CRngeisyYO~-X z!1Vn=@})O!yPp1W_^+$m zCD1=T$G0K00ecd^IP1j~YgUY`9eM8M=gN#8g8h6{CXS;8CvE!$onA9e`qvM>f`qHD zz8Z%uVZVf~uC9j3O)Y<3k0p+Em(+W=nC(JolODIn>+|`%m=|0CH{$l-tgPJj?``um z{&oa1G2)E`A^}%{?4{#I24`eW*9m{lK*RZP&H1gKj>4jOg`PI5%7&}__U;)C-#{xB z+x`)A%Da4$(SAq|E#x^=L|(bMQwv`DCih0Ny9C_3o>?Bv@;n# z5+THGzOhvtKz_lG0_7hMX_S;DGYEF!qX_Ix*72Lo#Isp6o!CT#sih2piZwlyGNn549@bZ<6Xdxro3AOJ~3K~(ba5(%|3f(05uO&*=!2&f+E z#LmXw`n4|cZQ6*VJyC!rg3`Z{oSZ+*%&u-~x^8uUyrr-*aLt-EysHmn-*nSWIDzKV zPd|nKgAYFV_~VbmbL&yt#J9UBW-R@yl1qT-W|!0d9rxc6`)8t|t)Z;D4AtDMXJ$S5 z`ja))HJe&nlS#Sj5offX-JFihl{H!Ir|J`5hh!E9@yb-b$#C=6e{V0X3Bjpdu2rJy z!V#X0Zf~cXv&N8^67g6Ze}#pvKye@zje=H>EQH`35u+S~KPK(x>6Jk_IO^3SvW1|yWu4|o8yyA#mvBPfJlwTQJQ2o;H4 z6@SShU$3B=C@A+>&{qT}#CWC!j9BbB$QyuX@)P z`WXB38G~GUvsKqyKKP54c?I6l>xEcQicx6(Kxa*IcCZdvEUOFtOz18cQ1xJBkQU9m zspJ-aO79yCY-hKB6bOjH>UQjK%>_Z0i+=GZ3gR)BYs=YPmG2Y>R{M4SVX+@h6vQ&2 z%VeM2u8xN}yKw3*uMGV}csr=xCz-=he!c5Gv}Zh~XH1~YZE)^}f~|;t@#BOA>UPGp zS$NmE$);p$10MOK(5ZeE8`C=LlZ$>`-E8=?B-+ElrFQ{ zVj1k}VU_>$&p-dtOD|!2e-#P`&|$-WEXIRRcXu}q5y0h2hQ(STrU@+U9(7YKgMkoT zpSY7^t@*gK^dB4@5=Y1J*KxLJIJSX~Vj8mjxFTZIkqzFU#~;t@b*uDDx{{d!7ggJm zOYx}@9CvwBEES`%54x;+BR>V$G+;yXrhmWsk5$LlU%y@)BD$BfO+I_Fh#9RqlC9Z^ z!e;R&4CbZtn10q@U8eO}wtKtG)}v)l6_{T(7X1#F{kWn9WW(cVHc6x*>R)T@QK94N z7k_+2Qf$O7-$J}i)7SgeKZFk#e#8Y?6w*L?Kv?kXf38%?KygvUlpR`s*$SdSMl z)TLuko{HeK@8XuBTvchXju%1ebMG>(Qmz&U`=x|wrT}}iuJmpoo)Mw#Q%(_37 zBH2nnAR>781c^MuU$PO8*>2@n`gKV@a$S}H76>=DoUAxi5JfQC&cg56P)MB!FtA1u zD~)@))Aleh{Mu_kSEkDMBs$*{iC8R#@or8#PB-8K4k{`te)X$gVJlxO+4qILP3JbR z|G}2p85J0oVhC39tLhdt{^7s(uxDl2upTY{FR>dNSFM0 zqd1SoDOTOIzVYXE5XNR^39AP|4M%n@b5r;4U;p^B+DnF*ES6lhamw!-EPySy77SVO zgGcv=1irO|m9h5YSme+r{_#fJxaN(3!lp}6o=jM7Ef_52SIj6Eo>blP5=_?sCt_#* z{PCC1Eh#x}kIvEEC<3_p*S`*3(iXs$TgIbY3;zGspH_7)^ognT>I+VeqKS}CK3WuR zxmB8n|JGwWiZ!zY3gwCBRD;q&O4- zGxDwWig$%rR8sTF!1mi=1=-c4gj-^-nqA%z?h$*1{mU}Pek@G^^Odj5aiW2rVv(-S zqrdWXf4$gb4X86S1B(Kkk4z^Xi&%BLJ@C`UIZqUcxT|JinG0LTWUI~;0Dg*0gq?t9 zLeE*Ibt}?&IEXF{^q0T<t>yNmwC(Z+Ov;@2|@ z#jxN*ow&0yfW;Nza6DJApF?Xs`%Q<;4N~$ zgbTVm-zcq|SI(%+c<48O{NMzCzxJaG&q3?@A-1F#^Nq0^j_ye8(^Z5zOGjzg_ z^X36#(@a`dTAHAtSWYs_uq%Z9v%2`K^tQNFekmd=Gdzb8f7U1%fE`9Yx?*@)#VXHT z8NX*~QCzO^?U)>{dxp$X!B&KmZ7T*4cAi*ytnCgtw7OO_oYG*Q5vhV(^zWTt6#Gh4 ztfH4qzn8`Sv*LFW;^q~Psz9m*km&$00TYEQQqXu&qr1=T@9U@8k`A6Xr6;5A+3Jet zOJarc>;U?#F%-c_*tM%$rCb5l`EvkK{6<7nJ4rjBVX`ba&_6#1lyXRUyD)ydkDZ=~aZTH}+%~%M)-m0rvzbo~cu(;w(W79H`)mP&|sb_~MJPaR2PH&)%|S3q0cm z@i=mv)wP@GzYoVje@-SSAZVvg#I|;pRx_3S+*bnCWY{ zu||Ctnvybp)Ame4jYlMWAogGRQgQH^9&t(nFW}JlSjAjZkQP;*_z8ts?i8Vk83q#l z|0DlWmilXHc6%F+@|#E{kavT|PfNZvJ?Lpp=NDHjc6%ER{1m&ihIDi~2#roNIN{Nl zm00p~;@`#amn`*A;};#St}Iqf2{Cg@Ww#>uDZA{c9)alI&zRdP*5G^B=z~=H%%T74 zSBk~Ii;Ft~o>azHv>x4{X>Jej8d2u4qN z0M!^qC7Y!SE|iB#M7oM#e}h3XIy#yhBb1csM5`zik%g0iag++SBG_MxSBX-@&cY7> zY9!22W0?;Man#}TjH3?m9F2xYAAJ9u>cZEq zk+~K^sYnqP2D-(?E(oP|MabuAwqdd#7p5o9lcML+o+nvQ$rLHripaug!{1k!>X{bY zaCTdy&KTe0MD*+W*A-QNuZ})@UK9;CQTxCeM5#-{Q(*9=!hgz#2?bjb76!V-*|ay+ zqL*>RH|j>tsJ6zq-R=nza$a6c*rT%Z(Cjc-fus{cfz6=GY!tyym;r7c_CpnZ9+w>( z2f|+03L8U(s|fWdO(2+xP{CFN3mpjlT-Y@^X#nta_*1YIk%e;?#_wP3t39!P+(F|e z-_$@b&Gu_973KGA%jeA|!W`LJRf^3WJS7T)uEI|2;z`?_F(gIUgQ`c0u=D6XXajIF z0B*+aiqhYBrUH;qnenvw7)YF1-iPVV@aEJQEes9|PZ0FX#I59HB@~+?m<_jBhe|PX z)Y7Hc&09qnriNe!93%fA0hbIyE)gbvBH+P=hvPF{^+*xM6Ru?8DuN$yq&E2!GaY)C z25ewpPMbdoV^R2}w2?~$ags~K_Qan|Wqh(wq$UQ!VP5QsNWhi-; zGNRP32#%WA)A9>@T@Bx9^e*&73#d)QVBli!=Od3ivaXJH(PpTqC9sSI=Th>CQ|zhu z6`}YQ!H?7}2#8{rYo0voA9?|k6msnPp)xn*@=M(*W_lHo5B{x3b@q(uMMcZGAQ8$& z9+aO`|6EHL$cKy{P)VS4S+bH($@x#JKMSG--VJW7Euy^8E>e!nVny&nbqhkjm{}7b z#Noy;Wz}3`S}XX|GW*j%Rx1t8{_Qw*RFJ8}QZE9paL_q)nub7tS(PREjL#|I#KVJA zrH9IsRyaUF2)iU!HZ%B(22oQbATcn({>U#7R30*`Gc{(z$g|>4Cnqyq8L-tOMPxjt z8$B*y#I1DchX}sk9q?l#4qg8$J5&bgNynkXhaGm<>x;4x%KPU zBZ#_4MWhnr!md6zcn~)T^2j5POqnvJ==N$1ztLaPwPhU*H>5A6c15J08Pu+z{}FG~ z_`-;{Y(sAfwju_I-!tEssNAu?F?&}R03G6%v~Lz1R(r~o3cF~{FqW%ec0H*Gj1~;) z)+D?>Z)sU+k)P@*xL%(p9mM3(V`th)|Jcf%9(B}F&p!L?8E2dUPfi6tRW4!yZI2hs@T8QRgq_F9CtgOoR-hLFt`mN# zwIP+??xVu1f84tG!Q~NoD4zw4f~^R}kn|?oZr`-wpX*y@x1@Zi-E4WMShpvBXof9^ z-Lx@q?8+n*p`kKJ^+*vmp6#dq?SbEZL=hV&n=7&s1YAY1KN8JsmefnWRLNhf#lNu| zjG%SS^3rtzwddBqdJ$WM=XuM(6i!PhZW!dXyP_-aAHi$gsPI{=GP?;dS9%>p|WRFaGjRd|O3Tt*F{^&R zQ|UimmDqAZ=g7yZ!mbDzq_o5g+tX~A0-6%po}=Ly{t8`%#l(UD^{r>mAkFB5q_2rjeM(+`hw6JW6@zhgK!E)F<*fvzU_?E$1?8naI6jt|N zarbgjE5u9w`iCnDJ87QB_9(wS$M%T-rR}GBCxnYu(<&ZZ`QXO{bz?vDjRG6XA{TId zw(Fnmp?}hvS=rikh({Lt&!_$ucpI57IF*$$9>dA%sWa#_S#L@-Jysi>QId2eAX|UR zbid^{>F(>A*psMBR{gsiK@>dD0K>OA{5cl8OW5QEf>tzS6_gIfZ(rOqku2!GsYA%E z$78p~Jm#(=Y5r^!>rQD<5gauG;v^-ClJQGBX>xs3j5??RzYLaLN0m|aOb9I(rPPAo z#zR4}c@8CBh~(gk;M-jj|F+|T;sW~a?0PSpyNO`QN75XZKO1592eZ2Pseg@EERwq* zydWC>BD?DqhpE89=?!9br2cDfqAqmH#Q=tazj&Sh&g9LD3zu9s?pKNOguBaq!wol# zA3q*bMDZ2=!yo<-4F!%g;ZLr-Zv~be_Dt-d$%)vTL0*Hff0c1V#2>3ptiN%YI7~b@ z|M^9Wkj-Q&?d|Otio#aV7?$EDPG@H)_QSv?8EOY^2B2Ulf>Xq9K0I0Z<5h9qA6A?b zF1WXn(un`g#h;%mcL3#gDVhb;MCh6jsd*W{8CMScZJ#$*V~V$^4~cVO0P&jfa6lzt zaB>D=KW6*}^1;QcU@Ky9a)up$Xhb+!oh(^wd`H>eUs=sn>BN%n@JBZQMwE=rRBU#b z8-KDSx#^8fbWlUDsQi3c)u(K9}3)F^bGQnZt!@jX8z{dXS{=33&%`&`*D zwW)kz>AB~gTU}lK)?04@|B4mVFM=&GuD$kJY>A=T2NLz*oqp|h+hOJ=7H;RbC!sj!&YJmFETg@x$qS2VCWIijaMLQQl>%qnz?|_o{!`_Kc+R&ye+R z*t4vhS&dG*Vop0h0nzlIC`-2fa}#|Vw~NV#O*UXk(QI|ZZf01&cF4iu(yV;>cFX#X zgFJ=}PCNd>-a>4?DbST)BEq91*wr-uco~3&U!l?onyzTSbPmt}r|^*y78*mOJ(D8& z#9@(^`?hzIIe8nqRmclb|9gIK->RMiap?kwbof@7-u^l+7kw5J^Qu!#!25URorBKctsk zR=aX_oj5^IYF7kvI_hwj(Ldu^rru2%cBC~w}5684S*^hA)6Anx_N*ohP6vg6jS@2gq zTY~izbYbV%I|6^5`Bz}Zv;!WBg7?WMpNxa5F~#){fB1vs8-Sy#9Yy3BxZ^nE1?+#N z!V<)SpKrnAsKcE0Q?$}tiZ;cp(6smzY(=PtSNE z!pt+wtar}=v_$iSiG~3QoWB=YM8N2p^O_$&#S@&0x z7124(NUG;k?5n7}4FZ_qDUlll^Dv{0-5T635FDg;Ggnx6RyJK${}D-UJKL^_-@DF3 z3*^uw8z&OQNxY4m@=;g9fM}e2-*r&W=99a`@gXt0XpbwJV+AqZJ@CK!w`&rXlZYo1 z@lYfh@fZ2A!roorMxXrs_ur3wtb@TIW)fl7DFj6COJHeHNR~%&O=;QefZghp{H%tp z>mP**9}QHDb4ZcpMaj%caOnD9jcna_(}cRcpQ!uu^clZecHa`kj4d&+>h-L%&f+aG zlz*NC*H`Q!h$5Wqmi=i)IwnX+Q!mH#Qs*@C6Z`Z0%dcmXTU=jSz0zN{I%7jEPGAoF zBcH4;f6|ZHlxSJm0dR09f2F;l<5!||BCA#C_5%i1ksiuU@2>bi7UD=sO=v>I`@Z>E zWlx^-dr;@?II?TYA-!dDJjEaQT(bSqzglb@o)7);)9Le|W4}=CvsJn6pG!4tkJ)rE z7FxGYnv0;eOVS^t!vGenKsrnof9wt38>n1bT)xO^{T2y)OJQL+rmGY7BsD!=*|E|S zoYGtVagkAmH5;T!C8)vV)Ix)h*dQ}~F-q2^7FHu|%?mV&IXn}#uxa6$6qOm-Y9VhX z7?1SdUGSq5yZPR6wXvEluWl|38CzwbTbqwz#K76Le3`-^j@5 znt!YoYO=v`k)D#C!eAlmhm`%Ft$(BDb+R7}SmIM7m6|qf+PCDjZrwWkUUSVg7hZTF zlsEFvm7Ci7LgV8Nf2S!+q*baQ@Q+klZX+Zu>9nDlEUM>faCl>zu34 z*)(e-!m}amyYId@zUwPr`3jvko%6ES52{MZ8qTSnVSkLFOulkVufI1qEmGJaCn`!^ z^`n1H4+E%wk_8Qqm1FB9pYYntPFC>nB>kXzqeJ@1_ObL*eWmo8@j_@NmBWSUb3 znbUp{$`)42%Hr&1_&*JZBdMRYdvc`WeX7o!>{GWxC!Q_GcZt(N-QN_^pOx3l(vD4* zHfh(PmKACJmwi&yzP?+`E2?>i-o<*n>Q)i_RNaEmvEf!-yp{n^L0IP^D5f-#?qdJ~ z0_WN2X}q(_lfv2Z)RJP5r~62Vo1+2r9!9VYw!(E zdW1OBy3!yFGk$bj-!tvbRclt=we~Jbt4LjT*<~2>#-;_o{`If%!MAkjQXr9P(DCb_ zv(t>6h<=t7t?XAVli z-FM&p-h1z1Q-PjHPb3ws{8x#bKrC~?(e{)H=dd4|_ak!!Kbn1N#>dB&=4t;^Hto?+ zIBNE9UKPKQVuiT=`s;B{2e!mmuwa4VB?OYTc{7GptyiY~r)|&4-x}U_PnAqW1m^l+ za=2t74aH~IzqJgeF=XgRk4V!$w8>Q##g*R-bL2IFq-z-TPf{}Kkb&XP44aSre3t9a zz+!KxCnP=*MO!isE|8f;`3u6#JN6?tQ-_BBp(b_Mci9I%(*$KG&3-b&X3@WYxwqlC zMz723?Zb*HHk)+RSt(s+RtDt>PS8dZLHXJVl4!m@VdSz{K@n)^DpOAD#VLBdc<8Fs z`4tb%@FcS)z@qC*?wS1iIQaN>7CI7+Lk7kow)yrc)ucFCVgS@ym|9_ z!@Ut~QpA=&O!klLz&~7+x9kqV{x_`O&^WnKiYxG^{3Kgm*cF2by9;Kn3h;;tWpWn6 zatnSvtS(u}F^}BcLFJb>KeFRwAG<&BqluujG<5xw4*y$!4paSKIlH*>z+#`ko*~Bj zShqK2V-`Eq{V6--3o9}vY8>|6io?D=R4j&2ezBRMkSk?%JX!5u0bm$9Kl|vR_-U5b zkj^9}Di1E+Mj_AIX5nb;kx4mth0!)g0IeF8^(p()Gef5FEAO}& z!@H0Xhsi?kBDxIxX@VIztmH_CkhkOz6mHbxlb7lj<132bP-{l=q}|;J|MUNR?!}j0 zy!4{)p-%~WEV_jo9om>ghI1E@o`nk+UUk(~Mn=f=IXT;o?A~(WCSygJ5Nl3oZ+fJh zc7Bn{8Fhbo!QJT(T`9!O2u*t$nHkS#SO2-~2kDNDj77hOP8f0btUnz(_mCG~e6gi_ zWB0i3pZxV_Va)bqUr%-1bkY&-e`6sr5hYwk0qGggOndiPn0C_?9?Kqh*uBE+&nQji^XFIy&$O zdyI}4F=FfS+dQ&cwS1AkC(s!R%6a0l6c3{O@}w?Hyo5u$7z{k5!s)9Uv<1In&oa=U zo@FJtE(d-PTo-{24P;dR=>~7skl8#Lt3s>@=7mfQ#6hf#P9}p>#gDa*8wO)w(_htE zq!~P!_%*KVWJXx2QRo${R41!u0pGF!h9ceF2!A||O^_1NSQOLZ}oQ7qazZkeL#N4b@x47rgT`4pt)CkYli6OSA_*1Tl8mA|3>=~iIkSZ zuCkvy@3}M56ca~DU46d$+M}+$=7DRL&Fm3{o5VMT*jU{7M{0P{3q-R?$xTj%4$WKj zR3{>s7#WFTw7#UYBodCGeUK4$IP5=K6J2-XT5+goJfo?2Nv>9c4s5vSt;ct|Vg;V} zT?Ii5^PA23?OA^Ne928$b_lF!s1%bYI6Z{|@fMh^jbPBc#}!TeNH9b3FXTD#FP+|kxmlit?&=qcF`doqs6cap-!Bl5e$hx&8a4%v zDqW++ZRJTLNy|z55tTL!mY0^A=F`Kb`P0t{CGqTD_`{PUtM6PT_7z<(ch?1LksRa{ zmZ;&vayvbBOk<;8-mC*`@q$G0E8eba1k6ON7omya^|!7QBP4IT81WKL#4y4sg4?jtg%y&0+RLwAj`VnmW`U;d zn&J&_$*kwy0POX6*WUmDAOJ~3K~#V9Pg;3G_=a28PdI&IVMI;`utx8A?^JI%`CA0F zU%6Q{k$u*Dxz>k0yNm=40KX;eR^6sGCG~?^E>a+HT(4{kVV4_M53Mk#G65@>1YFQ* z{6`v_Ce_TP)fOx-Ej67UDS!LpCu{?@pR_(dtN8ho-JXx>{4w(s`HNB7DwN)J1 zxyM<1U};`V&5joq!1c?bAEiUxe^=7Kj-6-?Ct$vhUK#RT zfAcyqkqGQ`Rds%iwJ2A;np`ZnYc1RyEm=g31y$Wyh-gDhjFRzp2=5BFY}d((X!!Imr4InVsSTBO(}R9> zIhy~V>mN;qBrWn42Hn3O{hK0HSkr@kbvc@U|M*k!xGkZ7;cE7YfkP`&p~SIYrlW-WhZ?FOP5tbbW{qqA~Ir-H^!s(``bh#c|;zK z;*?jN&rWmf3brEbob1#8Tm<5S;xaE+SD|R7&lsMdIR{hdm4cGKzD;Mf2QTg53+*0|RT=*)}Ud)G;K{2cf z1k-e)gb)FxDIWa+D^sad5&r@D*L7vFpR$=%-EYQ6eOz9=(!c!Mo5c5e%fDOYU&3_( z+2P@b9(MAVPHt{&Ub<}QJrCZyxwX}>PgDN~f8pR0jy*wXdfxmGo_+3_v<<5Vim+tF zaOmINURd_ys_qAAL{=OeLQkZt!#HWyUO!;X?W9SQ7B60mF)utt2voRJr%r{7r4V{m zt0050%i$Vu>yhTBiZA%E-+-)>cS!lgrep`ul#bB&Xz{1%gTD0qW&GU-njLj-xCtSn z`>*|H=4ocVVd#hyXxcf^P@1Y+bboqgUOJEIN52-cx9LAJCDuNxjW`zwG!b-rBLMM0 z4!=+H;`~LM;LSJREGa2@=%I&juIY8xU6)MK;h%h6GyR%d?)bgjhTH@!?R+r!-*<~f znkdn;XBbTcE-$)`={TMIObPrEFFkK=r58)Go5&K900bh6of>@;- zb}a(I03SPlXkx_RTtH6|tDOfANG6`LHrXX{GALZxHN!3=cfwC{kP6Em#K0%_#S9!U zgP&Cgm%9^pGyLwY#@B!Qf~Sx^S)dMN9B%qkVv+hmJ7! zlmD;&v)F@!84cWiO5gA|&MXfsE{ezEjrUZHIH9)W9r?bI_WwV}{LdrzJ+geoipOR? zHhI$ISuM48#i`bk9kExa?>-$th-dWD3k+q={<1#%6^a#ac=<2 z4r?#0$MG(*m}iL!=Zs@l=0grS1bc7bbWlv5!t&0CAAT6egr0WVX|KKZ+FpC@g_Lpq zpu6k|7ne-8k&y5S#%W(393*5|f;Lu^_WJZa@iR0AL)(_N-X7zvJiPetxa*FT7Xv+V?M$PX`SeVj(pz3$j$SfOHtWCP zk*bz6LiFQT2&Q6poL{i>$veOOb#G z#flPt3pHUB0!0|XZ9mMQ*c8$Hm+Ibk{hKHCR)2&ZRH~_rc$tvVl200s$v{zPOd6TV zpMhUKqL5TIQBDwT5L^YwA|W5s0~r~Ckeu20DZF`+OcP!@D9cd#G#Mz6#-x#qf8rh! zjy>+!)vMQh@r2`-Em`{7tN+&7hYNo}yrBF$RsIdWvW=yfhZv5BvHm_ZDU8jmU=>)2 z8cjvTav|;tlq~U;y_8<#F4L@m*2vF>{wWo7?PU8gR*>54f79kovtOUh2qWQeFccg= zcKmzq&mkXa+i)k2pNOrF_nNvVCZ8@}xjcq#4cSD&B6*}$OBw7?Eb?7wJVxtdR`G*1jxUplWweR!Ngtu{oXK+FUO$1~gCTyVW;7a^C;p<9 zUhxmN|D%%1PfFDL)U+?_ud+9Okd9xLYv!EpLLxES##@ae_>Zxl zUtNC6|TzLM4KCkb!*IzR<46hVM@jXqAO*8*Av#q^t+?a7#$a>zz=Pg^loOuEP zzdvAfRDwcPfPJ(Is!3uv6gF0D=Vw0y)j#q!;)=A~)*=oU-TMb8{Hnnfb)mQ5_rL!= zVuvYWpJ~*;@4WL4Hx7^-$FY_8XawKYDOkYr4U;G?$jz97Er=EYx z)Cr>H^z5MWixdlx&N z!K%@;-F9lQSxm*DD&4c&O9hJAFzCM^=4$wHeW7p_x$t#8%vS*ho9!ao+T@H3`Jgw^ zTY%RFF72yAH7025N0%{I(Jp78KCx6R-Y55`&`nB(95oc{Caci(sS%2lh%N=xtf{T-N>aKy1kFi%Zw4fb;3kA#dIPKhmT zTiV;?>_Xk1b*2p4)|fO>uQ&9dZ2xU%^u&I{$0iFgUyS|USkG4KV;Dbv{Eau>xN+k~ zjNoG0EC$c)~&OZt-q;ev27oLMKBh`^=mQx`F0{Zov%G&%PA zXSc9_Lv@st^k5U)|FGc4ti6Tv79RbjV=#ZVrl$JMm)<=5@WVYG&nvIIf>y%Tty|G@ z#pVa-Hqi42bZKcR4rpy@X<`3m53Lf1(L1i}f~wNjOY75?;`f|t#iNi^DBRT|HJoR{DX_bA?jh0 z7Gl^xw!Qk%kAK8aySuyZd+@#|{`y2+ZQbTATi_WEhPR5X{ItmLM;oHMrzac^!NO@j z46;&rnZIQDYz6QJF*N(Hd8%Y%Lqc38=kxC?R{!7XJx<>Pvk`Cl|LlDSfK|oS|GZwd z@4~X|B7!K28e=Tj6$={dipCy|8a1{=O*FCmji#6wO)QB~6E*hmDRyiqiXCGI6lv0z zWeeNh+kO52JLlXxZ(duLZII7zSmvFXJ9FkYXU@!>JN2fUumb$U53${o3~mg;uq`eP zS+HOME{}fy{r55ZfEzF6DQqlXxagvb=FX)>)M&La@cYRppMc(er|mKJK*5j^$;*J^ zH{@dpD5Gw2`;){7oLeP*NhjZtMqmt+bSIa*w?ut|g(Sg|x0gF{dY{ILU>4U*V<8 z8~hsxGtli1$%Z7bdA0v;ulFZE`w8t8N-6ZPWd|eXys*pwosvEF*aJ&va{C9!iYyVP zOu?YwO8FZ&rGlTL*O(`dx%$&v`KNH6VZznptd^kYr7fK;TA!F}a#$c|$P8x@HvOT# zkB2tRhxBw%*(598TTm~<4INhW^I2)7-SBRrEb zu#$EUR;iC4!EYd=2|)&0J|8l2we9M;DaR;7#Kje0QAI(6S0@f>>pq% z0m~OK#UNNPnv0!gpixt<{^vEvl%EPZUXGcv937SjxpuGdlT<0N-MnPg5#r<6NBZ zfywn}?_7)0V!`S}bK~|V48?-sbTumw8;?KQ9hv>sTg64i&pi3eWA{Jy$6No188O_2 zi={J-atpGz{@KaEKnAe8!W0AxG`|n>- zNoTE!al73ZQQK>;z36?hkw&@%GQOTMihu{=o57HZoDDuzLF*4z%p*>SH2<_wZL2(o zc#AuVFbtRxabp|{Z(60c3#-q(!|$!|u4Gg?U6T*6KwLH=gJ7?`QFQbi{MHkbCvgxh z=ZBi15Lr$NB4}W<+DQ`RV5bnKZKg$G>}Og0ZEyTm4I74`Ds&N&$<%@`7c5)0Z0uHJ z=g*@9xh!MyBtHGcpG>5xt{CoYcY5i*CC;Lq6aoI0$zNyP8p$;D-+E-qWFX{kvjyKA zW2S|N9OT@y&i(tne@7pERBataaHzJ{wvNt@BaS$trMcz(58n59J%9egpAq1>=bszB z<>-qpxah@KUZfEM$x9|rY?ve_SqhogDT!G+!BP6E{}nG41(tcb>te1ioON5)VVv{X zXP+hZY%tgG)KgF4EZcY9c?TC^H#axma?36DL;6JrLY6O}`I6-eSQiHW>wbORFTK~T z+wL0*6U2xo%L@)o41WE^DSGO=NK&cou;zRuQyEtCM0+gc4cQ;m-}-BDPv_A{F0-sL zU|wEXv1av}a3^EnDCHI9I1>d^JUEBjhzY&QZvX9sj5dKd3?2U7w4doL37 zU9#J*yWM)zt)KqqQ%vEF9z7bnbFu7T>#es&*VfeAbkdoWv&B(@ytl9x%M5S1 z3gbWboO7@K`LCvZHto6z*FBo}_k+hj5LoTU!U&WjF6l+pz^t5}>B!4FuP6Eg@XzQX z$auBbdE$u9i7k)uws>EuV^l00RTb31@4MMKthU0iU^I1~7Msm1D_#BE6d63zudWP- z&BbmPO#J$p=1D%bBZGf>t$>ciVL7nosR=Vs|M24@&*Sxus2Neex*l!)$dR?rKmEMX z#&JqERgK$f+;zXY4u3k=*ZtR(>*%WJQ?wsvIgTkpK}%WHp?p+Z{z)N0u+S3mSeBO#)9 z^7k+B`M;tG`-RIFjT=AC?QqA7X_q>dF+wLXzU}9CZ|Su`6s6 zzV_N{F$iatSZ`<8)Dx!S_)aWMfA5`l zF}an=vOv0<2mVZ`d0qd9U&K;C4tZq;Pu8E7=H^l3M%fJ{IM4%js^d;Nj-6yZ#0EnM z?QQKjuUIo(w6wy+Zuhm?YeF;4CQLqpp~pA{^*H z45V8&qLndk3oXXfhEAPFZya(;%H%Yj2#i6Nzr%t1gzmikPUr(BWiI*IB^akHEi2t^ z;_kQKdK>O_Tejo&`ya616Vsm1Pzw_UpRRpl*lpkY3l=J36Agy+KmPdRoXVwQC9!o!w}sBc z!P;uvf#c%(fW-mAkMl+^{ON^s@!m&)osY#jvaZ!Tw4PtOEA|0NhUd?pkE^5#Wj?RJ z?iGN@7)8h%np9RYV@i_s*co==uw;6>2Y4K>K>Q7Qca4i!Vdg1Eg2y?nb_z-MU{HpF zDJzV`VjIY%Gm9V+RvuGH&n|qn=r#?KeOE%E&mnER@fQ={t{i7SvaMCz;+e@(^)888yEeW;Z1*&F2sl8 zuDl$VfY8FO6;CZ6@srxpPl_VC|z$2=7rMLQ9<+(tAB@xn#uAHcJ|e(hmXzR#j6*#6s6((p7f z==hOR;c_&}Zs6Ju$=jG>=(!v>4u7OON{b|li#|N_sU6jhXQ>~nUEAOPpZBq< z_x9Uw$Mhl&9K$72SO(Cy^@6?WBG@@X#?a^G?8#0-*b1F;bP;e2iZ3Y@SXX21gur^P z-rZZ;`|G~&=QhW*fZu7I;Fht8#jM5|s=zvpo&hDyr6qP={8`u#(#j%$q*rEOl__p7 z;}|>v*|R`-8}G< zNdBAU|E1b0$AK_>Ue9v(E!MQZU40!t!k0%x{T#Ox3Xa4A{nvpdxJoh{#ffoq|6$oT1h2<<| zrKR{R35T&2Q-J4d|G!P`&wcmbk82vs%gR@-Ub*`7)uf!G)bv@?vDFr*ci^}YtcgLX zQGx0<*^d*1M0(Umj2B_kp1ldbkRHl6?MA-8ut?(KpIlt`%9zJo56;-`t%WNW;`sa* zUU&gBZkP(e@*T{E=;~twqF?O&!3YGFo|v8{z2PnbWyz|U=~p1_G(`*IbPm65g!+q$ z&*QuPhLbAUfh|Iurn;NS<0&2upHW^utGI1UJMK%ho~DzcvkfFIJQDdzZO`m3q`3-U zD-7}P2|q>SjKEH_V2V2gvb``fU0wVLMpc?CHt`WBM;;*jDBzanwwUWo<X$o zbdfJYyHboJ8Jb1(mT&Uqi6`|$BE$6m&`+P(MQ8wdn24}uOf zt77&$4ofT_e)wTbL-f!^ur6aomSDKJv$=>KlQ2vpFVs}ZyTXk>sJ?J0WD7pnFkmCL z$v*nA+o*u+8F3m_pdG8zWvk_6c>dD9}cHhv-y+p}V<9Q#rR%|FM!F~|O)PTsb@8RLf_L}Hl|VS&So z#IA*GN?vIFXp_nR+k+oX3BH7if<^dLgdOk)jH1~z^7k+EjyR@9y`utGmU%yS#}jer z5?Ywh`0&CP7h(vv>G0O>x`=MLavLAKed(#)P#`)?Mw#krtBGt)#VP?*Ft+>G{-C>$ z)CDB?32b7F;f*10e=4ggcb~W$Qm4}}NShkyU`w5JLgx~XYsk%K_bEFomp4{Wspn$s)L92ddTC z*?GnpXJAAD`UX*mG{nXt2Aoc2&dp_)GP}8ZE9IT{d4?x+1)3omBLpi7-jC!@25Acv z&_d{%z|XTSc?z4)S18DzqDitQVL+g#;>=FLben;U$ii7{!#k6w5f|b@wGp9V=7pl* zKa3H^Lc{(he+k8*%^(?3o5bD3X%~g9=Ep7~nD_qZz z!1*gU8K&vG9cmoTUktUJ7NVmcA1&JEhFZyKR{JBTwq)mh2=NOlu`$G~8$%(&TXw}N z6SzDA2SVf)`=H7nx4})GJo%fY-{3rqU{Mjyu3o$d*AuC&#*Hg3DaL79d+ob7E`>4i z_o{s>sFRyUe+CbK^%FF06z~LM!{UoyUaW@MNgWUm)rE0OnJq3^fNz&CLP>Q7QBYPk ztL$HwZDF$j03ZNKL_t(ThDPM>NcSCgS&Jn6KL1U(+|;tZ1*;};j2QMkVub{VC!c&W zo0(F-_{A@9Tr`d)g*L)Szd?e*sl)f;js{HOS-FyEWHU#yL1VzAtfI{4rYRRmNhgp+ zWH~hmiD_>p6~4a-pH42NA+ zZ5@|~nH9!;A++CxDUJWcaNbiS=6EM0|9@+u(6^5mcB}C$Cp$ccOn#bXj@% z%b3}Q0ZwVNvLFvIe%vbl*6g<~zv6PtpyQ04S6_KG%tuwe^76}MH4 zAUJ}^!X^l%Ov#3OFxsEt)x$B)v1;Wi^j4+)#Ja26x>`V8v0`O{Z}UncB2X-!eEKt} z`0<(U#d+cNXp9LCb@iU|DXgp`I1GuP(c9OO)yC_8Z}9)~pZ~NLNvv9lI_7nF94^OI zS6zjp#vn0$ez{;EWT_PPv*6T(88c>}i$KWp8G-FaCPC3)7aPqb9mQ@j(mtfcTQ{~$Ri`K1)QP4Sh4q+6qQL8Ac?ZEB~yzX0bw4 z6qh8y?MtD$oKC~Qlf_e<6w=_iQTS`Gtc~0gYyVy(wnw|#TlqhBcgMQ1q8S4WIQMDY z;jQYVF0|Fuk7!esrwFhgE{_n)*s7UAPO<0Fqe zYVH?bp!OKP4kPM?`5@Q})oyuUiIMxwn#@F!hK-1>n%1o{NhES<-c;^miLjvLjf zdPH=Fp(?wvviN;mYeCU5e2?;z`3r|~Vi^K#dO$<^{Dd8rlW3z&BByPrcz9j_A$X`D z7rz};ekCxtQ6`D4C5^Pdxr_+R$tk^8(TM@YkNu62$PDE^oA6|1G4Y1m6SU#cb2b*v ziF-~we9GbT=Fgitb?R#~Uz_v694k9qcHqUi!0+JVr$qmo<^OHNZ#E^C!faCg&oBSD z@-OuHzV=bmc{8Z(zx0S*NWJtSb6dGO;=>9*F#x<)A-w6a!g(4R*}*VXai?- zSd^wqVA_>$fq;Y~-Od=WGyDe-KZXi05dyj*izVDoSxjQ5rvx z4Nd#$bR2xh!8iZmW-JWEl*ccw`o)`XyjeG@4toV|zUgMXv?lH`ai9J6`S)Z0wqFF? z;AS_DBv&$n-2PyF36iLMuGsNRF?BekiKbHAWbd!0<2xefw5#n^<;B%iGs|o-kd*Xm z7b_L8!4(@ZP~XeS%5aGZ?nS%v&O0SAZ1@Wef`JOA3$)Lc?heD$^0eDV1g zbbs`aZG10%r(^%K8)`hq0#`G{o_*(aCcPr}R6wmjC{p~W& zuj}v7=s(_Y%`L5Q$JxqtfL+0=mFu)vvUdIY2QU!rcDV_XZZ7rm-YeoW|pAZSBuJ`z(4109jX8#}}02orUpl+KY~a`JJM7PC>kz7H%!{a#pi5zMzdWc9`yZ|uJN?i5I=n{U2(CL4Jpi>GP# zVl9Gb0~G^rK7JK_V6`rO6?NHj046uB(W@5;^e65?gAYy_FW5)cd-X-t&s!z zp@%&fCq@@A#lfQsLQrfnX&dJjpMSvxk3I4zx(J2vXCxsU*ya~9AP_gvMdCnNH&l}n zqxUxXGhiz`{R{wpjIfoL*Q{@SIG$)!t^@gywkDOB;ZD6Ccl}1GG0h#@ln4J+Qdi=r$Eg#Jn>1+> z&csa=C1TC-L}_C0z4khE%R|5VlJB4zTKz}U5O*A=TnCYy(SFxjfMo3PzcM<0c+-dp~33sCi@{ii&M zNQVmlz_$N=z+d^9uSIoG#G^X9rgi(5(HcR#kx`*@-^&z?jee?~)&m?5Dz8l%cQ1=xnI@td&Z4&j_;`ClPZ3V2kT)R9=~sdGjLK{XPrvn3(3_QJ};7-RvDaw@RDxZ z`nGUq7~O3wM8Fsw?i#_(EX&n$$ua>RLi}mD7&0VJT@dLIh2>_%{XhI7unp?JAy+01 z8Irqz{HYAkq}U2<)h{FNe~bK`Sf9}C!S?iYW;qu_jQ{7C{Tw&Bf4bzewMW!1N-o|f zbO2VCO`A3i?KO7CO*vx9SG#;^^$+a&O9->tjlq#W7A-30WJ)%}@VJZf=tyj~Qt9KK zEQQf(qX{FfR-1m}$2pjfKK$rbTWy8=hn6f}($drdJzTP62?iMU-goaa&pPw=zuZ1Z z`VY24CV!EV$j_>1hA^{9LkH+l0r`8s_E@juYUOUDg#;XyI{Ha$4Z@5)Mb)2e4(w}y zD#B2>e8yst?@`(>S7fFtxS}p~Ur?PNR<{;Q|3D+qM4A^<*kgmsLU4KOl9F%KV(ed1 z>QjscU%t0;WS)4|QqmMc2?YG|E@jE-hPXiWK+GzwQ5>Mrk8AZat zUx-5Xfa6C(STL)iI2WNt>gO@iN)v&M#enf|6cdk8bA_)AMlg2lnLYphFaa3+;?gKA2J zyTWLp0I~;cItx978C3k#UgYS1mYjRQrtxzWa_PVtwkFKLCOsJXk3y26H0=VO@nh7I2r*&+5|G0(}%?zS#tQk>r$%U63dCZX-+YsYVq+-f} zrO@^yy1Y0nkyl|Wx+&)#u<0V`A&kzW4xB}Z{!~>B+itsU-+TAH_08))YW`^ViM!+I zOdS4$<&zi(#R)|(zVPCWzq`@v^Wj)0OYK>j1ET-^$B$ePoPl_MflnXg?~b_C(;jtv zOnsu_>tZR)f;gPm@00W-m%g=B{l{DOdTIH4MV>|vi;aq0Uekqo3Hdi5AeuIUQk=-S zNoZ%?O%)yQ_>156N1aixE8p=)njLOMKjaWO*ZR^+FI~58-35nV(BbM#;bcl?u6b(0 zDtqbXm`$N{h1e#L#+NZto3O(K-0l78C!bjynXk?i|9;{xEh`HK18eKoB0IP;2Tm#tDikV zO1Dr~xJUihfJJoLX%aduc%n;$EmBYz(6ED{AkX+paMBzEh7Gq6W?Ts*KH6UsLxbM} z%J4L;iA{wcll?dU>1K!m8!pa2{rsxRD!HXvfL(vX^|$=_mPiEKFVZG0x3u42$=`tu zQ^`i<7?Dv%lp5sN;&RY=kRm$4qOl2~od!};57Q}h@8#do-hTKIhc8;V2=k=SN4hp* z@nT%KeCYQNd-%bJuo-ikZMRvtU?FOXl}ds3U!DR?5BT-gO1*u9zYS0YC=0kPy_qLC zK=&TM&b}rxWDB&qD?gz1*OCV7f88&t6E`FhmGnxbvpa!5;Rx>>p`DpiqHR-}+EkNz z)4lbN$LLsDgzhwe*zhPqI;&Z1Y^R8?ly0X`H~|gfbvtQ^L##UHS?7_y3BAAVMUm(k z;9^Rg=K!DAUw<8EM87-dUDcJIWw06BzlJEuOPuyY`4x~FDvp0S^2j6ayn~i#qH+RZ zX7CJ`S^U^wjXoD_ifGK=zz0t4FU|}uJvcTVzc54TL?VZhe&R3i4bmrtmw{9A#9r{& z$f}R(TX#~iI*O9mv%a-_Wa<4bcjWr(ufON+d(i3LeuwR`S`&3(=*$k$}ZBe6HF z{CC@ZHw?GZ9d_Jdk3IL$ z^#YCHt$(^zj&aRSqObZRd~~L=+1hTwkF%2S2PMG~^w^A!zfG?H8-*XaKzImt^QpfY z|JLKS#`O8B)vKl)HHFr|v%%HXaUD`S_FLk3asi&pvx;#!K)#`Q(#PPq9D}^rA(Ju-_752Q3Xg zY|v5=;t%JB&5+dJEcxRq1KbKG%?l6$c}v!2f|VIx@`>VvGo1YjMs&p8a2J7fgo2u? zO!X0dBt1)qq$D6XoNa=(we_TM=k+baFB(zyHqB;E+7`;VhMdj7kTn$t>O?LYU+vC^`C;^-z${z4j7`wJ)5n0ZH z05Tu+0l&a&@4}kw3WDqmjSQ}4?C2$ML6ZC_E0A|>#iwi9A}WH}8hB2qZ~xhd(!b+M zo0CpC2~&F5Onld0?-JxgjGy2zO4y)#sXs$3e~dGI@x|Oj51p)q#z9rQ#1X%&xobI%dq6{QU#2CI}BLLP#MrRF0ivNyVh#eUU#a z6;hzOtrN=Y%t<)EN1ye-Z}^8;fAZuxQ~uxm&UgQO%b&0Qe^-Av=R;t_d3@Nwwd7B$ zuG#Y1f6ly5@~Cadc_{H06$iSTUymoYR<46dS*YFN-{dTJ^5vqUGAcVBK!W#>)!#Q} zz488g?_*GFT|)y7Y>32gPelCs>u(%R*A;rPQB$iWq0Kd!^3RJO-;Lit?EAmH@wYgI z5Z{y6{=aMSg@Bn0d>h>G>l^g9fllauf&SM$SQ?)ZY~Q!LYjT@9NR__s$7v$yPm@v3 zZ%%I+fA5GaSxU{_@I*seWoe9rXRWe1v1%DjQu|(^&fl#^O=!HYq5JB1^%Lbf20GEV z-g+z2MrZA;v(CcZVsF3mwmdae&}>$a4LD&Vm=Lfj3cV&Rtv2Igfzp@rzQoy56vW{; z4i#>5bUZVpD7j|!{5ZvPy8seL@L$UeVCQKz+yBVoLyvy z@-Bq}8#L0bEt|Kdqf3Qp)rCrpYG}RU?YD1z^Yz*2el<5YIh<}E-5(vq;5nWT4SrcB zMsRrmiGlT2e{{Y??35=%&I5}d3JHU==<&@2Ng^$Dsz%m~Jb3a!_^LkTv{UfWPp3*S zh+gV{F8+@{`grc=b0;5$rD0TF^0CV-Qx)YElMkJI%O7tUSpDgn{HbxoAtZcZT?U>( zlRt}`WTML&$f5sz!*A+|$7SpC@`{s-=R;M5tFP>^pPONzvp;C=1`K&uRGw!+2>6%XM{idkD zm{7pr0bLT|JXkr8Q|{pawx;nFck-pGsxs{JB4HJ7|2L>Vc>Db8U;je?0Bov++u#C;mFrhd{^gCyqeM&G0U z488ohq*;fQ!XagUy7^C7;|aWc7vgCi_NhiKE z<7ISHdZXus^r{E_-#GcB)?m;I-xgebHlh9t0LWzH@Ec2>H*NhD{G+zm0;eFn_VR07 zcd0=+OP%|Wx_`9VKCHqWuQryc;V3)E*=oCn96w&SuE0U@?o}%OE4L%89KLvJhq(Js zN^RBFwW=aGXOqYu)vdX?E$+I&zM&?m93z$Mthi%TbMxPEI3U_Fv%YMs{-Y*h7YVjj zUVO>LBkM*^e_}e?*Ye7W+L5(~9Ck=|xcjuzPQ!GD^=)9k2!^u#A5{H!#aw8Gs4vd5 z>hwOf-guUt%8#_$)I|_kYeF8FVZ{dn68OBJVF}D_FhSoO{5nT^l#D%R<67scIk9H# z-`A=Gn2np>Z}vM*?X=TQfB3^6Zn)uwr+0X%>*4j(?Eb&v+6PO)0StwYq?l{tDLf?% zv$idH_lON3DHV&yLZL1!1wwQ0aJYP4Z&7g&oyXqbM|QxsP+C%FqzJR+FhKZ`etXy9 zq?yQxf3Xv%ej{s;Fy6H+XN$02z3>NMM@3+*$MJT1`xYvGUEKK-<-#{BMZ+kAa{Vao z*rK`lE?v6@6~8148A@SEIrd(EhF<=V1}T;3k5X8=D2lag*)lwV+F**b|M*33P5r^S z9T?mE?9)$0-v&_sNq070{#0IgUE$~e)?_I@5rwu*{DY+bo3s9umzQIWJ+7Z#zn)KH zW4T~uG?o^uZ(YA)`3kAEBL5Z3mv1p<3rGo}pg*f#Uq!pOlv<&_9Hr`t-zgV4XSJV0 ztpAb3{>rsI27O&6bE*QX)^u#Ex(H>s`@|C8JdZm(^z|1_ciefna$+SG45}rDKe=)` zC&!bELZSD{%W0iN+DOe6n_JD^=s)Hx?!W(mt+yU`>ZzyV!o&8~wm;tVN0cn`yX|({ zqWAF8e?GFl4bmy`C#XHD{l7;4aao!wFyWuC^I(VrBwZB5M%oM5Fi>}~HNoB#5(I2l z$TjlpS~bn1o_3GExx!?5&pr3xfap1M=5+1AM=m*3Nj)DszIdDEMbT04ed^&wC& zFz^u@gd{2$02mEA2B|tD`@~#-jeDlU?u<=Fw^Y8>5KP0?gv8aXKuDq%at#SR9lV&? z29Xhd;P8hd+o;r7db_Lmh~N_H7BC*mW@H3R{H5POs8YrL^+D%d3bo6H+J)#SU)cPI z+U1yxxxFF4Pr{@_Ygj&g(w|Kzf2>0I#Z_0LTLApK?Y7(JpM8#wrY>m8+Q8`#cK5vd z&bwd^1EmsM8biybLPqhC4Wrdw6XFj@AQ&1;9#miDuhS9&HkqN-f67Q-@gu6p1gJqU z`T@g_?NL|$@=Clv&O86S3op7*(!x@b%dWV5t8rVMf5G`!1V_kW^5IwWEI9I0{7GPw zw?8RNek8XQJY}8+v>_vl7b+))ogup7hR}(~NUn})*qY!xTT0k}`A4v!(K&@N0ERST zu=#D}Isx^upZbrz4Eyf4FL17JX~9szH_N`+a?34|1zfBQ8~*6(!Iqg>63(|l|3wMd zmeLfv7e^=2@Cwy5^lkA0Aw66Yn)L}wy<^a@B?(AY2xnZ?UNs!2`{2clW%wR9_4}}L z8;6hLDr*YE0WtFS($_QS+r=1g14HnUB)}O8k;@;&Mrm>30T>9f6^$RXw6w>a7xHH` z(m*&2Qk@-F7^J$3P8H>;tPSEfF%THcV{q0?Ify_c-GRc7gj&0gAo;-fmO7o-{!5Y~ z0FaVom>-J8g0eJJx|C4Z>&F1ze9;{{TF6377QKQyH8@&`UB zIoo;hXO-i(O@EF&`pA3lxpx`glKk7>{T3q!^=s-+Ipvfae|;lX+P^vL&Erov9;@vN z$zLrfQpbcKL!1n)z6iM1^OR_T_H$_D-`R};1O6g+Ho09y{$Bdw*4=pKf2upssV35C8xRehSwtKIKT&5 zY!FmDY)F-Pa8jJwriKr%ZQSL`>V-EqdI_J8pI3M2sK8P`&L3U&`7#RJrADr-)$c!P zE)iA!Q2;{~gr|ftRn}~(@Sz-c9>Jf{h%6x4b{!T^Ee?m?DKDp^(R+hmvPKw)k(FPG zC^o@n?U4YI3p=zOV_yod!$;ZQfmpCZYw+i$xQH{exQ55rYy8bkl_ zL-Jy%FdPmvOh`_TSEG0aM1S&#p1pd7U$h8$wkx%*Z=^lK8OQ}c?7`4~NhR0r6@DWc z$&+&-e*MRfjDI!%tCh=F3M=#p0)fED+L6sI&3Lr+_-$6MSaJV9?>8W1kicKEz}xY4 zNPXoieYU7{mK-ZfZM{Iv2+h@XVDW=LAxCq>MJerPTNF(VKk?#9V`@WCx<$UGHt$ju z-5Rd8@DGc;H#o6gY~$PiKI8W|{jpRNEuR!@rk%ocsvlV>)c$jnJeG+cOA)c5@x~i( zT)Aqc)8%^Zndh)Ae9^*%*ujKv0~|Eu^?9)otk3va#3E)ADpeV7o^$1oTmUPuNp|w! zw!KXJ@RMo?VxaWLPAB`~=o3_*TjO8uU2%D%+Nn#msJfGBU7m!24cZ(zkRb%v@W;e34SYGdkuort z>eATQ5_A1csgVTLf+>KI##&F}LR^yEH~fMP84;+&Uoyz-2MYh1wx6ivE;MA|U07TG z5#%AAF(WAwwm1nxhH*5meLCj6Lpf^fAPi2zaQ5-$8&v$JY(+^1N`D4V{^%cI|1BnB zllEqJoZQb`zC)J zmsDI_Tv}3ET3*`T+P& zdGciVtX#Qj`yD1s`}edt@6XX~V_yBou`yUjuES(h<^q*`@Z`U`3>n6NEb0iRy4igQ3Tyv$q+pc zR!fzW$tu`jYBp^dYK=~xGu3)a3mwEzqSigKw*0bTTm5QeG!dmq2<~2hzx6Mtxdbb4 z27j}=fSD;ul;<}xvEks08uTVOlVA>lx)(r)ZYfR`MR$xC+AHmQi681h_+W&f>~hCQ zG?>+{|M;V^5h}Smt7dXoF*Zuc>;@&qsnZ7sXsO2BnEQ%k>ABo}6*U8O<#%zx&<(ywQ=C#5pMbnvU4v(fEJ-o_gJ_8SMI7R21lr%#6pkrNLln#Hbku%$MD2Mle_^Eq~tj zzxVo&t(Dlmw61v_FWx#qxvOKUaec=N9UU`hYo*J&_coYkj{P)nG#N45U7 z3CAa(j9u6T4SvMZwwctHP7Z`_Eu5rjP8o7rwh*Z%Jk<;( ziC*HDTrhu5j%8x$&A{Pr?3%)W9m>7j>+X<5VQWG#)8qzniaa~0uOl|gUlo5^UQt!_-D8yjN-tE%d#cQ zu%i`qaqZf*6&02EFol#@%o#G&BBdAG=Ar-Xu^ki+*u|fF4JkbrDitvmxT*@QQ0{uJ z4&J8DA7L05&m~`jjUPQ`9N3@|_o(>8Dv6s@oGMwbVt-SK+sex7uyeSF_8$lZo))<1 zs&?uC^li}Grd*dR_fM%ZDjYair`+eq9T!rSjK?Jk>G`)r|B+8N$T$p0*z|!S6#3ak z!ifz@QOiZ4Y+D}KHX_jzHbU4>vVT3R+#`;wQU788msQaRehP1~w%Q;mPIO*~V1qE^ zVq>NyDdwi@^LbU`NeNG*WH7La!0MYB^fc3$JSi+^Co@QfO8~>xggn-oWFg;p{INu( zito?doaI5Re%8<^G3^AwVZ_EG8Y7V<)R2?gQ&wF)MJ4W1@%u2bLV;n&?{p{b7%_~# zRyAx*Ft-7dzi_i`jZ_mEkIA7ksfnB*86Fz8CggFSdg?!`4JrfE@YfJkR#f zV%LO(*i7&bYW=!I-qjwAeL~er8dK z2uipKkrO1tLyKJ#^0*K3kHmInZN%8)8XT8pC!?{Zs)|3v>LzMDliM_R9e`R;GqUD8 zJAKC-h!*^#w;U}upNZ3EmFHK()_VmEDyg?l*cB6%)OjRT*nCFA)`W!WgZy0ps$saqOOfd zQV0P{VYD&uBOwe7x!jf2)dz<<=0qbe#FAK)8&r<%D=VvMFdJsj@Jl5z%LURfHLCym zGZ^@3fu|cwH((4=3hfwyry8~I_Cw~-GZew<)YSzdX=Z*IVXbBF=+1&==b=&V_@9(wqp zn{K+Per-JtegDf}{z46_hzJ-qWBtb_GnM!b6{t#8`|4>xnHn2tC}c(rDoC%pQw2U( zbeWurbf0|iu@yf!amojCKETOB*tP!jQ%`evg~_R_e)Y?n|M)^Evr(|4-y^;so>j-J`7d+G%3QO4ken8X;lKFlJnSXjx_$iDEv* zh`-Yp!^{*d@D!%TDoWqmGgV&kTb{xeVd=-=IIZg6pg^&yvjHzB+t^Mj|n+aeLRmu@O_Shq? zy7Cw6Th`-V1KeOa*1S{uqYFA$H!Pv>k37u{10UhQp}L|6S&@88@SZ5~ zt?O{DQwda3Uqkq?x?+2rm;?1qf9xuWItZfyNtLWlS4n=Hwt9y@9bSt?yhJh5kBRCV z{!AY1GG&;Rt`1!YzYbs%@=hV?5WXIa`xNxH&}@*=gP%-UO$n0Je;O7(`&nr?8flL> zNeN)=1j!Sz*$6>Ti68spiA`AkMtBPhham>c2G>kBbzY>LJ1WoZN-gvx&QsCDRqR5Q z#30o_+9T&lYLtNR*2sm}Nc?4GWw+dN3ofg~F57Fay@q(Q(Xcfk{;WccWys6^T zc>D%}%KS^bfTy{6>;r!4YTy8T8YKcYu|Xg?)DEj7BJea|Nmn}y;nx{K^lYQWt_cp& z2mFZlfBHj0z?wN)R?^VfJt^k8PkCR9x$a-zdC2^)7Gt33zexVAk?%^&pxii55O;IH z(0NbDpxCT<(3@0g5sqs#IR|a?znFTjZ82CxxS$~jlKjg2)K)PTXxArYa$XF{PSi?{B zdI4gLv%w~s=O!pS{2*=fBXWYkHbrO&Z&u{NaN4`b4{WVso)nUKA~j)4J_din04M31 z9g#_LvRTtHRi(Bh(y>L=@ST0`@q8$;uitfVxW{+G{P*UJWVQw)6-Jn#Mnybd+;4p`4eViW2%|fW~)EA;HtCxd6n3X z#+*!(#J*vaKBv&*D3~Ssj!2Xwp=09Qo3+@9G zwMSkyYyD5ic6UdqZ?%;XZgZsNG25SFUsJnpzKZPh)qJP&oqO~3En~JE_27dK;szk( zk*+(6QgG26`1D`?ja~a$6~wc|?TVrPK@-aZYrWZGFgzSco(q+?o z{iiA!nWj8f*irE-6*Fa3$xWpHxYq;bn{U2pZ)=zA02$sL*fO(l(L#(>L(~KQ{xyU^ z-9r=_#r=Ne((lGO!bI$qTgAc5;#T*XYR{G(GAGWTi z6;yeQhOG$>lovmCxpjuIXWI*1FDZK0>k6?b2~pe;ibwImgTaNdMZTF%2k!%7R%uHo zp$UGLD}S7?915dK4yUrS41J8L#7j~oB?|dyR+=DRu8g)lQ0?cGDN}y>)1RV5jyvu+ zOz3<$|4Srv?s-2x?9f9iD(DMy>C&Yw%`Fg}7`yBQ8N#}iuo zd$ATF{w#*a5t&55XIc?cdrgZZASgkbaFIY>e+1J80YHmQJn0kI1}&{&CQlt0gvlSy zc%rDa>k{f8z<3we1{V=wm+gq)+y=Tk5v_l9Q+VIu!8fHNf)FMj0c_#f5Pocl#`c>Z z|M^^?{_$5o1-1g_&dWj#2UU0z$4?pxU_U6+3LhM);s>2=l4BZ!CqH1d3r<@cR zS>X)OMr_IpRc^vfQQ?tF1-;FD3>LZ&TVvM2q3pR*3Smj!%5VSV&-{d`B+dMdFYnD+ ze_EoaE6+%r%A#Tys8pA7VBgw~DsY0t|;o!2p`ZDFkeIZj}CXMt4@K zlw{~!U*cbj$Ru8#0jcz_SQEx|)i|5EmJAe0* zi!K5GJ@?x4@FNbVJvH34Qo04+Q-%B`A+f;_gxIFP`INc{g+f?yl22o-73s0!i~7?O zae_c}K_lVQ+)N##aPmAOOO{v8kIAz)Sq1a8o#(1lC2?}JRTs||7^GUPU@m7&1wK~c z1MxT-JtY&Cg)LkiybvT{m6ILMs;C zk=O{oXN`$RLgw10Ow916e?}~%WL8Vb0b`aZgoi?;)n@b2ABaUI_M>LV`}>Nr$D_$W zsN*=&*W^lvgA_?*-hccwAmKkjb$_E07bpk1h5>X$D$6H$Jn6$sMXIKpherN#bP`gR zQ3N_hiOY-CkUwfj3<8?KZ=41!)$+&vBj61KWXL{F4d@-)kR~*l+B;_H&Z#~09>f9B@OwtU0RXM zC|1bKpZ4y9*~6hcU(%JuFq$V8SOz|hg{F{a^yoz3RZK&004p~Xw%76xMYdDPla+fH z6@Ne_&IU)>{8e4aJNWvFpD-BjL^HppKf%@pX|evJ*YelD{uTWLfzP6l8dHiIE=}srE7nc*ps{V$>QSIT~4&WYyg0u z6VIB!{Iy-*!?oZlRkkKHxvuE>e&TOyZv)%Kix&e4Rx&SHvSiHIG15gab72XG6^{HN zE2m@X)Ty#R3cD1$B6uO81D;g=Pk7dV5DR=pZsEs*A{-A18;>Y74z=JwrpT>W@7|;J~rU3H|1uA2R3;G&kf+uk$*;9qpT^joMrG7g^{e0Y7DLZh(ra9 zF?>8vd}0^aV!ylDr!caK#sWvrj)}&Gd9j#-OJjiWAFI6h20}@;s#Gb&(w)2`kfJpr z88T!E3reS5@b}hjhj9(_Ek{Klk}V>*stRGYKR7o0*=IkS{qQbd zeXabyE$;i*92`xEV4{<_*FZFE|&ZT<)28o)`!odgq+){qEknf*4D2-lRu@9=}R4|VUYC4QV9szcn>0* z;=~mH7hing5BjgZ`f6N0`M~`TAbhAJ^z1Xw-gf(KH0111KmYm9;W^;#r&Z#{k0^$# zrlv*olG4ANsm_>e31w*zMX%2U`BICFUg;t3yNn;lbXH^;&wtjjp^ z$RjVi;xh0#e(LcUev#=JQ3BY}cy(Lom&)O#c;1hO6@7`?NsS!6jx8H}a0X$A>Qu4q zNG%fE6#Hj79C#BHG#kVZDd7|m$Y<%2r8rUz$Fe^5=ws;dfg=)^T!WT%C9t&|cHU{{ zZMWSPrH-eqU3y?HW88@vEW!buC0Qd@lq8Zi%>XT zwAA|rMchdFBM}q7ktPGNGb<7U|FlLKdP4r})P#fwu)Ic|!lqdL)1MyjN8=;I-9HiG zl^4I{b#(z|N3>cchru)ISW)a^;!NJJcvQU4|VE_Y}*|> zlwdoX%7dSB5lBU*Y*_6I`)0MDix#hZXnJh=?5&=ews^spkA*`^T02|1LJ`R1wO40i z2}}R+*M|;K$?uUoU5m>DG!0J}*ai&(rV}HhvGIgIF}B42iW3XiSVcu*z106T;lov8 ze`eV=yzB*+BheA9lUna^&hvX#51#xXTF#4Q=juNO59ZCEw_?SLbANp9d+)x7Rq$t@ zeKxkvJ@wR67`L7@Y0}$ozpd*vizJV=vG~0nyg)5uu1kP&Z@@s^tq}4H8!s6AW82Iv zf@voRD4^IN09R}fWW+{8hNh5h9Z}LUvxola2`8TL(~Ez4_g#12@ar3nJmN^K8HS=G zG1y7vYz*P}%pfK1Tw7D}KH&vAN`us0Y!JXbGO$EB8(1xh>O;pM(X4c}6GU(D-*fjp zM;&?8t+(F#_rL%Bl~-QD2uCh{oqZ4h4EuY#e(#-k-y!^|R4Dob#^X@_k6q4$ATNYp za$(mOyIiE+z{Vfvoowy|h+XW)UOPO)A*R^hvC;C+#m{25hpPunIhNoIhynA8L+d{a25ZBzXiN*Gm?2wCc(=Ysu5pMgChUc3y_Zk)% zCW3c_G_>Mz8c2#oM_8R>~ zYE2bAmE$;6;4P1fPbI;*3(PB&7`v(TAH9Kt4>=eW4To@Gquio}i*V*Qj-B}Umma35oh1PPAYf~MO=wRc zv{MI=h#Tai!dEY(!`2ow7TcY_%W?;)>&tlmX@@&wRU&M{C*!ULC|a9 zDV0nk64-s>#9ME<1*vvMc2dbLIY{@20FFx{63BbNFB1(=1cbHp!bpPrxu(MpU29|; zcF?n~Q^L|#V@xekP1ad9VsDrf{9*$E5sX;~@dsxR!e5A7|E!cW7$LM%2kRvt9lj7D zNW=#6SiDvxCb1w>l|>&&ULgPBzU7TL5E;2k?u7lQZYM2U0V;u!%UlEQ8NZ6}C57hk zEb)69+7!m>Fom~eA{lf!!?|p8eX{VAb3o;f6eS6rBf%gU*N?=R3vYuy!a-~xCt^VH z_bh)&7hynTWpIPYwH(kKso-%cdZ6QcvL&TFl9s{3W3crmMjSp`994 zFZt;3g$O}n&&i@?SZ;+xDNx%%uAbW;++MCC*DKf6%6+sI*Rcg%$r#_Vq3QQ>4sW0F zhojr!JC4{oI?KGv@C5~u8Zov(6HErF{2!_=Y*EI-vLB>^vuPE!s8eP=EhM*fp|far z28?TUP2ej|M+H1hT@kMJ39RgvWGDzsAwKf7_qNF2DusOdk1Ib;IrWtJ^XAvr*JDTz za}9In&h`8Jd+)tBK8&&55j}>l7k({c)jC~`RtW9X0s4b~!)p=DWI$Wl)4qj^#0WxU zZp6F+Bp5O&xk4Bm;Pu&OpW))p>;B($W5ndnRvql-t@V#%ENl3 zlQRekRpwg}?pldW%=lDn2%k8rIj&Tm^OS#`(-9M`l!!VxgCHiH)eJ%^4%=K! z>`nrz78t^II-|;o*}DqV3QWp)>H9U0k%YuHWnu;`6bAkh#SEN9n{mxYW?DV)k?3Z` zEZXF6@-%~Gg=q}Sus=FZ3w-VtEq}KYyB}ApD`C{t>hM96^@N5@nLq1%2sTXrKJqnmNHCy4B{Si>Z+87$Yw zdb@Ytr9@qWxTsW?5*tNy`)NT%ep&mHQYY z3y6uG5l5@!SE0_=%F0W16eEmPe5Owpjachxp(3Z_or}#^fPpZ0lY*r8DYs_uLYp=+ z_;r2vKD@AOIPXxKZDP*iEKV)|_HKNb?aiLavfyhp|3=JHL3ac8GEstw@wr*Z^~p*_ z^M}7#re?50Vc;)O@Up`}J9plBC-%poPw?-@|BVG77*5!F>#ebj5#Pyp={)@K!zLIr zEzQSFRA@6w?$aK8deub$h%6Q+6ikY6F>=vTd6E;Rm(VrmjPT}sDo?Cpr3S_lCTu_9 z!k=9D<(FS#vrQryXbE4=D~4b#tPOr4tV})vM9@nvV3!1EcXXUdebd;Xk@#~y&)PoV z$EX_L5_S!JNr<7|^v_g$OvBpWVKJ)9GS>}dRJ#vK~{5&4@Surfd;CUJw4tO&j*!bAX(gK{rX(JkTZh)yi^e_}=i z-3R>b7%`&NZFB(#x`ULCXSIq@5^b^V&_&oB6BuYy4kAdl$sbQ6-A&3Pb94IJ-e%zWVI=ZmpXDD<26=G+ zVXO4d=V4&MhIBzt>NXOP2_8uJKB!3ax zp9{S`{Go8mV~KLNYrPZ`c$(#vm4tSha)S{1+5gtaF$yyQiwR5F#oqes6~001BWNkl_;`-*>;l+4teJ}BIz91jSnf{U~G)!dU4l6wDqE?uoPPp0!A_@ad`*< z?`(VkedTjEW$90ae~DG53Cs@Ati1Wx2mD>JJuQZAoY+Ap-FjTB>?E*Boitx;5E`~7 zBy}B3vY>6?0Zqc}xBNBFjU_e{{E*njBA4*J!5@j$sf2YGS8)(0u;ES?%v7S_+|l@m z0g?Zp;zv#+@!f4b#Qti`L((5wo-F-G^TI7mcKeBw6zMcc$}-m-BJ4lx`AkLnjK8@X zU-norhlPqOysj27#YQpw2_b0!FgvOG)L>>7D;E(yHL|q}m8)0!UmrS7rD_>-xVq$B zL^9h?-A;DXIeQytdZRz!D8aH=XVqWqhe!XQp}CbDCb7A7qur(p@#7Vb=dF+*j;A8%I&g|?|tJ*JI-ErpXjuY30r!<8pwRKNy zZ+9uriTQgK-l?HZ?C>Fh_6EPs4hTdMyN9?z_gV`fkD*C6v+|V|zDUWI)dn>L0Zaov za0)je&uLv$Lj-Gl>FKtsT!Klt(OqLLG(2!;jt=nEVu z>(wh3cSzFe8LA!DpP~PG@ry|F+TcJ@n3WI`tT*@(Qa)!9U8{#Cgr|0DLi{uAO@v>= z)&xLi;nYq|WFVI!D1g5yd@g^0;x)FQ#J7?JOLw49^^YVlEky?0#MT6R_e+0tb~KTj zFFZ>B6~K?}ASqJ*QT@yaWB_ay&Fyjn$1vQi1mbkQ24jJ#vP zyF6`+ZKdI9LU3xQCemWpMNmNggl|Iz+|UnbXuu)gSs#;^Dc6+^4GkEIM$(WE?5sb; z6;zs#0NSaET>o5LT;eKwxngd(NW3oK#TON|9h3mKrs9;qI#ulyqL7X7cqF#u2X=N~ z^0K@!J%dAz@A~^)OP4OiY~N##J=Waf33p%0Wr_7(AC&o)U}FPtkq)!b1YCJ(dI7k< zP;smG+vt4Xpfe zx*`r$#JNe}u1`-glhd@B?zc*RIwCu(lsAAgKH%FaGSH{cArlzrY`p z$7i#}5Owm)&d{qB<#YXVnakFz6yY@jugjKJThkD?J_@U9zKc*VDn;&W7ruHxK|D z!cfwD0BDA~gAbIDY#2Q}!;Y$=x0>6q`3IkOyLU!*DDut2s?p<*KfbZCQKWy}b=Rd& zNwXs(s^D~cd~x)qX}-V^ipU73cv3yYK%5v`aPhG6;Zp-L&lTLLcr3h8_;tFXDq^EV zaq>-W)#5ezZA#%r*Wzew1eRZjqSy%Ow+H!K0wfh6NouDVeZ#aZ1`0{la_IC&0~W#_ zLO}N}Ssr`~aPsPp&$~Dh--oa!_H(Ewq-5S`sfN+y2ptIsS zFwx`vKt&ImdR*$tOD~u``!!segEIqgK8;3p%rVEDd(OGI@1QBXi%McX0&Q=+qUaTF zFsZzxR3S@y30u&{9$3dz1H zkE>02K2$MuLUDf4IYIAbIKc6~f8O_>kNzW&v`mGIw&khEQyq^z%)MzDNWgO`NQa6& z;R}w41pZA+oiR;=`$$p&mBM@t=z3g1nGUIoKefu^DYCIqFUK(X@pFKTaEt)`0~&w= zE%;$utgw+GUIn@^Oe zo{ODM0GwBU%DgMqg=4%gahq7Y%HwXPtZh7g(#-_aj0&aH`!#C`yx4eFsyIGOQ<3=g zO3f6%EISu}ZjqT`%;*~{e}pGvX|l;FP0LdqMic1}nUskQfyJ2_Bu7{6#~I-_ss60# zI@I0>&^f#a-AZn7aB#Y-X}t_3CbvP>Y~a@K=7ZnDMhk0T96|45XrL~Oy!vnD!Oj$i zQBHSBRn-B_4S!V0<;rss@A+J#Vh^dAVfAZ|#Wre??)$CMYy!j@#G|lL}Je z`$SqWqaC9L4HFH*P79emQ`Nzb*2NC|*#(|Gj&+wr-WfgeU-$mw-Y1`UlCIKFYMZUM z*=@JopwXBv@94Tvl2D#^Y3&h}Rd#v#T$o!#l}B4$i~FYC`L-epa36i_28(UtH=E9#QSGkNuCw zhs{XDzW4Y!B-JqxQV_a!fgq%8TLgCTQF2(ZnBMhk=1YrR6E>RsasYaX&Jx(LRVXb% zZsE6EUL9EYYNsZ0{WWY&AaHK@2(F^HRdXI?%Cso83RqxZ_vQ8aT6TN5(D z30nsi*4n9wT>s4hzs_0@IDuTAY64CjQADAg5|S3%N6(h(qx?AEJ*wkkVI99zPzP&M zc-0j)!V0!#uEnki{YVEEe%h&tT>lNqKOV2ZU2dF{IW>Z};T!w|x-ngiVKQcF@ai0#CP4ea8Q@!`%Vl=D0G z7@Yu4@u0}GU=;?zY}lIU5x<1WEHxTMu=rR#E@qK(1UzfIqSPbA?))C)j|HKalg3c9 z+(3cgh04?{$3kHwIwcBYXP3yK(jTOig{`UUbRI&$fa_;|j1r545h}0#c)wO%wA~;Q z!zS#RBydZdq^G^q|K=zbG(hqx<>oWziG{_;?_S53$Iw?xEK%lmwPxvmE`Iok84UT; z?YGzjMmPOwRkYKyf6a8^mjyV>i2zyhx7o1#>~^3~7>RC0NsDc$^=EAeqrNnRt{iJ? zaB?;`oq`G(9kHF|n^3uy;!}pyFl`)e7xv+M z@kxf8gIGWLnS`qtj*i%@7hMMzF+>3XL!fKRW2CRcyL(Ic%CJs(*W z%!sYqPxwhg3fp+DhP&UL_xZlc=X>z>2|H~6hr9lEC%U*0`$ZRC^!Q_sQ%r{_K-sf0nkSlClr6vNJmt`5AnF1jy{%}}Yazy1B=Yu7xC6RdDY^COQwvg>ZUemLht4sD4j7B6e) zya7WF?1|$`-BqRgb%kceBGY2AsN3!J`Ky9elU(jHN(D)9TG+RPt_f_HyJ&dLq{g+s z<6gzdJVqzIivJll;sB3F_bMc2ukaHRH0$UVz$PQYv8#|R9P}HC-1XS?!9gaViqT~~ z`3(98xJ(SIeq;l#1j$>b;;A2LA|F@s8#4XDYC9ZEwsM7hpmWkl-09eFzx`gHwNxbz z=CV(g2i{;vwye?$la_y#cR{mAExB7V<-?V@k_%xKvkWR69bXps4~NXQ^6(_(q7u}PG?5+IcK1g9SQ-N9gSIMfkObQ6knb+ECJx@EVY^vvNb^{xm-aVqmc z;2G||yu>rl<6dt^qu(CzN8`h>8jJ(QhWqDQu_S#;5pk{d6EvzZZG+5g>)ftx<#|s< z4?6Q2=l8!?|NCEGj4f~5jK}0)Y|flHIG=`d<04+JuZ9P{A_7&M+kc|}KYP~!;8t<8 zSLI13UH92OV;fgo0Na>i1E!mjK!7CF6iPye0HKAFKM6mC8hYQ*lr~ZF4^WJLpB;DznZIZ0zz1iK_+1c6I^0vC#Pak$HlDD~Iu^s*ywF9eQ znYN?b%fe*@3(;;yhAHarzuh_W> zd)pGja(z1O($zx)C6d6c5xjVh@0(26-EhP&i>MT$^vY+#z(AZzEfrJP07qyZw#nkm{zCw^QW zd=KLWD@Z%ZDHomOpE5!jC7S@mXPW`?Vpfn(pXJAy2JB&m49ipL0hC-ZLo(R3j8+>B zfIo}_^0~x=b7!1+#@>7H?Fu^dkVAj>KfhZM`#Epdf;BT_;bu(Ic`}maJo#JRi1L2R zLJLLc&Y4b|M5-^I#$XEZnqUJ8f>L9fX+b9%glIEuN7w{Rq0-l4*T6<+w6d~5=@;Wl zv#o(*nEC#zA}7;+6jU7VS2dw|sKrv(2vhWjPRhY}qv>G`xGl`gxxG5+)@*B_lLXN8 z;nAZh9LrZ%Hpk}N(0^|Exee(|`>ETX`ifWh#30(niWQM_oO)%msoB z(e>2V*Q?m&Dscl%PQ$>CU#4PzsIRYS{}RuF#5LO*D2S##fd&JWfQ=G`_Sgj~fOa|& zyv?Z*ghtXOTLXfiV`;$lH}DZe5!nzCCq==`w*>*V-;Y%p$cXr4BLHlCIxqA4!@&R$ zK%17{+2)TznrtWI;VZXbC zX!xy(?zSd!E3amu1;u&Xzin2DJ+b&WXPNLN40HtpB?3<94kWSZGAB?-rTrFN-VVU$ zudJ-zwr~HvHyeBq?5dh={r*ahWydAHJHtQj7oqIXEh9DnC;6mPVgryL_jc3`HuFJ$ zN+{nLJp^dL07YyKuy>AsKAC(UWREDYJOvOOorDH#e*>RVBreEMT(;$eo*;|8&p!J+ z{q)nAEx^b~&;%2AZB3dyiTslLGNz}x>{X&d#UvaR*B`$<+1Nzu1)b)9ZEQOToPNH! z9u-GH5D~T+z_qX6*iBMu8|IBHolOl$kalW7N9hnKMgI1PQl!_B{M$)Uv!{U`=f9?w zN7e1fss#S~_U$`)$H}mDUT`n!D97LkbaUG{mEMgDC{+`FPFH8q9I>tJGif6<9TTXo zp+$;PsenGXY z+%sy_h)<_~dgF~Z9(m-EhaGX;ZU@kH{d*kbUB2wqpoL4;i4HZ4PW!K$O#wpmm=otB zGd!K9DSi4eKL5$KKQ5V@PD1CR#Ji~iNT~MLfEmk#F-oYc#q{=k6+J>lCX%gI^zAps zZ~4Iw(R2z+lhS~lmV?$c{x!9ny$BdGfV$WwyUMrS=9|BhE@)x2!1O- zS1d!o$N`Dj0jRi1<^}0cm}7Ei=JJn>AQwQ)<-whlimg;pV0l&9j+<}3*dd(r7yT}n zsjaQe@!cdHeQL46Gl#Qz^X8p<&bbF2d{A9o-R7I)}rLTM6o=>3XDCU=bXK7=v`_F&=b9@P$bmB?advoJW zH$t7xzu^Z-^8gt-OvsCb-K2>eXQ|_)*8P(UDc)@T{ri*C{`urSv%bKF1a;YU zR@#FOYd(^De<5ZKYdv@&)w_0h-NznJIVi(l8cf~(yV}nc&8t-kTv=7MlWMEJ$!EKC z9~>br9odDsc;OFmo|7(|w2dcRebbO3y<;^zatr+$9L%3lTTn(X28e;u*JrF z=$dhiHdyNv1t3KU0&L=_QK5yOx2}Hw-Bmw&cMfQ#TMWOL{(wzQOVh!23ct_4#i%WWe;kRPK7D$| zGsaOl@38(Kmxn5H^+A&Xkdv`+xOwHeh)P%CfLlf7?gIy4r*V$a>B85=e`{M%eKww( z=Jb%h%LAA$Dri=(Rk-&}S>eiEHy?y`jT{!Fq6+h7TDfdGQF7_K_{j~lT`rn%_O0tH z<716qO#T`HfQyb@+j>)fr1Z^ni{-Z<|M<#$_St6_FJ6ol>(fs^9aB&Ziy8)RKKQm< zZ^IA){D1oSb}EU1CMLe4qc{5`XrcIWbVHn>P-5BY6s<(0`fWaR%U~co$kY5lq^7J) zxXb*TL^_oJ`*X3%fN@NEK-JRnFq9w0Y){w&=d-CfwVWUqj)`x|LE@4u+DiBq5`Fus|C;VIT7(<-n? z#YX@q=Gl4FD3YOROqyEXOa#EC@NW(g?AAs;Ze6qrIidR1vu7`}tQIY%oGcY9O_Nq9 zam-?vFk!;%*_S0Via;jFIkHR6mUFYal^7l8XEql!beff!o{V58AJO#l};vGlEw^#@%8VNKJh?H zU6^rTcBBX~Jda~vg*`xb^Vxm=Dbu+sXy#qgwG>9y(7B9?4E*}*uSp1|VX@)k3_86A z`+(Q31qByPL$o#s`DJ zd0)>%>O1eeGjN`N{`vP7o_akIr*ibB7eylNBnnv-hD_$;*)>}>zeOpU zd}h&e{gqm}3cJ1`a7cY=BEBraJ6&?VV1&MJzDo56Z=Zi{#iH|wyrEZS6JW|A2ghi_ zC^^Rz#VNvnZJ%0nW~yr=$pGO?0Q(iN+}-qm#T ze@4xk6{#`4J4Fuo&Vf98T>nkkw7eh+NCZ1BVR8hA1`0c?;_(VWFUm#;npM+a1N=s({Ye%8qr#^~7hz55=!fBezMPdxDiB!BWr zC-<-KKY#wR$L}6}r69LS!-3eNOpwa9j#1n}$wMGA; zqEDg?SJu<$DcZ0??R`Yy5|pY-!v0y2NVc2L(Gx=qQrDDsk@8Fc(a)C#D$Bm+bhStv z01|K+gO1jJjE&I#2-7Y)8VCM4y1``IV$~|vpZQGHhTmS77zv~mtNT&A4O2w^IsQz? zwhZ2i;u!egM_d4M78(p36C`%#H+af}{C#7FY$&*{u4cvBuT}KNN=2043I}V;`|O@d z2cpqtyrG>;#-(T-HF6{f_KJzp9Rol=Tz4=6HrH>$l1?Qbi9@q32ZD zy!!AfF}jT-r)JRz*f~rffUM%>syK1s^9R7ESu1l?#A$n6^h@O5CX3Gm+HH}64LZ2a z8OIjvOPy^ww9u}LOdnjGGJjz#Kqv0p2HK3JS+rZ9Gn8z+OcVHev1mPcF ziWp+vaKkOBOckW^{!8lI^JgrWZ-325%|yiZ^~dr~Pbk_A-nf42Z`Ex&p$>t?O+Ud6 zu!QEH5sg6j9K)!tqCd(zM=5;dc~&h5x6#L2n)~nGd<_U7^zA=oW zT|UV{=;0cc`PwXRRyu;IgwIr^A}rUUzIw#N(is~2AWGLu{!#rsg)oHB3b5W#K*DN%<9 ze{6z* zA_Kcw5gHpCyH@n;T8DCx;hy$+{tTUjLL-8=XB!%pd%YN|_Phy)Y3V%QlsH6?L!z_u z<8K(Bv_fG&K&vv|6$7gNNE!fbq3?9ut;GE{f9#3BE!n*Gn5qPNV(vb3y9A6t=PT`i&JVM!Xc#LOsiG}QVRGKnniyGlhyVexA#U3>Qa>dFh#}5) zWAt!fvASpSf6X=5Al1d|f2-8~^Jk=YKH!r9q3I$M5>;vPuMN&y*_yziMVx0zrfTs@ zY$-XRcV$w0iW=7XXHp3i(Vss4MQbsVfO63jJEfYQl0W8wM{Y3^FOuNuailFwVng-7 zK?A>@`*jOmB!aRu@z4cUU4JhuTHEc>^)38%$FG!lyc3r2VwT;Dk83his1N8LZ%7AoAb?57OjK;*hn?-cVVlIy_BU&UV^QJA;n=lSz9GvoqcPAO8p>;mOj(sG7nM!YoT8wvZ z2(3$|ouY4F|08r&HfO>2mCxIzpkSFHcnPyDIXoPg+a+GQ7>Pe|I*5y|4~^YeWC@6{ zHIN?=exq1e7*7AOJglG&z0XMl)N!uCH6 zh(8rS3Y|_N*ns#WP8=g^>u9ErG`W!^n%rtzCuQQ_;;aJ4rB^NyAT}iiH4+>BF)29N z_#pwYDJ5c)(I|JIFZt|A{)xPi5R#)5oqqs`H?i?305X{IG^en^f>GF}D9jf=!ROAM zEAyg2ARLEj4T!%~HtCNML@fv#9YxTzt)pu|2Wfyr10zP@1GK0PnB@ibY%OvW#+HfW><#`U32mGF5ZkOC1Qg<7%$PBkTzbi!cissb z7ljGVk|j$3tc;%e#T*TeFC2|9jd|(89+JuW8pA8wMS?tY0sA6X|4p&ku~5# zpoq-yF1zk>=UsPFpo)-FM%8agcA^I2^quW9AoR;S@tb%qsxg!J*Q- zQ(ly(#=?A+;N|cSLKt@7QiMdDW@P1`2H?a`H=7y||11}vYMsL zb@Ux~+;QEt*WGi^J;`LUp`qcWmtKm-Myb%qJ1@@M`*14g`BYlY?zEqY_&Vi3nyVWZ z1n1XwTBk%?8a3M*D8|3n+p1{g2I z@m5-26QAA%(*CSXZ0VwpB(yR4fu}eLa9GlSL~-G3IwsKZ8x16C2rILt&XU9zCt#!s zSke|i2XSZ1=pX_kwgCu&jh2g(CF1c!Qe$Wm3dZ-X3;-lS+r9_@qOV6p*yL{mLIM&6 zK;=~22!f5Dqz9IUpd1R|dxjvCn4w02@dXg_hAoT<3MKBa;PMwI66!(zbz;n?JyK?d zZ82#6Eo*TiAs?(;gNJ)${uE@WT(|j<`sq zwXH2iUmL1f`A<@TbBAx!GN5uv7v+y>fb;}ZgjjNSkLQ(A_+J;_1^P-d@PA5~ZC`&p z*n+S4aB z;g&EP&7-g>`@Hkd`^nF)!85G~en0(>e|alCkBh?Cx#5uk)$ZK-Tj5*24vi#CdJNfx zj420%ixWUT|0tCI`Jey!>dUXd=VOmPhLtir0ledmJ05cAAwb@DpM8IR)Xy)v@FF6@ zInn%6vbty-`NxtNwbZcxO5Elt+2M3^+RsFy&7P4p8!w_*&>$IU;}Du{>?l**9RxAz z4L+&jM&2cjs^QrUF0sqRgNU3^Y8|t<^wt1|X5@rxez$z;bKY!qGDS)gFQ%-)5Zx6VRAuIY)Ci%tUm=-Uth~eE%(5mt!rza(7oox!a7oBERrkX+dvQVPooVULJ43Gn!zHj*iAA~es2Qp(N zS!P+2IC$<6F$K^?uYppC3bKx(0f~#PUbub)Tg@pIY=ZLpM~@keQ_)|3`DL-`R*VnO zq$=xYDsZX_Zmu%lVsk6@lvLI2gL0SRAmW|TpFV-vYw@5TM4H+)owm&7z@q%8r!vbb z9Qdqb{qfINiOHZJNld5>y(xLmx6QP=FMm+`;DZm)M@m9iGA|334H`6P=8TybAHWm6 z)EQ@-0ie6}*U3rG@-I|Pn#8Kz$v8>!-+cbDjMA@vzlR=rh-)>^@&G0k5ZXcg4d96{4<`Sy`+aaKT}Cs*B^ww2(C`o5{{TxoL?ELu zy%7qBT3cHyt1CAfu-VF$D{(K-(j`kvCa>1SaU%$2Q2AzcS^p_I1VL4X+pgU9vtavE zA9^cVv*XkqM?dpiVAi}-*Q`4JfCCQLYRj!KL^%4W6NZeKxa(nF)#RxRzsv0u(U(-n zM$XB_|4WcR;$n-M(}r_BmC-rn+lTEDXyE~Nf`8w){4Au3BuCY%xAOIecpPl6m2h#^o`lZ@S|f>+xi=AY!B%ggAJ0Nx460n*uv4G#y9>LZnr^G%tiaAzC= z7)2#cB1A0q4F5#QuDUXvL+R2Q8n2`QW`J&wqW3NFRZSPp*CvvE1OC+r?V9PV+I2P+ zXbzSJ&OP^BY&^tlFq}9HjT=$0O#bo5A7f%1pMYO|^_7b(j}P$f*Pm#JAjUIX1%He2 zU(=fNgY~<5{T0G_r{o{N6L47M$_&L$&zAW3s

    >bX`t*EGjdcJtI}t0s!snPldIh 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´g_&;~EKQB$n5Olk9ZGFu8LvelO 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 YA$p7weq8J$39zZD{PV0#$vW(R0C&H<_y7O^ literal 0 HcmV?d00001 diff --git a/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json b/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json index f0e3ac4e2..7aa641214 100644 --- a/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json +++ b/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json @@ -4,6 +4,10 @@ "idiom" : "tv", "filename" : "PlotGalleryLargeIconBack.png", "scale" : "1x" + }, + { + "idiom" : "tv", + "scale" : "2x" } ], "info" : { diff --git a/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json b/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json index f8bc2faa1..f9614e449 100644 --- a/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json +++ b/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json @@ -4,6 +4,10 @@ "idiom" : "tv", "filename" : "PlotGalleryLargeIconFront.png", "scale" : "1x" + }, + { + "idiom" : "tv", + "scale" : "2x" } ], "info" : { diff --git a/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Content.imageset/Contents.json b/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Content.imageset/Contents.json index c5936bfc4..2f7e2f531 100644 --- a/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Content.imageset/Contents.json +++ b/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Content.imageset/Contents.json @@ -4,6 +4,10 @@ "idiom" : "tv", "filename" : "PlotGallerySmallIconBack.png", "scale" : "1x" + }, + { + "idiom" : "tv", + "scale" : "2x" } ], "info" : { diff --git a/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/Contents.json b/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/Contents.json index 59bfa5a6d..387ff905b 100644 --- a/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/Contents.json +++ b/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/Contents.json @@ -4,6 +4,10 @@ "idiom" : "tv", "filename" : "PlotGallerySmallIconFront.png", "scale" : "1x" + }, + { + "idiom" : "tv", + "scale" : "2x" } ], "info" : { diff --git a/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json b/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json index 6a3dcfa52..dea6e49fd 100644 --- a/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json +++ b/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json @@ -12,6 +12,12 @@ "filename" : "App Icon - Small.imagestack", "role" : "primary-app-icon" }, + { + "size" : "2320x720", + "idiom" : "tv", + "filename" : "Top Shelf Image Wide.imageset", + "role" : "top-shelf-image-wide" + }, { "size" : "1920x720", "idiom" : "tv", @@ -23,4 +29,4 @@ "version" : 1, "author" : "xcode" } -} +} \ No newline at end of file diff --git a/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json b/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json new file mode 100644 index 000000000..16a370df0 --- /dev/null +++ b/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json @@ -0,0 +1,16 @@ +{ + "images" : [ + { + "idiom" : "tv", + "scale" : "1x" + }, + { + "idiom" : "tv", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json b/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json index 9c2fa6a7e..167022b51 100644 --- a/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json +++ b/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json @@ -4,6 +4,10 @@ "idiom" : "tv", "filename" : "PlotGalleryTopShelf.png", "scale" : "1x" + }, + { + "idiom" : "tv", + "scale" : "2x" } ], "info" : { diff --git a/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/LaunchImage.launchimage/Contents.json b/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/LaunchImage.launchimage/Contents.json index 93e7c5fb0..f4a929b0d 100644 --- a/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/LaunchImage.launchimage/Contents.json +++ b/examples/CorePlotGallery/Plot Gallery-tvOS/Assets.xcassets/LaunchImage.launchimage/Contents.json @@ -1,5 +1,12 @@ { "images" : [ + { + "orientation" : "landscape", + "idiom" : "tv", + "extent" : "full-screen", + "minimum-system-version" : "11.0", + "scale" : "2x" + }, { "orientation" : "landscape", "idiom" : "tv", diff --git a/examples/StockPlot/StockPlot/Images.xcassets/AppIcon.appiconset/Contents.json b/examples/StockPlot/StockPlot/Images.xcassets/AppIcon.appiconset/Contents.json index 340f2376e..b0ca3e5b6 100644 --- a/examples/StockPlot/StockPlot/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/examples/StockPlot/StockPlot/Images.xcassets/AppIcon.appiconset/Contents.json @@ -1,5 +1,15 @@ { "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, { "size" : "29x29", "idiom" : "iphone", @@ -12,12 +22,24 @@ "filename" : "Icon-Small@2x.png", "scale" : "2x" }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-Small@3x.png", + "scale" : "3x" + }, { "size" : "40x40", "idiom" : "iphone", "filename" : "Icon-Spotlight-40@2x.png", "scale" : "2x" }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-Spotlight-40@3x.png", + "scale" : "3x" + }, { "size" : "57x57", "idiom" : "iphone", @@ -41,6 +63,12 @@ "idiom" : "iphone", "filename" : "Icon-60@3x.png", "scale" : "3x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "iTunesArtwork.png", + "scale" : "1x" } ], "info" : { diff --git a/examples/StockPlot/StockPlot/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png b/examples/StockPlot/StockPlot/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..ed41df8b9925cc24f19a5e0ebc05c044cae69205 GIT binary patch literal 4375 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 RaR&eZ002ovPDHLkV1ivu7W4oB literal 0 HcmV?d00001 diff --git a/examples/StockPlot/StockPlot/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40@3x.png b/examples/StockPlot/StockPlot/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..8f28e03f486dd702814c13f143eaf55ce7decc05 GIT binary patch literal 6852 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


    *Po(Gw$+=1KbB| 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%0ANH>2 z2!pqo!F}9TQK>3kii%Ei>HO7dy0moK$*qwlDcGc0uKtqK8-Ud>VT1lo$MhZaqNnU6 z2_s0Ed)T>%^4=$-XBiT5OTgyk2E~xcBYbl?FGT|ev>~UN*jegz+j1L|4V=LD`(s@d zUIDKZSve{P6(v2+ELVVH;X1D+^YIz3# z_mMU!Fa<6NvT%xh3H4)A1qsLu{-=^WCd~4}_$7OE2fpAw@E>*UIbJH}nHXt|K$1o_ zl?Kt?a=GwOPHOdJ0`=i~y`I(r?G#!%Np4svgiPA^d4IgvVU=couw~I0N|D;^mY|0q z+r(~Epi`zB^kD*g$ik%y*?K6-dj?z^ZY3>^~EbRt+jFUm!H0yR*s5w;t}=u;s> zc=8; z#zV5EG|8|iGd>>ajcp)@{737I#=-rz40#=?nQ2Q2+shCevn!jEaDTyg_J#d6byhDt z9HUr)GY-ABf#TVfV&yKUeJmZM_{t#TN%O4KUcHZG6e)eSyC}#K{!k7g*31rWR2tAR zeBLB*Y8XBoCc=~qe<(wo=Ku80eJa3p2z zJDahFPB>z`?~+7tYQ_Acu`#Dnoy6N9S`?AkOh{4!Bz?HeK;)2HssQxcY4aHTQmeDj zjFb)L;TKDci5yxC7kOubf(Fw`!e)`QacG4D^+m(H2q*B0@l6Xu2JD)wBAN%LL+E3r zA}W0mKA1)1i7e*m?4~^qP<)F*k4yT}cZNvf7mXaTfQcb~jWcG~wwRnMdMace4o>G~ zC<71id98q}OB5%sJG**?;^Eu1RIl2P9^R>aHS-WnIlgO1?V)r{;n(IOO%L7x#Z0=gjl2=XqV*f*lEjI*$Y4n(c;>{Xx{ zugX*JS89ZdbP9oHDgsq)qW-%S!qx}6)+6f#)`6j+bxD$3+!#L(gyn|))Mq9R%^95) zG1KxWllaDw&vv&(0lM8=+zGX{8hOQ*jU9T)FiPA5qi$;-ST8VN>vNIlUaA({(lA?( zlZi0j8>0Wb`?Eh)$--BqNLd>)mS*#W-#*d?+#GA%2> zn%sj}DH?Eu0SmKO)l;u(lXmc(;{-a6|F9gq$Ei^8=trUe!)n6xmUa_l1*-NGU)XIy z!xczwRk%3X`a*s>Pks6qTPGiZq59)|avV?(vQy@TEplzLndX6y#TI~l36c+Pr@3+M z4Ssf2Y^P(pSL}yXB$wRAISv4tTK#<0z?jipB_1}3N@qEO#K{r`bGP@p?s8t;Y(Tl> z!eZyYhe3#51k$?EtAUXqk~JJ0(zXy1yPb7J{{l{Z*Lii;HWUA}l&}2> zX_mUp?!T*GH{Rqy((c6$?gWD$FiQ$S1=+W zp0Z+m*fqw$93p=|B>z*cCrhFN>CCvpZ#iibZXR|8#kK-h-d0$AWvLqU%uW%|t-k8Ro#~6aMV$UTjP_~yx=g^SxygNAP_dYt zqpfHcyWVT2a~$0ukevgsB@O*>r4ssAzUUPAx_An^pGb=ap8^yN=N)3be_xf37T;>k zuPcGUfxb#+%CbUw#(r5|LatxM>p~rWMFzqX@cWU0xb+QeNMh(uPb3`9pE%e*@3GRH zIq#@5YVupH;8>2#Uo61GiMxy9Bq&bb0-51(OCrkqQRHL(Al5ymp^x*r1s(i7ziS&m zwE1|{A#rXX%I?AiFc!82qb33eY>{N~UH=hAWih8?;#AcS=L4+%&)op7f>Sp(zgam- zPqa;9fx2z2VcRLcnH=L(u?d>oHsfBLka!lxbOr;`*tOEsG9s=TinKJz2-6%bAP^gD zwga9c4ALzjbkc(oJFV*{ZN)9!G(al)95Jrvk$!hqUER$w5=!j_7HT8%)j zP~L_PELPme2vSY*NGRFfC9dW~XX5fy;Y~T>QmPxxFbEfyp#VdyKs#Li*v@iWc@Idp z_-XM?CQ9aeVYfG-gN7T=LINn)Ns}TtX3DC8jLKKNx0Eej|Cc9bs&M^lz;f9wg(tRi zi*X!p<=|Jvj0%;rxl4 zjG~(Y@x$UqvvbJUKX_ex2>b?WkkS`=j|x@3rcv3L3l8o^%O?b`BYkLb36rSJtCka(E5chExM)|w1m_yPSzCg`m=~FdCIhzBFt-WLYo$qw~&Y-^iPO$t>r~Ax$ zMohRzstI~wxgEWXO@bzbEIEtSGdvCa$GkQpV=1IPxlVJGN=+TVzgok{LME~tj}sCl z#HOM8#}D)8^Ez%2ENh63O?uA9N}*HO#?%F6BGv30#aBjDhC5j#n(e>VJ)onO~0mf=r;?|%H2 z*-PK)N)+XR4;*GNe-3z_sk3h=Y$rLo!J2q8>fl;?`g>2;!0s3ma0+mYO#70Rb@A2O z>5VCUP5>Y{F91Mmn81V_K&y*K?3fINJkG$HRj(%vHYDe(UKU~v4lo+eY=Zk|y4Y%x z%k{$<(oX`ph&RgXWg%Za#;&#v8X^}16c+%LGv7VbkiEXn;dDR1b8OB>y{EHOi3PD5 zKlkQrVs%Sm{uPMnd|;XFs43jc%gj51#!L40nPR~{sn;eI<}$3r$dQGGEe7lM5X&(n zv*n*EtDDtIpS8isPIhc)zfUN84!moUv-|i0=M^%^{?acppxxgBIc~k>BSi+>_F$h{ zx#Sw`V-ti7e4G=M&s5seGa0g1$u5jUUIud>;ROi(TbH^`&C4h0WttDO2jZRH`|h^S zwH#k_0-e6c<5K&^RTT=whCDYsJRul&0yhJ(bA6u?0S8#SGHjJ6TVavUDk61P?owt| z4}9R(f7lY`WCU$N3tL+n(COIbLaSK6E}m;UWzY54TDjCa$eY%-iMGL~zUi%;V0UfP zldutKWQXTNC&mo;l$(V(%fFt!^omcwp_a3BZqRyj46oR*V|oaW4Y=4%ES~SMd{Efy z?tyQRD@C3;4bi6)*)-Qhn+uo@M$S9vPI&787v7&nX0{qa!?r{0S*HJ;8>UquY>v6D zlX?-KyuVUWfEz@we95}uQ;DF*KlU=Gkj%CBE1$9iW@4LN`XalCK=qSk&WmFi@4-nzq|j(Z?92prn-1UYnq3N=x>o?_hjWau{M?I$lMc{TU&z zV%w3in6jJ4WT}&|Ek9Bet*6RYw#Y;aI|@-hE-!+z&>EB11&5hsjI1pxway^{&1k-6 zN?Met^!zI5K4Vu@#w97_>aW)*sC><{ZXf^TBIsZ)_q6~!skErH_P=g!M?)Mj9l`Ip zKKG83VmQ0G9Uif<*8X9ynQ%h1!=u>SqKQL}=;%BE+L^v58VFrBO53p-b!dB&7~|sX zBpad%Je%ID9gXtCUlds_x3)Gd5e^8;OM@p6tgRq7gu~X%)zhxnft?6L(=pQQ9`qr-Ryhhqe`-;=UOT z{1DUdxuYl^vn7;?d00G{W~)?3O7`lYWacg~`}H#Rf&DD+!?K?6ST5&{73RtA@VUsV zU>ky7%hMjbU-C&=)Xn-Wx7gMviADJ8DrW+{-Q&C;oNCbG7$mZReO2iUzv9K3q0!{x zxjB&Va#5JnaR0*S{#$CoF*O1}*TA#M>_X8Xsrne6Y3~Cx93w$`R{VHB(vEa-f4Wld z8SZ8?MTh*!uF%~^>`;3yL*eYv(|gIb3jxY#{m2%QZtDj&^8gZjQ3nhpH2uayI@FZ{ z>&s|jE_wymr+W3%k{9%Y;2J5v-sf>W&1|cu1g>&jHa$Lgt2*mkez{dJn}Ph35(555 zUH1MI2BwZWDb^6Ud)lhfL_I{H78zD*C6}>H{6Cva+-ekoISK$wT85tGs>00^qnn7- z-hp0Mr-_KMppU<^8>9!sWP;;PN*Y})eKhR(R-#T@lKe`pjGjZvG~cEp zIh@np{#WdT^tRlK`*yL~vhg%qY|!i@=q?DF&b<8pQ8de{!iu=Qsn@`Ex&CMAjh z#FG^q*K6{jb%l(=X$m>BA6$@4=6dflV)%`Sf1sQ={VtG;DloAUo;67raqE7L&tySq zQj(`&WPLJUFGn`D?WW=EY#1!&qlk1AI!_nvC9J`oSvew2ywB#+*YVL$$siZ0PQ77g zMObS#^NMftOhEMvk8+hGQ`99@&%s}_zWdMTpQnn>f5?rRNe>!dLm!H#^c;v@wNLMqk3H}T8F>QJRHS{^`vAmp(pAVq01`r z^7^#V;tC31TO3t~wf>bQH&hUIutgB;VyG4kQq5Wjhfj{>zpdU}{NaA_MxUM}V&jSr zx-VRsYb!No(b2Hr7K8fVc0Do?E7=TX0H|4{JCMFJI=YxXyAqp2vx#|$GJ50R*W}aa zMKV`6qY4%986dYh+aCiSQTB7XMnT*b7UI&-YHFN@eB>Ab2b%e#lhWv~oJ`2bCjUyS{G@p+a;| zXwFoYV6peL>}F%Hj=w6OKS5f>Ed_95j!Bg&8rrnSwuCRM2%aGFYKSrOe`R9MCZS!Umuk zBra&UdiSlGEMXNX>HN}@0IHiSV)5@~hcRbUcym&(>vi|`IBREc<##u=^$E7~eeP)J zrvKA4>@b3+liqg|f&JtCO@*!=+E~9d<>J1O%La@_Q5cSlYMM&`sa6O?gS4R9%r)_k zF6J$O>ghB40OYm%6XTRJvc=>?5wsJ@8eDk&(ZPB^E@M*hz?^*^anvueJgb!s=nn^@ z5sG$Xt&tVfAWj+Uc$7_5xle#cRH#niX=H`^kitN|YdAVZ-<`XZ0+?fT9S%QDUQMpH zFDP&UvSjbraZ!crsuYf@rJcQVMlYX+H2flC^))hs41MNM-9eeJ?=O$%wqZpnU+KTO zMF=oKL-{ggVimq?cj8z!b*|*r!9v$>T-YEZ#Hz$QK81ly?3AV6552Jje;-TXU79Jt zERqr%{Gt7We$f6wDV^_j8Q!k-ax=5xyB#htnYC3A(mTB>^22E`RN-i%rcYp>SS)`) zT`vDiUJdUd1E#qZvrp7rUW4f~!~iful_o0zF==YW9VRB?s6K6h4EF;)-yrNFra#(roZH9_ii&TI>K-0(dj0Hp z^>Z+VT0#%(w93+Aj9I6WsO z^iHn_?tl4P(==x?lOu`^l?a^AuHA4gyqPkL4)fXT;sYb)qf%bhL5H*G$VWQVx~iRu zOaHmMZWjKj^gdHJ3oI4fINQb}n`nw+CB@OUw;EG_mT#BC`((Q$OZQ%G36o==0CYEF zQYiss9nPkCHU-ey2C2gN@zDU#Y1VSiU!TgbXYB40)#bOoxXV((%<~_L&1Up(5m%j}^n7SpVK)zjE>2aDdW6?!c!)@Qb*Z_{yVAh$N zFDC}bC`;x5df285^OBn5#t$L;vi;WGC@r(n!XAw?R7c55%{bftEHg~*wgDo#r=~?z z0O4`mq6B%<@Z#biw(19a{w&%doNg(2j(O#qGegaTv0OPGZL=j zLExl*+W^JTb*z}To6i(;6JVPHAnaI}#SwF_h!8pSQ#yi0dCL6+I#%1^C3IKeE^k*m z{%1&5fDNHhi>dQH-K3S$%+tPq8JHnkpmXN<)vpu5)5gF}+~wu5xBM-XS{{jb*py=C z^EQmPs4U}7%7bApMJJHVBc8l0zS#7f0-(gd(nVgEYCKx>Awi!p9CV}MWg%nD5A}6- zn)ByIlGf-anyQr^R0U}b`VlcXRO=8%l@XJfZkA@yNfl97RGF^0qFc2StyYEwW>q3M zYNpC%oLDpH+a=l!K+y(hDhqiOhBuJnyo2H=z8Z> zXiR@EH3jZQ=#bK*^ORtI2MkHw^qcIXa&5Kc zVAEE0Bt0NcKduNoLv67iP2E{#QK0G*1yM@z5&AYqiZ(>t3PPTfXumGt{G~%2Pn^z1 zxDpFaSD{O#Y>w=~!T;i%2aVvIm+AqQSY^<8U6e~UesRkVw@1Q|;Vc0u^_={kv^yfq z`yWo(HNgGjeRimW=<9t|`|Z5uhSx!So5#j|AERu3qEwslWRU7yOL7^!pVfDk%R@WntX4A=BK9CN^jO4o`c#a*nn}|?(qxrJqR7@RDN-C0uPq8kfbb?S=b%hE3 zZVB+9mYJkPY1%|1k`~d+5+|l&JmvQ3Y4l0ck+zCwN6C0^^ipNBkv7Si_H>Vz7V1Rl zCgn-XSB!sA;|9l2McrZ-VAjY0^*L7(b`x!ntX6l$g-y@{Ik(+GXn|6$WV)nbE&3%&6qphid8%PLm&J@2a7DCLFd((movkd;zU_9Kv69+iCAv9 zt9SaTuT-}$9zJ9}HF?;);BDHLvRUdALrh7!gR5Q)z;kS1+Ck=bAq_m4Z<~zo;pfnt zpqm4hO8;(ET-i-a=)ga0Pn@V{8v-Cf9Z3?0`DEQpdDKV{u3xYWktGN<)%%$|PR4b0 zvhpVXA5CZB*5v!X|Iw04Hv-ZzN;(7ug^keB-5}kKNWAHg+~{(EbdQDsqf?OX4gm=z z6!iCezQ^(V2exB-w)?)W^E$8B$*+BLhd1suN}aUh1*8G^r#7ccED;c<%z4dNR*Gl=(GhiDB6O%3&DKq2GiN!XAT zQ!GGU-Gf`#oih69hp#%Ga5tj?vWZ`N%m@j}^|OF@6yIyM`%qEQXpb=LgTWaz`CN+i zDvyT!IaJ}6Yc{mbHebCra8)fWwAO8Kwn4n=+Y>M}Phh+N9MqKM?4m?ao&c@E+HA}{ z{z-}k&fSeq_o@grp(N#Wos%<7nMPbzb733hmKb66HKY3HloGEYhV0v@>XJf7-*TVaOJ6aaMB~- zFE^VORAhL0TP%FMNJ4&4u_iU(yemgQpu;QS$l!}wgyAq4r~aScg4~5{H;v;E4ikXze^{vetYI2Gs@^4P#44O z%3R((RVQNSqIjXT>~+$f2ZdOx5#_24OuAuzz;XYlP`OqHQmbRl^1ae*N5u49<^DbV zKiFHtw*AJ(k4EGxJ>oIrxO%ytRUQG9nTkmcsfT2t*>Miy@)K8@OjP;@Y5;7c9s&%6 z*Hc`4??%i8si z2^ZB3hprr<7i8DnSni|azF~*6N_qi*JvF~x~F-+ zQMuAc_E|=j9;EKVz#!XB^g#-4*Vk@J@wU}ej*eee6N%TDt!5?ZsX#4CqnJL9kP0fd z*+b#7;w5spxpP5lbBW*<{OXSPu6t`8GGs%MfhIWaRtj9)c*##FYlHPC)VAa`#9W*g zVM4NOb(984+S-mK73B~Wjy9mX^RX1&Q4!`}A?KfxVmnx=5ccd$COte7bL&7!hWghY zO6Yo)>%(lO@E@)6TmCsYHScfWaCdS8?7Zd@fT4y>%~gN9MS7(%`hZ$(X6-1&Fnp*JiqJFbRQk7rI-?s4gq&vQE! zKD4x|c)r6T7=GIA^`>Q$NDQ;aad*wuJf4%IHl$-K@J3&|T7?KzHbsW+oN>*U z@sS57*D-|Q-540I4+1mChM@@qt%7|n(!%`qki5!7Hy78G7b6T+tqI0ky8rs9C$l5> zJ5xZp&kX=mGLh(;Ey_V!yl< z2e^|BysGr9l)pe53*%!pt3&g(0i;Y-@+6*;O^wU6K31JH&3{{0)Zlk@_7$FCX}E}Q z2myL}{_S-mZrCLkUw?WhBq5t7p)IQ91SUZK4oziyprJolhs$Gkq8I;?!gLhP4k6MK zEt6I8#pYN{^5$huWYenp8fEJ9I_#3OZARC!Es~T@vAjB!99Du$$@rr);`8Dw%+DEp z4VU%nRmltIb`Pz`3i?uJ10SnA#)!;IX*`l0A$-=wSY)Asx|BHTv#ILsGAQe!-EZ~s zttsIp!7D2C#G;X7&#Bu5-jx>U$a;iFRINGooU4=7ORFNHJ+x&{#zqGtzdgw6m@6Jr5hh!X4ZbR_VF*hg)gJO=F%ga{yXjj z=TG6txvltxI$5Ow zjkr#|S+s~0=$AYE(ATs-*7vG&oEk`>y(a2bwM^)2hLb`Ij_;0s5K+Uvgg1n!&&c$H zIrRLCAUH=r`KFm0?*PeM9)0zB9+xq5tlw2SoMm(EYklv)Yt6Y~dc1r%UpP3!psNA$ z+8g0aVlas9pB{q+*cp3_1&Q!wH%K}5QZrm;N+x*~YshVS5_B03i8ezdbd*=eRP76; zTr0uks*S)I!)5H=lD!@0g1*JHIzGTAjwUl{DlfS({s4(u^810eT8oNBKV+f;ZIC zu)WbWzDVWmLMD$wS=xtR3d}ZfGY+V)I2F5-pLe#66Ch2Lz(1wcDsJl=Mm$l>$}zjcHm$=O+CO*^zGw6WIR`9Gyy@9QIp!j(i}33@5g zyji?9+G${{b@#Er|7EuH%Y*yBwOvq>Q1Q=C1ybJaQ67lK$FNwW^ty*E`p z@5%dzEc%($iD#UjRK9c2FXhSPkEBuDUj>pJs+x}cM_1>_vYM$FwJqFN`c@Z!*1aoR zNGre7V`qSvw)1%2eQp4zo~AqAG)t2Ui!~qptf*$a9jk%W>$q#`;YB`%-90Vd{E84V zJ8DWaVnf)NX2t8#Ypkr4L`XC98G^T3ZG^$93ipmh&#CimFq2Zgo3&C`&IaoWS|O=2 zvu$f87_9@ZeFW~inM2vLgNqvL(bDWLnXQJ+M)=o!#pi?upS6FZG_>`Y#nL<+Tx^Bo zu$ugBJ=K|gsJ?n&Lpmwb5_d<_{{e#YpXQVChE66+*)!VcJO_IjA>AxB+pjubOTyt# z_}Ex@*}ge8Gra9##XO^sWBrT!7Yjp-AOLHzK6%8U$lCm$KTo-?s;ZBc{XzAKy8W_) zEYppYhxGkCL(nI&$@}hKr_EE+sAuJ?4f^A5lOlsmPNzQCW;dptoUrzLoxR+lNx zS;4PXlXkvx!EesZL+MYd&KTQ>z%3xs<4KXa$s|J-UuTgCS#v}z@Ak_;M_xKTEso&u zIJ`-R$(T!Mml2151c6{^tT7e5)fw%vgk#JGL|^#N{Ish5Qf|axON`Y%YeQ{FHT>SF z6~~75ao5}7Ma!0oBx}8R^6t9TnBaQ-WCo%%f&ax!EO#o%?Rt{C@zO-XIcvauc4e;Z z4L}V1750`@f?uua4tLny>TTYq7yGvlKTF*tA1T}T!K1g%b9zbsZO;oP8T4=4rk%WV zKYc(C7k@M5+!5-}HQqU~ohIJtg zFI^fyHVIe4CvVrf+{5;!$P~dH82-t-)DT$>cxC=)nBc4P*Ay+f#4=A_Yp-a}dF$zG zBI~T&Zws#C^d`+BVL#=)iQ_xcm0E}p`hD&7ZDhC+&_SXKly(FmjBRITVbp?(HZ*Ff z5)Y|bZs*jWFjA35ulUuyt4nY8gCIM}?1Z)AT>k{VATd`L1;UY@M)*|_9%PQ>T?)2}#8dF8E^7;L`uAilgrDgW5lD08$WFdc=#s&W~4t%H^r z-)dSemc&j$9Fo*0q*nX!7WBS`YE!N59sL;o{PmPOKax`B(EeAb1JerwjBW>eL_@3NJBAB8cb@Eji|}k9 z->Q>{m@1p;<6Nz*Tg}O`XF&hr@7>X~k7tOU`{M`#^R|!wx}+Y-7wx}kJ-_|ea<*YF zn<*Q*L}m9PERI2=a`f(MRbKry0@Q`6%@FUvO4I3_u`$FBTV{6jpvH?m@NRj_dXl*G zE#v#Wpj=)-9?|HWg+P=9K2(o%Z87L?ZnRMSAI$s<;)0fp8^5Dk*H_Zr&SMl(_44#9 z@n->Qu6*k2QUU{HAbo0ukCSAee}WUH?`Efoli5Zo7MkLpa@hNxS^lbDdZ*F+A8|Vx zqT4T?>0I*THuX zy83SI!`s!a=9E+!#as6(ssyUE@1DR!SBQa!h2VyE{DhwweWo1*t*p0N2R>toXw0rx zP9Jd~UzomDw;avXaq1;(UC`N$dxna@8izMieW;#Gsybv#hi`4x zHSikJo~@FeQ4#GbL457@;gax^TS)whu;ju*<| zH^IgvvCD!kQbe!ieDlfbn^ylk8iV8?a!|K3 zVW-mvY^*Rq<#wv*bEgn^k(7R-MGSjY8lv{x`@ra2$5L!BjcS9Tk`aPgDncwcFsZ`pOw;xA=C@rE3+TO*yi zdvh~Bk^A~>Jbzi)J6SJR25og>8U|}Ck1Y|jga%u8y}$pC!<`7H0Tf9^~Hj(Q@rOF zU!b9yM`hFXNd1w5)4Da#s|{m4PM&Jx8d1DbOMY>Xaj)PoRVVJ$Rhx(#BckHGFTH$# zIy1j6+>jxg7+vpOx@O8x6B5QXQ=+3DNIYDz!#mQ zxcgtxT zr=s^Fdhzy2G}))r89Sp{HJEcI6tl0|A?~*Dz8_807;gXY=xrc1KyJM2lj)rv zMU~M=YZ&g378-413KRzE*v;Nkj2D5vGv-wrucVDM)z^x6?M?U3;#SMsKl*7@`$+`d z1{&C7-u`p~ef-q(fpFtOZarvXVHoxAr;yC4cb5p8%cr9457b7T>M|cuT!KO2Xka_+ zJlV|^9Q8Un2;~2qC=A4(@sPhSYBF-#cUYtEv2BAGkYJ(>dOM>XYEX_V%dcO;YnS^@ zASg@H;>lt@%?_xoR43Q}k>rjztZz6&qlTMiw+RPb)Op7edd7adY)x*S{jrdt`G~%7 zNae0@li=0g+v=89io9pjJpl)kO=qs=p>5!phv-iLD`srLY4U#lBiq`(N$}9{9oduCEQWvmbedJKlPOy2)Octm$YlB*mM9CXx zgfrFXG;+2XjWG1fMNlA~N`|joI|4wMVUO?Px;K4v^(VY6O_XE5U-C&?(Elj(YICkY z>J9GOTNEb)yJnUnYy9wVUX`Ug3Oc<@hNMbUNKVtEFe~9Wd1u3&gcuc$=9Nfc3k{*}!gU)0;HgB9dc55DI0Vh! zZFwmBC@wII)gpLmLRCsve&^ZEn6C28=(HhMpzFDJGvjbZtSO0_Y*x6}!J@NFrcm8J z1?vkg+t}~-li=5I3+{Jg6I>el>-`jU4<6q5p+XUDos9?;MK}Vwrg*K>FjwFI%|j>^ zV|YB+ccM(g%~G7@(W0U@YN-Y$b#aR=2?7;*IS{>>G|J-)lEFdqjk+1dW^_qao*w{q zn0`fR*qGK#1Gd|`-?d%Ai+^XQE8f2c?sIyV>gKO>}K>~Gi$VPqMEL{)~C5}%{= zogO{2c34>j2Bq29Jg0D;*JS4afl57eCY*kk7pC48n=1yIY3af~Bh#oK0gqpQDW#M? zfenu6y@ko*4TXC6IIA_9bX+`V`!_-liW_F@64! z87lT9s$&{SRMw*A@%6En@u9@Chg?_woKIgb;<)RMj$I=q(9fgYnsJ2X@eXgd+Q~xx z(7sVK?L1^^MV{GKR3xe)UB1P6i*O#9l{$GiIMxB}eGyh^WqQC+DdWiu>yt6i%Ir+q zw-iy@ckZ9>?n@7sy%9_Xd^qcRz90iZ>6xh`rF^VxAYQAt=W5vr)8lh6DcM3>Tz5LA z!kbG|cq9v?zC+GkT+-gK%RyqqK(s=sTUKm(Y|UtDdW}zL4Vy)Oa4KT>+l?n>tFESd zd8tA@4Ffk;DbQ{_=AcDS7X4BREGl^gnvH+8b1>!gL%dG%seJq0tw?+xB2Jxps%?@3 zD^9jh)o>n5WyQ-m%93J1M>iwk1m8l6d6W#Ki~9TYijm56Rbt7vXl7YVo#i>+QK!{G z%O&?eeK(Wt57yN`J6U+=={BmD&03C;mSiSIL=C1 zBr4C2goSJyFB-75vCc-75WNoIM*JkL)5M2%Q8aRaO+CN(JJ$|WI&6uiTkfUdtzU^o zg{cR|A=ToMlmjYZMKN&52WkCKFo`BPxhcDQ zEpNctsyE^Ey^H({75g z>{Fe4Q*6#xe>@#}@%L0qVXOF~#ErDh7+JsM+1gIs^9A(%5~JID?Vp*KtC?Qpt2l)l z*ucxB-QJ5>os-B(V12$5)Wr2{Fy)$Qf+sULUgy=v^wOt0f@Lhmt6Z_|4x)*3OI5l) zP?l#q1=&z_M2e&>Up$@@xKNl0FR%g)lG2$7Ui}qdQyn%ZsW4L51~+ z6{6!(#HAugQ=y@)vcZ2gG3i?rk}e!}yakyht(^eC{}r%zgzz%fz#DK);rx@bPr-E+ zr@>KIXz5g8M`+UOLY*n%k}(d`{Y|JEgn>nvB@=#zWWA}rpd!00Flj}11^(q{a5sfL zi*it~Zf4w3X;J+jSl~hkC(FANqcXuv>YJ=PV8{;7DlSB(I98YQ8p^}|cPZfUOo9xi z*^A>1O7(n&R>VX_P?BFD5Sfw4;v!>Vj!7|)vui_4hPmTb@JjI^Fn=|iNU+{Y@!^Vq zH78;+SM*G=H>&v@#G~jB#!Gc7OC5`hE2`U-lTFhPa!K5XL>?y`3}0COph~oV<6YY6 zP58uH^YL$x*W|O3r>m{KLNQ+STP;6Ux8htZ5UuQolgz#nA^vxlpIld`!?5VD(nD4H zWAV;7xb~%Sy9v;m!+-WTYGy*Qa0R2(u{Ryx?`G*V5|aWk1!mJbUI(SnP!#jr@cyjg zOc*EEX*uSb|GKs-&SsmjGf&UOZGBs0Ns+<8r*ErYG4p1K_nj57^=iTZpw~eW7yu0gG8B^33`2RC(DB7_DZ|3TVM;^^{@mnq+kd>_ z(7Gv^AM`&rIIwE-KH$w#kz-GN)jTr;Nqft-V)&_@wb<)yJUKs*T-}%Ui>S;kJblqE zT2Qx-uzk*rYKiKmunr1z>I5wa$VZTqKa4Y@t}|=J*Ps9KYG|4N{em~2OY z4B?86Le@?v^lF6*-PiNuc#UZI#y$zC2M1j?yXwqMOGQ^I{VC4RQy*KdCw1qmacZjt} z=8Frhh>X{u|CAu3i4s~`k^M0&;1$D~VTgNq+8p|Ix;cEKq@K-8sJyP_v z)Hv+{->L9Op`s;njIV3TvvtR*QeYZsE+bib%F0+@DBeR@xoul*rUa1|FZyaN+dh{N zwJbvEIDNclEcUz{Nz}|pypA35O+!=B5Wi*#=1kD&VrEp05vBn|b?~i$o};j2Ma$uX z&1MP0%$i{HNV{fs&#v2qu*xpTu5DM{$Z==hhOcmn7+$JIJAQ}FuNwubI$^~V1A|EA zGt!M|gU}5K3w*yy*y|y|QiC2G;iq}FjO}Y!!qCYHUBA*!ol#!lOKG3x-ALYT{K~v& z`Y%mclhN>B(81Y}->2sDHZ?bs6%Lws{J_%cXR|(=T!A5g#?xZlz|G7kEKp*?S#B_g zS=3^rGT3UjhH^Zs6DA?ftbi7KfinKZv>~I9fA+TA!#-qt5>5v{2IU;B;*JNtrmzJ# zx>E&S%r6%1?unlUqv=Bzp2`RQ8_oDX|Hu4){|+W3%hKYEB}?OFOWH_5dtL`prs&9+ zAD3QzD;f497T8pb4jA zkyFZ^>a-$HtoLVMsUU5|T?ah1YT`pt(rHRt733orDKKEFwfvu{b_k5cHxc(`kE+%2 z=%rBqOQBbl8J$t7eBnTdpMjdag<2=SRipU1q69 zH*`+LXjYf48h)DKA&%2BZ1Y`tE>&o?q=FR5-{LiwMFJs4Kx%7-zn!hN83XCxi*eCF zJ%n%Z+hXzW+OqnVOs!doBMv=BN&FA4cTZ9rE2P1?Q8OZ;7O_xX)2xPFq-us)3AAO| zWrzUF+@qTyl%L>4S;?~b8sgNLke-#^EN?vyF(|i-U1Y}uYXSoj8Wnwb*k6X|LFbt+Hn za(3$NqXz&*Rfvh@atj@H5B~JJs_R9kM+7fz@%><)tXyusHkOI*@ZQmni^AUl1d7a6 zRct2fBxjVH-Q=j8vUr1i?y%Ie>*F}&jiFoGVI1rCd6)Q-iYwsw{c`0sHj5MBk2`(O zXg{6;v0ZL%Az!M|l$HgPOHEl7k4+sAV7W|!PJXi?M1^2Zv?@-u&~*M%m}&wQ$uRn_ z*pUIdfLeD(X(RX5EN{}o*Fg$Zz3*+t8FK>CEIf3LROwkT#6+j_f{a&&y@3o3`OX6F zynuxR&0f7cFCC7)w?_Qm$s(WjVZFBT;hDO1+}z{pLzs^+low{cAplQGMQJ)<`CX&*)c#fnYkm z>n2tgU`ZZ?MduAqc4dpRP?u(rGR6M6OL&k{CI*TLmHHbtw+Ek>J{feV6+faOd{xFO z9)aBvA06q0&Sq^ZDL*4?N6pkS_P)%JG84&~1c|Otkgw-4)lEo{N|3Nt229}v? zq;%`c*KSD!sfGPYuC-4J6#dZfVL1WnnhtYNueY${RRw$SQSDkhazgtM^CIiVRh2Am zMEzF#Ze5ebGV0N121ZmiPE*R>tywenpwgUB;x;Fz9Ghne149D~Op&&~mP? z#8u5YTzltCyQ(qy?1O!;5l#iUCG(lbR_@OEVjyiq=EJkyTqHS2!!%Vy17Oc7UO#$k z|F!Gmov5t;J=5X@aMzHfZs!NWqC3au0TY=*tnfv~B7HvPX~NmA43f>T zo018B@i7|*v1cba7o}Ssb%ZSbvJU*;C?C%>1tT<|CX{Umk-0momn4hcL(mV}J@H2<*C1-O5Ec~Z5RiV?y^<#wWiMBfLLAxV9~uM-93t*e zUKu-H%&+45S`XpPxN4SFkoyK_UkFmanlY{)+BQ;N`of<;R|(P$oROQ zeCs+L&|97Y=8zYOj3=P`>XnwBfFJ9AXRBeqXj@!8KJqz5Obllpgv$w?g6b}0X zZNHbbZi}{9*? zOPReqH>^!$!C=0(jkEKVs-YnMa{;d+phSPT+7KBs_MB9erNwz+9A^CwHE06YL3zbm ztg2Sgd{)oVvbAa(omb;!CrlIh8ebZvB5gbHs|k8wC=Up)3ZyPN^{hlQ*Wco)FWL2d zCxVbn;dxq2KOfs&E%g0*AxC_;6Hj}mw*2CLL~AkI{_1AUX~9CH();Hq9gh3|RfhLe z=%#%PO|T4Aii07QAeUH@B{|}(2E0egnjEgY+dKE{cjxr&TidOqDNyFhf&zMo8F$tf(6V!ZOI;<<9AVH7HT9IWAlhu!Sy78BIG=o}6m14>EpEF!p~Rs!X&d zL$q45i-?-hX|8nZ1xgA#=NZ^q65jkkvUlwfiK5I~jiwqnDSf%RCXgt4H9{?KTxsfw zsF?8(=S`hZXBh6>24ok3y{5x49A!%w7P7+CsA94uEGBZjZ#jX-v8j>BU{VQ%se(Z0 zG>k7iO5Nl8UBww~1zhbWr}Jr47g$UoKGs3qSc+4iJ!2c}uvIWj2u|w1^$Y;ehrSd^ z-mH?*47IN?=5%l$)CA)Zx}KIV4|qep)!ZdaM~VAi&+G%jGd9&#F`vm)NTp!~Lq%RG z^vc!)n@u}d!=znZ7IYQ0nRb^XukTXm{nfpEd71xb9$BJaJW@b655PWL#u<~pBNDNM z*7FSeVwH^60niC!>Ic=k^K-)JcLyu4+aCJ|TI^l||9ccUjD%{c7eq|iq~xGYvHIObPdbC>RNmA{<8$M){S5=1LOsBX*)0-W|RQq?75 zrOlFxOB#VySaZw;KMtJY22_WGHmSqee2NiX84Crb!4>EB{FN(C zCfU|_!B#oEzRh*30xC-yV-?BaJC|!h>HKXG%m4DfKl4i-w!hBBp6Zq~Bk4x*`(dy_ z-JL|8ef3htsVm0lO^cDmw(wk(X1gxG|N01zW+ck7*b*f;H7TnK8N{|JO%&8Dcba0a z0Lp)__%w|AQ+fv4WFM%-qLiX`l-%idqtBqr?EfNAI}$~+eu`iJrv;zOef~NeKUYd| zdY!5k5&r)F9uJ;LlpwzbY%R8>FA&K~=Ii;(?9t;zs2ewVoUl{!b$<($AL#p#o&vza z%E9{t?^e>V(66c50ybs+<0&~5b}&!=$m@oL3MfZmA2bb+h&lz{P2lB@CHsZpd=Ush zwJat(c2HdagUc*(e@+!L%3P08c;*X#U(ju8en^A;pEVQVwJk`{UY?3$iO92somu;3 zMxI5M%wT(MM_$dP1jKokR`6gf+aN^_G&hTFpP})n40LX&IFU@9;$ryVSvLtHF{o;h z`%&;+YY{7XMytmBAoZo*(IgRbS6#1ZpEG}&bw`#(Ik1uY3&C#-KG%m?(TB|ePX%DAu*juHCZaI^UNg5@)HOm zQKEQkhoK^Mp_dg5oc0~K6;_5!1+^?E3mlq`xeNn}IzAkgQ>MKIZ!Bs1(k_fZ)yPl;;YwlLvT zMYEcx4>VA{!m4^}ljxRGnocuGiOk*}2hmBXQAoq*&*#>)hwQ&d@uV^4Sd-zq23`h6OeCB{;6*arsM5mKC{ zfvD(gs~hQ(?nBsE=BujN0sVtX0FpX{uifaE2a7=zP1F)q zk>2~9pU!+1Sq%}r?>_ocFH+mg7Vw7~lpxZ@KJ{?}TB_y4!A=ZwXw?~YnLK^tRF^lA zf7c^uY^3k$(X1R!p{{1O>WIyqto7GlkNivJ1trgK}@e=#+gm9BjDSO1AYMf&%8%MyS z?EkX>AgIyEFGcMK-?G<`1EkM{JvEx+>y1PlY^TWR!^$?I&e6e@@ma5|VNP8!M?^;U zga)EqBpPDpZ>yN{7tNeRPurHcGE$c{^ z9c|<~2TlLzx@P!kd-s{By>8n6;p6G%<`91;bIPYT1*f8N>rM_B69DSCwmBgW@?Q>F zi-$!)WxijXgj^j>XqX7xxovd)d1HPz8VFXsllIaN3OEdxX2!Jll7X~h^GsOG6HG^G zGX-*jTj#inoy!9DY;`@h0>J{?>iCg4f}t6X6tUF;@aQ9Cjyki4SXzBa)oisL%wv=f z6>bNqo76zh!`x)u&B7|@H9`Z0_f!8x`<``Hh(Ywh45C^9b-0#ROu(W)*PI9v{~Cj=sB}XBXgM*1nj3IN#*H z$41Xp{$xNmV%GXij(W=pCqY$v9RDI?@9uZ!b(1vKKit`d7^UEu{-slh*OFeR&Bw<4 z#h-e&*RrVDDXc*3#w~&KZivdjtqnKk2Oy}wR}hKfT+uF6&za(@Z<$VY)zin!_4%yB zTuRf43Ypw8UE+^fdY92La`?qW!3?wDlhnjWkIv_p?5=Xy>bZMnv(k)kA0$KP|^Es z2UC*3T|8@dx$>Jt_Kb7Sj|N_Krt&WsU63Opq1CD!Ev{h?8ua4UUnNhs2N}E=5~w)* zcLxNmOa03;Zi(^RCJpTiGgC;CVySOTIr-okKgs2Xf8W-CsbOXc-TnG{mKi-ExomHl zbCdqq9o%6Rdqu^C${`qgf)i+&%4%Oh()crAu;G9@1BWOuG(*0VRpHd$zHp-KY@sq0 zp9j#>6t`+@nuYy-z*QMG3sq2AxRfoS8Cl=dMk|;@IZhH*G+nq<2IrLX6-sH@kKZ?k zVIh>C?|D7?Nl?`@bJ=1Pm_?5`PC zqB;h##zd}ci}mXd?2~PdAyx?VIAHa8JUnVqS^9I(PpKz9me?)Y2A#{nlFxR56dtCI zbY&qK0#gGR6XOvLFdU1eGF7#rQFxnb!dwv<7|sCdtK9O%-tK8b!?k} zy<#0>PZms}zA?`~31WRDRW@Ui&5)&;+oUsdB`-)UZ0S-(?4pxTJ*wxx3|uKeIbbR+`$D63rr9L1KFGa$(}A!ic!{gRwdSk37hTAL~0G z)@^G@R-TKYFK{cu$BS?Y8VDz)cxl+C`BMrUs%{1ZOCyDQM1kot5GOW#Og}gf8@<-8 zNwmL3|9c5gS8qm+F>T5*dG9tI>A_2mmXjPR_&N|V%pjw6C^gzU#h2d(u?S!N`kSjA zneZFi%OWmS-DR9Tc7%@HEX!es3d`9enU8+D8Wlc@OhT&bk2IL#=@Q$iDG66BwY#qk zjF#^^a!~`I9~IGZDMLYlO6IeB?f4w~(8;pR$1Mx^szmJuBm}Uf1?6{zIZl~KSm&?( z1iTJS4)z3I`g9mshZipTnj$yb_hoV>hm58>|2E%8!dc&|*)lnwl!GSWUAGy#hLj9| zyE>LBQkU@V@{3P!2*VCv7}BI6eSmxXI#}K~D|ceki0gfWqZR&4)5}S!I;I-(EE4A) zA(g3wpp@N6)>+Kd(PuTd5qI&^qG(u2%A9%`VkM*E3g5o4VnX=2sfWXav)d$STno$U zZ*#cXtYdk<)wZXvsZdiJ?)x))_1_-%>%YGL13U@-#h^;%?-;H|p?WZady@rJx_q6& z&z6<#goF21n9Ghej(VRy`*`%=?P==wMRqQV&;ud(!Mqc}roxLni4D<(YY1Fi?1>8f zEa@Smteg!&Xna!Z<4oqz9)QN0=K0n}*CZzE-AE|RN0uNK5q+lPKbD=ZRBkk60_S+4 zSmdMiDJDZ66zOCL3}v9M^~!$VU5O7n1*9Ie|K6_{t;40^aH~sYV9*k^woD(9GThY` z>n(0QP89>?QY~s*KT3Ev^D3gG@jrDvD`kCMA{vgiHUichTY)cPWRUgaCG=($O>va8 zIDg8TO+!rN5xYw$pNCR=cDRcDThSRM+SO{V2F&1?dp2^nXdAaov&GS!J$8;K4XP^4 zXSl(ok; za3&Enl$FCNeE4ZAqX;cHcQR6v(1TL%E1{}9e1I8-S4AxxTUKK5PPyIDR+K^uPnXiV z7#qQNvnowC(ePog@8D2?fc(SB69`K2P1f1-mA1$fLuSlUz5CvO$V1oOI84T48IvJ; z(EfmOj%1~KB8R!K1B?^r1jB-S7H8p_Cv&!45u=B{nTmF_WLNq_VG1kBRvW-3MtzH~ zfDmf#q1ylZPbGH2`!PCLO=d;6(>7lSFYl-mXEP`C*IIv&8}h!;*;?88_OIK<{l51L zsn)HaY;QfrGt0d&TxWT&L%(J3{GJoL#6-EoRipYpGVetk9vi&l(fyvTD4gTa5n7OX z<#y*mk`J6C>JKQfRKP$esXN!tAyckcQvM4nbg`<7%ILX2-&z2^GsGHaFGsv;i;RP7 zizKdUbJb|S;;cmr4QKRHJY9TnzW)KGho72_gl|x76_vY42NSRLjt$%A;2kzT$<7WAaxFMGIx#B5WV#bN~$&4RzzM#c$RznN; zXz(CDQZ2QwwOvd#crY@v+Azgig=W4vV!>Neenp~&1W1ksT}O89IH-_tOC zrz^D(a<6|Er80W0IsXX$1FQA9xt-om&YbOF1)zL0C*vyLz_OU&psAmJn1oFhxImVa z#(z(}d7@Rfbtlc#|M%ziKrddmDGtq)qf_d5tbV7?*kZMz%+MKDrr!||r>qY5qiM!Q z{bdckjOW*1jI|=z^`_{sOua=(sg((&Rb697R=1aMQ0Dnm$&|94PGp< z8K#YRqGB_$p0XOpBQ9p9v_`5Vj9~mvluGfX%gy+qNWyf7DdiCuYQg^{NE6B{sRWGc zWwFhqwM!hzAxI0Dw6#}BfobVbC<9T_BK<6`yFxU?k*~e7*lGBA3dE=YW-Ok9R^`O= zm5nN)6}BYmj#p0rjrv1UXV=8$TB(=wZRm|qaX4!7*%5JdaJ>ErJB1~rbVn`4lf3$SAnnBDx#NHJ zlg`2Q<(e-dk+AUt@1&vooSLY_l3ojBXg}NLh|_AOcQ@G}eH^-~`CJ`|M%j0U=f>%_ zVkhsaj5qz{Q^SEtyOdE{{qKK{pNUg*5~X1}e67G#by6XAwx@1oqC3-HuHV_<*nVuv zL8rF_v|3~=lS8h(erPM)${G07@t`F@GmsT!%1UpnQSBT)nef<5REG~|j{a!L}1 z6Pg#_u^Q^rQ;6;1#gs>3@77`7#I5*EE30AE#q@&9M^6q}KumJ}8F_DOKloHX@z_)f z$8Y_Nvot%cXR2YX=^LSJH1xrXrtm=6I@X3Oi1){9k`f{HG0|?;-ZGJRV2lZzBl_%| zliwUm`0%t&mFdwoCUe5nR5*un_|LPT^(BO`wE*(8GngcZH_tW024Z^xQ!^@SZu#$d z329-%X)OC*@djDRyf51;+OE_LkxV9R&1L~Lmk-U~->~O1JTq)|DvMe&+itAzH^GZY zGUR;Ai*>1O;n0w7)4(AwFh^AYxtcmVFB@Ds{&OW+6H7FcDY}-W5fnG4{}Z07Yop@v z9p=-`_$3nRQp=wIN?ddyjFh9bI+b@V(W4v$tHb0T&C-JaC>-Y0{0)1FdTFM!$aQiJ z6RkDS-KPWHy)dHFIeC{{5ok~-Vk?s)NBHQw#%(h%P$4An(3^o}eI$GPxQ492@G1#Lg3l8{{=br-E8#>{BFTeN1;?}Jic>rwaDD?#! zUm+rBNineg@iikobXy$g>WB!f zTT?_pEWJRnk?c`nH4*OzU2$>F2r%oZ?M4Fm2n|WuG2pi+9XNVBZ!oDq_}LfdtozzX zDHcIbu$kOAM&_J-t^uM=0dcZ2Jr}N3Fc#29NCEO=#0@NL~-(- zH5uhzioe|`&t0wQ$s>}*DsxLAl3mH8sPkmIeM}f!Lo;fOlzOU<$nA*C0ketyFvG2W z>7-7_o9;MTp(DCR6FbtH7e8a7{*h>&nwSn=kUo(bKr|6GU_#m+b{9W#q zL=immC`UH&7S#(0&CG8G@88^j#)CA>T$d)5Q%9YaQSZfAix6^d{6D^a0#r5Y-Nd0! z(l}@rkPPB|ozd=F365qRU9(wdBT*9V3DZ=Vm9-IAOT5*C-bZC6I}YY$MaZ`V3+aj_OmVK@ z!wGs&Qb4b5m=-}#QnxmNNxTi~LoU1`YUyQ`m4G4CD=fei8#5R^3F4?^EUQO7qc;$I z9RTsPvL(%<5{Sk?P2#15VTp7`aq4<1DXnGm9v1CLm{L`-^)_pAOh%$kw@%sC-BqV- z6^vCHTg8oPb#XmSYcH!Qyv1^fb8 zu)Y8K2@pbFzrL*i7`mga{v+()OLZ>9@K+P1>3M#iDQtwu)7U*U*eYxw0K6D2?33Fn zhwlyenCwA14C;cZH3;rWpnx;`eyvNd)a6heeV z5?^50JCPPR>@o#1gXtB*(&7zXgm1UwWctIJRE+UNU8s3evH3MU5V$=3&hOH-IV`Q2 zhw4KfQSk)jhG{XIKJ@h}?iyrV> zldpk;-oe)WSD^4p4lx?8vMPc=MM^dK<&C+M9Co=Ry%%SL(f!`|7AwV4Ic zHSsoYBEi0|oUe?f!%e`Ps^WkG_W+PFK(5@&CT-71V@?ySS1ZQc)DD#y3u-RRErF_5 zure9Pg`(j=)v1F$4b-s%pVR3@iZ9|ucPW0w0S ztd(+gUt$8<&7^CV7W?Zr7>n)HB3R_mTDQwp7ocw2~eCm5+S2m zSQ5$V5~eHb%BfadS<3bj?5YE*OA5x6AdMBSZvy7&*PNNrXI8gG+OtS&HMwoI7|WqG zGnp{}4b_4}#SEu209>&9>Z^JRP?}7x<9+R^X|}eMf}BUeGLzu8T9D&mN;$T@!Zknv zFaQE8llW52Qqf^Jt`_{%alXck?QBZ?N`rqWN=T{M07GJSL@&=zv}6m6+jBuqI{SR$ zNqjt&Cc2!U;7G(<4&*^fP?I)g)vRXtmYvQItft8_WyyO`k ziOfH;#?PwYgsuNa_~#h>{MTXUrjHFAX_~MQ$k=9jc*q5KKe}<_4}S3rb^ut6AF%@v zI}d}oK)$UO8w|lX>0rUyl-?NIuJ%h5$qEb$7^kS%P2~-pE&+Pwm1%EqUiVa;q?;Ek z=`@uciJdF}dX0rNcOZdjYJ3hIC(=n%20?=N5=mm}r%2|Blag_Pm0>{+^pm&*%Y4S2 z9e|WOeVok{Ta)35S2&BDGHC4;ljv)uJY}PmbagKs%TUWrf+`tM=;P|xlDbGRd$lZe zDfnznJg6ert+tJvNmov~i!&Lxg^XoML}gl$L6whG&JlC9C|q^`*ly!{%gV)Mt864e z+EWakyr$!-=mryvUsg+)8fC^Yc*kWfG;~z~NnXTElj~~1mtohQ)Cy8vl$^fjwvPdQ zb-tT+YJYsiGhRVf9hVkM!f!wRWmo!_7Y_GAI$RBYsEacSJfzBNT1)4X ziY!d8dt@jXY4LFY#egwa;sp;yFN=I`ft;itT6>5qVy2&)pVG)q(v{=S+Ssuj09kQM zEf@Q9zRZA!Mv?(6x~r!Nx=!3~WiN~DoRNL4E;&(tuXX~Zd$sZT^C{e$g?PykbNW+yV@fR8D2gQG|RP8}vo79lLYMoLUw^b{s zQ~;%#Qj{1PZ=^76K=YsP0hsp0VtdQ16to)EqLwA%rK;4rRg$V&++YIxQJ|@=d*(tB z_9V?sur$qe$p$DX7G2Y&s?`cWtTdLHRJN0%;QZJ?N)?4H5o^AbRGcj`Zi!?xr`9R> zy{cTtuXT*4{j${{+iGEBN={woW9oWa*#hI8^){3|*oi!ND635MYOCAI^zV^}`5xAf zv;%N(KwlnWquXGNr^S)I?Rv;Z8CT8y!yo+MkH7ro|Lg6yQM5gQWk4b>xwWh5f2o>a zi^~-heW-EG2Hl^MltrZt(Fj8lQQ_3uSzB$%}7yn24E+|R&bJx;z3^%O|N~2?|T>Qq`K=vL5GStPCQ)##A`OZ0nCIo23kzcT3fY~ zggH68m_}67iSkxUu9FrSR|QLqi5aA9#$bvus%aZQ;xm?hW-?x?Y8~Uyem+@U#GFp9 z_|4$s_WHofuW34gyFiD%1IOAHYkwgO3BoZS49vX?7pCjh zYb0a)%x_4{QrB+!b=L=FZ@9Jp+E8AXaUBr#gyeSsR z>Rz#>%+k!BY?e>MwE-**<||w5YclZ}yY-qN?I~_qX|k=3GmFON-vfGc-T~nHpF6L< zy7^8xF6TECoz`B8XM9|vGZJ_&N=Ic*$>EaJQhrHI`7^Pn#gz*%o3<^E&H&6e0VlY` z$vxQ&BACWxHM^v2#)-+84H+FO<~bzOQ-I*a#!Vtu#$I~pwDu5@eg-R*Pew^`FFGe} z=9J>6Txjy+Mc10)ZPGKExJ#7{EPgkt`&Ta=z?{m-GXN==vn>3|Y1&IcKBhUzz=MED za%Pgg{6*AF*Io}!mwjb^?EUMHAOC|N{NSA%H#m*JCU_6KJLg5h49aS9a;`Hr1~a+` zfaR=9fK(E=OEGtS&>B19K7Y;`-S@6tV+Y{t_wI2IH|HW)wnu>F=#=)B-dQ!=cL}h5 zYTe^EYVz{4W&1lSw%47_OlG`8^mv&TPMlc83JRoYWyyL7CgY@JY>~5aCGqTzGF`0S zx-unMO4^==7D-As?tDI=r56N(oNCw=5^Tc^mcf=vjH`PEQZU8JWE8uULBcYxcwBAq z-Hb&D6a!P>sqJDGy$IX#(9%kuoLbjX+7<_v&t0-hC9q-}AU zjAt1Ubvc3Bk-hncz);Xn#;)Ap7<9DqDeY-CPb1Qrlx9v_%=(PxbUl72Qi8Hq!91gB zzAj}t1F${BUNQ4nB0d8!T>`|{;=0e4uAq}?Pq9m!0r=?hWj>nNl%Jji>OvD7iSTQn zhljs)`?glO-~Hs1KYaIHY&VRx36%AMK(Lm!#qpuaJpg>DPGIYgX+cp6u_%|Sx#Pg?#`MywXpXrB{OjS1zXUi6$R$Ad{N%!g=?uXB-*zwl zJpKwf^i9B<$AJC{S?5qOzuGfzb+Hel-I!k~`+rl+vMtC3Ax!z(=f9n^&2`w*kMhos zVVUj$_$)sn*dAdYm}l7YBv5_`jE8BmF}>3v-@BOn?c29Ovf@Gcdq4j1pT7S3pS2kSQ=tjdw;E!IIm?Mz*CkBQR6F3V%{YDqJz{X$SHBX$IA_mFa4 zRfZ>fiGBhRCJDQt}@1 zNzT(h`ABC0{^s4g`N6)#m7mkNqPs=ZWiPeLoxh$g%{!mdB|uW&>UvK13f#h0Pe30~ zw(gE?-Dy+GC3%pD{dgChwI;1Y ziCC`6l)PSU#BlQzASr6ef1!DhqPcn4qv%PCccnxdeRDc!*MomC?hfVauQ zHPRl)CqQRays_Vt#;`&wXrn7+u<_+z6n?gt#~RgVOmznEQ!eBl5ATA$%i0^ z|6kc2u472A)Gw{q4^u>oO9rHnCQCI-ZM$)`#g|N>YiI)u6(?(4HBwSV-_^Z>B7y9c&#uAwbnEK&RfuJ{MXma`a5t^vgN2n9z;wB6 ze4;~%7TOR^Sy8NM1)0oY%T1k(&B`QkH?Jg9b<}cbi2!(!FEHi1tRi9q($RDYqr8!w z6GLj;PK%kgw#9W7$Z3WyY*h zr8OB#IZl{cbgM>6%JbrU2@ETF4YR7)ur%qUgPrr9#)`5<2y8(3EM?WP7f#onlZF++ z9CkYzzzJf$Vmaid>wkFL+PRQ|@>!J)OF6JTXS#s}Q@@KODa^{M4QTlkmaF6y7l4Mg z$58PY)^%u+tjbl|urdcMk39y|g(k2v6~zr?N{nGkRXOYmlI&JlbGU4YCrh#$$+xvW ztx~_MmH@>qEHPea@}Qw9rRsb)Kvv4#s*=J8R=_T0)drv!Z_Xs9+uDL^(Zx79#z@NG zjivb>0M;}P?XwS{cdB4)o^N%wz?gC~tA3-}_MjAfi?}3vEzBYUh)C1vHU9~4MIuSI z=~=08sEVfKXOu{r$8LW6&YkNA2OnO##8&T*uV4S4e)BiEDCl4O#V`KlpZ$!>mdZTB zOk-VpHkMTz*z`XB&&JicbNq%e+ut;0hlDR?qomnYHYNkL)-?0P7ExZUWlu3%Mf@ZJ zI{+-t-Eqh5BRM`QTZUpBe<-!G>eX?>YWDGzCGU+(0 zid~Yi)*b*kG;$oItY>XW9I#$!5)@_ADG_g=TUZWTZjs8NWitT4Fky}*-fba;B`3;T zXRjc=$yl-Hrk%%t+AADlGaW2hF);yR?c^qfSW;%mhV@HzWs4%Bjw`vg*NUJ}jCt6K zlTp%w-N0SefV&Dxie5z0o*EhE5_FPnRY`X&%FeG0lAf__IHSPBrK;R&y3)W-n41de z78>#!z#QS@NELSgPkYka4;ocl+hk-OKv5QD{j`XSXnShp77DVpkYbIi>n$ZxnmKhf zO%{M0DhYmEwV(sO>U0SZdu41xINt`Ttk??&Fd3ON%$_YpX{oBbkt+jMBsM77-kJ{C zZlz_0sSTv~7PWCJOlb!uxm`@5tQn?_v?s2OY1kS_dRtv%Uts326J;^AdqNgK8E#ek{{ohv$`b5Dw^?Hf zw^cBbQr8uK%xul;dOyzCY&#tNd(;B0?QZhu^w;_wWAXC;#<#zsu$L zx>Nv0_LN9#&zORDz8g$_UV3TT0hn**;nvmhHa8+_Z5ySX^G2#~fpyK$`sY`#;(_~U zzxv?8J2!7mBHOj1%yL&@!f!V{=_oTT(ilnuSW7IK!lfVUCnun$lZx{WK*2NgToi7W z#1b-L#I4{svxZ_zmTEIDEd?i_6sc5DoYMp+GV|SdNu&!NCrjTGD|fzZ+!#^4<<1bS zc^4D!xK%r`lr+mCaHEsS+MZ_lWFq#^b+}$L%@oZtG*WrB@RBL>qI}vgz93O6%H2## z6=NE%bW(a1*>2U!?rT_~8?Y24(XqgiaxaDgsLH`1w%gcZ;~oGmvDA-ly1Q8dca@hc zkuP*I?rtgf65arTnd&7egH7Mor+?ipMG{bAi&$17rYFGSV1(Dy7>PSsdTA&TVY&cH z)4guY3s=`*jmuhQI zfTKq97ozV0;GPZCQV^s?Sa8I85IYpMt+n}h1c-HVN#v+?{Dms%sZ3gdMqIl>RW|{% zF6G&<(w(1)`lmkq^ve$)!utNroBYW@WWK)l+H3#icfb1|{>h*GEAPJhy_+}x@3-G( z6)hbZ(o}*f$w|TlP{s}oC;@a{*A5Q20O{bBS2zZ*yBA6qSiqcAOtR>=7&6(>LrZ0q z);tJ^BRd@BVF!SP;I}V(jk~0>?769X8Pk@)NZ;T=U?;*L`^wX&+@i*{XLt1o+E_&D zB}>K=SR_kMx_g^RykQwY;gy*+F%*} zu}grQT|$#zBWfMb5{-G0*HnPCVx+ks+g`2~smvFabh0mCV_X%$LjiJFVs*4m8gML4 z5657`6bQVNVpqv>U+4m)c&llVEIA3+f~iBC_)^l)#NtHxq%Xzjq!Tx_vH)tQX-Z{& zDYm{%TD(YUs43r4ug{MFVh4cdMX>ch?E}P0Ymsi>qTFIyIuz;WG>K_1^OAB$(-Y%( zNyGpJ7O^b(Oe!XsfHE{*nnIG)kZHz=F(3n$|Ff50)~5`Qz|$ADSt&&$wWg}3#iUrm z5yW;>OAO^Ev~-rMmnIY3iiCqMXJYmqs~Esmym{IdsRO@4UEOWhnrl zYP#ZX$F4|=v{bfkdnHlInNcj3t3|osH?a900QNJvRE8Zkl4YajNQ4rHVCSD=oo)g? zz7P;kYQ~g~L}nAJ%B@^wtc(@-*5u=eB!{kfybtzVB57rk#GC=(1^}LP`RS{#vI8(l zkvn&e9fSY(%U|YNpnv^`KjgokUc1H?upe^Z?h>)S^OH{VGOVd=5~AxK0Cq_DT+O2@ zg|1;vi!5qX%d}uL?26F(=a(;Y?3}Ituin2uVYY&>L?I~p&Mzrz9#u8QA`;9hanUSQ z4^w1foj=dL)I3^%&lApLOv_?kU5%eGb>%%aJ4U8*>tC=|%5(=yTmuM-PPX0`W~m|~ z8*P@Pn$$(N7hNQuz5&1zi)o5XEHg#+FGSYZTg1MK#E2n9rr4$1# zKpC~Rf#S!WmDkWxt`3}7*{lpCo0$@u?p^{YZ@K~xOO>JM7PqW383=5(EVc1cFIv9# zBxzaNmn&7nQ;uA4QMWbU`vIKGw0htjnauSLSjHA+cVNq#w1bIHe(in=Pr}P z(^G(+KYz@(wQd5QRkDj?6D8%mOuDKd%?Oa01Y0MQOR+>`08CM~G0|Ohi>?R5x=qdP zR-Kfx_2ndo>LUEOYL>v$a9&-fOMuwAdh&!L+OD!<{by;&LNy=9w-5 z3iBzerroK<2i24U&ro1<37Aus$#iY!OD}!(;X^)6rUwi!zoaQCqpWN*1gEDy$zNo7~f%Bqtk5GJPuki#x) z+$F0SBikJ+nNu4mc;_7?U?~=OT(uxUB0W?xr%5UCi50BR7C&FEI=siDGx$)SKG%UcOP|Z@ttq2(b zQq!<8*HwaCRZ_~B(#XRExNimtQ0!_MIJ-wbCL1ZESD`sPW<+0Fu)g zfcYK(G7L2>VCUCkq)^oQ^!Y@JE~a8JvLiP=U|@d7muzG{8};?K=&WYEt#{_#r3{kG z8_LlH?Ep-N{}-MCDvCrhCes~ei!LDjI0o5n2)Wt@*#)BLo+dt#ircC(gX*}&xGM3) zq=BW@iD`|wsuJSXQ6mEgx>aiqs=_esTmodiL3ARvTsl~ah0kdhSy~i~s!F!8GZiEN&?U+_dxL$&>k~Vet4VXBp?oEXp* zS*nufy?FHO8PiLLhc6!-=uIgtG;EbE3qaK*cJXae6iHF_Fa?#*cEF~aN)HY=Yr##- zx48iN;2^sbgLk{ar8+KI$|BAbV*;q!b}@@UbK%TNWy1>H9dkw!lSIevo`DrI2_=Um zcB7)~yzs8xouAgq2G)5lu;#OR`$hwEcfed8bpF}1%kx|LfP1_7U_UtEU6fAoK(b_V zC@03aOJZDQ{lCqPyf43ei{Ao!`0&}m!P9W4?gF!s{iVBi*#Y3w?9Z=Vd&J$hGtx7T z*MIc->)(Fst-trvpZ?vy{_8)!b?cq$*SYq|eTx&xnr@haQcWiSCf2+se0BaA;K%3A zee%*vPg!DHm9A_N*e^Jb8mnCyD1*pFFudFUh-{4w~0JeM7k~ffO?1*s_8ZlZH8P_e8p?B;S^7 z*f`k@q@xlsFJh)B?6r+2mUL`M!!mV?q!`myl`%l96WDV*xT#j+Y?rZMnQ3EZ2KJ^) zfb2ko91>flIBSQA6tO!sQLQy~Qh}tFoG72|3cWk*w#%gBLbna_Ek^Swielpd7pd_O z;^W7U`BJe$+c8UHwdBH*^PQA2pcU}~*~^%^B)3%_JK3vx8u2cd-^aQ9$tRbeJmKs1 zCr_W=zI~gI*OR@_hq&(>BvqvBEtU){<(G7vKQYk? zgFxa;!R-5~lH3!}2d-4&yZXaNk2pfZw(`Nfd;H;-gW^_TOXmugbv=AY=F_K7e|h&V z8|562_j`K!W!P0<EC_lo&W4>UwiM;rKMT+ybpre*Hrg%Fc_aKos090Rs1gT&+p!4 zUR+fmddn@aQx2ykFq`=Sk8nMIo*jUfKl$X7gM*zjo{R4E9#F{jU*cK~hB%&4;FIH35m`sY!bYLd&f_X|iUR?jfCJS2)+*8ZHQ==_sPHzTN{`jWY z7B&6rs*?sgqrM)tfdH1u?tokR#d$TrKWmf$EBhMO%F5UvUyON13dJo_a9=K((s7q= zpw?+18+AntC{^ceyER};;dZ@|WQ$N6rqf$y@)mt0GIzQ>(u04D9-Fg4y2Rz7lzP{g$Y>(}OpIy52pMLFY zzxCk3AAa)5#}_XA7jM7KJqCKRkYUpA`f=-mDO{@1`9#&v0P|O%g>0C_HFeVB5)TK+jcdtEt`o?^_*P0e!iWD}@lQt{?L59c#uZnv690ZOJj zM3cOfE!)z?EeggLkpdfYEz&k6QZ5n$c+Y86 zU>h6pM+%0;#jZPx>CWumbGn9GFz(nkDh>gt(d5#v!$Z#Da0w7Q0DRQ*t7=r-!V1Z4 z8(A#5nRH%U&u?PfG?OM~GLf9jxjyf-@Xk)FYt~{$Og~;P@XfGmPYOv_oEdldb?~As zfzBC#VzGTAz4jZ~VkjBbR@;&@5WzFdsT( zY)u2YLEHv#Ks0T>pMeeD@<4+u(AQ|I>$q@oA*!F{0Zo>&xXmY(gk zW=f_Ece+h{#&m?6nSoT=Q@li6$`8Z~#l1u+)vk`_g%V)Vm$;MK{9|*Q9RRLNKEC~$ z`hfY7UDiXAoHXDlEZbzZS9&F}jpcCaKED)r*y8DR`;}L84bshL&wjamde1Q=cL+Rr z@@+0>I(P1$T)M;&cVFL{+=4 zG|j$CR@Y($*T}lPViFeWg+~PsQv8L%O zgVLo~(y$~4$^}`51L9K2GmDh0CNlLiPD~rGN4DH<#>=o(ZZlHgvz4z;;-6i-sI38F zftM)V)`O%MoiV9=f?h4%$|nd03k|ijmwm^L)+3j6*qWK%6}$7sugRLFRV!CS*VKUJOr#9?;7Q^MOGE8cZ}+--g*IkBT^+FR2rS&G+8F~@01 zwpMZYrGo=@0L+p-K8yL4fPeboL-tSp$>q!MbE|7S<}yu+$ZY=d!iE3pt6#nG-h03O z;K4uq#V`KjuYaArnrW`Kvo;|!o|)_5>*@tCqb?UlW{|Sj4^JO?hqt-d+O4xs>S= zpm|BQwu^{|1zCoMtq-PmbAAn^DCw25COQd5@v&K+QvzGW05XmNTET&cn!1q#!<=!@ zQVecOnE}SIJ1q*r&@t%@1vA)|GAIIqYGJ4@P=0^Z=j@UZ@r}5BoU)aSZtNSjrb_UNp!=D!K1&0q&<`SUkZ}QB0oRMH!!z5e( z+5zAUzzgCz9iGulpN-5HzT)w{&9*Ny!{#*y^`~olV$N)jBv0AI7k_;K06+jqL_t*N zusRr8$XXXO89p82ZdBmgtT_R6oytg%5codKA? zt-0i2`Xc&OvHmyE=lo@$BlcT#YB&~n>>Z@#^bMZR= zY11YfvC6Tj{k!uHz&ls2aFq++#vg`hcXYkLL0Da+q2z<741^|a&J2=piWP2hFznC%0jn5N4Rj|kXC%*!YmzU$< zip=JfLlXjb&CQk zTw5s^AypNHxP28hiI5bM;ecy3!%TFEK$^m2Ua`4tiHrpcOnE6=Cx>0NUngJiCBSOO zp*8LS;Ima{0H))Czka;{OMp}MIw8Y_1jjxsUjT0d3w%}U+xo>h12Ay=H@w83|K<$9 zyaTYbG+6z(YMc#ao)f?p?Go&>$kXg&eo}gVR?i#rm5O*y2ON_B`oRI4^6V}D^~H`m)pKvZJ+MtLj^6*9AAIodzxUp)r%%82=+U2Ey*j`jmA01v-Fx*_ z?g8K{`HS7!*8KkT;zj1@ttU@dlD{ek6n8Pk-^l9ajKK=hMwyMmdtH{?lT~9oQWqXR?5m&T#F_Bd3B?H~}ZizxKE&<|x66CpZJ(^4*hWYIJ zoqPAV4S=ivr`vf8B8Kz)#h8uz*e=(+Gxf`}`Tfh6KY8U9j+%e#;X`%+y7Oh01MM>L zSIm{`DQiFpY;S4#2;Y5YbLlPFWIsLfch4GOpnTl^qXxEhw^fZi>A zb|R-VR@@dfy_a5T00VH+aS_q5g%$BK6swz5-?od5CF}oV?@fCw>8>li8nY(8Bt?pY zNQu-ewYuFN+D5lwz%XEcvHyVK-)HzI_?uzF@CQ$TVaqf~N|ZQABqfp(sduQ#s?4hL z6S3}Hx$Zv0jl7jrZ^_n0;^aPiuf6s<5qF5;L_|8Jp-sdyl9yDODE}xbWH*``tPOk@ zoE5QCBzV4F`5EAcjnLoSyO*{n;11a- zPgXR>hQRL5!AUqmrg$sC=|XHe?5+Xe^f%jP(<85BWl`*TT@R!fsmh_QJVmW`*VPoD z^?W^N0Jza4n;nbz_@oOtl9$mI(|W+?*o#!L(RLFREkh78Ta(zBu$5ZYmVP_uJRVEd z&6Kp0U-%O3I9DB4X8`sy&5As2gmIpb2L>}2f5ERSG+~mOI$J#*0Z!PjprU!9y>*L? zZ%w>e&Hx;i=H11y;eYnYC+r4rc$-O#e1625^5&&?(e+=ueF+`U7T``qUwQiUx7P=I zNu>G7!=okOmgDQ}01)CMyqp2(y$VAad&$UX+JecGt}(U9$nKMa?iW#I^;z z(k~5ErOl8Dfyq{BFskBO86C-!--#ob1xT1H%HL+Gv|6Pk!?lD#o@{Nc1;7KF*X6dH z0ieHMhD9Dc%xDL|DJf3@vM{39w0?DK*=ZQYq9MNIjgbK@26J_O#q&wlO=>-i%%yR1 zE$=th?Q$l#bGfZPDfo?XIh@yeSssV**}Fgrm(PCT@^TR!{1TZhwOO8QVFO!^TQdra zh{0MR#$+L^)vg+=GUZjQXGs_l^mF}&E(72U085h9W)jny!}1EofUaS1H)^L;xrDm_ z(x%H9>D?KCyLXrCPu3j4s6|i8&Ai1>$|P|uvNSE5oZV0hzHyJMW5~`D@?^U`n#hyw zMbr9%f&YbP7hC<;jTWkIclieMN>zdEVwb9IRG4gC$zXd%hN@&Oa-EJJ+fn)5Eu1B) zL^(k!%iWSY>MD!2u!$%Avc;n;b8akJU?xwV)|nN}FoFpTOaL<{No$)n@i3^HQ9F&4 zC;hITPUDl!PLRs#rnE9jqPpE&JKMSr?by~ID(?XB)4ph0f1+g4@&c^Z8o=NY(#`^N zwB))w0wf`Jx0b5Y@*34m9$+nxorxT=sZc@E^(fj9Day*$uuKGCd9qpJZ1-rFjExDs zFAGm$Fmr2+kRnXHWu&tsZy!#E1;#xY*Si3*k+fU`u>U~q;hq1f&0(l`(N$~z2rPib zlO@}UrgF$srG!(=W{(Z0*l-BL%-9LAKb@HLGB3G2lM^)dL1x3 z0LUvVv5=G!g}8_`*hb)V4@q*3d>B zGTX!eEUDQRyh^l4!Bno5QAkQxS>kj^B&npORiaY5Q9DIG$Gdbfl;vD;w#;}`g>-{W z<)|>U2UCDVmua${mZWx?E2A!HLsUtwat0KmAXP<}4B@eojGA1DC8gA&D}cdHFG$1E zZvjp(QFWD@p{^~M1;}uhl+@tTS;B=J#Unc_CQtg?T0~2_F*aPZP`PwrD1Jvrs;t4t zQb=9PurMbkUbZpLvSF~wT@_^qfHMH=gCYM`PXXJnkwn@y56pJTE*j`|tEb-psFK;X z48aVRvs8Cfelr-R5+w@EiP*vvrvYuQsu-Ydwn{0j0VFzvf!|$mvh}YWfaNYg#P;8Y zu4qHKVoqn)vJH=IgYCqlLdMYLMVGdX$}g~@yrZ~l2U}*#4uBHZa5t9-ex+wyYKbSo z_TaRgB?@g4DrA5{Sv>)UB_J!xZx3Bk+_fQpl3-_4A#!;MOcXmY3K=Pwy0iu9^dw0J z0IXNt)ra>O*8ots02W%DuU~(LDL~vOl;hbPWnV!qC;m*du;P@+bQY1K0;ZQrAYhrG zxb6V3AM!WxhT#}HI{@6Fh-3fXef(I$G8a3`?RfY9GGrzD;BGyFVZVsyi*ZKoH(tE> z`t#@i#|IxQ@9e|Rkeido@y=Y%rL1$792KT0NjBMP z$#U0;qO#u@8(s2}<@DAN(s;4iDSUBSTg%pZoZE(yyhJTP>D!|o$b>vY<|naK$*y5? zro2)SKpVB^V5VImbv^k@G@T_hPb^V)Cq~w4Vclp-N?YmaNt>v;cG_s`+LI|QK0RqW zy=xfhRh2M1fyq`BJ7JC{J^^Vv*QJTtnMiD7x&S*{0m;)w?MWDH_S;TC*Cxe&>%o(@ zG3j)cj8d8(wwwaAJO+5rS&$=66`hxMu3+w3o6~bd=`>OX3`9#?FzSjV!3i@%g0WkL zI7Q-gF}vH%Ds@|0krbFX0WY@!)diaCU4XhU3lLSxu*ZZl(%(ulp^bT67)*#wM;8IJ z4YXXiscqSnOGw&QhHGWC;Eie1on=g$I~j#S&Nb4WmOqDVSQ>MH2@P|uLwLGMx+x>1 z*pkzQ#811s20#}9ubZmIU)6f`iX8yH95`LThPVKZ(v<*{JA|i13sL|lVw7C^FmUNA zI-l@FSWR5nU#`Fw|L;9}#-7P9@89RiR=3xq+F~=0)D~t}v^)uO762vEGQ1x=e8|AL z5zyDx!zBWn#Kw+oy%b(&0RDk{fUcxsGZLfJ%C2F~a&%W>|2Z;JhF}KcG{XXT{hA#T zZj{74J$7ckU817cw73~o6C5TA?0yF@Xp z#|i<+>5x;5X+y>kl017xhS_WgsqVyCLS&^U?Idh%dD>PCEl)CZqg|)@C(%jB={5w; z)*+1a7yDobKsiEWzU;{gZo!avt;?Qc+UUen6uQtPB}19s=4Mn`+Xt?Z7KZKVDe_Hh z3&_#6GBTRwT4Y9V%J#BSxl**-?ILeVk9fT3Ok0X_c9n+!Fsqf#wV!haV7=l>;6xVv zW_v@!^5*H93 zt`b&_t^rui0PMG_TO=!yy8z)|t^wdM!Mf~{KW(Ms@zTp^+HIk(hr&z&V&8+QAe;d( z20xSX*&^oS14 z04-+#;)mp=7y#K z!LwWhd}lc#LapvwD{HlST2JENw(X@#q13;zuG71@^XR066BE-dk$|o(s?kE8N4tb} z7LgNq%MO6iBPrrF%w>wvO;^?^cN7(svnB(ueuIlDce^Ab0nReNJS_@3pQz?NbF#dHl52;ua^})&`2|}w#zNk|H%zO=DD3#nn|T zk!o8&`dMzA0pQ!79RL;`-~60r+@P1>>8pf{6@NjJg)0*$}1$!#c$ip zW+;ZF0Z8S?`w*U*X0AmO#O52SllCNNP0Pt|W{_0Sz5j`XIs1T@h(rx|rlxT`fj9}8A zDcGZz2U~c+7kPLR<0`FRwGu3kTZJY7BU7GjM{PirdayIZr-F?tJURnFlyIpI=E2LC zd{+Ql9>p5p5~gYm70p(dwZawL@>(PyDWNbA)8z;S+LpVK?tg>uvlYuO0e80f)5ni_ z+iAz(iv5_CMQvx221@9g>ka_VOw{vI1a|HYf9uxc%S(2d*jD}J-Mcyips^(R z$cD`!XQk6o85Wr`j8Rlwmd|nqV7;Z%H#h^pj49UsetCj%Ij4^d>rslk#wV4d5<|-WR`6fVud4`M2$r6_sI+x(IMZQ%V(G8zn14&KenQu8=P6L@80Xs465SSJ6}} zfSJ37vI?`2E&-shWvEL6pgRirM-^S#xfmmGYOt-uVw#6Lvs8+U1h4U5A`iV6G)&9xdQWSLH_XvNWBASCjwy{|5p}s&pty3>Yvv1(Y`p zqZ>wzZlp_LBA}G?7^!q4IfQ{U(n#m%PMLxd%J2Ss&-wiUJLf*T<8@uv^Z9&Sv1v{+ z`J=t0?zAa+)KLaAXAEKQxbXA9kZ)-2uA6I@Bxmt*kxYt-KBq{r_7-H$rl?;1jp2=Z z%^3;bmMRwF!*sfqa98I)RtL{-{$hQ|DhI&1DEC+YIRWFcR-j)YTd;DG*!vfiMb&AQ zkCE}!O@aH%Q#;$k*h5##n#1|qS2_Hjrx%ROT zGo>rJb6ffDet1{_=Gth9$L;=baYk`WsnGM77q9+2V7j+fL%O;i+&Q)V2_o-)<=gxE zaYF%)o5^brq7)ToGbtjw3#O4 z3-aCYDlFRE0-JARz(l5R=#F%=!8&BA&~SClV36T(4%jsuR;-kq+SFDp&fAnps@Ase zj$rDeZ^}U?2!`FUZ*0opBl&qxCp*%SCQ-P0y^6EZvVfywICE7k)E=EAz-auEpwY6J z6S27AO^zsmUDz10Nk$n?h#c@7rUo|l$Bjw*B|D8 zOC8Fux`#Z5l>GYcgZ#*G7-9r8XII{qzYp6?njHmA%PU3>F%fn4J(s!P5?d@*x(&N!=^Ycr8(H7Q5=hUn-Te9Y*XwK0S?KQW zEnl-HWn|DY-VErAV8rt+<^iCh>V=@u1Lm(hQ%{s@M(C4Zg5~B4_P3)8OjrV*EpMAg zS1lWIjTU|6Nndg$s8X-wM3WqXqyDpO>gI{_eeV9V{!YJ1tZ`j(G+o8?0t2m;QL-IJ z;sMDwE>Uu6Hog)MkP4LnFM0 z5d&zN$vu$|)T(QBxM-#qm69Jsp&hIwbRmjtm9fM(Rr~n(7L0!8-V2--#4Mlti8r>dy)a7`J<<%f##94M`Uf| zryp#eEdN@iNJ>=6nvr`%&Q~!lUZo`IviP=&QgwJL1nFS85L$mHnsnq(A<4&p8iMa8 zT_O|gvkWaMccVo?!+y#B9Uod-9tRN1+#Gy)7|f1vWmnB^EFU5W5+JtvTI9Lf|L5&b z-++{k^FPAeLYFQJFnIs5gPYwM>sS3PMA5|`3K8F(Yd~YV^Wz;bMhKQ&^-3fxjx0;- z$4~Uq3258kCx`zklVkThFD)UoZwr8OT`I(qBMQ3J?0ME^uZS`<3aR8(Hu7v5IWkoV>_I{q521m|ED1KRtn8F@g%C zUHW#8@mSc1pc0-lB%&^vH8Rf;g*UnGF2}4=t+aTqoVX^cRIk$apn@$Kqr)J zB33j&J@n9WPNj2#t#km@L5E^pmp%bjcc-I_dT#$pY65L(Rgx~%t1Sk_%C3E!?(Ftq zV#0uGrP@yHNGZrn#Z{C=@5c4GG36JnQ%3dLE{-2ZrYjJ}g!9?g47Cch6NAC?Dx`?$ zSXEP7_6U0QT#c7~9t!c*{3hWTny@WF2oXfjw6X-JNMJPJ^7Ks&oTRC0pn!VH>c=3@ z-a)$#srb?7q;s2LXTYho@FL{Tj|dqw9RQNw-w=Hf<|e__C!~XC_?{g@Ur8NQPCx*<{sOD0VT?_7nyf`;+3?f7|Z zK=309$p{<8;~sxwXJ8f}t>b7p97eMk_*BQP1(G~xE<*Uz4dAC@TBSh!T*{S2=kDb` z=CkyULPsEH$&{bx?v4JEJk7f5Tkw>toh>hQG)i*_Yn)FgfSa(LGvoSt*RR}x+%66! zV_qNn=`rvdk!Hgn?cr^i*tfGq;cp=F8Jc7*KQDL3Z@0NWuC0@NdgL%yvhK1qS-$-6 z&P`i!%Od&?*t+G5eE(;(=t5}S7b((yN522Qnl#<{*r^xO+ZfX+Ur4aMj7lyhiIW16c@;4XQ&pkB572P3Ps{^Lx>6o z?c*zwvAt5aT_4!>l+pIVsY*%>fsLXfe5U4WUyvl30qH8zo$Dk3^Z{4Di5rHM17~A> zE^_rXPX>IEn{S<+M&M3Rz12gp*0RHikkiKkF53%KCNDsnDU#Sjc6CFi#jnY?&T z8UGsP{A|CO*rlo%ao8YHHL0_km7#&Ky()G#aSbC`dtCVplY|PwxZ3w-^5A_;P(y(`HgD7EzBT`c)f*1|&=L`e zga#5^iCNv$GzgED@cy3Nq5!df_47WvKBVgm|F`$>caHMP(yX#x04VHct?M-B$X`SLBt5QooZ3FZ2NA(ux^YXT4}1)Aktn5+L#55BsMCgH#zqwc^2^F7bWN(Kuqwt! zgwN?pjasfyb&NL{%Hhz;im$(Jq&r+6y|{ko@$S2<>u~CBb*$gSF$tbuQ@?rlD@zeA ztEH#Kolb;Fz>Jjc@3F{yUWT=cR(`(^e83Zyb@!9!ZsyY_iH84szM=-helx4kO>8C^ z*R6yFN#Buw|C@35jtooHp_~UQNq|sd7+CyS|FZ>X02>gGnjP;V-NIW$DNHteYGQ&f zWdU52jn{uEJm4dz<$KP#F}=sC83rZomKMFWoB+o0v#}h}TJ`?o!_e)WtjF}P|7N|Z zRUfrm3$8trSt5|PcN(QKIw6DuBHbpsuXu?3!5%655}~@O|HrVS zluG9=Zmwem@q?^UyF+7O9B8UQL&?Nk%plRKz^=pAdMv_kmbuZ}%lY)Lz?%uJqln^f z9&ufE3oHmObtW!7F~xocMUK9fx|8fqelP9r*qaKj3c#h^et=5&YG?f&B)dgwn(sb5 z`AH^`Yeg+%%(;$Wb5J}5)7gEG%O_Q8I)ND#%~(HL=5c4s#fT}UF4g-Q69{TF8l5+F zE6}*<4ZvMyueS;r@fXUo{*FyHq#CMkmwI8*#A%pq1Gw?@Ga636Kn`xG&b{q za%jbIAAZp9)3GQx)D@>kw?-b_T-`+h5JkkBfUSwLBsYbJzf}gMP=pm z4Tom1NIQ#1?!LG5oW5aL&PfR}IE{A7mcdauRST?g+=ilU&7lZ{HKu{Mh6JGbyvh3;tj(8e}dzgX4_LN@l6|x)&AW|8J46YT<92Q-((@J)bGcgM-m5TB< zR6&W3plQp0^|CnLK^$r9Z|$B4cODACYMiyeJ&csSITGf;k*Te->w;0Oj!hb{yB%zl z1dF7<|2eAM?ZQj>y=V3LiUK=H`RHsU79!89IXo=vyPkIZom53c#xiR!0H#TFPcYB3 z24*qL!){&KbVs6zVmh4S22@ zUw&n2*PuLb;P0L_v1cD?Aexv)*i|Hxy^3Utrj5Bp3n&hakwG-b0(=QFhb8)MyWpn| zfr!3^S*`J!y%2^^4rJe-l|N;oj_>fJSxA@cI@S0l=~O>j_-fmi66D3JkHUh4MMIzY z4jvjR{+J9^45of1qW*ya&YlWACNwSswc<83^C*gQ8A&+~9Hjo^ts`IC9N%OH#)6NL z4qUI_-YN8NT_$#ZVWL|`5?U-A6+CJcb=MfSr?7mfDoMD(j0BYTHt>X; zL1KDH#jHvzl{&Nhx3ms=IbsErSn*Ago*|5oN{cYyv*bBV#a6ZhSys@>B^kt0@@d7oo z7e`ZT&afu5a3hp!iub>=Tih^lrI#uS}}XhaD*YNVD`e1f7Nd+t{#v z{p+D5bbG~NHT;LXZwlv5tg{zgcYEmN=cM%aT|w9B1w7I(q-E^xBFle<|2SeQ_Rqc@ z*;c%I8BVfRc>R0fO-K8(%cZNyXmQ^%21(A9@%C8L5cp@@Xg@q-FtQlEIempEZ9qy< z_a1ABCuo@IA66;wbqIM3fHmHGQq!Xq^!c`IS6h0P0d!RDLCX{$>tD?Zzj_DgWda){ z`QRiICCic8TT5+ZOYJzjeBx*pL*CN3ATlx0%dHQR&2;GO71VSzgF7x{s{L%nYYgC0 zo}cno+H7gcVVO#Oq?5i-M+jTf&xsF+e<7dWYb2p)S6j{=mU)zoGWQhT5iGT9%U3fR zpDmt(1XF3nk7RW&CXq~DVOdSs$gu+klJHI8Uk8%`xjS7+xTs=ZYx{@M?K_s+jttpK zLY}EkanNXYH+p7I+y?8XNAsJ_z*AFHYgAxyIcgU?R3DBNP7NH;cclaGsCO7jpCx(C z(!`W2J%_y)Cq~CQ>KX^6YLV@ZwA~lDNSvB%%i7MZyLCkGK0AoA35LFnEEf-pQ!q*H z`Yrfke*VVB*8-!o1T3ue*j|SSGV+fHz+~`fO3=kU;~P||-)?OFkG2?DVTNvYE^JLY z8D*_3#X>|mafu&_kS{*FY7^0_EJOTWkPOrL>jHklKIE0D#LSFp%=;- zc)Qfd^;nFPO9!#U&JW{A0S|_H0cpAEsehxX=viYr^B=A>fP;ut@pErSjOF~ruR|7> z@i^A@mo`VZ^A{~&oV&_$H{HTMug(-IM4YBo--Zy)1RCIr*x*Lpn;C9!&OC=F$>CNi z2V_~=3nlZOocRqlskj7Y#~zI%HevN0{0Czf0(P&z^hwd%>PC(ZJO(P518VVfrZjdu zy##yCA7$GxBe5{fPEb5OM{xIh>9e_dRlBs+sH)X1s&((i^u@l-5kEWn+v6o`E1iEn z+8;j}g_Z1R^m1t82T-in@L)xzD>Hw`ab3L(0SyaSd35KH`xBnlpT3>`xcH|IfZFuh;ffxcKF9m!i+^m+gJ?COctgW51U=*LI152Or_cJS zWJD}YCB!z4e8ND1|0n)gA7|{M*ULliGDcq4w#>760f?U{?-E)f^4r95bY!`a^5T(3 z-o0a!IcBvr8(>|Z(44Jw*4J2unaRzX3qfli+q?H0`oaEj7A9>KO|vL#*&5p)WGz>- z-KW3i0#AerqpMweg}jO1QhI;I(nn6tUeq$Y>CfSNsPmBIt{47PHssewU-k_=K5%?I z^KCEPJ^H~7TRx?q;eT9lxk99G;9KR+D2W%^OU%06Kl};>D*U)a)-NaC-gP(SI3GUh zfA!;ykctHCa40{vpcP+($|=^0zf8~rY8ewt?VMV^b3EAk_1+d&txdo>u&6W{9X_}? z6=5W~6#eNffgrj}quBxdHut$k4v1DmKG2V2=a)=ft%Kwl{Kz=3fu}jyY`|UFw#yG| zh>b&XvsaZk9HlsB7H(^K?q6_@s|0fmTF?x=iL zVyn|`(DEtYE<405a&78|xWGwd`|YQdclGq+NBkD5W#=h4TzwWIsh<`JYp1c{!L22K z`}>Gj%dw&$z>(q&=EHKt^D<`=)*kC{{QZuhKt{O~4jLR4=r-0Amth4EDHIDX1W{Tb z)qT`~hFZVgiY4cAgIZoI&;D}B048bZ}X5EH;W*GTiWT9+WG=#SP1ThH#E-1Ckg@Bi3; zhW|U|*3l)85{|OCVG?hEHAD6x-Kg)!OW_xL53RF10)j7>#y^S@zxRD8&;{K6t%gd4 z8o0yV&W{m#F1rA|y17`jJx%68?$Glcu32jMMa!JwSpxmlB+Jag~dZHXtay|zJ8N= zn`=L1!TH}p-n7}UlblrPUDNQq&64?bzn(4r!xVNM$Dqx)&RW+ zi+Id8!J@w!6H*OY6-2{h63Lb_Q_vnYd8(C-k4Z{K* zz8vz?^@V2@P3M3u)R3GR9t4@hUzDJN-s<*k2F)@$vXzi!P4QPVa{M>UoFfd(u#*SSFv>(tRTjm`OTRfU!(6`i@xAVCKHe|Y-r%E-= zy!LK0h$Yw<{2_MbefBK>5h4B&8^kGVtvO(*sRPlBs%>d z(@3GvQ{5Z-RqKBiQPH)_PLT{3>DI5SAh5DoqZHin5_lz84$m0&JSB=)F672tEeAv!VPSK`sx z`%*7Mt+oKqsBU5;0xpbV!`w>}iyPVZet~NGa0; zyz93(Uj?+@0+-$_DOozLCY(3_MTAGRWMchoW z1GHSBY0fF6^7-`0cPuV$@Z(Y^r$<#$)tyznQ9@PpwV+tkvZgdMGXejnY3i1Ad#L;6 zD5M8RSQ07*V3V_fsg<5{k-WZNST^E0HV{ zN*R_V<&gM}Qe(w%3+3nEU|cdB;74s9llZDQZE~>W`#oJETGJSXxNloXVsr+`+Idvy zK0pSY8?sQHDzBsA+8ZJOU*H8>espcsnpVS5{ z1JWg9sOI_ku)o8qiQj#je*G3%^b2lns;XAn)9sjzzv%_I9dOK}BS3nz6TmZ9`+{tOAUdPdS+DUhdN_^6Ni&zDI}aAk(r6ufq{KTk z18uSh?mqk-Ix$2Ch1!%Z1vFB|EQ2E(r~drH+71g6z_8Cr&`iYh?!Sew$nyTSVvB(h zF5zl5qFU;l?erK-f?g}u<-O>zRzZ}Rne9`U%2KQ@b89tURz>XulwS$a*; z8PVZ?h)sMVSZ~5(7V(f*u#~02k-tnI7N**_Su=Ik@x^ynkoEb^+>@|BGYo=Kuf}{0 zgPtQnN*QjT*}uix%*b@GFFDjwwcN=4jSJ~n%DS=MrMjO9=fRL*yeu{#*K|Aq31FIE z?4U|+=!M#cu6ft0d(HM6kIN|NT;a-bLdo_83%#8(2CLjh+EAG==8;x0GP)Rzu3De7 zDZEHSvd<*5m*z7M8CR0{_5z9v54PsbYyO1al%%kbeTkWx^#?Nv4?MYn1*4jrhmW6v z#M??dnpk5JRvAf7&FUo8 zDOKbpqpBIpb~4qiN(!Mt!8g-_1NvQy^umoIxi2K20vVp_1Fi@P(5ajj0e-@BSn;j< zPrIVpMjFw2unwoABOCsaZ4E)^_{sL|&p&5A#NhUMA|rmA)Ve>21DLw3>m*A$ROY-(g^|cq z775+Nnj_3aGJ_&4UCVQFapoLgd`4Z)Q;30n%+0VRQiGCwNYmYhxV&abvlp@xKjdQm z?#I0xiVEkK%uvn!?)S4nCf+ebBZXYvHF6Ru)#RceMZw(<6hR_smW=m`xs$=X^F*5O zX`7>l!VtZM63KYwH8GAo zLir1{9>J4^{IA``_^DyzAmmjz0mtt)7t^o!JFwj{d*-7^tBSF5$^|e)o}f zGeHvKm=v#XH&2A^56vNy+Dzn54a@P6i7kW*+3)Z6CXp-zuRU_*$8G;(g$UJ)c3z0d zK3T;!TaY$9Q{U}?*R>e$GcORQmHCjrrE#dDrl*+~c%5tYXYMdpz9T5OWf|lAf=H;1 z$T-9WDqpK^sCI|!IaVLdT94K#3$EyB4NQDe-fhtNp`?u+q{%|3Gt8BEw&8`Sk&zUs zd#RB=6;tv}gb1xF`cNj0H&T_tmJcKi{XFd>Rz9NJ$!l0(`w2Q>513fhDGWl&)%>I- zY#O^A^DD)IDMUXpX4dqk=(iSeSFsqy6aWJgb#|R*adr5BEKX^i+f4e0eNqP}%5%d* zr-&Cvw@+5J4Be_>e~Bp}P95nsH9`zbDhy4L4VS5_s6hRG9Fo6USI#dy*i4ABDWh5u`@g);OB|vNCX(yZGM{{TkHfF*Q*5dj22k^C(^i= z*iyMY=Cp$|1)}!Vu?bw4R4pI$rbGct7yna%8i)D8R5MHXn!C6@DUk6ncLk>`i^R%& zw%ULH_?h(Apz}DK(JY117Rp2;j-#+XbqNv;F}L3o6PdyW{FlWP&S%5ggnn2xeQ;1` zu$DsTTW;H?7^E-z?xHDmusY22ZS155=j|6l^b11Z&4d>iiiHbPqcA`Tb1cDYj*znM z8V%RIe(QhDBHUV7T(CedjPsl&{&c1R!l|eEK9yDZjZI_)i0sd=a)0`ch14k)+~+za zrBW0rBq6aRYO}D$qE-by$2H0p)SJv&rq(a*S#@_Ynw>5yrI(98qPRLA9=;?7nN{-X zAZcU1`HN;5VxmU$KBWuNJk|yL!l$rJZj~XvM*HQa z%Wvf3mXJ2^F^=O{l6FBqVXItsNJ2j!WF8+Z=tLA@}E|166G4=YKr~^s$Nrq0MF%V1MxO?39Wncw5V+ z-+CBLGggRIK+aw_;tkr5K+~@q-3D6-D;pR2PFJ#2f0yBI6}qD*P6XtyA@al>#WD;@ z6Z&$4G^l@)&8aPPLW!+cD(JJNgtRmXib8>GV*u9AFfGLN%97s+Gz-}rahbpz1;{}G zj71rpnb0eTGg_;!O<&J5$N7Cn6g>XR`;JQp`~ex}IrXKw4c`SKD0kNuL?!giL{=0K zt!dAR-QgT5Iwz#Ii)pmq1$urJSq7yLb@6N&_V4CB|GW5ew`v%3oP7gU3S`$@ zBeJp1C0M&KfZ`l=CNUzkQ1rv!DvbM!uS8bh26McUDS9^^bOc8xlH&6cbT-mwX-an5 z5=!?v80%5es(O_oKAfjk3d$MZ8%K>OggFyIaG$6_;}+!@n7b2T_S7$?bD8f|3w9K> zYCOoZ=yt!gZ+izr{-*qC-13Uj!va*hOt=>vR8vkN~uc_C_|8vR=dh4A_3KzJH0;~a4_Yawo*$Zf#z{!KbojdPVT0De* zhJT@0E5TIXk9%}lC-#4*;rG?&FLr~-hF>;+|3Y&TB9==YbGzR3LWggc=ikA4 zPx#rd{WajbxEM*x zRnD}nOV(U7Mb()oe#_nCwR$mGXvlYZJonM)M?r(IVn-??i_=KBgB5`)ef!=@^L7ci zOGzZRe)qkID$VNPMvF?aMd|4-p}o+@SRvd!G#y6vtod?mP7#Ej?p9(5yZ@Xn3M&Z! z{C}VNl50!AeV8d7h_R$n{amcf1U~1bpd-66NnXd*hig)zaK+Q-qMy+!)!b zE_q%VknDZNEw8+fhh|=GP%}cE zmPeN-xDLRMtA2a4Z{Ya#GM=azWV@7A4LD%lcO9pE`KpP&xwg3tXTP8JNT8s5dDpz1 zXIGf`1vW78b^3V6t4p_xjA8Z!A|r}#BYu|hecE}{%)-1;r!-@rA3GK>WS;oW8x4 z5L3)kP5p^$-NWWxbAQX>eM^q>0c|udmt&|{a=of7v_8ljL5fx))hbYrfZAgK-?R$e z!M~}njFP2Kgdn_|mRbsq5P1zVboUSlD_(jj3FE2o(<>LB-^cScCzyls?P(?__z{kX zoHA+^-h&f8JMtBS-;Au z)}u9j4(S1wP@RujA|LV+x3N1ELZ*Wl_FNp}jixuj5T;r9$4x2r2u5@2{20)FHHWFK z;VlK+(Ngx&o?O zE1}g%z6oi`_?#twRPPZAY?IeJFQB)(k>SCqQdv~Q9c1rzWa|c#;&WS&9@i4i%nLIZ zwCVHiB2oP0TU0{fioCv*}1A3>8sgkRAvJ~jc z7o3p;s9CeYQ}6V$)|ebnz?#49)&1F?-T$f5HCHqL$ecjm%K`WW1y>_k3u=2kv*k~7z=J5E|BGCB=%pvEHl+cM zhWBK~H@3A6P`${QZ#mk%&c5EyETbn=dkvNI&W4pc1@7>uW5JXd1bR47QNXO=0HfC< zWWnC0pIuucH{Rq(uJ(#0H$%v(Hi3-1lt?X6!G+-msb#~q+In5bOJ)>kVF6VoxgR?V zORN#|lQzh6FAnS~m6kT`gCYmEf4u0>|8XeF5p`|#5zc7aslOsyIqpB=rcF0AnQGXT z!`FjT-*90=L&pO$hJ=*i2#(~Ne`lND>Jp9_2%5KQo>vrXM@xVRLum_X?*wp6QgycO zH?)1e=-4LSsd47^Pv}+qTc7?_53c{XX*5Tf+l)0rSP0!amMzjtk-Z(W@K2uy(O)F% zu6^gAvvdO$JkbLyjCziY zu&FR`GXV@>GvJaPWe}WSz%p9jb$1-@NiBu}gFHkDFXS%nJfA&>$VOOX(@k2}|H1RU z_qqaeI37XYzV9Jau^uO%is;@tX|JWxZdQr#sCyLRo9_Uhv#3}`13F-s+(@Bbrr5Nvpea%2z!1e)Qm&(~7+|A??ED%K(9rN4tZxfGA;mxC zZvy)G!i6TNFfO2`DBB0>D&YxXy=Vj2B4Jg18g3rTfNHX3F)?_F??*(^$q2AVjiMtXQ(M#jxdtBghd~JfJxoFV4m2qwq12nb z*&>=$YytWH)3!xWM2z}v!aM}xk-TKErEbq+SuaNHZ0V5WU^}{v4xX!fND>R}la;OV z!Oa?R=?RK4ous&7v%gAZr;8}Dk|;e-F)6S_jDd${<-U!Dd!Mdk2ndFs-rRJoR@#Om z>xY?;GOyZq>SYb5e(590nH=sHM*((K|D`fSb=S!dfGiXufBztZU|BVQd@=OHkgp5d zeo6(s;#I;z!^LgGH2SQ}Ku5D=1EukLd4&)E`g52&jFwR(XmC$O>wG8rk4w3!c`_`9 z+zc(NA=yuXvq+^ycj3850=j665FB98y=0@H9CW{$m2GVwP%T#aT)eej`DU#9Wd~RD z38m3zAw}R*5lbLICer1?A}TDg0S_)Gq7IC!o~*I8V|TH0CQr9lbT(pdw#Io*qp6MN z*kRNE5~3^6k)G@C?k3J_Ot-|68JD$+XwE0J8pp)8Na4UkXKjMjK($18baR5+rtM@l zmS%t!*1jlrPo(h9*5EvOM&6NwmxAG_#nmNU$Dk_By4lVI-Q4o^Ga6`fgh-YdK#896 zkpC#e5{j!$Lffka*Qb{mtKGEGhgwcs5On+dyBF>S`ZFx1qE1$Dm!GN0^CTypAs7^# zFQ>9yp+Q%>g#U~+4_(sJ!JpDBo@VM7jP(f;nCa!Yr@9taQzI?AW2l<+q9}M;sHJ1G zI>b#4+!qdOw6X{rt47ava}J|`^SwD>h6(i9c#wug8QhPH2QKVJf3HR#)6Duwa(8%kLL*GS^ED4WF$nZn`d|VbPM$j`4;#z!f26zT=nmz=&Gq zkXChDuQ`D^VEQE~TT8#4^qrUeiv1anL67B?>k4SQbz=br0TMya6|Yt^(@Gzja}?le zJM%6_&D*Bfmo1rQRnen-^+4OlDvD2u7ogRgEXuV%eBAt<>hz9`+= z@FH8^|A z&LXiFct68j7H2M?7e6R(PGIIq-PBf~M5Y=8iHFE*w%f?WFP%f-jMpDO_R{9*AA*7p zXYXcY+-{GD|62`PC)YIp($2c9rA;1S%+|cxpHfe@DVZG@697UfcdVueiTqDkT{KL= z*>dj=M8_tfRT-~GSG69-2vhG{Fd2t679>0JK#JjmetDnLk@hSmf%i)aX>upT=%T29h z)iWL=;U8b&6P(7!tiEp9KVFKKwSPP!DnMveIu*Z_xuDT27%s_ML<%ctRk!UNSlb)_ zc^=#edLAA;_!IH(!}T%6bIjnf?Uryqd%`cgp);p?*h>A4_Wqlpkz0i7w5&{L{(ze@ zLM@mY6+#A&wr_?&OU~b;W@nXRR6cT4Rs(jORY$xk6N0_Q!t#UPgFM=F%cb z=>B@LNB061l1ZoRcsbDKrZ6cG@AG5mP-Kgl7=$(^SF$8X18gdI`)swF172m12oJ9` z6C3u%lq%wezZDy0>alr~O%g0o-~Vmt$dHe&=CbhJ96ILTozqusebfrW#+TP4U3-rZ-d4Ii5oeNyT5A{hSzk6*uXwA&!t zHIjmTdcBE>l`YXi=1Nez7ZuXHWz#7jpQ(m-tQiVrAUi_(9{h7}Px%irM7-%a)S0Q# z=03H*Z2b1j!x{0_e^>_e1dyu#JZCfaiQ}a)k0G(W?e3s*6%ah@Gq#1nZ3<5&4hnk% zH*ZxrKUZ}DSZ}v#&dxBC!7&FpKubf9czAHoE#f8E`)rD{XW3*~6(n6rRI$;daE!n| zbM0hoq>m~PTx@M2wiBkdZe^X|se}`z6x5Q##*(4D1?8NBkL&TXYWNWVf9rB*O&;&n z9@JIGM^!0A8tHXQD8v>PLtA}Ad=x9PSjIS#DfDJ(HV2xmpsWrN9vYey(DOM9oH8i# zg?9^N=OzsZPz)MWetxks4AfE^Uz8FlMI2cfOo!Y&G7S8~G&+LA#+0AlUT}ZBN&I-7 z^VOKETR*SdJt@fH^vRu(exmR)cVC0x#izyjOVq@&4AQm@vdLev|1?s!h}3(CmZXw2>q~c^M}*GLV8%nI~Aw_++wX$ z^Y zZj50WwZ}XvWHdgZVsSvwrKvS#BAr`U*)#{F|YD!jcW|08%Dzd2c5#eO@|`T7@p zUuU)$?z{Oe9|;vHPowg|^Md1P*WY`v(#3!$v_j)}hm#OYQA2uvlq(fHq!~ta7j;QD z&6ynRvW`h5#D|nSNnkNsnRla!zHbu)8MD=(e>sP=w>Us0J1ZWa8>Nlv1wwUyw4$uR zL;}#I2SKkWkqtzAz{Mp|*cpP|m_YDFc1d^%&oqW>JW1+I%2k-kzfhfBW?S9VHU;_@ zvy@ikKaKyOVmUzqsYlq!q$^%yAA@E;`&R)}fwS3l*9jo@`;ThXyda`~3pmLE!|=3* z;jECqa%EZs?WabSk|)|f2LjRr1X}^SGH*CLal_rW4(EU0-ItypzkBd|d_2E%&1Gn$ z5)lqbu7|}C6@ivW1`0h{`VvLEFir9z2T2shOM)k>PJ!EVf`XThAnO&-SW^(Wu9^o+ z)M|?hLz_LP55eceqVH6o4g){E88w3gPu%gdI^I6@C9Y?U)3M4<)TKP_al&8Rc=}{{ zmF6Ou*t2kr%6WN>u<5P7&ozZY1E_GA7%7}U39J2+PebpgA8~wvwqbtC;UrL)TPzi6 z7)vs3GnB)-ru9Fixg+TRBLielCTheI^OOj;B8$JR53@upVV+%z7N%@qNO#|n$7A^A zM0^$z8WcNp>RjSp2eaMhdV3g=tR;3RmPE zGvtw>_0N`j=*J)%Am+Zx#qZo|iLfj!PU)YpsJXCf_g(VRCf-|#BJoQA>~aHEpyi^| z3lG*M(mSF2M|b?r9Xy-qwGs8l?8ULhdZJDRxe+bdXo1V#%oZ;9Gt^w)ybGG?p0w+3 z0Eh3C07VTsNp^O`z6#%?0L!lt-Zgv?*S&({1g0N-0EZA`$8R+VSOr(8_Dd>Iul^rT z(YF95VjHUuCBpb-G*qpgGvyACtY$6?fwz$yeEiY%E+NZB<>kHF1y{zL6kdD+Sf2&R zS6SLvap4(?S_23j?^z6XreaR=KKhDIIUF***u-zi&KW!=$nx z@S{U6dIUIE015RcS21H31j}a`+!U7;Mj6yj6+~$OxnlxCodRV=HkZN&A@N}I$O$cZ z#F+E$ReDwa2hH7gFuXr8+@QKULYbMjB^cK>O$9{cHfcWp(kwJ@Xd zp04xbQ3qS$fB?h;dQ5V3OhWjrEr~~36Ar{Mh-<); zd)@==5SPktLh29G9iQ?-_J{C3&;Qd=hum21L_jDey%5r|5wiK@OOY)JLp>z3Gqg|t zE}xi)HAioKMO67?oTXp;4MmTy3mMj7mqFB{Nv#@eS#e{Q>!OFXYqM5xKGADEM;%;C zkJYb_vZ4LCbYHJFh%-#Q0k{N6)YpNQTt9VZW4>cYCtCfq*!x>OL7@^m>i0W z8l!Z^i!>zDT3qgo)%1&}a67Kg(7)0Lf8i^aT3RN0fGdbidn*d^)&H(u!JL^Az{J}E zeNM;lN*^-k;pp!X!%v}|5ij9g*e1a5R%}_JhF+xR#c?L*vO@Vv?FYtcCIm85LKRFP zjr!XYnL{cjDLIA9DI4Z}pHDb72Edp-^)S|p7Fpt>i{lO%nN5>eufGp_lt7V8;%|Yj zVhI9qv`^Ll;TWJ1GD-hbu8+P2fpXf3Np5lM9H7n=2$wX^Ar5XL@?3Qk-*;wzF}~~) z>B3mJs*nI)qJ2Ah%HwwHcKArBB;e-yN%+lbTZqxUIBH?j>cO}tAQn#@zuVNFC8T)| z&m3~=Xb6-PR$0Fark8t{ol>l^L@emE<4CG1yyaC07gC;ouVlEOf!LTDo2(OjFxs*gGZzijpMFRtPov-BH@FBB*?bIg3xv zBDnLi^T~^#&QPTFyU&&uFBP5!u3}rvxigo;kGV^Ey>DEgF`2 zEIrIrU7Lhb;L38@e=9tl%kQ2#_9SXn6w3a804_n%z8F$~Ll|>@WwjW2T7NQQOI4Q6 zltPj)2~&FERJSlEt#aLV(+i2y4-RNjgO~Fy7o*tj0#-^U;xu5%Twiv!{0{B0^;^It zFk~yG%WS6#37@U2q|s_{G()yUu6EJ1zUcDbp`wH?A+^S|Ml!U~IfG@45|37I6QyUP zDh;`x;YYcxr1Y2>=R~ASWUg(gN-Bj|mu&oTw+EiA{x|C(AJ(6cA75VGe%+2`TdTS0&-LR3d z{1&dSZWd0BNNtOO;fw2LIw7tGfm82*J?rv$$8HnlG5M9kJ(SIe$LrgPd&@FysU?}@ z?m344#g=Us>Jmg{Cv4HQzHstCL&AGdZEgW)cSjokGTPd6@>ZA`EYF@Th6tr@gkN?5 z_O}6L!ylMLvLVR)AC{EvX@k+_5m@qMj|#Q^lqb8z*fSzGiIHho9?lU%;?vf6NBk@h z79H3Aa+I2n6+Dbgw0Z>k%KH6Eyi{eOqbU=>n~0Q>3Hb@3 z8yS~LZd{?68Jg_V#%N(C;hU826{deMMU|_*etOb*UeSuv%-2&elPqQwEZY#xcE)uH6E8{GW^|+d=40#@GOdj+Y@<_S+z8$R6QQ(q@vMHP0O<^X zp5!1HZy1jE>mdMa9fH9#;pvheb*4PoM^jpWN!rjGdNke%KW}yB&-{#|=GX8*;MC#|{9RS=U_5uzZGZ;^k3e$llJ%GSn5oT$Q|hSzVvu zXe~*)uCSxD1+WTVn&O{y1wJ8h!dXHtQT$uFnJars*0nG$fgyWiItQT+7WA6Fcx065 zM$!>%Bd3aHYr>+ZbPYSrfX%N7!vy0H1`KK^RPRaXJy&aa7_#5la^s7h9RMzr(erDT z?Y`zERTB1&wON%3fT4EwCM?XO$MD$O}h$wkOV!g{^d*D?hDY4%wK5jJd7>Cn;`av?S?ITgXgrqb=L=^qI_A zParH`XfiU|CSTWMPA5`YFMBY6sU=hdC`43QC7L8B*s%Gf^qsi%p9zg|ln^$pLl}5y z&Exd<$B<^}OttTcLL}+sg{j5+j^*hdpiEKa8=sY$)h*A$yv7su?rnrobhr4{_u+dY zOpC(uP=&3fcY_KUJUeVZJv-C!d$!lFb%@UL;NcX%b^!jj&wPf50HFV$J$?EoPoL^0 z8*j2^`D$PSF_$S*h50`lsk~0L+|-hLgG+Ctk_k*AbG5!F@(_k>$hJb`3pnB95Sutbrm`az6HQ+ zo~*LbR&KVLh+nTase)$Gv&|A)Y&1*+D7uBGi}B(mDv@1S>)b7x^&in9L*0UDNtVR* zp`JRx!v-a@fDXPtR#n#$mQ{)>hb+&Y6AZ6YEyHUuSb!E$$#oRJ>;l-*wLHMrU4T-R zGP0tgC}WfQ+uFk58D5u{nzWP1iEVkT?k`+ia0-a&9N&HPh#dfqT(b55FPH^1&fjSm z0CxJn&c06s+DeEyt|CmwE@dhOqGQ|~_rUVztHdRico*Djn};i!@FP8La(R-T+)f2&FZDQydzc$8~EsXOU1YNBdI zk}dvG$hEc@$qAlrW~u8ILv_KZdeLB~U?oaAujKFAyBlvQ*@*1QPLE+-1El<0%Fi*1 z(xwLUQ>BEudWzHO^U_;}V1|_Ea&ihIdkd%2M}`Rv@QCoVQNxZ#6De?xE2|Wwx|Ggg z;>?s1%}~}7Rf)=3T8$K^iXKg|fG&O%{nF(nU+z@-Id@iGf8B*FV!B-^JSt4NBLT^r znDn;{Z8SaRk#mbejRkxzJtaC+q9QM~gi&bJnlNjP!1gOklK298cK7bLA3y#te)&rd zF>?qtHxADo}l{`sRvzg!>v^Ver*%vj(u0FLr<0GJ<* zHZe&Sp2N>Y;yFRV&o&cwpYfduu3>X7S#7iwQmx|5awViLv@*IS-Xz+V%i*-qiKisy zprkN8$uo~865CbeA8|U1Hvl`9Z1M9B(Kjy-0q|68O#u>ZOL*N{g-7XD(luP73`E_G zwrulgx11H0axIvTCm$P*r~K{NnGUaj;U1t%;{M$@7ch^u6^&Qus6t?*7_9U{%kCeS z0k9|Yh0Dv&Uta#~>`daF2%bXS+(IQxwgu4bs*uOR)kMr!1o_F`yIcma450ZwF;B_0 zziWsm+b+ybBjvF|14af&fh8}~(=$rPU()H8M0EvA9{CH{fHuoWQ`zIJ)-ae5_>nv( zx~_~;qIHTeXwBv0Ff80pXSFF$|IO)B`M{{{1Z)^Al>32>HqEI^**!84BvoULhX z9F4jJNZHPn0Ci7@sDMETBmN_ zPvG#SELxRTP~BH|?l8OK51&0_dxiZ6Zd$@7-T(5z2kZdghcK zXd*|^QlfBXG}#1mR6|w?LIrtxlqocK@BaD2huQ&Px$*hpeQc2y&=$1^j0M;>1IE#) zz};L4Fd%8MS*`2VVK4s{LTv+cs{G`|gp zJZy(-7}I(j>Kchpy9>q%#xh12`MqjeS~1vfWS3AC6Aa869G#PxS&2@^Z)VYo(D>4| z--gqR0F@X;on8#fb7BHqLaGv@#01;^3U{fyyyWyWQ-Bz)zMG8~iM!6~8iE;|0>I<9 zFxy=oISn?3EMA35QTdJR8pgED;#8KS;AMB&CNL)^rb|+sQb<8o|ajuQwZegEM@Hcf0CXdP0?M9v38cOfxzJB$J;{t32vgUYq@uuY61^;peV7;?b_Zk2T zD5FpzqN-J*t+4czT!&0zT0(Xj)*2~N6Ub_)`6gN00vF4?o1iVq6{q zFnx7L;S$ztj-w(CXmcSMMeRp3SA}t=@k$gprjrC#0yO85>B_yxuM)HMpV19 z>q8Iq5CG;Ya#GRXb;`8>b(L!|j;fsf-MTnSIv&X|xd_!&=qRVaTiUGUilvq@GO~3E zW9%6j+mSG|V2?dRvghqckNlZCM`koN;P0OS$b>C+AuTE0@fS?DOCrqKc41qb6NPUg zPo*t#i;|5Psj{|`mHxCfOnYRwJBbz~#p@HCrN$pGQj}Wszd4BG0q} zxRpO!hb(}o*(kt0;Q2ZK2{*0d7IkZY*8DcC1jA0?*>$Z1r&Ed9W)wR`wy=4W^c03I zdFfZVmRbHbDx`TtB^f5MDw7a$R4Ez4HX$&j8&L4+mn~*&4#fWQ-n}0_c)$(-2khBI zzcE(wSfBDHL|MLeQaO5%*#Xt8r z%9}%H0JxfvBX%f}7z@CVCtIgyEjejH%I`MuhB=x>H)=wWn@z?%YH~B@KpeGUm_2D^ zRJNkhU{AsT%%fs(uH_Yfb`8eh@IO;7cvo>FAY(Wopi4s80pJXP1UPDW-C8CG-`b`k zq;%1mJiF;kD*WnNK+9%NVv^8>M5Pv|6uN6zo6F|u)7!V%uU3c!^&wYS@!BuREG;`} zN72NwcM>f~@F`4o3XttWZMTHl+&A}VIOZu`1mqBa6@U{*hK6w6 zEVIoMi@Z75oET2Db9=5+eErhZLNQBQz-iYqL`W+_=hC%Z3~RvebYtY1q#L=#F#neE z0`@3UMj=t%lNE|>B7Vdyztbgk1O_I63nfx^wk_U?U1P)sSPB!+GI$gvl#&#ZXQMp8 zLME*_lZ2mkb^!Q( z`}fb80t8}Jwf^7q#h9GZU~-2rHp=TR6B8B^`?HX3z_u~WtgMn-m@_eLlcZDRw5~XU zDXUw{dStkpv`Q~6yKR>|8vNx;t^r`ckn?@YZX)j)kh=$g1)Zyh?|>4(L4V(Ag(br% zYoERQSh*|1oK|H(lG`bx)B>sW<|Xaimhj+{(tt8z3tRJB zhST!Qb|4_irN7uFNk2|D_BklPH_X5F^eML+X8H|#@>jquD z7}9~+PBz(!&Z&f)v_+W9&1r%0YUNqvJl%TMD{uBa7%?+5ZPnXjuRd}Tkw`EW=coV) zON?n{BrMssM>Q7k7NA_Q*>+SF)pb;cLTRT5|D;wM70;-JikD<`#gs&Y7H#m_U7beUbVJaF{I3wGg*7m4}Hc-7^%Tsr_v_4)Dr`)t_3`Spl`hV7$}Y7^*KAHtfSAoMCD~Pan}Wwm6fH<~O$CO{EWRC{Fjb8A?fzq)X8<@q zQ0BEL-BgkXmHh5XfZGyvx&UR2&gvS@ErUΠ(~@MWK;OFG@-YlL*WP>vFH&`}f%a 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≫py+ex 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 literal 0 HcmV?d00001 From fd6e199bf4c71ef9994589388849f29927af077f Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Tue, 26 Dec 2017 10:53:41 -0500 Subject: [PATCH 043/160] Updated configuration files for Doxygen 1.8.14. --- documentation/doxygen/doxygen touch.config | 78 ++++++++++++++-------- documentation/doxygen/doxygen.config | 78 ++++++++++++++-------- 2 files changed, 98 insertions(+), 58 deletions(-) diff --git a/documentation/doxygen/doxygen touch.config b/documentation/doxygen/doxygen touch.config index c6dbf78fa..8e2e6612b 100644 --- a/documentation/doxygen/doxygen touch.config +++ b/documentation/doxygen/doxygen touch.config @@ -1,4 +1,4 @@ -# Doxyfile 1.8.13 +# Doxyfile 1.8.14 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. @@ -20,8 +20,8 @@ # This tag specifies the encoding used for all characters in the config file # that follow. The default is UTF-8 which is also the encoding used for all text # before the first occurrence of this tag. Doxygen uses libiconv (or the iconv -# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv -# for the list of possible encodings. +# built into libc) for the transcoding. See +# https://www.gnu.org/software/libiconv/ for the list of possible encodings. # The default value is: UTF-8. DOXYFILE_ENCODING = UTF-8 @@ -226,7 +226,8 @@ TAB_SIZE = 4 # will allow you to put the command \sideeffect (or @sideeffect) in the # documentation, which will result in a user-defined paragraph with heading # "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines. +# newlines (in the resulting output). You can put ^^ in the value part of an +# alias to insert a newline as if a physical newline was in the original file. ALIASES = "YES=@ref YES" \ "NO=@ref NO" \ @@ -346,7 +347,7 @@ BUILTIN_STL_SUPPORT = NO CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen +# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen # will parse them like normal C++ but will assume all classes use public instead # of private inheritance when no explicit protection keyword is present. # The default value is: NO. @@ -717,7 +718,7 @@ LAYOUT_FILE = "$(SOURCE_ROOT)/../documentation/doxygen/DoxygenLayout. # The CITE_BIB_FILES tag can be used to specify one or more bib files containing # the reference definitions. This must be a list of .bib files. The .bib # extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. +# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. # For LaTeX the style of the bibliography can be controlled using # LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the # search path. See also \cite for info how to create references. @@ -806,7 +807,7 @@ INPUT = "$(SOURCE_ROOT)/CorePlot-CocoaTouch.h" \ # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses # libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: http://www.gnu.org/software/libiconv) for the list of +# documentation (see: https://www.gnu.org/software/libiconv/) for the list of # possible encodings. # The default value is: UTF-8. @@ -1015,7 +1016,7 @@ SOURCE_TOOLTIPS = YES # If the USE_HTAGS tag is set to YES then the references to source code will # point to the HTML generated by the htags(1) tool instead of doxygen built-in # source browser. The htags tool is part of GNU's global source tagging system -# (see http://www.gnu.org/software/global/global.html). You will need version +# (see https://www.gnu.org/software/global/global.html). You will need version # 4.8.6 or higher. # # To use it do the following: @@ -1061,6 +1062,17 @@ CLANG_ASSISTED_PARSING = NO CLANG_OPTIONS = +# If clang assisted parsing is enabled you can provide the clang parser with the +# path to the compilation database (see: +# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) used when the files +# were built. This is equivalent to specifying the "-p" option to a clang tool, +# such as clang-check. These options will then be passed to the parser. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse-libclang=ON option for CMake. +# The default value is: 0. + +CLANG_COMPILATION_DATABASE_PATH = 0 + #--------------------------------------------------------------------------- # Configuration options related to the alphabetical class index #--------------------------------------------------------------------------- @@ -1180,7 +1192,7 @@ HTML_EXTRA_FILES = # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen # will adjust the colors in the style sheet and background images according to # this color. Hue is specified as an angle on a colorwheel, see -# http://en.wikipedia.org/wiki/Hue for more information. For instance the value +# https://en.wikipedia.org/wiki/Hue for more information. For instance the value # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 # purple, and 360 is red again. # Minimum value: 0, maximum value: 359, default value: 220. @@ -1216,6 +1228,17 @@ HTML_COLORSTYLE_GAMMA = 80 HTML_TIMESTAMP = NO +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML +# documentation will contain a main index with vertical navigation menus that +# are dynamically created via Javascript. If disabled, the navigation index will +# consists of multiple levels of tabs that are statically embedded in every HTML +# page. Disable this option to support browsers that do not have Javascript, +# like the Qt help browser. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_MENUS = YES + # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. @@ -1239,12 +1262,12 @@ HTML_INDEX_NUM_ENTRIES = 100 # If the GENERATE_DOCSET tag is set to YES, additional index files will be # generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: http://developer.apple.com/tools/xcode/), introduced with +# environment (see: https://developer.apple.com/tools/xcode/), introduced with # OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a # Makefile in the HTML output directory. Running make will produce the docset in # that directory and running make install will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# startup. See https://developer.apple.com/tools/creatingdocsetswithdoxygen.html # for more information. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. @@ -1360,7 +1383,7 @@ QCH_FILE = # The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help # Project output. For more information please see Qt Help Project / Namespace -# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). +# (see: http://doc.qt.io/qt-4.8/qthelpproject.html#namespace). # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_QHP is set to YES. @@ -1368,8 +1391,7 @@ QHP_NAMESPACE = # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt # Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- -# folders). +# Folders (see: http://doc.qt.io/qt-4.8/qthelpproject.html#virtual-folders). # The default value is: doc. # This tag requires that the tag GENERATE_QHP is set to YES. @@ -1377,23 +1399,21 @@ QHP_VIRTUAL_FOLDER = doc # If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom # filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). +# Filters (see: http://doc.qt.io/qt-4.8/qthelpproject.html#custom-filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_NAME = # The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the # custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). +# Filters (see: http://doc.qt.io/qt-4.8/qthelpproject.html#custom-filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this # project's filter section matches. Qt Help Project / Filter Attributes (see: -# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). +# http://doc.qt.io/qt-4.8/qthelpproject.html#filter-attributes). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_SECT_FILTER_ATTRS = @@ -1486,7 +1506,7 @@ EXT_LINKS_IN_WINDOW = NO FORMULA_FONTSIZE = 10 -# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# Use the FORMULA_TRANSPARENT tag to determine whether or not the images # generated for formulas are transparent PNGs. Transparent PNGs are not # supported properly for IE 6.0, but are supported on all modern browsers. # @@ -1498,7 +1518,7 @@ FORMULA_FONTSIZE = 10 FORMULA_TRANSPARENT = YES # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# http://www.mathjax.org) which uses client side Javascript for the rendering +# https://www.mathjax.org) which uses client side Javascript for the rendering # instead of using pre-rendered bitmaps. Use this if you do not have LaTeX # installed or if you want to formulas look prettier in the HTML output. When # enabled you may also need to install MathJax separately and configure the path @@ -1525,8 +1545,8 @@ MATHJAX_FORMAT = HTML-CSS # MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax # Content Delivery Network so you can quickly see the result without installing # MathJax. However, it is strongly recommended to install a local copy of -# MathJax from http://www.mathjax.org before deployment. -# The default value is: http://cdn.mathjax.org/mathjax/latest. +# MathJax from https://www.mathjax.org before deployment. +# The default value is: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_RELPATH = http://www.mathjax.org/mathjax @@ -1587,7 +1607,7 @@ SERVER_BASED_SEARCH = NO # # Doxygen ships with an example indexer (doxyindexer) and search engine # (doxysearch.cgi) which are based on the open source search engine library -# Xapian (see: http://xapian.org/). +# Xapian (see: https://xapian.org/). # # See the section "External Indexing and Searching" for details. # The default value is: NO. @@ -1600,7 +1620,7 @@ EXTERNAL_SEARCH = NO # # Doxygen ships with an example indexer (doxyindexer) and search engine # (doxysearch.cgi) which are based on the open source search engine library -# Xapian (see: http://xapian.org/). See the section "External Indexing and +# Xapian (see: https://xapian.org/). See the section "External Indexing and # Searching" for details. # This tag requires that the tag SEARCHENGINE is set to YES. @@ -1787,7 +1807,7 @@ LATEX_SOURCE_CODE = NO # The LATEX_BIB_STYLE tag can be used to specify the style to use for the # bibliography, e.g. plainnat, or ieeetr. See -# http://en.wikipedia.org/wiki/BibTeX and \cite for more info. +# https://en.wikipedia.org/wiki/BibTeX and \cite for more info. # The default value is: plain. # This tag requires that the tag GENERATE_LATEX is set to YES. @@ -1970,9 +1990,9 @@ DOCBOOK_PROGRAMLISTING = NO #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an -# AutoGen Definitions (see http://autogen.sf.net) file that captures the -# structure of the code including all documentation. Note that this feature is -# still experimental and incomplete at the moment. +# AutoGen Definitions (see http://autogen.sourceforge.net/) file that captures +# the structure of the code including all documentation. Note that this feature +# is still experimental and incomplete at the moment. # The default value is: NO. GENERATE_AUTOGEN_DEF = NO diff --git a/documentation/doxygen/doxygen.config b/documentation/doxygen/doxygen.config index 5bc2f49f2..d7334bf98 100644 --- a/documentation/doxygen/doxygen.config +++ b/documentation/doxygen/doxygen.config @@ -1,4 +1,4 @@ -# Doxyfile 1.8.13 +# Doxyfile 1.8.14 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. @@ -20,8 +20,8 @@ # This tag specifies the encoding used for all characters in the config file # that follow. The default is UTF-8 which is also the encoding used for all text # before the first occurrence of this tag. Doxygen uses libiconv (or the iconv -# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv -# for the list of possible encodings. +# built into libc) for the transcoding. See +# https://www.gnu.org/software/libiconv/ for the list of possible encodings. # The default value is: UTF-8. DOXYFILE_ENCODING = UTF-8 @@ -226,7 +226,8 @@ TAB_SIZE = 4 # will allow you to put the command \sideeffect (or @sideeffect) in the # documentation, which will result in a user-defined paragraph with heading # "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines. +# newlines (in the resulting output). You can put ^^ in the value part of an +# alias to insert a newline as if a physical newline was in the original file. ALIASES = "YES=@ref YES" \ "NO=@ref NO" \ @@ -346,7 +347,7 @@ BUILTIN_STL_SUPPORT = NO CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen +# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen # will parse them like normal C++ but will assume all classes use public instead # of private inheritance when no explicit protection keyword is present. # The default value is: NO. @@ -717,7 +718,7 @@ LAYOUT_FILE = "$(SOURCE_ROOT)/../documentation/doxygen/DoxygenLayout. # The CITE_BIB_FILES tag can be used to specify one or more bib files containing # the reference definitions. This must be a list of .bib files. The .bib # extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. +# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. # For LaTeX the style of the bibliography can be controlled using # LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the # search path. See also \cite for info how to create references. @@ -806,7 +807,7 @@ INPUT = "$(SOURCE_ROOT)/CorePlot.h" \ # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses # libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: http://www.gnu.org/software/libiconv) for the list of +# documentation (see: https://www.gnu.org/software/libiconv/) for the list of # possible encodings. # The default value is: UTF-8. @@ -1015,7 +1016,7 @@ SOURCE_TOOLTIPS = YES # If the USE_HTAGS tag is set to YES then the references to source code will # point to the HTML generated by the htags(1) tool instead of doxygen built-in # source browser. The htags tool is part of GNU's global source tagging system -# (see http://www.gnu.org/software/global/global.html). You will need version +# (see https://www.gnu.org/software/global/global.html). You will need version # 4.8.6 or higher. # # To use it do the following: @@ -1061,6 +1062,17 @@ CLANG_ASSISTED_PARSING = NO CLANG_OPTIONS = +# If clang assisted parsing is enabled you can provide the clang parser with the +# path to the compilation database (see: +# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) used when the files +# were built. This is equivalent to specifying the "-p" option to a clang tool, +# such as clang-check. These options will then be passed to the parser. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse-libclang=ON option for CMake. +# The default value is: 0. + +CLANG_COMPILATION_DATABASE_PATH = 0 + #--------------------------------------------------------------------------- # Configuration options related to the alphabetical class index #--------------------------------------------------------------------------- @@ -1180,7 +1192,7 @@ HTML_EXTRA_FILES = # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen # will adjust the colors in the style sheet and background images according to # this color. Hue is specified as an angle on a colorwheel, see -# http://en.wikipedia.org/wiki/Hue for more information. For instance the value +# https://en.wikipedia.org/wiki/Hue for more information. For instance the value # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 # purple, and 360 is red again. # Minimum value: 0, maximum value: 359, default value: 220. @@ -1216,6 +1228,17 @@ HTML_COLORSTYLE_GAMMA = 80 HTML_TIMESTAMP = NO +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML +# documentation will contain a main index with vertical navigation menus that +# are dynamically created via Javascript. If disabled, the navigation index will +# consists of multiple levels of tabs that are statically embedded in every HTML +# page. Disable this option to support browsers that do not have Javascript, +# like the Qt help browser. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_MENUS = YES + # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. @@ -1239,12 +1262,12 @@ HTML_INDEX_NUM_ENTRIES = 100 # If the GENERATE_DOCSET tag is set to YES, additional index files will be # generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: http://developer.apple.com/tools/xcode/), introduced with +# environment (see: https://developer.apple.com/tools/xcode/), introduced with # OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a # Makefile in the HTML output directory. Running make will produce the docset in # that directory and running make install will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# startup. See https://developer.apple.com/tools/creatingdocsetswithdoxygen.html # for more information. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. @@ -1360,7 +1383,7 @@ QCH_FILE = # The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help # Project output. For more information please see Qt Help Project / Namespace -# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). +# (see: http://doc.qt.io/qt-4.8/qthelpproject.html#namespace). # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_QHP is set to YES. @@ -1368,8 +1391,7 @@ QHP_NAMESPACE = # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt # Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- -# folders). +# Folders (see: http://doc.qt.io/qt-4.8/qthelpproject.html#virtual-folders). # The default value is: doc. # This tag requires that the tag GENERATE_QHP is set to YES. @@ -1377,23 +1399,21 @@ QHP_VIRTUAL_FOLDER = doc # If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom # filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). +# Filters (see: http://doc.qt.io/qt-4.8/qthelpproject.html#custom-filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_NAME = # The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the # custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). +# Filters (see: http://doc.qt.io/qt-4.8/qthelpproject.html#custom-filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this # project's filter section matches. Qt Help Project / Filter Attributes (see: -# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). +# http://doc.qt.io/qt-4.8/qthelpproject.html#filter-attributes). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_SECT_FILTER_ATTRS = @@ -1486,7 +1506,7 @@ EXT_LINKS_IN_WINDOW = NO FORMULA_FONTSIZE = 10 -# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# Use the FORMULA_TRANSPARENT tag to determine whether or not the images # generated for formulas are transparent PNGs. Transparent PNGs are not # supported properly for IE 6.0, but are supported on all modern browsers. # @@ -1498,7 +1518,7 @@ FORMULA_FONTSIZE = 10 FORMULA_TRANSPARENT = YES # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# http://www.mathjax.org) which uses client side Javascript for the rendering +# https://www.mathjax.org) which uses client side Javascript for the rendering # instead of using pre-rendered bitmaps. Use this if you do not have LaTeX # installed or if you want to formulas look prettier in the HTML output. When # enabled you may also need to install MathJax separately and configure the path @@ -1525,8 +1545,8 @@ MATHJAX_FORMAT = HTML-CSS # MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax # Content Delivery Network so you can quickly see the result without installing # MathJax. However, it is strongly recommended to install a local copy of -# MathJax from http://www.mathjax.org before deployment. -# The default value is: http://cdn.mathjax.org/mathjax/latest. +# MathJax from https://www.mathjax.org before deployment. +# The default value is: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_RELPATH = http://www.mathjax.org/mathjax @@ -1587,7 +1607,7 @@ SERVER_BASED_SEARCH = NO # # Doxygen ships with an example indexer (doxyindexer) and search engine # (doxysearch.cgi) which are based on the open source search engine library -# Xapian (see: http://xapian.org/). +# Xapian (see: https://xapian.org/). # # See the section "External Indexing and Searching" for details. # The default value is: NO. @@ -1600,7 +1620,7 @@ EXTERNAL_SEARCH = NO # # Doxygen ships with an example indexer (doxyindexer) and search engine # (doxysearch.cgi) which are based on the open source search engine library -# Xapian (see: http://xapian.org/). See the section "External Indexing and +# Xapian (see: https://xapian.org/). See the section "External Indexing and # Searching" for details. # This tag requires that the tag SEARCHENGINE is set to YES. @@ -1787,7 +1807,7 @@ LATEX_SOURCE_CODE = NO # The LATEX_BIB_STYLE tag can be used to specify the style to use for the # bibliography, e.g. plainnat, or ieeetr. See -# http://en.wikipedia.org/wiki/BibTeX and \cite for more info. +# https://en.wikipedia.org/wiki/BibTeX and \cite for more info. # The default value is: plain. # This tag requires that the tag GENERATE_LATEX is set to YES. @@ -1970,9 +1990,9 @@ DOCBOOK_PROGRAMLISTING = NO #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an -# AutoGen Definitions (see http://autogen.sf.net) file that captures the -# structure of the code including all documentation. Note that this feature is -# still experimental and incomplete at the moment. +# AutoGen Definitions (see http://autogen.sourceforge.net/) file that captures +# the structure of the code including all documentation. Note that this feature +# is still experimental and incomplete at the moment. # The default value is: NO. GENERATE_AUTOGEN_DEF = NO From f045bd06f2f169253aa9bbb17d25d18b0af17745 Mon Sep 17 00:00:00 2001 From: Rostyslav Dovhaliuk Date: Thu, 25 Jan 2018 10:50:08 +0200 Subject: [PATCH 044/160] Removed DTrace probing to support Xcode's New Build System. --- framework/CorePlot.xcodeproj/project.pbxproj | 12 +----------- .../xcshareddata/WorkspaceSettings.xcsettings | 8 ++++++++ framework/Source/CPTLayer.m | 11 ----------- framework/TestResources/CorePlotProbes.d | 3 --- 4 files changed, 9 insertions(+), 25 deletions(-) create mode 100644 framework/CorePlot.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings delete mode 100644 framework/TestResources/CorePlotProbes.d diff --git a/framework/CorePlot.xcodeproj/project.pbxproj b/framework/CorePlot.xcodeproj/project.pbxproj index 8f4036eab..3eb75f337 100644 --- a/framework/CorePlot.xcodeproj/project.pbxproj +++ b/framework/CorePlot.xcodeproj/project.pbxproj @@ -188,7 +188,6 @@ BC74A33110FC402600E7E90D /* CPTPieChart.m in Sources */ = {isa = PBXBuildFile; fileRef = BC74A32F10FC402600E7E90D /* CPTPieChart.m */; }; BC79F1360FD1CD6600510976 /* CPTGraphHostingView.h in Headers */ = {isa = PBXBuildFile; fileRef = BC79F1340FD1CD6600510976 /* CPTGraphHostingView.h */; settings = {ATTRIBUTES = (Public, ); }; }; BC79F1370FD1CD6600510976 /* CPTGraphHostingView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC79F1350FD1CD6600510976 /* CPTGraphHostingView.m */; }; - BC89A64110239D1D009D5261 /* CorePlotProbes.d in Sources */ = {isa = PBXBuildFile; fileRef = BC89A64010239D1D009D5261 /* CorePlotProbes.d */; }; BCFC7C3710921FDB00DAECAA /* CPTAxisTitle.h in Headers */ = {isa = PBXBuildFile; fileRef = BCFC7C3510921FDB00DAECAA /* CPTAxisTitle.h */; settings = {ATTRIBUTES = (Public, ); }; }; BCFC7C3810921FDB00DAECAA /* CPTAxisTitle.m in Sources */ = {isa = PBXBuildFile; fileRef = BCFC7C3610921FDB00DAECAA /* CPTAxisTitle.m */; }; C30550ED1399BE5400E0151F /* CPTLegendEntry.h in Headers */ = {isa = PBXBuildFile; fileRef = C30550EB1399BE5400E0151F /* CPTLegendEntry.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -262,7 +261,6 @@ C37EA5DF1BC83F2A0091C8F7 /* _CPTDarkGradientTheme.m in Sources */ = {isa = PBXBuildFile; fileRef = 0772C92E0FE2F89000EC4C16 /* _CPTDarkGradientTheme.m */; }; C37EA5E01BC83F2A0091C8F7 /* _CPTPlainBlackTheme.m in Sources */ = {isa = PBXBuildFile; fileRef = BC55022D10059F22005DF982 /* _CPTPlainBlackTheme.m */; }; C37EA5E11BC83F2A0091C8F7 /* CPTNumericData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C97EEFB104D80C400B554F9 /* CPTNumericData.m */; }; - C37EA5E21BC83F2A0091C8F7 /* CorePlotProbes.d in Sources */ = {isa = PBXBuildFile; fileRef = BC89A64010239D1D009D5261 /* CorePlotProbes.d */; }; C37EA5E31BC83F2A0091C8F7 /* CPTXYAxisSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 07975C420F3B816600DE45DC /* CPTXYAxisSet.m */; }; C37EA5E41BC83F2A0091C8F7 /* CPTLimitBand.m in Sources */ = {isa = PBXBuildFile; fileRef = C318F4AC11EA188700595FF9 /* CPTLimitBand.m */; }; C37EA5E51BC83F2A0091C8F7 /* CPTGridLines.m in Sources */ = {isa = PBXBuildFile; fileRef = C32B391710AA4C78000470D4 /* CPTGridLines.m */; }; @@ -462,8 +460,6 @@ C38A09D21A461C1300D45436 /* CPTTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 0730F64D109494D100E95162 /* CPTTestCase.m */; }; C38A09D31A461C1800D45436 /* CPTDataSourceTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C9A745E0FB24C7200918464 /* CPTDataSourceTestCase.m */; }; C38A09D41A461C1900D45436 /* CPTDataSourceTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C9A745E0FB24C7200918464 /* CPTDataSourceTestCase.m */; }; - C38A09D51A461C1E00D45436 /* CorePlotProbes.d in Sources */ = {isa = PBXBuildFile; fileRef = BC89A64010239D1D009D5261 /* CorePlotProbes.d */; }; - C38A09D61A461C2B00D45436 /* CorePlotProbes.d in Sources */ = {isa = PBXBuildFile; fileRef = BC89A64010239D1D009D5261 /* CorePlotProbes.d */; }; C38A09D81A461C5800D45436 /* CPTNumericDataType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C97EEFC104D80C400B554F9 /* CPTNumericDataType.h */; settings = {ATTRIBUTES = (Public, ); }; }; C38A09D91A461C6B00D45436 /* CPTNumericDataType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C97EEFD104D80C400B554F9 /* CPTNumericDataType.m */; }; C38A09DA1A461C6C00D45436 /* CPTNumericDataType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C97EEFD104D80C400B554F9 /* CPTNumericDataType.m */; }; @@ -1019,7 +1015,7 @@ 4CD7E7E50F4B4F8200F9BCBB /* CPTTextLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = CPTTextLayer.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 4CD7E7E60F4B4F8200F9BCBB /* CPTTextLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = CPTTextLayer.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 4CD7E7EA0F4B4F9600F9BCBB /* CPTLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = CPTLayer.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - 4CD7E7EB0F4B4F9600F9BCBB /* CPTLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = CPTLayer.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; + 4CD7E7EB0F4B4F9600F9BCBB /* CPTLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = CPTLayer.m; sourceTree = ""; }; 4CD7E7EE0F4B4FA700F9BCBB /* NSDecimalNumberExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSDecimalNumberExtensions.h; sourceTree = ""; }; 4CD7E7EF0F4B4FA700F9BCBB /* NSDecimalNumberExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSDecimalNumberExtensions.m; sourceTree = ""; }; 4CD7E9620F4B625900F9BCBB /* CPTUtilitiesTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPTUtilitiesTests.h; sourceTree = ""; }; @@ -1050,7 +1046,6 @@ BC74A32F10FC402600E7E90D /* CPTPieChart.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = CPTPieChart.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; BC79F1340FD1CD6600510976 /* CPTGraphHostingView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPTGraphHostingView.h; sourceTree = ""; }; BC79F1350FD1CD6600510976 /* CPTGraphHostingView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = CPTGraphHostingView.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - BC89A64010239D1D009D5261 /* CorePlotProbes.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; name = CorePlotProbes.d; path = TestResources/CorePlotProbes.d; sourceTree = SOURCE_ROOT; }; BCFC7C3510921FDB00DAECAA /* CPTAxisTitle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPTAxisTitle.h; sourceTree = ""; }; BCFC7C3610921FDB00DAECAA /* CPTAxisTitle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = CPTAxisTitle.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; C30550EB1399BE5400E0151F /* CPTLegendEntry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = CPTLegendEntry.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; @@ -1710,7 +1705,6 @@ 0730F64D109494D100E95162 /* CPTTestCase.m */, 4C9A745D0FB24C7200918464 /* CPTDataSourceTestCase.h */, 4C9A745E0FB24C7200918464 /* CPTDataSourceTestCase.m */, - BC89A64010239D1D009D5261 /* CorePlotProbes.d */, ); name = Testing; path = Source; @@ -2715,7 +2709,6 @@ BC55023310059F22005DF982 /* _CPTPlainBlackTheme.m in Sources */, BC55023510059F22005DF982 /* _CPTPlainWhiteTheme.m in Sources */, BC55023710059F22005DF982 /* _CPTStocksTheme.m in Sources */, - BC89A64110239D1D009D5261 /* CorePlotProbes.d in Sources */, 07A2E6FD102DF47900809BC5 /* CPTTimeFormatter.m in Sources */, 4C97EF02104D80C400B554F9 /* CPTNumericData.m in Sources */, 4C97EF04104D80C400B554F9 /* CPTNumericDataType.m in Sources */, @@ -2797,7 +2790,6 @@ C37EA5DF1BC83F2A0091C8F7 /* _CPTDarkGradientTheme.m in Sources */, C37EA5E01BC83F2A0091C8F7 /* _CPTPlainBlackTheme.m in Sources */, C37EA5E11BC83F2A0091C8F7 /* CPTNumericData.m in Sources */, - C37EA5E21BC83F2A0091C8F7 /* CorePlotProbes.d in Sources */, C37EA5E31BC83F2A0091C8F7 /* CPTXYAxisSet.m in Sources */, C37EA5E41BC83F2A0091C8F7 /* CPTLimitBand.m in Sources */, C37EA5E51BC83F2A0091C8F7 /* CPTGridLines.m in Sources */, @@ -2931,7 +2923,6 @@ C38A0B061A46261700D45436 /* _CPTDarkGradientTheme.m in Sources */, C38A0B071A46261700D45436 /* _CPTPlainBlackTheme.m in Sources */, C38A09DB1A461C7D00D45436 /* CPTNumericData.m in Sources */, - C38A09D51A461C1E00D45436 /* CorePlotProbes.d in Sources */, C38A0AE71A4625D400D45436 /* CPTXYAxisSet.m in Sources */, C38A0AB21A46241700D45436 /* CPTLimitBand.m in Sources */, C38A0AE11A4625D400D45436 /* CPTGridLines.m in Sources */, @@ -3098,7 +3089,6 @@ C38A09FD1A461D1400D45436 /* CPTMutablePlotRange.m in Sources */, C38A09F71A461D0100D45436 /* CPTUtilities.m in Sources */, C38A0A721A4620E200D45436 /* CPTGradient.m in Sources */, - C38A09D61A461C2B00D45436 /* CorePlotProbes.d in Sources */, C38A0A9A1A46219200D45436 /* CPTTimeFormatter.m in Sources */, C38A0A161A461E5800D45436 /* CPTAnimation.m in Sources */, C38A0AAC1A46240A00D45436 /* CPTXYGraph.m in Sources */, diff --git a/framework/CorePlot.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/framework/CorePlot.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..3ddf867a1 --- /dev/null +++ b/framework/CorePlot.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + BuildSystemType + Latest + + diff --git a/framework/Source/CPTLayer.m b/framework/Source/CPTLayer.m index dba21cd69..357326c0c 100644 --- a/framework/Source/CPTLayer.m +++ b/framework/Source/CPTLayer.m @@ -1,6 +1,5 @@ #import "CPTLayer.h" -#import "CorePlotProbes.h" #import "CPTGraph.h" #import "CPTPathExtensions.h" #import "CPTPlatformSpecificCategories.h" @@ -877,16 +876,6 @@ -(void)setNeedsDisplay -(void)setPosition:(CGPoint)newPosition { super.position = newPosition; - if ( COREPLOT_LAYER_POSITION_CHANGE_ENABLED() ) { - CGRect currentFrame = self.frame; - if ( !CGRectEqualToRect(currentFrame, CGRectIntegral(self.frame) ) ) { - COREPLOT_LAYER_POSITION_CHANGE( (const char *)class_getName([self class]), - (int)lrint(ceil(currentFrame.origin.x * CPTFloat(1000.0) ) ), - (int)lrint(ceil(currentFrame.origin.y * CPTFloat(1000.0) ) ), - (int)lrint(ceil(currentFrame.size.width * CPTFloat(1000.0) ) ), - (int)lrint(ceil(currentFrame.size.height * CPTFloat(1000.0) ) ) ); - } - } } -(void)setHidden:(BOOL)newHidden diff --git a/framework/TestResources/CorePlotProbes.d b/framework/TestResources/CorePlotProbes.d deleted file mode 100644 index 05e68c33e..000000000 --- a/framework/TestResources/CorePlotProbes.d +++ /dev/null @@ -1,3 +0,0 @@ -provider CorePlot { - probe layer_position_change(char *, int, int, int, int); -}; \ No newline at end of file From d73615c0bdfbee63275b94807539d8f8bfd3e3e9 Mon Sep 17 00:00:00 2001 From: Matthew Judy Date: Thu, 1 Feb 2018 18:00:31 -0500 Subject: [PATCH 045/160] Convert `malloc()` calls to `calloc()`. --- framework/Source/CPTAnimation.m | 2 +- framework/Source/CPTColor.m | 2 +- framework/Source/CPTGradient.m | 4 ++-- framework/Source/CPTLegend.m | 8 +++---- framework/Source/CPTPlotArea.m | 8 +++---- framework/Source/CPTPlotSpaceAnnotation.m | 2 +- framework/Source/CPTRangePlot.m | 10 ++++----- framework/Source/CPTScatterPlot.m | 26 +++++++++++------------ framework/Source/CPTScatterPlotTests.m | 22 +++++++++---------- framework/Source/NSCoderExtensions.m | 2 +- 10 files changed, 43 insertions(+), 43 deletions(-) diff --git a/framework/Source/CPTAnimation.m b/framework/Source/CPTAnimation.m index 9aeb0f3db..609691e7d 100644 --- a/framework/Source/CPTAnimation.m +++ b/framework/Source/CPTAnimation.m @@ -425,7 +425,7 @@ -(void)updateOnMainThreadWithParameters:(nonnull CPTDictionary *)parameters invocation.target = boundObject; invocation.selector = boundSetter; - void *buffer = malloc(bufferSize); + void *buffer = calloc(1, bufferSize); [value getValue:buffer]; [invocation setArgument:buffer atIndex:2]; free(buffer); diff --git a/framework/Source/CPTColor.m b/framework/Source/CPTColor.m index 9950ab0fd..e131f5a3d 100644 --- a/framework/Source/CPTColor.m +++ b/framework/Source/CPTColor.m @@ -435,7 +435,7 @@ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder size_t numberOfComponents = (size_t)[coder decodeInt64ForKey:@"CPTColor.numberOfComponents"]; - CGFloat *colorComponents = malloc(numberOfComponents * sizeof(CGFloat) ); + CGFloat *colorComponents = calloc(numberOfComponents, sizeof(CGFloat)); for ( size_t i = 0; i < numberOfComponents; i++ ) { NSString *newKey = [[NSString alloc] initWithFormat:@"CPTColor.component[%zu]", i]; diff --git a/framework/Source/CPTGradient.m b/framework/Source/CPTGradient.m index b996943eb..87f5bf251 100644 --- a/framework/Source/CPTGradient.m +++ b/framework/Source/CPTGradient.m @@ -1167,7 +1167,7 @@ -(void)addElement:(nonnull CPTGradientElement *)newElement if ( (curElement == NULL) || (newElement->position < curElement->position) ) { CPTGradientElement *tmpNext = curElement; - CPTGradientElement *newElementList = malloc(sizeof(CPTGradientElement) ); + CPTGradientElement *newElementList = calloc(1, sizeof(CPTGradientElement)); if ( newElementList ) { *newElementList = *newElement; newElementList->nextElement = tmpNext; @@ -1182,7 +1182,7 @@ -(void)addElement:(nonnull CPTGradientElement *)newElement } CPTGradientElement *tmpNext = curElement->nextElement; - curElement->nextElement = malloc(sizeof(CPTGradientElement) ); + curElement->nextElement = calloc(1, sizeof(CPTGradientElement)); *(curElement->nextElement) = *newElement; curElement->nextElement->nextElement = tmpNext; } diff --git a/framework/Source/CPTLegend.m b/framework/Source/CPTLegend.m index 371773629..af35d16ce 100644 --- a/framework/Source/CPTLegend.m +++ b/framework/Source/CPTLegend.m @@ -555,8 +555,8 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context // calculate column positions CPTNumberArray *computedColumnWidths = self.columnWidthsThatFit; NSUInteger columnCount = computedColumnWidths.count; - CGFloat *actualColumnWidths = malloc(sizeof(CGFloat) * columnCount); - CGFloat *columnPositions = malloc(sizeof(CGFloat) * columnCount); + CGFloat *actualColumnWidths = calloc(columnCount, sizeof(CGFloat)); + CGFloat *columnPositions = calloc(columnCount, sizeof(CGFloat)); columnPositions[0] = self.paddingLeft; CGFloat theOffset = self.titleOffset; CGSize theSwatchSize = self.swatchSize; @@ -579,8 +579,8 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context // calculate row positions CPTNumberArray *computedRowHeights = self.rowHeightsThatFit; NSUInteger rowCount = computedRowHeights.count; - CGFloat *actualRowHeights = malloc(sizeof(CGFloat) * rowCount); - CGFloat *rowPositions = malloc(sizeof(CGFloat) * rowCount); + CGFloat *actualRowHeights = calloc(rowCount, sizeof(CGFloat)); + CGFloat *rowPositions = calloc(rowCount, sizeof(CGFloat)); rowPositions[rowCount - 1] = self.paddingBottom; CGFloat theRowMargin = self.rowMargin; CGFloat lastRowHeight = 0.0; diff --git a/framework/Source/CPTPlotArea.m b/framework/Source/CPTPlotArea.m index e3ff1f1a5..715a1a467 100644 --- a/framework/Source/CPTPlotArea.m +++ b/framework/Source/CPTPlotArea.m @@ -162,7 +162,7 @@ -(nonnull instancetype)initWithFrame:(CGRect)newFrame fill = nil; touchedPoint = CPTPointMake(NAN, NAN); topDownLayerOrder = nil; - bottomUpLayerOrder = malloc(kCPTNumberOfLayers * sizeof(CPTGraphLayerType) ); + bottomUpLayerOrder = calloc(kCPTNumberOfLayers, sizeof(CPTGraphLayerType)); [self updateLayerOrder]; CPTPlotGroup *newPlotGroup = [[CPTPlotGroup alloc] initWithFrame:newFrame]; @@ -195,8 +195,8 @@ -(nonnull instancetype)initWithLayer:(nonnull id)layer fill = theLayer->fill; touchedPoint = theLayer->touchedPoint; topDownLayerOrder = theLayer->topDownLayerOrder; - bottomUpLayerOrder = malloc(kCPTNumberOfLayers * sizeof(CPTGraphLayerType) ); - memcpy(bottomUpLayerOrder, theLayer->bottomUpLayerOrder, kCPTNumberOfLayers * sizeof(CPTGraphLayerType) ); + bottomUpLayerOrder = calloc(kCPTNumberOfLayers, sizeof(CPTGraphLayerType)); + memcpy(bottomUpLayerOrder, theLayer->bottomUpLayerOrder, kCPTNumberOfLayers * sizeof(CPTGraphLayerType)); widthDecimal = theLayer->widthDecimal; heightDecimal = theLayer->heightDecimal; } @@ -256,7 +256,7 @@ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder topDownLayerOrder = [coder decodeObjectOfClasses:[NSSet setWithArray:@[[NSArray class], [NSNumber class]]] forKey:@"CPTPlotArea.topDownLayerOrder"]; - bottomUpLayerOrder = malloc(kCPTNumberOfLayers * sizeof(CPTGraphLayerType) ); + bottomUpLayerOrder = calloc(kCPTNumberOfLayers, sizeof(CPTGraphLayerType)); [self updateLayerOrder]; touchedPoint = CPTPointMake(NAN, NAN); diff --git a/framework/Source/CPTPlotSpaceAnnotation.m b/framework/Source/CPTPlotSpaceAnnotation.m index ef9ab788b..c5e2a8394 100644 --- a/framework/Source/CPTPlotSpaceAnnotation.m +++ b/framework/Source/CPTPlotSpaceAnnotation.m @@ -196,7 +196,7 @@ -(void)setAnchorPlotPoint:(nullable CPTNumberArray *)newPlotPoint self.anchorCount = anchorPlotPoint.count; - NSDecimal *decimalPoint = malloc(sizeof(NSDecimal) * self.anchorCount); + NSDecimal *decimalPoint = calloc(self.anchorCount, sizeof(NSDecimal)); for ( NSUInteger i = 0; i < self.anchorCount; i++ ) { decimalPoint[i] = anchorPlotPoint[i].decimalValue; } diff --git a/framework/Source/CPTRangePlot.m b/framework/Source/CPTRangePlot.m index 0c11453da..f013e77ca 100644 --- a/framework/Source/CPTRangePlot.m +++ b/framework/Source/CPTRangePlot.m @@ -274,9 +274,9 @@ -(void)calculatePointsToDraw:(nonnull BOOL *)pointDrawFlags numberOfPoints:(NSUI } } else { - CPTPlotRangeComparisonResult *xRangeFlags = malloc(dataCount * sizeof(CPTPlotRangeComparisonResult) ); - CPTPlotRangeComparisonResult *yRangeFlags = malloc(dataCount * sizeof(CPTPlotRangeComparisonResult) ); - BOOL *nanFlags = malloc(dataCount * sizeof(BOOL) ); + CPTPlotRangeComparisonResult *xRangeFlags = calloc(dataCount, sizeof(CPTPlotRangeComparisonResult)); + CPTPlotRangeComparisonResult *yRangeFlags = calloc(dataCount, sizeof(CPTPlotRangeComparisonResult)); + BOOL *nanFlags = calloc(dataCount, sizeof(BOOL)); CPTPlotRange *xRange = xyPlotSpace.xRange; CPTPlotRange *yRange = xyPlotSpace.yRange; @@ -1048,8 +1048,8 @@ -(void)positionLabelAnnotation:(nonnull CPTPlotSpaceAnnotation *)label forIndex: -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point { NSUInteger dataCount = self.cachedDataCount; - CGPointError *viewPoints = calloc(dataCount, sizeof(CGPointError) ); - BOOL *drawPointFlags = malloc(dataCount * sizeof(BOOL) ); + CGPointError *viewPoints = calloc(dataCount, sizeof(CGPointError)); + BOOL *drawPointFlags = calloc(dataCount, sizeof(BOOL)); [self calculatePointsToDraw:drawPointFlags numberOfPoints:dataCount forPlotSpace:(id)self.plotSpace includeVisiblePointsOnly:YES]; [self calculateViewPoints:viewPoints withDrawPointFlags:drawPointFlags numberOfPoints:dataCount]; diff --git a/framework/Source/CPTScatterPlot.m b/framework/Source/CPTScatterPlot.m index 9e875aeb8..6156a0f45 100644 --- a/framework/Source/CPTScatterPlot.m +++ b/framework/Source/CPTScatterPlot.m @@ -483,9 +483,9 @@ -(void)calculatePointsToDraw:(nonnull BOOL *)pointDrawFlags forPlotSpace:(nonnul } } else { - CPTPlotRangeComparisonResult *xRangeFlags = malloc(dataCount * sizeof(CPTPlotRangeComparisonResult) ); - CPTPlotRangeComparisonResult *yRangeFlags = malloc(dataCount * sizeof(CPTPlotRangeComparisonResult) ); - BOOL *nanFlags = malloc(dataCount * sizeof(BOOL) ); + CPTPlotRangeComparisonResult *xRangeFlags = calloc(dataCount, sizeof(CPTPlotRangeComparisonResult)); + CPTPlotRangeComparisonResult *yRangeFlags = calloc(dataCount, sizeof(CPTPlotRangeComparisonResult)); + BOOL *nanFlags = calloc(dataCount, sizeof(BOOL)); CPTPlotRange *xRange = xyPlotSpace.xRange; CPTPlotRange *yRange = xyPlotSpace.yRange; @@ -804,8 +804,8 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context [super renderAsVectorInContext:context]; // Calculate view points, and align to user space - CGPoint *viewPoints = malloc(dataCount * sizeof(CGPoint) ); - BOOL *drawPointFlags = malloc(dataCount * sizeof(BOOL) ); + CGPoint *viewPoints = calloc(dataCount, sizeof(CGPoint)); + BOOL *drawPointFlags = calloc(dataCount, sizeof(BOOL)); CPTXYPlotSpace *thePlotSpace = (CPTXYPlotSpace *)self.plotSpace; [self calculatePointsToDraw:drawPointFlags forPlotSpace:thePlotSpace includeVisiblePointsOnly:NO numberOfPoints:dataCount]; @@ -1484,10 +1484,10 @@ -(void)computeBezierControlPoints:(nonnull CGPoint *)cp1 points2:(nonnull CGPoin NSUInteger n = indexRange.length - 1; // rhs vector - CGPoint *a = malloc(n * sizeof(CGPoint) ); - CGPoint *b = malloc(n * sizeof(CGPoint) ); - CGPoint *c = malloc(n * sizeof(CGPoint) ); - CGPoint *r = malloc(n * sizeof(CGPoint) ); + CGPoint *a = calloc(n, sizeof(CGPoint)); + CGPoint *b = calloc(n, sizeof(CGPoint)); + CGPoint *c = calloc(n, sizeof(CGPoint)); + CGPoint *r = calloc(n, sizeof(CGPoint)); // left most segment a[0] = CGPointZero; @@ -1636,8 +1636,8 @@ -(nonnull CGPathRef)newDataLinePath } // Calculate view points - CGPoint *viewPoints = malloc(dataCount * sizeof(CGPoint) ); - BOOL *drawPointFlags = malloc(dataCount * sizeof(BOOL) ); + CGPoint *viewPoints = calloc(dataCount, sizeof(CGPoint)); + BOOL *drawPointFlags = calloc(dataCount, sizeof(BOOL)); for ( NSUInteger i = 0; i < dataCount; i++ ) { drawPointFlags[i] = YES; @@ -2137,8 +2137,8 @@ -(BOOL)plotWasLineHitByInteractionPoint:(CGPoint)interactionPoint NSUInteger dataCount = self.cachedDataCount; if ( theGraph && thePlotArea && !self.hidden && dataCount ) { - CGPoint *viewPoints = malloc(dataCount * sizeof(CGPoint) ); - BOOL *drawPointFlags = malloc(dataCount * sizeof(BOOL) ); + CGPoint *viewPoints = calloc(dataCount, sizeof(CGPoint)); + BOOL *drawPointFlags = calloc(dataCount, sizeof(BOOL)); CPTXYPlotSpace *thePlotSpace = (CPTXYPlotSpace *)self.plotSpace; [self calculatePointsToDraw:drawPointFlags forPlotSpace:thePlotSpace includeVisiblePointsOnly:NO numberOfPoints:dataCount]; diff --git a/framework/Source/CPTScatterPlotTests.m b/framework/Source/CPTScatterPlotTests.m index 7372909d7..5cecafe5b 100644 --- a/framework/Source/CPTScatterPlotTests.m +++ b/framework/Source/CPTScatterPlotTests.m @@ -42,7 +42,7 @@ -(void)testCalculatePointsToDrawAllInRange { CPTNumberArray *inRangeValues = @[@0.1, @0.2, @0.15, @0.6, @0.9]; - BOOL *drawFlags = malloc(sizeof(BOOL) * inRangeValues.count); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -60,7 +60,7 @@ -(void)testCalculatePointsToDrawAllInRangeVisibleOnly { CPTNumberArray *inRangeValues = @[@0.1, @0.2, @0.15, @0.6, @0.9]; - BOOL *drawFlags = malloc(sizeof(BOOL) * inRangeValues.count); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -78,7 +78,7 @@ -(void)testCalculatePointsToDrawNoneInRange { CPTNumberArray *inRangeValues = @[@(-0.1), @(-0.2), @(-0.15), @(-0.6), @(-0.9)]; - BOOL *drawFlags = malloc(sizeof(BOOL) * inRangeValues.count); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -96,7 +96,7 @@ -(void)testCalculatePointsToDrawNoneInRangeVisibleOnly { CPTNumberArray *inRangeValues = @[@(-0.1), @(-0.2), @(-0.15), @(-0.6), @(-0.9)]; - BOOL *drawFlags = malloc(sizeof(BOOL) * inRangeValues.count); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -114,7 +114,7 @@ -(void)testCalculatePointsToDrawNoneInRangeDifferentRegions { CPTNumberArray *inRangeValues = @[@(-0.1), @2, @(-0.15), @3, @(-0.9)]; - BOOL *drawFlags = malloc(sizeof(BOOL) * inRangeValues.count); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -132,7 +132,7 @@ -(void)testCalculatePointsToDrawNoneInRangeDifferentRegionsVisibleOnly { CPTNumberArray *inRangeValues = @[@(-0.1), @2, @(-0.15), @3, @(-0.9)]; - BOOL *drawFlags = malloc(sizeof(BOOL) * inRangeValues.count); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -151,7 +151,7 @@ -(void)testCalculatePointsToDrawSomeInRange CPTNumberArray *inRangeValues = @[@(-0.1), @0.1, @0.2, @1.2, @1.5]; BOOL expected[5] = { YES, YES, YES, YES, NO }; - BOOL *drawFlags = malloc(sizeof(BOOL) * inRangeValues.count); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -173,7 +173,7 @@ -(void)testCalculatePointsToDrawSomeInRangeVisibleOnly { CPTNumberArray *inRangeValues = @[@(-0.1), @0.1, @0.2, @1.2, @1.5]; - BOOL *drawFlags = malloc(sizeof(BOOL) * inRangeValues.count); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -196,8 +196,8 @@ -(void)testCalculatePointsToDrawSomeInRangeCrossing { CPTNumberArray *inRangeValues = @[@(-0.1), @1.1, @0.9, @(-0.1), @(-0.2)]; - BOOL *drawFlags = malloc(sizeof(BOOL) * inRangeValues.count); - BOOL *expected = malloc(sizeof(BOOL) * inRangeValues.count); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); + BOOL *expected = calloc(inRangeValues.count, sizeof(BOOL)); for ( NSUInteger i = 0; i < inRangeValues.count - 1; i++ ) { expected[i] = YES; @@ -226,7 +226,7 @@ -(void)testCalculatePointsToDrawSomeInRangeCrossingVisibleOnly { CPTNumberArray *inRangeValues = @[@(-0.1), @1.1, @0.9, @(-0.1), @(-0.2)]; - BOOL *drawFlags = malloc(sizeof(BOOL) * inRangeValues.count); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); CPTXYPlotSpace *thePlotSpace = self.plotSpace; diff --git a/framework/Source/NSCoderExtensions.m b/framework/Source/NSCoderExtensions.m index 7e539c058..860f24f7a 100644 --- a/framework/Source/NSCoderExtensions.m +++ b/framework/Source/NSCoderExtensions.m @@ -454,7 +454,7 @@ -(nullable CGImageRef)newCGImageDecodeForKey:(nonnull NSString *)key CGFloat *decodeArray = NULL; if ( numberOfComponents ) { - decodeArray = malloc(numberOfComponents * 2 * sizeof(CGFloat) ); + decodeArray = calloc((numberOfComponents * 2), sizeof(CGFloat)); for ( size_t i = 0; i < numberOfComponents; i++ ) { newKey = [[NSString alloc] initWithFormat:@"%@.decode[%zu].lower", key, i]; From 21f2023bafa7957d320f9f621a7be73a6cf7a280 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sat, 3 Feb 2018 16:26:15 -0500 Subject: [PATCH 046/160] Removed DTrace probe from the CocoaPods podspec files. --- CorePlot-latest.podspec | 4 ++-- CorePlot.podspec | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CorePlot-latest.podspec b/CorePlot-latest.podspec index 18cfe4388..6863350ba 100644 --- a/CorePlot-latest.podspec +++ b/CorePlot-latest.podspec @@ -26,12 +26,12 @@ Pod::Spec.new do |s| s.osx.header_dir = 'osx' s.tvos.header_dir = 'tvos' - s.source_files = 'framework/Source/*.{h,m}', 'framework/CocoaPods/*.h', 'framework/TestResources/CorePlotProbes.d' + s.source_files = 'framework/Source/*.{h,m}', 'framework/CocoaPods/*.h' s.exclude_files = '**/*{TestCase,Tests}.{h,m}', '**/mainpage.h' s.ios.source_files = 'framework/CorePlot-CocoaTouch.h', 'framework/iPhoneOnly/*.{h,m}' s.tvos.source_files = 'framework/iPhoneOnly/*.{h,m}' s.osx.source_files = 'framework/MacOnly/*.{h,m}' - s.private_header_files = '**/_*.h', '**/CorePlotProbes.h' + s.private_header_files = '**/_*.h' s.requires_arc = true s.ios.xcconfig = { 'HEADER_SEARCH_PATHS' => '"${PODS_ROOT}/Headers/Private/CorePlot/ios"' } diff --git a/CorePlot.podspec b/CorePlot.podspec index 8af07bcba..f0b7626bb 100644 --- a/CorePlot.podspec +++ b/CorePlot.podspec @@ -26,12 +26,12 @@ Pod::Spec.new do |s| s.osx.header_dir = 'osx' s.tvos.header_dir = 'tvos' - s.source_files = 'framework/Source/*.{h,m}', 'framework/CocoaPods/*.h', 'framework/TestResources/CorePlotProbes.d' + s.source_files = 'framework/Source/*.{h,m}', 'framework/CocoaPods/*.h' s.exclude_files = '**/*{TestCase,Tests}.{h,m}', '**/mainpage.h' s.ios.source_files = 'framework/CorePlot-CocoaTouch.h', 'framework/iPhoneOnly/*.{h,m}' s.tvos.source_files = 'framework/iPhoneOnly/*.{h,m}' s.osx.source_files = 'framework/MacOnly/*.{h,m}' - s.private_header_files = '**/_*.h', '**/CorePlotProbes.h' + s.private_header_files = '**/_*.h' s.requires_arc = true s.ios.xcconfig = { 'HEADER_SEARCH_PATHS' => '"${PODS_ROOT}/Headers/Private/CorePlot/ios"' } From ac7d20d48417bea26e7096e558722acb76941652 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sat, 3 Feb 2018 16:44:18 -0500 Subject: [PATCH 047/160] Standardized code formatting. --- framework/Source/CPTColor.m | 2 +- framework/Source/CPTGradient.m | 4 ++-- framework/Source/CPTLegend.m | 8 +++---- framework/Source/CPTPlotArea.m | 8 +++---- framework/Source/CPTPlotSpaceAnnotation.m | 2 +- framework/Source/CPTRangePlot.m | 10 ++++----- framework/Source/CPTScatterPlot.m | 26 +++++++++++------------ framework/Source/CPTScatterPlotTests.m | 22 +++++++++---------- framework/Source/NSCoderExtensions.m | 2 +- 9 files changed, 42 insertions(+), 42 deletions(-) diff --git a/framework/Source/CPTColor.m b/framework/Source/CPTColor.m index e131f5a3d..8b6edb999 100644 --- a/framework/Source/CPTColor.m +++ b/framework/Source/CPTColor.m @@ -435,7 +435,7 @@ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder size_t numberOfComponents = (size_t)[coder decodeInt64ForKey:@"CPTColor.numberOfComponents"]; - CGFloat *colorComponents = calloc(numberOfComponents, sizeof(CGFloat)); + CGFloat *colorComponents = calloc(numberOfComponents, sizeof(CGFloat) ); for ( size_t i = 0; i < numberOfComponents; i++ ) { NSString *newKey = [[NSString alloc] initWithFormat:@"CPTColor.component[%zu]", i]; diff --git a/framework/Source/CPTGradient.m b/framework/Source/CPTGradient.m index 87f5bf251..30cec7eeb 100644 --- a/framework/Source/CPTGradient.m +++ b/framework/Source/CPTGradient.m @@ -1167,7 +1167,7 @@ -(void)addElement:(nonnull CPTGradientElement *)newElement if ( (curElement == NULL) || (newElement->position < curElement->position) ) { CPTGradientElement *tmpNext = curElement; - CPTGradientElement *newElementList = calloc(1, sizeof(CPTGradientElement)); + CPTGradientElement *newElementList = calloc(1, sizeof(CPTGradientElement) ); if ( newElementList ) { *newElementList = *newElement; newElementList->nextElement = tmpNext; @@ -1182,7 +1182,7 @@ -(void)addElement:(nonnull CPTGradientElement *)newElement } CPTGradientElement *tmpNext = curElement->nextElement; - curElement->nextElement = calloc(1, sizeof(CPTGradientElement)); + curElement->nextElement = calloc(1, sizeof(CPTGradientElement) ); *(curElement->nextElement) = *newElement; curElement->nextElement->nextElement = tmpNext; } diff --git a/framework/Source/CPTLegend.m b/framework/Source/CPTLegend.m index af35d16ce..47567c861 100644 --- a/framework/Source/CPTLegend.m +++ b/framework/Source/CPTLegend.m @@ -555,8 +555,8 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context // calculate column positions CPTNumberArray *computedColumnWidths = self.columnWidthsThatFit; NSUInteger columnCount = computedColumnWidths.count; - CGFloat *actualColumnWidths = calloc(columnCount, sizeof(CGFloat)); - CGFloat *columnPositions = calloc(columnCount, sizeof(CGFloat)); + CGFloat *actualColumnWidths = calloc(columnCount, sizeof(CGFloat) ); + CGFloat *columnPositions = calloc(columnCount, sizeof(CGFloat) ); columnPositions[0] = self.paddingLeft; CGFloat theOffset = self.titleOffset; CGSize theSwatchSize = self.swatchSize; @@ -579,8 +579,8 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context // calculate row positions CPTNumberArray *computedRowHeights = self.rowHeightsThatFit; NSUInteger rowCount = computedRowHeights.count; - CGFloat *actualRowHeights = calloc(rowCount, sizeof(CGFloat)); - CGFloat *rowPositions = calloc(rowCount, sizeof(CGFloat)); + CGFloat *actualRowHeights = calloc(rowCount, sizeof(CGFloat) ); + CGFloat *rowPositions = calloc(rowCount, sizeof(CGFloat) ); rowPositions[rowCount - 1] = self.paddingBottom; CGFloat theRowMargin = self.rowMargin; CGFloat lastRowHeight = 0.0; diff --git a/framework/Source/CPTPlotArea.m b/framework/Source/CPTPlotArea.m index 715a1a467..ccb5daec5 100644 --- a/framework/Source/CPTPlotArea.m +++ b/framework/Source/CPTPlotArea.m @@ -162,7 +162,7 @@ -(nonnull instancetype)initWithFrame:(CGRect)newFrame fill = nil; touchedPoint = CPTPointMake(NAN, NAN); topDownLayerOrder = nil; - bottomUpLayerOrder = calloc(kCPTNumberOfLayers, sizeof(CPTGraphLayerType)); + bottomUpLayerOrder = calloc(kCPTNumberOfLayers, sizeof(CPTGraphLayerType) ); [self updateLayerOrder]; CPTPlotGroup *newPlotGroup = [[CPTPlotGroup alloc] initWithFrame:newFrame]; @@ -195,8 +195,8 @@ -(nonnull instancetype)initWithLayer:(nonnull id)layer fill = theLayer->fill; touchedPoint = theLayer->touchedPoint; topDownLayerOrder = theLayer->topDownLayerOrder; - bottomUpLayerOrder = calloc(kCPTNumberOfLayers, sizeof(CPTGraphLayerType)); - memcpy(bottomUpLayerOrder, theLayer->bottomUpLayerOrder, kCPTNumberOfLayers * sizeof(CPTGraphLayerType)); + bottomUpLayerOrder = calloc(kCPTNumberOfLayers, sizeof(CPTGraphLayerType) ); + memcpy(bottomUpLayerOrder, theLayer->bottomUpLayerOrder, kCPTNumberOfLayers * sizeof(CPTGraphLayerType) ); widthDecimal = theLayer->widthDecimal; heightDecimal = theLayer->heightDecimal; } @@ -256,7 +256,7 @@ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder topDownLayerOrder = [coder decodeObjectOfClasses:[NSSet setWithArray:@[[NSArray class], [NSNumber class]]] forKey:@"CPTPlotArea.topDownLayerOrder"]; - bottomUpLayerOrder = calloc(kCPTNumberOfLayers, sizeof(CPTGraphLayerType)); + bottomUpLayerOrder = calloc(kCPTNumberOfLayers, sizeof(CPTGraphLayerType) ); [self updateLayerOrder]; touchedPoint = CPTPointMake(NAN, NAN); diff --git a/framework/Source/CPTPlotSpaceAnnotation.m b/framework/Source/CPTPlotSpaceAnnotation.m index c5e2a8394..2a775c310 100644 --- a/framework/Source/CPTPlotSpaceAnnotation.m +++ b/framework/Source/CPTPlotSpaceAnnotation.m @@ -196,7 +196,7 @@ -(void)setAnchorPlotPoint:(nullable CPTNumberArray *)newPlotPoint self.anchorCount = anchorPlotPoint.count; - NSDecimal *decimalPoint = calloc(self.anchorCount, sizeof(NSDecimal)); + NSDecimal *decimalPoint = calloc(self.anchorCount, sizeof(NSDecimal) ); for ( NSUInteger i = 0; i < self.anchorCount; i++ ) { decimalPoint[i] = anchorPlotPoint[i].decimalValue; } diff --git a/framework/Source/CPTRangePlot.m b/framework/Source/CPTRangePlot.m index f013e77ca..28c7b7ed8 100644 --- a/framework/Source/CPTRangePlot.m +++ b/framework/Source/CPTRangePlot.m @@ -274,9 +274,9 @@ -(void)calculatePointsToDraw:(nonnull BOOL *)pointDrawFlags numberOfPoints:(NSUI } } else { - CPTPlotRangeComparisonResult *xRangeFlags = calloc(dataCount, sizeof(CPTPlotRangeComparisonResult)); - CPTPlotRangeComparisonResult *yRangeFlags = calloc(dataCount, sizeof(CPTPlotRangeComparisonResult)); - BOOL *nanFlags = calloc(dataCount, sizeof(BOOL)); + CPTPlotRangeComparisonResult *xRangeFlags = calloc(dataCount, sizeof(CPTPlotRangeComparisonResult) ); + CPTPlotRangeComparisonResult *yRangeFlags = calloc(dataCount, sizeof(CPTPlotRangeComparisonResult) ); + BOOL *nanFlags = calloc(dataCount, sizeof(BOOL) ); CPTPlotRange *xRange = xyPlotSpace.xRange; CPTPlotRange *yRange = xyPlotSpace.yRange; @@ -1048,8 +1048,8 @@ -(void)positionLabelAnnotation:(nonnull CPTPlotSpaceAnnotation *)label forIndex: -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point { NSUInteger dataCount = self.cachedDataCount; - CGPointError *viewPoints = calloc(dataCount, sizeof(CGPointError)); - BOOL *drawPointFlags = calloc(dataCount, sizeof(BOOL)); + CGPointError *viewPoints = calloc(dataCount, sizeof(CGPointError) ); + BOOL *drawPointFlags = calloc(dataCount, sizeof(BOOL) ); [self calculatePointsToDraw:drawPointFlags numberOfPoints:dataCount forPlotSpace:(id)self.plotSpace includeVisiblePointsOnly:YES]; [self calculateViewPoints:viewPoints withDrawPointFlags:drawPointFlags numberOfPoints:dataCount]; diff --git a/framework/Source/CPTScatterPlot.m b/framework/Source/CPTScatterPlot.m index 6156a0f45..9964e24f0 100644 --- a/framework/Source/CPTScatterPlot.m +++ b/framework/Source/CPTScatterPlot.m @@ -483,9 +483,9 @@ -(void)calculatePointsToDraw:(nonnull BOOL *)pointDrawFlags forPlotSpace:(nonnul } } else { - CPTPlotRangeComparisonResult *xRangeFlags = calloc(dataCount, sizeof(CPTPlotRangeComparisonResult)); - CPTPlotRangeComparisonResult *yRangeFlags = calloc(dataCount, sizeof(CPTPlotRangeComparisonResult)); - BOOL *nanFlags = calloc(dataCount, sizeof(BOOL)); + CPTPlotRangeComparisonResult *xRangeFlags = calloc(dataCount, sizeof(CPTPlotRangeComparisonResult) ); + CPTPlotRangeComparisonResult *yRangeFlags = calloc(dataCount, sizeof(CPTPlotRangeComparisonResult) ); + BOOL *nanFlags = calloc(dataCount, sizeof(BOOL) ); CPTPlotRange *xRange = xyPlotSpace.xRange; CPTPlotRange *yRange = xyPlotSpace.yRange; @@ -804,8 +804,8 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context [super renderAsVectorInContext:context]; // Calculate view points, and align to user space - CGPoint *viewPoints = calloc(dataCount, sizeof(CGPoint)); - BOOL *drawPointFlags = calloc(dataCount, sizeof(BOOL)); + CGPoint *viewPoints = calloc(dataCount, sizeof(CGPoint) ); + BOOL *drawPointFlags = calloc(dataCount, sizeof(BOOL) ); CPTXYPlotSpace *thePlotSpace = (CPTXYPlotSpace *)self.plotSpace; [self calculatePointsToDraw:drawPointFlags forPlotSpace:thePlotSpace includeVisiblePointsOnly:NO numberOfPoints:dataCount]; @@ -1484,10 +1484,10 @@ -(void)computeBezierControlPoints:(nonnull CGPoint *)cp1 points2:(nonnull CGPoin NSUInteger n = indexRange.length - 1; // rhs vector - CGPoint *a = calloc(n, sizeof(CGPoint)); - CGPoint *b = calloc(n, sizeof(CGPoint)); - CGPoint *c = calloc(n, sizeof(CGPoint)); - CGPoint *r = calloc(n, sizeof(CGPoint)); + CGPoint *a = calloc(n, sizeof(CGPoint) ); + CGPoint *b = calloc(n, sizeof(CGPoint) ); + CGPoint *c = calloc(n, sizeof(CGPoint) ); + CGPoint *r = calloc(n, sizeof(CGPoint) ); // left most segment a[0] = CGPointZero; @@ -1636,8 +1636,8 @@ -(nonnull CGPathRef)newDataLinePath } // Calculate view points - CGPoint *viewPoints = calloc(dataCount, sizeof(CGPoint)); - BOOL *drawPointFlags = calloc(dataCount, sizeof(BOOL)); + CGPoint *viewPoints = calloc(dataCount, sizeof(CGPoint) ); + BOOL *drawPointFlags = calloc(dataCount, sizeof(BOOL) ); for ( NSUInteger i = 0; i < dataCount; i++ ) { drawPointFlags[i] = YES; @@ -2137,8 +2137,8 @@ -(BOOL)plotWasLineHitByInteractionPoint:(CGPoint)interactionPoint NSUInteger dataCount = self.cachedDataCount; if ( theGraph && thePlotArea && !self.hidden && dataCount ) { - CGPoint *viewPoints = calloc(dataCount, sizeof(CGPoint)); - BOOL *drawPointFlags = calloc(dataCount, sizeof(BOOL)); + CGPoint *viewPoints = calloc(dataCount, sizeof(CGPoint) ); + BOOL *drawPointFlags = calloc(dataCount, sizeof(BOOL) ); CPTXYPlotSpace *thePlotSpace = (CPTXYPlotSpace *)self.plotSpace; [self calculatePointsToDraw:drawPointFlags forPlotSpace:thePlotSpace includeVisiblePointsOnly:NO numberOfPoints:dataCount]; diff --git a/framework/Source/CPTScatterPlotTests.m b/framework/Source/CPTScatterPlotTests.m index 5cecafe5b..468bb2a08 100644 --- a/framework/Source/CPTScatterPlotTests.m +++ b/framework/Source/CPTScatterPlotTests.m @@ -42,7 +42,7 @@ -(void)testCalculatePointsToDrawAllInRange { CPTNumberArray *inRangeValues = @[@0.1, @0.2, @0.15, @0.6, @0.9]; - BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL) ); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -60,7 +60,7 @@ -(void)testCalculatePointsToDrawAllInRangeVisibleOnly { CPTNumberArray *inRangeValues = @[@0.1, @0.2, @0.15, @0.6, @0.9]; - BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL) ); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -78,7 +78,7 @@ -(void)testCalculatePointsToDrawNoneInRange { CPTNumberArray *inRangeValues = @[@(-0.1), @(-0.2), @(-0.15), @(-0.6), @(-0.9)]; - BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL) ); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -96,7 +96,7 @@ -(void)testCalculatePointsToDrawNoneInRangeVisibleOnly { CPTNumberArray *inRangeValues = @[@(-0.1), @(-0.2), @(-0.15), @(-0.6), @(-0.9)]; - BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL) ); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -114,7 +114,7 @@ -(void)testCalculatePointsToDrawNoneInRangeDifferentRegions { CPTNumberArray *inRangeValues = @[@(-0.1), @2, @(-0.15), @3, @(-0.9)]; - BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL) ); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -132,7 +132,7 @@ -(void)testCalculatePointsToDrawNoneInRangeDifferentRegionsVisibleOnly { CPTNumberArray *inRangeValues = @[@(-0.1), @2, @(-0.15), @3, @(-0.9)]; - BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL) ); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -151,7 +151,7 @@ -(void)testCalculatePointsToDrawSomeInRange CPTNumberArray *inRangeValues = @[@(-0.1), @0.1, @0.2, @1.2, @1.5]; BOOL expected[5] = { YES, YES, YES, YES, NO }; - BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL) ); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -173,7 +173,7 @@ -(void)testCalculatePointsToDrawSomeInRangeVisibleOnly { CPTNumberArray *inRangeValues = @[@(-0.1), @0.1, @0.2, @1.2, @1.5]; - BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL) ); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -196,8 +196,8 @@ -(void)testCalculatePointsToDrawSomeInRangeCrossing { CPTNumberArray *inRangeValues = @[@(-0.1), @1.1, @0.9, @(-0.1), @(-0.2)]; - BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); - BOOL *expected = calloc(inRangeValues.count, sizeof(BOOL)); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL) ); + BOOL *expected = calloc(inRangeValues.count, sizeof(BOOL) ); for ( NSUInteger i = 0; i < inRangeValues.count - 1; i++ ) { expected[i] = YES; @@ -226,7 +226,7 @@ -(void)testCalculatePointsToDrawSomeInRangeCrossingVisibleOnly { CPTNumberArray *inRangeValues = @[@(-0.1), @1.1, @0.9, @(-0.1), @(-0.2)]; - BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL) ); CPTXYPlotSpace *thePlotSpace = self.plotSpace; diff --git a/framework/Source/NSCoderExtensions.m b/framework/Source/NSCoderExtensions.m index 860f24f7a..844089abd 100644 --- a/framework/Source/NSCoderExtensions.m +++ b/framework/Source/NSCoderExtensions.m @@ -454,7 +454,7 @@ -(nullable CGImageRef)newCGImageDecodeForKey:(nonnull NSString *)key CGFloat *decodeArray = NULL; if ( numberOfComponents ) { - decodeArray = calloc((numberOfComponents * 2), sizeof(CGFloat)); + decodeArray = calloc( (numberOfComponents * 2), sizeof(CGFloat) ); for ( size_t i = 0; i < numberOfComponents; i++ ) { newKey = [[NSString alloc] initWithFormat:@"%@.decode[%zu].lower", key, i]; From 102e2ec337d0d4b465fdc3a11c77a026294c01ec Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sat, 3 Feb 2018 16:45:31 -0500 Subject: [PATCH 048/160] Code formatting. --- examples/DatePlot/Source/DateController.swift | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/DatePlot/Source/DateController.swift b/examples/DatePlot/Source/DateController.swift index b7f348df0..c0718f373 100644 --- a/examples/DatePlot/Source/DateController.swift +++ b/examples/DatePlot/Source/DateController.swift @@ -87,7 +87,8 @@ class DateController : NSObject, CPTPlotDataSource { // MARK: - Plot Data Source Methods - func numberOfRecords(for plot: CPTPlot) -> UInt { + func numberOfRecords(for plot: CPTPlot) -> UInt + { return UInt(self.plotData.count) } From 711245551f7e1637ada0dfec7abf6078fb0f0756 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sat, 3 Feb 2018 16:59:37 -0500 Subject: [PATCH 049/160] Register plot space notifications in [CPTGraph initWithCoder:]. Fixed issue #363. --- framework/Source/CPTGraph.m | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/framework/Source/CPTGraph.m b/framework/Source/CPTGraph.m index 0faf1f8cc..d80aa0c05 100644 --- a/framework/Source/CPTGraph.m +++ b/framework/Source/CPTGraph.m @@ -324,13 +324,14 @@ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder plots = [[NSMutableArray alloc] init]; } + plotSpaces = [[NSMutableArray alloc] init]; + CPTPlotSpaceArray *plotSpaceArray = [coder decodeObjectOfClasses:[NSSet setWithArray:@[[NSArray class], [CPTPlotSpace class]]] forKey:@"CPTGraph.plotSpaces"]; if ( plotSpaceArray ) { - plotSpaces = [plotSpaceArray mutableCopy]; - } - else { - plotSpaces = [[NSMutableArray alloc] init]; + for ( CPTPlotSpace *space in plotSpaceArray ) { + [self addPlotSpace:space]; + } } title = [[coder decodeObjectOfClass:[NSString class] From 5b9716f050435dfb3f7c9851be935021689ba2fd Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Fri, 9 Feb 2018 16:25:12 -0500 Subject: [PATCH 050/160] Updated all project files to recommended settings for Xcode 9.3. --- QCPlugin/CorePlotQCPlugin.xcodeproj/project.pbxproj | 6 +++++- .../xcshareddata/xcschemes/Build & Copy.xcscheme | 2 +- .../xcshareddata/xcschemes/CorePlotQCPlugin.xcscheme | 2 +- examples/AAPLot/AAPLot.xcodeproj/project.pbxproj | 2 ++ .../AAPLot.xcodeproj/xcshareddata/xcschemes/AAPLot.xcscheme | 2 +- .../CPTTestApp-iPad.xcodeproj/project.pbxproj | 2 ++ .../xcshareddata/xcschemes/CPTTestApp-iPad.xcscheme | 2 +- .../CPTTestApp-iPhone.xcodeproj/project.pbxproj | 5 ++++- .../xcshareddata/xcschemes/CPTTestApp-iPhone.xcscheme | 2 +- examples/CPTTestApp/CPTTestApp.xcodeproj/project.pbxproj | 2 ++ .../xcshareddata/xcschemes/CPTTestApp.xcscheme | 2 +- .../CorePlotGallery/Plot_Gallery.xcodeproj/project.pbxproj | 2 ++ .../xcshareddata/xcschemes/Plot Gallery-Mac.xcscheme | 6 +++--- .../xcshareddata/xcschemes/Plot Gallery-iOS.xcscheme | 6 +++--- .../xcshareddata/xcschemes/Plot Gallery-tvOS.xcscheme | 6 +++--- examples/DatePlot/DatePlot.xcodeproj/project.pbxproj | 5 ++++- .../xcshareddata/xcschemes/DatePlot.xcscheme | 2 +- examples/DropPlot/DropPlot.xcodeproj/project.pbxproj | 2 ++ .../xcshareddata/xcschemes/DropPlot.xcscheme | 2 +- .../minorTickFormatter.xcodeproj/project.pbxproj | 2 ++ .../xcshareddata/xcschemes/minorTickFormatter.xcscheme | 2 +- examples/RangePlot/RangePlot.xcodeproj/project.pbxproj | 2 ++ .../xcshareddata/xcschemes/RangePlot.xcscheme | 2 +- examples/StockPlot/StockPlot.xcodeproj/project.pbxproj | 2 ++ .../xcshareddata/xcschemes/StockPlot.xcscheme | 2 +- framework/CorePlot.xcodeproj/project.pbxproj | 2 ++ .../xcshareddata/xcschemes/CorePlot Mac.xcscheme | 4 +--- .../xcshareddata/xcschemes/CorePlot iOS.xcscheme | 4 +--- .../xcshareddata/xcschemes/CorePlot tvOS.xcscheme | 4 +--- .../xcshareddata/xcschemes/CorePlot-CocoaTouch.xcscheme | 4 +--- .../xcshareddata/xcschemes/Documentation-Mac.xcscheme | 2 +- .../xcshareddata/xcschemes/Documentation-iOS.xcscheme | 2 +- .../xcshareddata/xcschemes/Universal Library.xcscheme | 2 +- .../xcshareddata/xcschemes/Universal iOS Framework.xcscheme | 2 +- framework/xcconfig/CorePlot.xcconfig | 1 + framework/xcconfig/CorePlotWarnings.xcconfig | 2 ++ 36 files changed, 62 insertions(+), 39 deletions(-) diff --git a/QCPlugin/CorePlotQCPlugin.xcodeproj/project.pbxproj b/QCPlugin/CorePlotQCPlugin.xcodeproj/project.pbxproj index b2316046b..847aee008 100644 --- a/QCPlugin/CorePlotQCPlugin.xcodeproj/project.pbxproj +++ b/QCPlugin/CorePlotQCPlugin.xcodeproj/project.pbxproj @@ -262,7 +262,7 @@ 089C1669FE841209C02AAC07 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0900; + LastUpgradeCheck = 0930; }; buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "CorePlotQCPlugin" */; compatibilityVersion = "Xcode 6.3"; @@ -465,6 +465,7 @@ }; 1DEB913F08733D840010E9CD /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = C3C8CFF619E9504C007E0BCB /* CorePlotWarnings.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; @@ -501,6 +502,7 @@ }; 1DEB914008733D840010E9CD /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = C3C8CFF619E9504C007E0BCB /* CorePlotWarnings.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; @@ -537,6 +539,7 @@ 233E2D8A0A83C7AC005A62DF /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; PRODUCT_NAME = "Build & Install"; }; @@ -545,6 +548,7 @@ 233E2D8B0A83C7AC005A62DF /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; PRODUCT_NAME = "Build & Install"; }; diff --git a/QCPlugin/CorePlotQCPlugin.xcodeproj/xcshareddata/xcschemes/Build & Copy.xcscheme b/QCPlugin/CorePlotQCPlugin.xcodeproj/xcshareddata/xcschemes/Build & Copy.xcscheme index 481059277..d64dd0f04 100644 --- a/QCPlugin/CorePlotQCPlugin.xcodeproj/xcshareddata/xcschemes/Build & Copy.xcscheme +++ b/QCPlugin/CorePlotQCPlugin.xcodeproj/xcshareddata/xcschemes/Build & Copy.xcscheme @@ -1,6 +1,6 @@ + codeCoverageEnabled = "YES" + shouldUseLaunchSchemeArgsEnv = "YES"> diff --git a/examples/CorePlotGallery/Plot_Gallery.xcodeproj/xcshareddata/xcschemes/Plot Gallery-iOS.xcscheme b/examples/CorePlotGallery/Plot_Gallery.xcodeproj/xcshareddata/xcschemes/Plot Gallery-iOS.xcscheme index db2863546..13abebda1 100644 --- a/examples/CorePlotGallery/Plot_Gallery.xcodeproj/xcshareddata/xcschemes/Plot Gallery-iOS.xcscheme +++ b/examples/CorePlotGallery/Plot_Gallery.xcodeproj/xcshareddata/xcschemes/Plot Gallery-iOS.xcscheme @@ -1,6 +1,6 @@ + codeCoverageEnabled = "YES" + shouldUseLaunchSchemeArgsEnv = "YES"> diff --git a/examples/CorePlotGallery/Plot_Gallery.xcodeproj/xcshareddata/xcschemes/Plot Gallery-tvOS.xcscheme b/examples/CorePlotGallery/Plot_Gallery.xcodeproj/xcshareddata/xcschemes/Plot Gallery-tvOS.xcscheme index 57ddd9cfa..8611e5561 100644 --- a/examples/CorePlotGallery/Plot_Gallery.xcodeproj/xcshareddata/xcschemes/Plot Gallery-tvOS.xcscheme +++ b/examples/CorePlotGallery/Plot_Gallery.xcodeproj/xcshareddata/xcschemes/Plot Gallery-tvOS.xcscheme @@ -1,6 +1,6 @@ + codeCoverageEnabled = "YES" + shouldUseLaunchSchemeArgsEnv = "YES"> diff --git a/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj b/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj index 06eefb1ac..f182143fd 100644 --- a/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj +++ b/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj @@ -261,7 +261,7 @@ attributes = { BuildIndependentTargetsInParallel = NO; LastSwiftUpdateCheck = 0700; - LastUpgradeCheck = 0900; + LastUpgradeCheck = 0930; TargetAttributes = { 8D1107260486CEB800E47090 = { LastSwiftMigration = 0900; @@ -444,6 +444,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @loader_path/../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "org.CorePlot.${PRODUCT_NAME:identifier}"; PRODUCT_NAME = DatePlot; + SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OBJC_BRIDGING_HEADER = "DatePlot-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_VERSION = 3.0; @@ -452,6 +453,7 @@ }; C01FCF4F08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = C3C3CBBF19EA07F600A0296A /* CorePlotWarnings.xcconfig */; buildSettings = { CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; @@ -491,6 +493,7 @@ }; C01FCF5008A954540054247B /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = C3C3CBBF19EA07F600A0296A /* CorePlotWarnings.xcconfig */; buildSettings = { CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; diff --git a/examples/DatePlot/DatePlot.xcodeproj/xcshareddata/xcschemes/DatePlot.xcscheme b/examples/DatePlot/DatePlot.xcodeproj/xcshareddata/xcschemes/DatePlot.xcscheme index 0339b106c..856d6b6ed 100644 --- a/examples/DatePlot/DatePlot.xcodeproj/xcshareddata/xcschemes/DatePlot.xcscheme +++ b/examples/DatePlot/DatePlot.xcodeproj/xcshareddata/xcschemes/DatePlot.xcscheme @@ -1,6 +1,6 @@ Date: Mon, 26 Feb 2018 13:25:28 -0800 Subject: [PATCH 051/160] Make testing section clearer --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 02b35d618..9f45d3538 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ Everyone has a their own preferred coding style, and no one way can be considere Core Plot includes a [script](https://github.com/core-plot/core-plot/blob/master/scripts/format_core_plot.sh) to run [Uncrustify](http://uncrustify.sourceforge.net) on the source code to standardize the formatting. All source code will be formatted with this tool before being committed to the Core Plot repository. ## Testing -Because Core Plot is intended to be used in scientific, financial, and other domains where correctness is paramount, unit testing is integrated into the framework. Good test coverage protects developers from introducing accidental regressions and frees them to experiment and refactor without fear of breaking things. See the [unit testing](https://github.com/core-plot/core-plot/wiki/Unit-Testing) wiki page for instructions on how to build unit tests for any new code you add to the project. +Core Plot is intended to be applied in scientific, financial, and other domains where correctness is paramount. In order to assure the quality of the framework, unit testing is integrated. Good test coverage protects developers from introducing accidental regressions, and helps them to experiment and refactor without breaking existing code. See the [unit testing](https://github.com/core-plot/core-plot/wiki/Unit-Testing) wiki page for instructions on how to build unit tests for any new code you add to the project. # Support Core Plot From bf503fb410c8e33d5f52d85daa8dd1e194d97b58 Mon Sep 17 00:00:00 2001 From: Thomas Brichart Date: Fri, 4 May 2018 10:43:12 +0200 Subject: [PATCH 052/160] Fix name collision in CPTFunctionDataSource --- framework/Source/CPTFunctionDataSource.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/framework/Source/CPTFunctionDataSource.h b/framework/Source/CPTFunctionDataSource.h index b7141b312..275678341 100644 --- a/framework/Source/CPTFunctionDataSource.h +++ b/framework/Source/CPTFunctionDataSource.h @@ -23,16 +23,16 @@ typedef double (^CPTDataSourceBlock)(double); @property (nonatomic, readwrite) CGFloat resolution; @property (nonatomic, readwrite, strong, nullable) CPTPlotRange *dataRange; -/// @name Factory Methods -/// @{ -+(nonnull instancetype)dataSourceForPlot:(nonnull CPTPlot *)plot withFunction:(nonnull CPTDataSourceFunction)function; -+(nonnull instancetype)dataSourceForPlot:(nonnull CPTPlot *)plot withBlock:(nonnull CPTDataSourceBlock)block; + /// @name Factory Methods + /// @{ /// @{ ++(nonnull instancetype)dataSourceForPlot:(nonnull CPTPlot *)plot withFunction:(nonnull CPTDataSourceFunction)function NS_SWIFT_NAME(init(for:withFunction)); ++(nonnull instancetype)dataSourceForPlot:(nonnull CPTPlot *)plot withBlock:(nonnull CPTDataSourceBlock)block NS_SWIFT_NAME(init(for:withBlock)); /// @} - + /// @name Initialization /// @{ --(nonnull instancetype)initForPlot:(nonnull CPTPlot *)plot withFunction:(nonnull CPTDataSourceFunction)function; --(nonnull instancetype)initForPlot:(nonnull CPTPlot *)plot withBlock:(nonnull CPTDataSourceBlock)block; +-(nonnull instancetype)initForPlot:(nonnull CPTPlot *)plot withFunction:(nonnull CPTDataSourceFunction)function NS_SWIFT_NAME(init(forPlot:withFunction)); +-(nonnull instancetype)initForPlot:(nonnull CPTPlot *)plot withBlock:(nonnull CPTDataSourceBlock)block NS_SWIFT_NAME(init(forPlot:withBlock)); /// @} @end From 5f70ff6fe684dc5570ad7c6fe9fcf09d3cb91d18 Mon Sep 17 00:00:00 2001 From: Thomas Brichart Date: Fri, 4 May 2018 11:52:07 +0200 Subject: [PATCH 053/160] Fix missing semicolon --- framework/Source/CPTFunctionDataSource.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/framework/Source/CPTFunctionDataSource.h b/framework/Source/CPTFunctionDataSource.h index 275678341..fd5fd9f06 100644 --- a/framework/Source/CPTFunctionDataSource.h +++ b/framework/Source/CPTFunctionDataSource.h @@ -25,14 +25,14 @@ typedef double (^CPTDataSourceBlock)(double); /// @name Factory Methods /// @{ /// @{ -+(nonnull instancetype)dataSourceForPlot:(nonnull CPTPlot *)plot withFunction:(nonnull CPTDataSourceFunction)function NS_SWIFT_NAME(init(for:withFunction)); -+(nonnull instancetype)dataSourceForPlot:(nonnull CPTPlot *)plot withBlock:(nonnull CPTDataSourceBlock)block NS_SWIFT_NAME(init(for:withBlock)); ++(nonnull instancetype)dataSourceForPlot:(nonnull CPTPlot *)plot withFunction:(nonnull CPTDataSourceFunction)function NS_SWIFT_NAME(init(for:withFunction:)); ++(nonnull instancetype)dataSourceForPlot:(nonnull CPTPlot *)plot withBlock:(nonnull CPTDataSourceBlock)block NS_SWIFT_NAME(init(for:withBlock:)); /// @} /// @name Initialization /// @{ --(nonnull instancetype)initForPlot:(nonnull CPTPlot *)plot withFunction:(nonnull CPTDataSourceFunction)function NS_SWIFT_NAME(init(forPlot:withFunction)); --(nonnull instancetype)initForPlot:(nonnull CPTPlot *)plot withBlock:(nonnull CPTDataSourceBlock)block NS_SWIFT_NAME(init(forPlot:withBlock)); +-(nonnull instancetype)initForPlot:(nonnull CPTPlot *)plot withFunction:(nonnull CPTDataSourceFunction)function NS_SWIFT_NAME(init(forPlot:withFunction:)); +-(nonnull instancetype)initForPlot:(nonnull CPTPlot *)plot withBlock:(nonnull CPTDataSourceBlock)block NS_SWIFT_NAME(init(forPlot:withBlock:)); /// @} @end From 0dbe58a7be37649c5aa266034f35149ea135f40b Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sat, 19 May 2018 08:52:54 -0400 Subject: [PATCH 054/160] Updated code formatting for Uncrustify 0.67. --- .../Classes/CPTTestApp_iPadViewController.m | 20 ++++----- examples/CPTTestApp/Source/Controller.m | 2 +- .../src/mac/PlotGalleryController.m | 14 +++--- .../src/plots/CurvedInterpolationDemo.m | 38 ++++++++-------- .../CorePlotGallery/src/shared/PlotGallery.m | 6 +-- examples/DropPlot/CPTPlotDocument.m | 16 +++---- framework/Source/CPTPlot.h | 4 +- framework/Source/CPTRangePlot.m | 24 +++++------ framework/Source/CPTScatterPlot.m | 4 +- framework/Source/CPTTheme.m | 2 +- framework/Source/CPTUtilitiesTests.m | 2 +- scripts/uncrustify.cfg | 43 ++++++++++++++++--- 12 files changed, 102 insertions(+), 73 deletions(-) diff --git a/examples/CPTTestApp-iPad/Classes/CPTTestApp_iPadViewController.m b/examples/CPTTestApp-iPad/Classes/CPTTestApp_iPadViewController.m index 10025f1ae..4f6ab4e8c 100644 --- a/examples/CPTTestApp-iPad/Classes/CPTTestApp_iPadViewController.m +++ b/examples/CPTTestApp-iPad/Classes/CPTTestApp_iPadViewController.m @@ -195,7 +195,7 @@ -(void)constructScatterPlot -(void)constructBarChart { - // Create barChart from theme +// Create barChart from theme CPTXYGraph *newGraph = [[CPTXYGraph alloc] initWithFrame:CGRectZero]; CPTTheme *theme = [CPTTheme themeNamed:kCPTDarkGradientTheme]; @@ -211,7 +211,7 @@ -(void)constructBarChart newGraph.paddingRight = 20.0; newGraph.paddingBottom = 80.0; - // Add plot space for horizontal bar charts +// Add plot space for horizontal bar charts CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)newGraph.defaultPlotSpace; plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:@0.0 length:@300.0]; plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:@0.0 length:@16.0]; @@ -227,7 +227,7 @@ -(void)constructBarChart x.titleLocation = @7.5; x.titleOffset = 55.0; - // Define some custom labels for the data elements +// Define some custom labels for the data elements x.labelRotation = CPTFloat(M_PI_4); x.labelingPolicy = CPTAxisLabelingPolicyNone; CPTNumberArray *customTickLocations = @[@1, @5, @10, @15]; @@ -254,7 +254,7 @@ -(void)constructBarChart y.titleOffset = 45.0; y.titleLocation = @150.0; - // First bar plot +// First bar plot CPTBarPlot *barPlot = [CPTBarPlot tubularBarPlotWithColor:[CPTColor darkGrayColor] horizontalBars:NO]; barPlot.baseValue = @0.0; barPlot.dataSource = self; @@ -262,7 +262,7 @@ -(void)constructBarChart barPlot.identifier = @"Bar Plot 1"; [newGraph addPlot:barPlot toPlotSpace:plotSpace]; - // Second bar plot +// Second bar plot barPlot = [CPTBarPlot tubularBarPlotWithColor:[CPTColor blueColor] horizontalBars:NO]; barPlot.dataSource = self; barPlot.baseValue = @0.0; @@ -275,7 +275,7 @@ -(void)constructBarChart -(void)constructPieChart { - // Create pieChart from theme +// Create pieChart from theme CPTXYGraph *newGraph = [[CPTXYGraph alloc] initWithFrame:CGRectZero]; CPTTheme *theme = [CPTTheme themeNamed:kCPTDarkGradientTheme]; @@ -293,14 +293,14 @@ -(void)constructPieChart newGraph.axisSet = nil; - // Prepare a radial overlay gradient for shading/gloss +// Prepare a radial overlay gradient for shading/gloss CPTGradient *overlayGradient = [[CPTGradient alloc] init]; overlayGradient.gradientType = CPTGradientTypeRadial; overlayGradient = [overlayGradient addColorStop:[[CPTColor blackColor] colorWithAlphaComponent:CPTFloat(0.0)] atPosition:CPTFloat(0.0)]; overlayGradient = [overlayGradient addColorStop:[[CPTColor blackColor] colorWithAlphaComponent:CPTFloat(0.3)] atPosition:CPTFloat(0.9)]; overlayGradient = [overlayGradient addColorStop:[[CPTColor blackColor] colorWithAlphaComponent:CPTFloat(0.7)] atPosition:CPTFloat(1.0)]; - // Add pie chart +// Add pie chart CPTPieChart *newPlot = [[CPTPieChart alloc] init]; newPlot.dataSource = self; newPlot.pieRadius = 130.0; @@ -313,7 +313,7 @@ -(void)constructPieChart [newGraph addPlot:newPlot]; self.piePlot = newPlot; - // Add some initial data +// Add some initial data self.dataForChart = @[@20.0, @30.0, @(NAN), @60.0]; } @@ -385,7 +385,7 @@ -(nullable id)numberForPlot:(nonnull CPTPlot *)plot field:(NSUInteger)fieldEnum if ( index % 8 ) { NSString *key = (fieldEnum == CPTScatterPlotFieldX ? @"x" : @"y"); num = self.dataForPlot[index][key]; - // Green plot gets shifted above the blue +// Green plot gets shifted above the blue if ( [(NSString *) plot.identifier isEqualToString:@"Green Plot"] ) { if ( fieldEnum == CPTScatterPlotFieldY ) { num = @(num.doubleValue + 1.0); diff --git a/examples/CPTTestApp/Source/Controller.m b/examples/CPTTestApp/Source/Controller.m index c47d8c3b9..36d381e3b 100644 --- a/examples/CPTTestApp/Source/Controller.m +++ b/examples/CPTTestApp/Source/Controller.m @@ -634,7 +634,7 @@ -(IBAction)printDocument:(nullable id)sender -(void)printOperationDidRun:(nonnull NSPrintOperation *)printOperation success:(BOOL)success contextInfo:(nullable void *)contextInfo { - // print delegate +// print delegate } #pragma mark - diff --git a/examples/CorePlotGallery/src/mac/PlotGalleryController.m b/examples/CorePlotGallery/src/mac/PlotGalleryController.m index 1b0650ea8..77d70e201 100644 --- a/examples/CorePlotGallery/src/mac/PlotGalleryController.m +++ b/examples/CorePlotGallery/src/mac/PlotGalleryController.m @@ -218,13 +218,13 @@ -(IBAction)exportTVImagesToPNG:(id)sender if ( [pngSavingDialog runModal] == NSOKButton ) { NSURL *url = pngSavingDialog.URL; if ( url ) { - // top image +// top image CGSize topShelfSize = CGSizeMake(1920.0, 720.0); NSURL *topURL = [NSURL URLWithString:@"PlotGalleryTopShelf.png" relativeToURL:url]; [self exportTVImageWithSize:topShelfSize toURL:topURL showPlots:YES showBackground:YES]; - // large icon image +// large icon image CGSize largeIconSize = CGSizeMake(1280.0, 768.0); NSURL *largeBackURL = [NSURL URLWithString:@"PlotGalleryLargeIconBack.png" relativeToURL:url]; @@ -233,7 +233,7 @@ -(IBAction)exportTVImagesToPNG:(id)sender NSURL *largeFrontURL = [NSURL URLWithString:@"PlotGalleryLargeIconFront.png" relativeToURL:url]; [self exportTVImageWithSize:largeIconSize toURL:largeFrontURL showPlots:YES showBackground:NO]; - // small icon image +// small icon image CGSize smallIconSize = CGSizeMake(400.0, 240.0); NSURL *smallBackURL = [NSURL URLWithString:@"PlotGallerySmallIconBack.png" relativeToURL:url]; @@ -293,9 +293,9 @@ -(nonnull CPTDictionary *)imageBrowser:(nonnull IKImageBrowserView *)aBrowser gr NSValue *groupRange = [NSValue valueWithRange:NSMakeRange(offset, [[PlotGallery sharedPlotGallery] numberOfRowsInSection:index])]; return @{ - IKImageBrowserGroupStyleKey: @(IKGroupDisclosureStyle), - IKImageBrowserGroupTitleKey: groupTitle, - IKImageBrowserGroupRangeKey: groupRange + IKImageBrowserGroupStyleKey: @(IKGroupDisclosureStyle), + IKImageBrowserGroupTitleKey: groupTitle, + IKImageBrowserGroupRangeKey: groupRange }; } @@ -327,7 +327,7 @@ -(CGFloat)splitView:(nonnull NSSplitView *)sv constrainMaxCoordinate:(CGFloat)co -(void)splitView:(nonnull NSSplitView *)sender resizeSubviewsWithOldSize:(NSSize)oldSize { - // Lock the LHS width +// Lock the LHS width NSRect frame = sender.frame; NSView *lhs = sender.subviews[0]; NSRect lhsRect = lhs.frame; diff --git a/examples/CorePlotGallery/src/plots/CurvedInterpolationDemo.m b/examples/CorePlotGallery/src/plots/CurvedInterpolationDemo.m index d577f7a6b..7e4382936 100644 --- a/examples/CorePlotGallery/src/plots/CurvedInterpolationDemo.m +++ b/examples/CorePlotGallery/src/plots/CurvedInterpolationDemo.m @@ -60,9 +60,9 @@ -(void)generateData NSNumber *y = yValues[i]; if ( x && y ) { [generatedData addObject:@{ - @"x": x, - @"y": y - }]; + @"x": x, + @"y": y + }]; } } self.plotData = generatedData; @@ -87,12 +87,12 @@ -(void)renderInGraphHostingView:(CPTGraphHostingView *)hostingView withTheme:(CP graph.plotAreaFrame.paddingBottom += self.titleSize; graph.plotAreaFrame.masksToBorder = NO; - // Setup scatter plot space +// Setup scatter plot space CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace; plotSpace.allowsUserInteraction = YES; plotSpace.delegate = self; - // Grid line styles +// Grid line styles CPTMutableLineStyle *majorGridLineStyle = [CPTMutableLineStyle lineStyle]; majorGridLineStyle.lineWidth = 0.75; majorGridLineStyle.lineColor = [[CPTColor colorWithGenericGray:CPTFloat(0.2)] colorWithAlphaComponent:CPTFloat(0.75)]; @@ -108,8 +108,8 @@ -(void)renderInGraphHostingView:(CPTGraphHostingView *)hostingView withTheme:(CP CPTLineCap *lineCap = [CPTLineCap sweptArrowPlotLineCap]; lineCap.size = CGSizeMake(self.titleSize * CPTFloat(0.625), self.titleSize * CPTFloat(0.625) ); - // Axes - // Label x axis with a fixed interval policy +// Axes +// Label x axis with a fixed interval policy CPTXYAxisSet *axisSet = (CPTXYAxisSet *)graph.axisSet; CPTXYAxis *x = axisSet.xAxis; x.majorIntervalLength = @0.1; @@ -128,7 +128,7 @@ -(void)renderInGraphHostingView:(CPTGraphHostingView *)hostingView withTheme:(CP x.title = @"X Axis"; x.titleOffset = self.titleSize * CPTFloat(1.25); - // Label y with an automatic label policy. +// Label y with an automatic label policy. CPTXYAxis *y = axisSet.yAxis; y.labelingPolicy = CPTAxisLabelingPolicyAutomatic; y.minorTicksPerInterval = 4; @@ -149,25 +149,25 @@ -(void)renderInGraphHostingView:(CPTGraphHostingView *)hostingView withTheme:(CP y.title = @"Y Axis"; y.titleOffset = self.titleSize * CPTFloat(1.25); - // Set axes +// Set axes graph.axisSet.axes = @[x, y]; // Create the plots - // Bezier +// Bezier CPTScatterPlot *bezierPlot = [[CPTScatterPlot alloc] initWithFrame:CGRectZero]; bezierPlot.identifier = bezierCurveIdentifier; - // Catmull-Rom +// Catmull-Rom CPTScatterPlot *cmUniformPlot = [[CPTScatterPlot alloc] initWithFrame:CGRectZero]; cmUniformPlot.identifier = catmullRomUniformIdentifier; CPTScatterPlot *cmCentripetalPlot = [[CPTScatterPlot alloc] initWithFrame:CGRectZero]; cmCentripetalPlot.identifier = catmullRomCentripetalIdentifier; CPTScatterPlot *cmChordalPlot = [[CPTScatterPlot alloc] initWithFrame:CGRectZero]; cmChordalPlot.identifier = catmullRomChordalIdentifier; - // Hermite Cubic +// Hermite Cubic CPTScatterPlot *hermitePlot = [[CPTScatterPlot alloc] initWithFrame:CGRectZero]; hermitePlot.identifier = hermiteCubicIdentifier; - // set interpolation types +// set interpolation types bezierPlot.interpolation = cmUniformPlot.interpolation = cmCentripetalPlot.interpolation = cmChordalPlot.interpolation = hermitePlot.interpolation = CPTScatterPlotInterpolationCurved; bezierPlot.curvedInterpolationOption = CPTScatterPlotCurvedInterpolationNormal; @@ -176,7 +176,7 @@ -(void)renderInGraphHostingView:(CPTGraphHostingView *)hostingView withTheme:(CP cmCentripetalPlot.curvedInterpolationOption = CPTScatterPlotCurvedInterpolationCatmullRomCentripetal; hermitePlot.curvedInterpolationOption = CPTScatterPlotCurvedInterpolationHermiteCubic; - // style plots +// style plots CPTMutableLineStyle *lineStyle = [bezierPlot.dataLineStyle mutableCopy]; lineStyle.lineWidth = 2.0; lineStyle.lineColor = [CPTColor greenColor]; @@ -195,7 +195,7 @@ -(void)renderInGraphHostingView:(CPTGraphHostingView *)hostingView withTheme:(CP lineStyle.lineColor = [CPTColor cyanColor]; hermitePlot.dataLineStyle = lineStyle; - // set data source and add plots +// set data source and add plots bezierPlot.dataSource = cmUniformPlot.dataSource = cmCentripetalPlot.dataSource = cmChordalPlot.dataSource = hermitePlot.dataSource = self; [graph addPlot:bezierPlot]; @@ -204,12 +204,12 @@ -(void)renderInGraphHostingView:(CPTGraphHostingView *)hostingView withTheme:(CP [graph addPlot:cmChordalPlot]; [graph addPlot:hermitePlot]; - // Auto scale the plot space to fit the plot data +// Auto scale the plot space to fit the plot data [plotSpace scaleToFitPlots:[graph allPlots]]; CPTMutablePlotRange *xRange = [plotSpace.xRange mutableCopy]; CPTMutablePlotRange *yRange = [plotSpace.yRange mutableCopy]; - // Expand the ranges to put some space around the plot +// Expand the ranges to put some space around the plot [xRange expandRangeByFactor:@1.2]; [yRange expandRangeByFactor:@1.2]; plotSpace.xRange = xRange; @@ -226,7 +226,7 @@ -(void)renderInGraphHostingView:(CPTGraphHostingView *)hostingView withTheme:(CP plotSpace.globalXRange = xRange; plotSpace.globalYRange = yRange; - // Add plot symbols +// Add plot symbols CPTMutableLineStyle *symbolLineStyle = [CPTMutableLineStyle lineStyle]; symbolLineStyle.lineColor = [[CPTColor blackColor] colorWithAlphaComponent:0.5]; CPTPlotSymbol *plotSymbol = [CPTPlotSymbol ellipsePlotSymbol]; @@ -235,7 +235,7 @@ -(void)renderInGraphHostingView:(CPTGraphHostingView *)hostingView withTheme:(CP plotSymbol.size = CGSizeMake(5.0, 5.0); bezierPlot.plotSymbol = cmUniformPlot.plotSymbol = cmCentripetalPlot.plotSymbol = cmChordalPlot.plotSymbol = hermitePlot.plotSymbol = plotSymbol; - // Add legend +// Add legend graph.legend = [CPTLegend legendWithGraph:graph]; graph.legend.numberOfRows = 2; graph.legend.textStyle = x.titleTextStyle; diff --git a/examples/CorePlotGallery/src/shared/PlotGallery.m b/examples/CorePlotGallery/src/shared/PlotGallery.m index 2223b8ff4..a4703a9f6 100644 --- a/examples/CorePlotGallery/src/shared/PlotGallery.m +++ b/examples/CorePlotGallery/src/shared/PlotGallery.m @@ -21,7 +21,7 @@ @implementation PlotGallery +(nonnull PlotGallery *)sharedPlotGallery { - @synchronized(self) + @synchronized ( self ) { if ( sharedPlotGallery == nil ) { sharedPlotGallery = [[self alloc] init]; @@ -32,7 +32,7 @@ +(nonnull PlotGallery *)sharedPlotGallery +(id)allocWithZone:(NSZone *)zone { - @synchronized(self) + @synchronized ( self ) { if ( sharedPlotGallery == nil ) { return [super allocWithZone:zone]; @@ -45,7 +45,7 @@ -(nonnull instancetype)init { Class thisClass = [self class]; - @synchronized(thisClass) + @synchronized ( thisClass ) { if ( sharedPlotGallery == nil ) { if ( (self = [super init]) ) { diff --git a/examples/DropPlot/CPTPlotDocument.m b/examples/DropPlot/CPTPlotDocument.m index 85efdfb3f..6665b9562 100644 --- a/examples/DropPlot/CPTPlotDocument.m +++ b/examples/DropPlot/CPTPlotDocument.m @@ -369,11 +369,11 @@ -(BOOL)plotSpace:(nonnull CPTPlotSpace *)space shouldHandlePointingDeviceDragged CPTPlotArea *plotArea = self.graph.plotAreaFrame.plotArea; CGRect plotBounds = plotArea.bounds; - // convert the dragStart and dragEnd values to plot coordinates +// convert the dragStart and dragEnd values to plot coordinates CGPoint dragStartInPlotArea = [self.graph convertPoint:self.dragStart toLayer:plotArea]; CGPoint dragEndInPlotArea = [self.graph convertPoint:interactionPoint toLayer:plotArea]; - // create the dragrect from dragStart to the current location +// create the dragrect from dragStart to the current location CGFloat endX = MAX(MIN(dragEndInPlotArea.x, CGRectGetMaxX(plotBounds) ), CGRectGetMinX(plotBounds) ); CGFloat endY = MAX(MIN(dragEndInPlotArea.y, CGRectGetMaxY(plotBounds) ), CGRectGetMinY(plotBounds) ); CGRect borderRect = CGRectMake(dragStartInPlotArea.x, dragStartInPlotArea.y, @@ -397,8 +397,8 @@ -(BOOL)plotSpace:(nonnull CPTPlotSpace *)space shouldHandlePointingDeviceDownEve CGPoint dragStartInPlotArea = [self.graph convertPoint:self.dragStart toLayer:plotArea]; if ( CGRectContainsPoint(plotArea.bounds, dragStartInPlotArea) ) { - // create the zoom rectangle - // first a bordered layer to draw the zoomrect +// create the zoom rectangle +// first a bordered layer to draw the zoomrect CPTBorderedLayer *zoomRectangleLayer = [[CPTBorderedLayer alloc] initWithFrame:CGRectNull]; CPTMutableLineStyle *lineStyle = [CPTMutableLineStyle lineStyle]; @@ -414,7 +414,7 @@ -(BOOL)plotSpace:(nonnull CPTPlotSpace *)space shouldHandlePointingDeviceDownEve CPTNumberArray *anchorPoint = @[@(start[CPTCoordinateX]), @(start[CPTCoordinateY])]; - // now create the annotation +// now create the annotation CPTPlotSpace *defaultSpace = self.graph.defaultPlotSpace; if ( defaultSpace ) { CPTPlotSpaceAnnotation *annotation = [[CPTPlotSpaceAnnotation alloc] initWithPlotSpace:defaultSpace anchorPlotPoint:anchorPoint]; @@ -436,7 +436,7 @@ -(BOOL)plotSpace:(nonnull CPTPlotSpace *)space shouldHandlePointingDeviceUpEvent if ( annotation ) { self.dragEnd = interactionPoint; - // double-click to completely zoom out +// double-click to completely zoom out if ( event.clickCount == 2 ) { CPTPlotArea *plotArea = self.graph.plotAreaFrame.plotArea; CGPoint dragEndInPlotArea = [self.graph convertPoint:interactionPoint toLayer:plotArea]; @@ -446,11 +446,11 @@ -(BOOL)plotSpace:(nonnull CPTPlotSpace *)space shouldHandlePointingDeviceUpEvent } } else if ( !CGPointEqualToPoint(self.dragStart, self.dragEnd) ) { - // no accidental drag, so zoom in +// no accidental drag, so zoom in [self zoomIn]; } - // and we're done with the drag +// and we're done with the drag [self.graph.plotAreaFrame.plotArea removeAnnotation:annotation]; self.zoomAnnotation = nil; diff --git a/framework/Source/CPTPlot.h b/framework/Source/CPTPlot.h index 7e4b8a4de..e0ed4c667 100644 --- a/framework/Source/CPTPlot.h +++ b/framework/Source/CPTPlot.h @@ -332,9 +332,9 @@ typedef NSMutableArray<__kindof CPTPlot *> CPTMutablePlotArray; -(void)reloadDataInIndexRange:(NSRange)indexRange; -(void)insertDataAtIndex:(NSUInteger)idx numberOfRecords:(NSUInteger)numberOfRecords; -(void)deleteDataInIndexRange:(NSRange)indexRange; --(void)reloadPlotData NS_SWIFT_NAME(CPTPlot.reloadPlotData() ); +-(void) reloadPlotData NS_SWIFT_NAME(CPTPlot.reloadPlotData() ); --(void)reloadPlotDataInIndexRange:(NSRange)indexRange NS_SWIFT_NAME(CPTPlot.reloadPlotData(inIndexRange:) ); +-(void)reloadPlotDataInIndexRange:(NSRange) indexRange NS_SWIFT_NAME(CPTPlot.reloadPlotData(inIndexRange:) ); /// @} diff --git a/framework/Source/CPTRangePlot.m b/framework/Source/CPTRangePlot.m index 28c7b7ed8..0c1b96711 100644 --- a/framework/Source/CPTRangePlot.m +++ b/framework/Source/CPTRangePlot.m @@ -351,9 +351,9 @@ -(void)calculateViewPoints:(nonnull CGPointError *)viewPoints withDrawPointFlags double plotPoint[2]; plotPoint[CPTCoordinateX] = x; plotPoint[CPTCoordinateY] = y; - CGPoint pos = [thePlotSpace plotAreaViewPointForDoublePrecisionPlotPoint:plotPoint numberOfCoordinates:2]; - viewPoints[i].x = pos.x; - viewPoints[i].y = pos.y; + CGPoint pos = [thePlotSpace plotAreaViewPointForDoublePrecisionPlotPoint:plotPoint numberOfCoordinates:2]; + viewPoints[i].x = pos.x; + viewPoints[i].y = pos.y; plotPoint[CPTCoordinateX] = x; plotPoint[CPTCoordinateY] = y + high; @@ -401,9 +401,9 @@ -(void)calculateViewPoints:(nonnull CGPointError *)viewPoints withDrawPointFlags NSDecimal plotPoint[2]; plotPoint[CPTCoordinateX] = x; plotPoint[CPTCoordinateY] = y; - CGPoint pos = [thePlotSpace plotAreaViewPointForPlotPoint:plotPoint numberOfCoordinates:2]; - viewPoints[i].x = pos.x; - viewPoints[i].y = pos.y; + CGPoint pos = [thePlotSpace plotAreaViewPointForPlotPoint:plotPoint numberOfCoordinates:2]; + viewPoints[i].x = pos.x; + viewPoints[i].y = pos.y; if ( !NSDecimalIsNotANumber(&high) ) { plotPoint[CPTCoordinateX] = x; @@ -463,9 +463,9 @@ -(void)alignViewPointsToUserSpace:(nonnull CGPointError *)viewPoints withContext if ( self.barLineStyle.lineWidth > CPTFloat(0.0) ) { dispatch_apply(dataCount, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(size_t i) { if ( drawPointFlags[i] ) { - CGFloat x = viewPoints[i].x; - CGFloat y = viewPoints[i].y; - CGPoint pos = CPTAlignPointToUserSpace(context, CPTPointMake(viewPoints[i].x, viewPoints[i].y) ); + CGFloat x = viewPoints[i].x; + CGFloat y = viewPoints[i].y; + CGPoint pos = CPTAlignPointToUserSpace(context, CPTPointMake(viewPoints[i].x, viewPoints[i].y) ); viewPoints[i].x = pos.x; viewPoints[i].y = pos.y; @@ -483,9 +483,9 @@ -(void)alignViewPointsToUserSpace:(nonnull CGPointError *)viewPoints withContext else { dispatch_apply(dataCount, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(size_t i) { if ( drawPointFlags[i] ) { - CGFloat x = viewPoints[i].x; - CGFloat y = viewPoints[i].y; - CGPoint pos = CPTAlignIntegralPointToUserSpace(context, CPTPointMake(viewPoints[i].x, viewPoints[i].y) ); + CGFloat x = viewPoints[i].x; + CGFloat y = viewPoints[i].y; + CGPoint pos = CPTAlignIntegralPointToUserSpace(context, CPTPointMake(viewPoints[i].x, viewPoints[i].y) ); viewPoints[i].x = pos.x; viewPoints[i].y = pos.y; diff --git a/framework/Source/CPTScatterPlot.m b/framework/Source/CPTScatterPlot.m index 9964e24f0..0f2119f1b 100644 --- a/framework/Source/CPTScatterPlot.m +++ b/framework/Source/CPTScatterPlot.m @@ -500,7 +500,7 @@ -(void)calculatePointsToDraw:(nonnull BOOL *)pointDrawFlags forPlotSpace:(nonnul const double y = yBytes[i]; CPTPlotRangeComparisonResult xFlag = [xRange compareToDouble:x]; - xRangeFlags[i] = xFlag; + xRangeFlags[i] = xFlag; if ( xFlag != CPTPlotRangeComparisonResultNumberInRange ) { yRangeFlags[i] = CPTPlotRangeComparisonResultNumberInRange; // if x is out of range, then y doesn't matter } @@ -520,7 +520,7 @@ -(void)calculatePointsToDraw:(nonnull BOOL *)pointDrawFlags forPlotSpace:(nonnul const NSDecimal y = yBytes[i]; CPTPlotRangeComparisonResult xFlag = [xRange compareToDecimal:x]; - xRangeFlags[i] = xFlag; + xRangeFlags[i] = xFlag; if ( xFlag != CPTPlotRangeComparisonResultNumberInRange ) { yRangeFlags[i] = CPTPlotRangeComparisonResultNumberInRange; // if x is out of range, then y doesn't matter } diff --git a/framework/Source/CPTTheme.m b/framework/Source/CPTTheme.m index ae9c34ce2..cffdb6f2b 100644 --- a/framework/Source/CPTTheme.m +++ b/framework/Source/CPTTheme.m @@ -131,7 +131,7 @@ +(void)registerTheme:(nonnull Class)themeClass { NSParameterAssert(themeClass); - @synchronized(self) + @synchronized ( self ) { if ( !themes ) { themes = [[NSMutableSet alloc] init]; diff --git a/framework/Source/CPTUtilitiesTests.m b/framework/Source/CPTUtilitiesTests.m index 5a4283f30..f3d3d0734 100644 --- a/framework/Source/CPTUtilitiesTests.m +++ b/framework/Source/CPTUtilitiesTests.m @@ -82,7 +82,7 @@ -(void)testToDecimalConversion XCTAssertEqualObjects([NSDecimalNumber decimalNumberWithString:@"100"], [NSDecimalNumber decimalNumberWithDecimal:CPTDecimalFromInteger(i)], @"NSInteger to NSDecimal conversion failed"); XCTAssertEqualObjects([NSDecimalNumber decimalNumberWithString:@"100"], [NSDecimalNumber decimalNumberWithDecimal:CPTDecimalFromUnsignedInteger(unsignedI)], @"NSUInteger to NSDecimal conversion failed"); - XCTAssertEqualWithAccuracy([@(f)floatValue], [[NSDecimalNumber decimalNumberWithDecimal:CPTDecimalFromFloat(f)] floatValue], 1.0e-7f, @"float to NSDecimal conversion failed"); + XCTAssertEqualWithAccuracy([@(f) floatValue], [[NSDecimalNumber decimalNumberWithDecimal:CPTDecimalFromFloat(f)] floatValue], 1.0e-7f, @"float to NSDecimal conversion failed"); XCTAssertEqualObjects(@(d), [NSDecimalNumber decimalNumberWithDecimal:CPTDecimalFromDouble(d)], @"double to NSDecimal conversion failed."); } diff --git a/scripts/uncrustify.cfg b/scripts/uncrustify.cfg index 220356a82..ee9fd5978 100644 --- a/scripts/uncrustify.cfg +++ b/scripts/uncrustify.cfg @@ -1,4 +1,4 @@ -# Uncrustify-0.66.1 +# Uncrustify-0.67 newlines = auto input_tab_size = 4 output_tab_size = 4 @@ -48,6 +48,7 @@ sp_before_unnamed_byref = force sp_after_byref = remove sp_after_byref_func = remove sp_before_byref_func = force +sp_after_ptr_block_caret = remove sp_after_type = force sp_before_template_paren = ignore sp_template_angle = force @@ -77,7 +78,9 @@ sp_after_semi_for = force sp_after_semi_for_empty = force sp_before_square = remove sp_before_squares = remove +sp_cpp_before_struct_binding = remove sp_inside_square = remove +sp_inside_square_oc_array = remove sp_after_comma = force sp_before_comma = remove sp_after_mdatype_commas = remove @@ -100,6 +103,7 @@ sp_sizeof_paren = remove sp_after_tag = ignore sp_inside_braces_enum = remove sp_inside_braces_struct = remove +sp_inside_braces_oc_dict = force sp_after_type_brace_init_lst_open = ignore sp_before_type_brace_init_lst_close = ignore sp_inside_type_brace_init_lst = ignore @@ -117,18 +121,22 @@ sp_inside_tparen = remove sp_after_tparen_close = remove sp_square_fparen = remove sp_fparen_brace = force -sp_fparen_dbrace = ignore +sp_fparen_brace_initializer = force +sp_fparen_dbrace = force sp_func_call_paren = remove -sp_func_call_paren_empty = ignore +sp_func_call_paren_empty = remove sp_func_call_user_paren = remove +sp_func_call_user_inside_fparen = remove +sp_func_call_user_paren_paren = remove sp_func_class_paren = remove -sp_func_class_paren_empty = ignore +sp_func_class_paren_empty = remove sp_return_paren = force sp_attribute_paren = remove sp_defined_paren = remove sp_throw_paren = force sp_after_throw = force sp_catch_paren = force +sp_oc_catch_paren = force sp_version_paren = ignore sp_scope_paren = ignore sp_super_paren = remove @@ -139,7 +147,9 @@ sp_else_brace = force sp_brace_else = force sp_brace_typedef = force sp_catch_brace = force +sp_oc_catch_brace = force sp_brace_catch = force +sp_oc_brace_catch = force sp_finally_brace = force sp_brace_finally = force sp_try_brace = force @@ -173,6 +183,7 @@ sp_before_oc_block_caret = force sp_after_oc_block_caret = remove sp_after_oc_msg_receiver = force sp_after_oc_property = force +sp_after_oc_synchronized = force sp_cond_colon = force sp_cond_colon_before = ignore sp_cond_colon_after = ignore @@ -199,9 +210,11 @@ sp_before_tr_emb_cmt = force sp_num_before_tr_emb_cmt = 1 sp_annotation_paren = ignore sp_skip_vbrace_tokens = false +sp_after_noexcept = ignore force_tab_after_define = false indent_columns = 4 indent_continue = 0 +indent_single_newlines = false indent_param = 0 indent_with_tabs = 0 indent_cmt_with_tabs = false @@ -215,6 +228,7 @@ indent_braces_no_struct = false indent_brace_parent = false indent_paren_open_brace = false indent_cs_delegate_brace = false +indent_cs_delegate_body = false indent_namespace = false indent_namespace_single_indent = false indent_namespace_level = 0 @@ -241,6 +255,7 @@ indent_func_param_double = false indent_func_const = 1 indent_func_throw = 1 indent_member = 1 +indent_member_single = false indent_sing_line_comments = 0 indent_relative_single_line_comments = true indent_switch_case = 4 @@ -258,11 +273,14 @@ indent_paren_after_func_decl = false indent_paren_after_func_call = false indent_comma_paren = false indent_bool_paren = false +indent_semicolon_for_paren = false indent_first_bool_expr = false +indent_first_for_expr = false indent_square_nl = false indent_preserve_sql = true indent_align_assign = true indent_oc_block = true +indent_align_paren = true indent_oc_block_msg = 0 indent_oc_msg_colon = 0 indent_oc_msg_prioritize_first_colon = true @@ -277,24 +295,30 @@ indent_token_after_brace = true indent_cpp_lambda_body = false indent_using_block = true indent_ternary_operator = 0 +indent_off_after_return_new = false +indent_single_after_return = false indent_ignore_asm_block = false nl_collapse_empty_body = false nl_assign_leave_one_liners = true nl_class_leave_one_liners = false nl_enum_leave_one_liners = true nl_getset_leave_one_liners = false +nl_cs_property_leave_one_liners = true nl_func_leave_one_liners = true nl_cpp_lambda_leave_one_liners = false nl_if_leave_one_liners = false nl_while_leave_one_liners = false nl_oc_msg_leave_one_liner = false -nl_oc_block_brace = ignore +nl_oc_block_brace = remove +nl_oc_interface_brace = force +nl_oc_implementation_brace = force nl_start_of_file = remove nl_start_of_file_min = 0 nl_end_of_file = force nl_end_of_file_min = 1 nl_assign_brace = remove nl_assign_square = ignore +nl_tsquare_brace = ignore nl_after_square_assign = ignore nl_func_var_def_blk = 1 nl_typedef_blk_start = 0 @@ -324,8 +348,9 @@ nl_getset_brace = force nl_for_brace = remove nl_catch_brace = remove nl_brace_catch = force -nl_brace_square = ignore -nl_brace_fparen = ignore +nl_oc_catch_brace = remove +nl_brace_square = remove +nl_brace_fparen = remove nl_while_brace = remove nl_scope_brace = ignore nl_unittest_brace = ignore @@ -399,6 +424,7 @@ nl_after_vbrace_close = false nl_brace_struct_var = force nl_define_macro = false nl_squeeze_ifdef = true +nl_squeeze_paren_close = false nl_squeeze_ifdef_top_level = false nl_before_if = ignore nl_after_if = ignore @@ -419,8 +445,10 @@ nl_before_func_class_proto = 0 nl_class_colon = remove nl_constr_colon = ignore nl_create_if_one_liner = true +nl_namespace_two_to_one_liner = false nl_create_for_one_liner = false nl_create_while_one_liner = false +nl_create_func_def_one_liner = false nl_split_if_one_liner = false nl_split_for_one_liner = false nl_split_while_one_liner = false @@ -606,6 +634,7 @@ include_category_1 = "" include_category_2 = "" use_indent_func_call_param = true use_indent_continue_only_once = false +indent_cpp_lambda_only_once = false use_options_overriding_for_qt_macros = true warn_level_tabs_found_in_verbatim_string_literals = 2 # option(s) with 'not default' value: 278 From 701c9522e58be2a1907c2951087526d96ec6c1ce Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Tue, 22 May 2018 20:23:18 -0400 Subject: [PATCH 055/160] Fixed iOS and TVOS build scripts for Xcode 9.3. --- .../xcshareddata/IDEWorkspaceChecks.plist | 8 ++++++++ framework/CorePlot.xcodeproj/project.pbxproj | 8 +++----- .../xcshareddata/IDEWorkspaceChecks.plist | 8 ++++++++ .../xcshareddata/WorkspaceSettings.xcsettings | 5 +---- 4 files changed, 20 insertions(+), 9 deletions(-) create mode 100644 examples/CorePlotExamples.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 framework/CorePlot.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/examples/CorePlotExamples.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/examples/CorePlotExamples.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/examples/CorePlotExamples.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/framework/CorePlot.xcodeproj/project.pbxproj b/framework/CorePlot.xcodeproj/project.pbxproj index 6ffb03ac4..604bd0458 100644 --- a/framework/CorePlot.xcodeproj/project.pbxproj +++ b/framework/CorePlot.xcodeproj/project.pbxproj @@ -2585,7 +2585,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\nUFW_TARGET=\"CorePlot tvOS\"\nUFW_BUILD_DIR=\"${BUILD_DIR}\"\n\nif [ -z ${SDK_NAME} ]; then\n# Use the latest tvOS SDK available\nUFW_GREP_RESULT=$(xcodebuild -showsdks | grep -o \"appletvos.*$\")\nwhile read -r line; do\nUFW_SDK_VERSION=\"${line}\"\ndone <<< \"${UFW_GREP_RESULT}\"\nelse\n# Use the SDK specified by XCode\nUFW_SDK_VERSION=\"${SDK_NAME}\"\nfi\n\nFRAMEWORK_NAME=\"${PROJECT_NAME}\"\nUFW_SDK_VERSION=$(echo \"${UFW_SDK_VERSION}\" | grep -o \"[0-9].*$\")\nUFW_IPHONE_PATH=\"${UFW_BUILD_DIR}/Release-appletvos/${FRAMEWORK_NAME}.framework\"\nUFW_SIMULATOR_PATH=\"${UFW_BUILD_DIR}/Release-appletvsimulator/${FRAMEWORK_NAME}.framework\"\nUFW_UNIVERSAL_DIR=\"${UFW_BUILD_DIR}/Release-appletvuniversal\"\nUFW_FRAMEWORK=\"${UFW_UNIVERSAL_DIR}/${FRAMEWORK_NAME}.framework\"\n\n# Build Framework\n\nrm -rf \"${UFW_UNIVERSAL_DIR}\"\n\nxcodebuild -target \"${UFW_TARGET}\" -project CorePlot.xcodeproj -configuration Release -sdk appletvos${UFW_SDK_VERSION} clean build\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: xcodebuild failed\"; exit 1; fi\nxcodebuild -target \"${UFW_TARGET}\" -project CorePlot.xcodeproj -configuration Release -sdk appletvsimulator${UFW_SDK_VERSION} clean build\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: xcodebuild failed\"; exit 1; fi\n\nmkdir -p \"${UFW_UNIVERSAL_DIR}\"\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: mkdir failed\"; exit 1; fi\n\ncp -r \"${UFW_IPHONE_PATH}/.\" \"${UFW_FRAMEWORK}\"\n\nlipo -create -output \"${UFW_FRAMEWORK}/${FRAMEWORK_NAME}\" \"${UFW_SIMULATOR_PATH}/${FRAMEWORK_NAME}\" \"${UFW_IPHONE_PATH}/${FRAMEWORK_NAME}\"\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: lipo failed\"; exit 1; fi\n"; + shellScript = "\nUFW_TARGET=\"CorePlot tvOS\"\nUFW_BUILD_DIR=\"${PROJECT_DIR}/../build\"\n\nif [ -z ${SDK_NAME} ]; then\n# Use the latest tvOS SDK available\nUFW_GREP_RESULT=$(xcodebuild -showsdks | grep -o \"appletvos.*$\")\nwhile read -r line; do\nUFW_SDK_VERSION=\"${line}\"\ndone <<< \"${UFW_GREP_RESULT}\"\nelse\n# Use the SDK specified by XCode\nUFW_SDK_VERSION=\"${SDK_NAME}\"\nfi\n\nFRAMEWORK_NAME=\"${PROJECT_NAME}\"\nUFW_SDK_VERSION=$(echo \"${UFW_SDK_VERSION}\" | grep -o \"[0-9].*$\")\nUFW_IPHONE_PATH=\"${UFW_BUILD_DIR}/Release-appletvos/${FRAMEWORK_NAME}.framework\"\nUFW_SIMULATOR_PATH=\"${UFW_BUILD_DIR}/Release-appletvsimulator/${FRAMEWORK_NAME}.framework\"\nUFW_UNIVERSAL_DIR=\"${UFW_BUILD_DIR}/Release-appletvuniversal\"\nUFW_FRAMEWORK=\"${UFW_UNIVERSAL_DIR}/${FRAMEWORK_NAME}.framework\"\n\n# Build Framework\n\nrm -rf \"${UFW_UNIVERSAL_DIR}\"\n\nxcodebuild -target \"${UFW_TARGET}\" -project CorePlot.xcodeproj -configuration Release -sdk appletvos${UFW_SDK_VERSION} clean build\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: xcodebuild failed\"; exit 1; fi\nxcodebuild -target \"${UFW_TARGET}\" -project CorePlot.xcodeproj -configuration Release -sdk appletvsimulator${UFW_SDK_VERSION} clean build\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: xcodebuild failed\"; exit 1; fi\n\nmkdir -p \"${UFW_UNIVERSAL_DIR}\"\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: mkdir failed\"; exit 1; fi\n\ncp -r \"${UFW_IPHONE_PATH}/.\" \"${UFW_FRAMEWORK}\"\n\nlipo -create -output \"${UFW_FRAMEWORK}/${FRAMEWORK_NAME}\" \"${UFW_SIMULATOR_PATH}/${FRAMEWORK_NAME}\" \"${UFW_IPHONE_PATH}/${FRAMEWORK_NAME}\"\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: lipo failed\"; exit 1; fi\n"; }; C38A09921A4618B600D45436 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; @@ -2611,7 +2611,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\nUFW_TARGET=\"CorePlot-CocoaTouch\"\nUFW_BUILD_DIR=\"${BUILD_DIR}\"\n\nif [ -z ${SDK_NAME} ]; then\n# Use the latest iphoneos SDK available\nUFW_GREP_RESULT=$(xcodebuild -showsdks | grep -o \"iphoneos.*$\")\nwhile read -r line; do\nUFW_SDK_VERSION=\"${line}\"\ndone <<< \"${UFW_GREP_RESULT}\"\nelse\n# Use the SDK specified by XCode\nUFW_SDK_VERSION=\"${SDK_NAME}\"\nfi\n\nUFW_SDK_VERSION=$(echo \"${UFW_SDK_VERSION}\" | grep -o \"[0-9].*$\")\nUFW_IPHONE_DIR=\"${UFW_BUILD_DIR}/Release-iphoneos\"\nUFW_SIMULATOR_DIR=\"${UFW_BUILD_DIR}/Release-iphonesimulator\"\nUFW_UNIVERSAL_DIR=\"${UFW_BUILD_DIR}/Release-universal\"\nUFW_HEADER_DIR=\"${UFW_UNIVERSAL_DIR}/CorePlotHeaders\"\nUFW_EXE_PATH=\"libCorePlot-CocoaTouch.a\"\n\n# Build Framework\n\nrm -rf \"${UFW_UNIVERSAL_DIR}\"\n\nxcodebuild -target \"${UFW_TARGET}\" -project CorePlot.xcodeproj -configuration Release -sdk iphoneos${UFW_SDK_VERSION} clean build\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: xcodebuild failed\"; exit 1; fi\nxcodebuild -target \"${UFW_TARGET}\" -project CorePlot.xcodeproj -configuration Release -sdk iphonesimulator${UFW_SDK_VERSION} clean build\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: xcodebuild failed\"; exit 1; fi\n\nmkdir -p \"${UFW_UNIVERSAL_DIR}\"\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: mkdir failed\"; exit 1; fi\n\nlipo -create -output \"${UFW_UNIVERSAL_DIR}/${UFW_EXE_PATH}\" \"${UFW_IPHONE_DIR}/${UFW_EXE_PATH}\" \"${UFW_SIMULATOR_DIR}/${UFW_EXE_PATH}\"\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: lipo failed\"; exit 1; fi\n\n# copy header files\nmkdir -p \"${UFW_HEADER_DIR}\"\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: mkdir failed\"; exit 1; fi\n\ncp \"${SOURCE_ROOT}/CorePlot-CocoaTouch.h\" \"${UFW_HEADER_DIR}\"\ncp \"${SOURCE_ROOT}/iPhoneOnly/\"[!_]*.h \"${UFW_HEADER_DIR}/\"\ncp \"${SOURCE_ROOT}/Source/\"[!_]*.h \"${UFW_HEADER_DIR}/\"\n\nrm \"${UFW_HEADER_DIR}/\"*Tests.*"; + shellScript = "\nUFW_TARGET=\"CorePlot-CocoaTouch\"\nUFW_BUILD_DIR=\"${PROJECT_DIR}/../build\"\n\nif [ -z ${SDK_NAME} ]; then\n# Use the latest iphoneos SDK available\nUFW_GREP_RESULT=$(xcodebuild -showsdks | grep -o \"iphoneos.*$\")\nwhile read -r line; do\nUFW_SDK_VERSION=\"${line}\"\ndone <<< \"${UFW_GREP_RESULT}\"\nelse\n# Use the SDK specified by XCode\nUFW_SDK_VERSION=\"${SDK_NAME}\"\nfi\n\nUFW_SDK_VERSION=$(echo \"${UFW_SDK_VERSION}\" | grep -o \"[0-9].*$\")\nUFW_IPHONE_DIR=\"${UFW_BUILD_DIR}/Release-iphoneos\"\nUFW_SIMULATOR_DIR=\"${UFW_BUILD_DIR}/Release-iphonesimulator\"\nUFW_UNIVERSAL_DIR=\"${UFW_BUILD_DIR}/Release-universal\"\nUFW_HEADER_DIR=\"${UFW_UNIVERSAL_DIR}/CorePlotHeaders\"\nUFW_EXE_PATH=\"libCorePlot-CocoaTouch.a\"\n\n# Build Framework\n\nrm -rf \"${UFW_UNIVERSAL_DIR}\"\n\nxcodebuild -target \"${UFW_TARGET}\" -project CorePlot.xcodeproj -configuration Release -sdk iphoneos${UFW_SDK_VERSION} clean build\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: xcodebuild failed\"; exit 1; fi\nxcodebuild -target \"${UFW_TARGET}\" -project CorePlot.xcodeproj -configuration Release -sdk iphonesimulator${UFW_SDK_VERSION} clean build\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: xcodebuild failed\"; exit 1; fi\n\nmkdir -p \"${UFW_UNIVERSAL_DIR}\"\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: mkdir failed\"; exit 1; fi\n\nlipo -create -output \"${UFW_UNIVERSAL_DIR}/${UFW_EXE_PATH}\" \"${UFW_IPHONE_DIR}/${UFW_EXE_PATH}\" \"${UFW_SIMULATOR_DIR}/${UFW_EXE_PATH}\"\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: lipo failed\"; exit 1; fi\n\n# copy header files\nmkdir -p \"${UFW_HEADER_DIR}\"\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: mkdir failed\"; exit 1; fi\n\ncp \"${SOURCE_ROOT}/CorePlot-CocoaTouch.h\" \"${UFW_HEADER_DIR}\"\ncp \"${SOURCE_ROOT}/iPhoneOnly/\"[!_]*.h \"${UFW_HEADER_DIR}/\"\ncp \"${SOURCE_ROOT}/Source/\"[!_]*.h \"${UFW_HEADER_DIR}/\"\n\nrm \"${UFW_HEADER_DIR}/\"*Tests.*"; }; C3A546801BC1A817005C1BBC /* ShellScript */ = { isa = PBXShellScriptBuildPhase; @@ -2624,7 +2624,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\nUFW_TARGET=\"CorePlot iOS\"\nUFW_BUILD_DIR=\"${BUILD_DIR}\"\n\nif [ -z ${SDK_NAME} ]; then\n# Use the latest iphoneos SDK available\nUFW_GREP_RESULT=$(xcodebuild -showsdks | grep -o \"iphoneos.*$\")\nwhile read -r line; do\nUFW_SDK_VERSION=\"${line}\"\ndone <<< \"${UFW_GREP_RESULT}\"\nelse\n# Use the SDK specified by XCode\nUFW_SDK_VERSION=\"${SDK_NAME}\"\nfi\n\nFRAMEWORK_NAME=\"${PROJECT_NAME}\"\nUFW_SDK_VERSION=$(echo \"${UFW_SDK_VERSION}\" | grep -o \"[0-9].*$\")\nUFW_IPHONE_PATH=\"${UFW_BUILD_DIR}/Release-iphoneos/${FRAMEWORK_NAME}.framework\"\nUFW_SIMULATOR_PATH=\"${UFW_BUILD_DIR}/Release-iphonesimulator/${FRAMEWORK_NAME}.framework\"\nUFW_UNIVERSAL_DIR=\"${UFW_BUILD_DIR}/Release-iphoneuniversal\"\nUFW_FRAMEWORK=\"${UFW_UNIVERSAL_DIR}/${FRAMEWORK_NAME}.framework\"\n\n# Build Framework\n\nrm -rf \"${UFW_UNIVERSAL_DIR}\"\n\nxcodebuild -target \"${UFW_TARGET}\" -project CorePlot.xcodeproj -configuration Release -sdk iphoneos${UFW_SDK_VERSION} clean build\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: xcodebuild failed\"; exit 1; fi\nxcodebuild -target \"${UFW_TARGET}\" -project CorePlot.xcodeproj -configuration Release -sdk iphonesimulator${UFW_SDK_VERSION} clean build\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: xcodebuild failed\"; exit 1; fi\n\nmkdir -p \"${UFW_UNIVERSAL_DIR}\"\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: mkdir failed\"; exit 1; fi\n\ncp -r \"${UFW_IPHONE_PATH}/.\" \"${UFW_FRAMEWORK}\"\n\nlipo -create -output \"${UFW_FRAMEWORK}/${FRAMEWORK_NAME}\" \"${UFW_SIMULATOR_PATH}/${FRAMEWORK_NAME}\" \"${UFW_IPHONE_PATH}/${FRAMEWORK_NAME}\"\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: lipo failed\"; exit 1; fi\n"; + shellScript = "\nUFW_TARGET=\"CorePlot iOS\"\nUFW_BUILD_DIR=\"${PROJECT_DIR}/../build\"\n\nif [ -z ${SDK_NAME} ]; then\n# Use the latest iphoneos SDK available\nUFW_GREP_RESULT=$(xcodebuild -showsdks | grep -o \"iphoneos.*$\")\nwhile read -r line; do\nUFW_SDK_VERSION=\"${line}\"\ndone <<< \"${UFW_GREP_RESULT}\"\nelse\n# Use the SDK specified by XCode\nUFW_SDK_VERSION=\"${SDK_NAME}\"\nfi\n\nFRAMEWORK_NAME=\"${PROJECT_NAME}\"\nUFW_SDK_VERSION=$(echo \"${UFW_SDK_VERSION}\" | grep -o \"[0-9].*$\")\nUFW_IPHONE_PATH=\"${UFW_BUILD_DIR}/Release-iphoneos/${FRAMEWORK_NAME}.framework\"\nUFW_SIMULATOR_PATH=\"${UFW_BUILD_DIR}/Release-iphonesimulator/${FRAMEWORK_NAME}.framework\"\nUFW_UNIVERSAL_DIR=\"${UFW_BUILD_DIR}/Release-iphoneuniversal\"\nUFW_FRAMEWORK=\"${UFW_UNIVERSAL_DIR}/${FRAMEWORK_NAME}.framework\"\n\n# Build Framework\n\nrm -rf \"${UFW_UNIVERSAL_DIR}\"\n\nxcodebuild -target \"${UFW_TARGET}\" -project CorePlot.xcodeproj -configuration Release -sdk iphoneos${UFW_SDK_VERSION} clean build\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: xcodebuild failed\"; exit 1; fi\nxcodebuild -target \"${UFW_TARGET}\" -project CorePlot.xcodeproj -configuration Release -sdk iphonesimulator${UFW_SDK_VERSION} clean build\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: xcodebuild failed\"; exit 1; fi\n\nmkdir -p \"${UFW_UNIVERSAL_DIR}\"\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: mkdir failed\"; exit 1; fi\n\ncp -r \"${UFW_IPHONE_PATH}/.\" \"${UFW_FRAMEWORK}\"\n\nlipo -create -output \"${UFW_FRAMEWORK}/${FRAMEWORK_NAME}\" \"${UFW_SIMULATOR_PATH}/${FRAMEWORK_NAME}\" \"${UFW_IPHONE_PATH}/${FRAMEWORK_NAME}\"\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: lipo failed\"; exit 1; fi\n"; }; /* End PBXShellScriptBuildPhase section */ @@ -3294,7 +3294,6 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; ONLY_ACTIVE_ARCH = YES; - SYMROOT = "$(PROJECT_DIR)/../build"; TVOS_DEPLOYMENT_TARGET = 9.0; }; name = Debug; @@ -3328,7 +3327,6 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - SYMROOT = "$(PROJECT_DIR)/../build"; TVOS_DEPLOYMENT_TARGET = 9.0; }; name = Release; diff --git a/framework/CorePlot.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/framework/CorePlot.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/framework/CorePlot.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/framework/CorePlot.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/framework/CorePlot.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings index 3ddf867a1..0c67376eb 100644 --- a/framework/CorePlot.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ b/framework/CorePlot.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -1,8 +1,5 @@ - - BuildSystemType - Latest - + From 74a74ac0903a30bcefff21ad8eeccce7da9fbc6d Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Tue, 22 May 2018 20:53:51 -0400 Subject: [PATCH 056/160] Removed docset generation. Docsets are no longer supported under Xcode 9.3. Fixed issue #378. --- framework/CorePlot.xcodeproj/project.pbxproj | 4 ++-- scripts/createrelease.py | 4 ---- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/framework/CorePlot.xcodeproj/project.pbxproj b/framework/CorePlot.xcodeproj/project.pbxproj index 604bd0458..b6fb21bb3 100644 --- a/framework/CorePlot.xcodeproj/project.pbxproj +++ b/framework/CorePlot.xcodeproj/project.pbxproj @@ -2572,7 +2572,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "# Build the doxygen documentation for the project and load the docset into Xcode.\n\n# Use the following to adjust the value of the $DOXYGEN_PATH User-Defined Setting:\n# Binary install location: /Applications/Doxygen.app/Contents/Resources/doxygen\n# Source build install location: /usr/local/bin/doxygen\n\n# Graphical class diagrams require Graphviz.\n# Graphviz.app is available free online\n# http://www.graphviz.org/Download_macos.php\n\n# If the config file doesn't exist, run 'doxygen -g \"${SOURCE_ROOT}/../documentation/doxygen/doxygen.config\"' to \n# a get default file.\n\nDOXYGEN_FOLDER=\"${SOURCE_ROOT}/../documentation/doxygen\"\n\nif ! [ -f \"${DOXYGEN_FOLDER}/doxygen.config\" ] \nthen \n echo doxygen config file does not exist\n ${DOXYGEN_PATH} -g \"${DOXYGEN_FOLDER}/doxygen.config\"\nfi\n\n# Run doxygen on the updated config file.\n# Note: doxygen creates a Makefile that does most of the heavy lifting.\n${DOXYGEN_PATH} \"${DOXYGEN_FOLDER}/doxygen.config\"\n\n# make a copy of the html docs\nDOCS_FOLDER=\"${SOURCE_ROOT}/../documentation/html/MacOS\"\nmkdir -p \"${DOCS_FOLDER}\"\ncp -R \"${SOURCE_ROOT}/CorePlotDocs.docset/html/\" \"${DOCS_FOLDER}\"\nrm -f \"${DOCS_FOLDER}/Info.plist\"\nrm -f \"${DOCS_FOLDER}/Makefile\"\nrm -f \"${DOCS_FOLDER}/Nodes.xml\"\nrm -f \"${DOCS_FOLDER}/Tokens.xml\"\n\n# fix nodes.xml so the docset gets the correct index page\nsed -i 's|index.html|index.html' \"${SOURCE_ROOT}/CorePlotDocs.docset/html/nodes.xml\"\n\n# make will invoke docsetutil. Take a look at the Makefile to see how this is done.\nmake -C \"${SOURCE_ROOT}/CorePlotDocs.docset/html\" install\n\n# add publisher info to the docset\nDOCSET_FOLDER=\"/Users/${USER}/Library/Developer/Shared/Documentation/DocSets/com.CorePlot.Framework.docset\"\n\nfind \"${DOCSET_FOLDER}/Contents/\" -type f -name Info.plist | xargs perl -pi -e 's/\\<\\/dict\\>/\\t\\DocSetPublisherIdentifier\\<\\/key\\>\\n\\t\\com.CorePlot.documentation\\<\\/string\\>\\n\\t\\DocSetPublisherName\\<\\/key\\>\\n\\t\\Core Plot\\<\\/string\\>\\n\\t\\NSHumanReadableCopyright\\<\\/key\\>\\n\\t\\Copyright © 2013 Core Plot. All rights reserved.\\<\\/string\\>\\n\\t\\isJavaScriptEnabled\\<\\/key\\>\\n\\t\\\\n\\<\\/dict\\>\\n/g'\n\n# add docset icon\ncp \"${DOXYGEN_FOLDER}/icon.png\" \"${DOCSET_FOLDER}\"\n\n# make a copy of the docset\nrm -Rf \"${SOURCE_ROOT}/CorePlotDocs.docset\"\ncp -R \"${DOCSET_FOLDER}\" \"${SOURCE_ROOT}\"\n\nexit 0"; + shellScript = "# Build the doxygen documentation for the project and load the docset into Xcode.\n\n# Use the following to adjust the value of the $DOXYGEN_PATH User-Defined Setting:\n# Binary install location: /Applications/Doxygen.app/Contents/Resources/doxygen\n# Source build install location: /usr/local/bin/doxygen\n\n# Graphical class diagrams require Graphviz.\n# Graphviz.app is available free online\n# http://www.graphviz.org/Download_macos.php\n\n# If the config file doesn't exist, run 'doxygen -g \"${SOURCE_ROOT}/../documentation/doxygen/doxygen.config\"' to \n# a get default file.\n\nDOXYGEN_FOLDER=\"${SOURCE_ROOT}/../documentation/doxygen\"\n\nif ! [ -f \"${DOXYGEN_FOLDER}/doxygen.config\" ] \nthen \n echo doxygen config file does not exist\n ${DOXYGEN_PATH} -g \"${DOXYGEN_FOLDER}/doxygen.config\"\nfi\n\n# Run doxygen on the updated config file.\n# Note: doxygen creates a Makefile that does most of the heavy lifting.\n${DOXYGEN_PATH} \"${DOXYGEN_FOLDER}/doxygen.config\"\n\n# make a copy of the html docs\nDOCS_FOLDER=\"${SOURCE_ROOT}/../documentation/html/MacOS\"\nmkdir -p \"${DOCS_FOLDER}\"\ncp -R \"${SOURCE_ROOT}/CorePlotDocs.docset/html/\" \"${DOCS_FOLDER}\"\nrm -Rf \"${SOURCE_ROOT}/CorePlotDocs.docset\"\nrm -f \"${DOCS_FOLDER}/Info.plist\"\nrm -f \"${DOCS_FOLDER}/Makefile\"\nrm -f \"${DOCS_FOLDER}/Nodes.xml\"\nrm -f \"${DOCS_FOLDER}/Tokens.xml\"\n\nexit 0"; }; C37EA5C51BC83E900091C8F7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; @@ -2598,7 +2598,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "# Build the doxygen documentation for the project and load the docset into Xcode.\n\n# Use the following to adjust the value of the $DOXYGEN_PATH User-Defined Setting:\n# Binary install location: /Applications/Doxygen.app/Contents/Resources/doxygen\n# Source build install location: /usr/local/bin/doxygen\n\n# Graphical class diagrams require Graphviz.\n# Graphviz.app is available free online\n# http://www.graphviz.org/Download_macos.php\n\n# If the config file doesn't exist, run 'doxygen -g \"${SOURCE_ROOT}/../documentation/doxygen/doxygen touch.config\"' to\n# a get default file.\n\nDOXYGEN_FOLDER=\"${SOURCE_ROOT}/../documentation/doxygen\"\n\nif ! [ -f \"${DOXYGEN_FOLDER}/doxygen.config\" ]\nthen\necho doxygen config file does not exist\n${DOXYGEN_PATH} -g \"${DOXYGEN_FOLDER}/doxygen.config\"\nfi\n\n# Run doxygen on the updated config file.\n# Note: doxygen creates a Makefile that does most of the heavy lifting.\n${DOXYGEN_PATH} \"${SOURCE_ROOT}/../documentation/doxygen/doxygen touch.config\"\n\n# make a copy of the html docs\nDOCS_FOLDER=\"${SOURCE_ROOT}/../documentation/html/iOS\"\nmkdir -p \"${DOCS_FOLDER}\"\ncp -R \"${SOURCE_ROOT}/CorePlotTouchDocs.docset/html/\" \"${DOCS_FOLDER}\"\nrm -f \"${DOCS_FOLDER}/Info.plist\"\nrm -f \"${DOCS_FOLDER}/Makefile\"\nrm -f \"${DOCS_FOLDER}/Nodes.xml\"\nrm -f \"${DOCS_FOLDER}/Tokens.xml\"\n\n# fix nodes.xml so the docset gets the correct index page\nsed -i 's|index.html|index.html' \"${SOURCE_ROOT}/CorePlotTouchDocs.docset/html/nodes.xml\"\n\n# make will invoke docsetutil. Take a look at the Makefile to see how this is done.\nmake -C \"${SOURCE_ROOT}/CorePlotTouchDocs.docset/html\" install\n\n# add publisher info to the docset\nDOCSET_FOLDER=\"/Users/${USER}/Library/Developer/Shared/Documentation/DocSets/com.CorePlotTouch.Framework.docset\"\n\nfind \"${DOCSET_FOLDER}/Contents/\" -type f -name Info.plist | xargs perl -pi -e 's/\\<\\/dict\\>/\\t\\DocSetPublisherIdentifier\\<\\/key\\>\\n\\t\\com.CorePlot.documentation\\<\\/string\\>\\n\\t\\DocSetPublisherName\\<\\/key\\>\\n\\t\\Core Plot\\<\\/string\\>\\n\\t\\NSHumanReadableCopyright\\<\\/key\\>\\n\\t\\Copyright © 2013 Core Plot. All rights reserved.\\<\\/string\\>\\n\\t\\isJavaScriptEnabled\\<\\/key\\>\\n\\t\\\\n\\<\\/dict\\>\\n/g'\n\n# add docset icon\ncp \"${DOXYGEN_FOLDER}/icon.png\" \"${DOCSET_FOLDER}\"\n\n# make a copy of the docset\nrm -Rf \"${SOURCE_ROOT}/CorePlotTouchDocs.docset\"\ncp -R \"${DOCSET_FOLDER}\" \"${SOURCE_ROOT}\"\n\nexit 0"; + shellScript = "# Build the doxygen documentation for the project and load the docset into Xcode.\n\n# Use the following to adjust the value of the $DOXYGEN_PATH User-Defined Setting:\n# Binary install location: /Applications/Doxygen.app/Contents/Resources/doxygen\n# Source build install location: /usr/local/bin/doxygen\n\n# Graphical class diagrams require Graphviz.\n# Graphviz.app is available free online\n# http://www.graphviz.org/Download_macos.php\n\n# If the config file doesn't exist, run 'doxygen -g \"${SOURCE_ROOT}/../documentation/doxygen/doxygen touch.config\"' to\n# a get default file.\n\nDOXYGEN_FOLDER=\"${SOURCE_ROOT}/../documentation/doxygen\"\n\nif ! [ -f \"${DOXYGEN_FOLDER}/doxygen.config\" ]\nthen\necho doxygen config file does not exist\n${DOXYGEN_PATH} -g \"${DOXYGEN_FOLDER}/doxygen.config\"\nfi\n\n# Run doxygen on the updated config file.\n# Note: doxygen creates a Makefile that does most of the heavy lifting.\n${DOXYGEN_PATH} \"${SOURCE_ROOT}/../documentation/doxygen/doxygen touch.config\"\n\n# make a copy of the html docs\nDOCS_FOLDER=\"${SOURCE_ROOT}/../documentation/html/iOS\"\nmkdir -p \"${DOCS_FOLDER}\"\ncp -R \"${SOURCE_ROOT}/CorePlotTouchDocs.docset/html/\" \"${DOCS_FOLDER}\"\nrm -Rf \"${SOURCE_ROOT}/CorePlotTouchDocs.docset\"\nrm -f \"${DOCS_FOLDER}/Info.plist\"\nrm -f \"${DOCS_FOLDER}/Makefile\"\nrm -f \"${DOCS_FOLDER}/Nodes.xml\"\nrm -f \"${DOCS_FOLDER}/Tokens.xml\"\n\nexit 0"; }; C38A09971A46193F00D45436 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; diff --git a/scripts/createrelease.py b/scripts/createrelease.py index 7a1e13076..9375881c2 100644 --- a/scripts/createrelease.py +++ b/scripts/createrelease.py @@ -96,7 +96,3 @@ def RunXcode(project, target): # Copy Docs docDir = join(releaseRootDir, 'Documentation') copytree(join(projectRoot, 'documentation'), docDir, ignore=ignore_patterns('*.orig','*.git')) -homeDir = environ['HOME'] -docsetsDir = join(homeDir, 'Library/Developer/Shared/Documentation/DocSets') -copytree(join(docsetsDir, 'com.CorePlot.Framework.docset'), join(docDir, 'com.CorePlot.Framework.docset')) -copytree(join(docsetsDir, 'com.CorePlotTouch.Framework.docset'), join(docDir, 'com.CorePlotTouch.Framework.docset')) From 026f473679c1285951cb9d2cd65efabc4a18389b Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Tue, 22 May 2018 20:56:37 -0400 Subject: [PATCH 057/160] Standardized code formatting. --- .../src/plots/CurvedInterpolationDemo.m | 2 +- .../CorePlotGallery/src/shared/PlotGallery.m | 9 +++------ framework/Source/CPTFunctionDataSource.h | 18 +++++++++++------- framework/Source/CPTTheme.m | 3 +-- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/examples/CorePlotGallery/src/plots/CurvedInterpolationDemo.m b/examples/CorePlotGallery/src/plots/CurvedInterpolationDemo.m index 7e4382936..a29e268cc 100644 --- a/examples/CorePlotGallery/src/plots/CurvedInterpolationDemo.m +++ b/examples/CorePlotGallery/src/plots/CurvedInterpolationDemo.m @@ -152,7 +152,7 @@ -(void)renderInGraphHostingView:(CPTGraphHostingView *)hostingView withTheme:(CP // Set axes graph.axisSet.axes = @[x, y]; - // Create the plots +// Create the plots // Bezier CPTScatterPlot *bezierPlot = [[CPTScatterPlot alloc] initWithFrame:CGRectZero]; bezierPlot.identifier = bezierCurveIdentifier; diff --git a/examples/CorePlotGallery/src/shared/PlotGallery.m b/examples/CorePlotGallery/src/shared/PlotGallery.m index a4703a9f6..9350057ca 100644 --- a/examples/CorePlotGallery/src/shared/PlotGallery.m +++ b/examples/CorePlotGallery/src/shared/PlotGallery.m @@ -21,8 +21,7 @@ @implementation PlotGallery +(nonnull PlotGallery *)sharedPlotGallery { - @synchronized ( self ) - { + @synchronized ( self ) { if ( sharedPlotGallery == nil ) { sharedPlotGallery = [[self alloc] init]; } @@ -32,8 +31,7 @@ +(nonnull PlotGallery *)sharedPlotGallery +(id)allocWithZone:(NSZone *)zone { - @synchronized ( self ) - { + @synchronized ( self ) { if ( sharedPlotGallery == nil ) { return [super allocWithZone:zone]; } @@ -45,8 +43,7 @@ -(nonnull instancetype)init { Class thisClass = [self class]; - @synchronized ( thisClass ) - { + @synchronized ( thisClass ) { if ( sharedPlotGallery == nil ) { if ( (self = [super init]) ) { sharedPlotGallery = self; diff --git a/framework/Source/CPTFunctionDataSource.h b/framework/Source/CPTFunctionDataSource.h index fd5fd9f06..852ea168f 100644 --- a/framework/Source/CPTFunctionDataSource.h +++ b/framework/Source/CPTFunctionDataSource.h @@ -23,16 +23,20 @@ typedef double (^CPTDataSourceBlock)(double); @property (nonatomic, readwrite) CGFloat resolution; @property (nonatomic, readwrite, strong, nullable) CPTPlotRange *dataRange; - /// @name Factory Methods - /// @{ /// @{ -+(nonnull instancetype)dataSourceForPlot:(nonnull CPTPlot *)plot withFunction:(nonnull CPTDataSourceFunction)function NS_SWIFT_NAME(init(for:withFunction:)); -+(nonnull instancetype)dataSourceForPlot:(nonnull CPTPlot *)plot withBlock:(nonnull CPTDataSourceBlock)block NS_SWIFT_NAME(init(for:withBlock:)); +/// @name Factory Methods +/// @{ /// @{ ++(nonnull instancetype)dataSourceForPlot:(nonnull CPTPlot *)plot withFunction:(nonnull CPTDataSourceFunction) function NS_SWIFT_NAME(init(for:withFunction:) ); + ++(nonnull instancetype)dataSourceForPlot:(nonnull CPTPlot *)plot withBlock:(nonnull CPTDataSourceBlock) block NS_SWIFT_NAME(init(for:withBlock:) ); + /// @} - + /// @name Initialization /// @{ --(nonnull instancetype)initForPlot:(nonnull CPTPlot *)plot withFunction:(nonnull CPTDataSourceFunction)function NS_SWIFT_NAME(init(forPlot:withFunction:)); --(nonnull instancetype)initForPlot:(nonnull CPTPlot *)plot withBlock:(nonnull CPTDataSourceBlock)block NS_SWIFT_NAME(init(forPlot:withBlock:)); +-(nonnull instancetype)initForPlot:(nonnull CPTPlot *)plot withFunction:(nonnull CPTDataSourceFunction) function NS_SWIFT_NAME(init(forPlot:withFunction:) ); + +-(nonnull instancetype)initForPlot:(nonnull CPTPlot *)plot withBlock:(nonnull CPTDataSourceBlock) block NS_SWIFT_NAME(init(forPlot:withBlock:) ); + /// @} @end diff --git a/framework/Source/CPTTheme.m b/framework/Source/CPTTheme.m index cffdb6f2b..0fc513f8e 100644 --- a/framework/Source/CPTTheme.m +++ b/framework/Source/CPTTheme.m @@ -131,8 +131,7 @@ +(void)registerTheme:(nonnull Class)themeClass { NSParameterAssert(themeClass); - @synchronized ( self ) - { + @synchronized ( self ) { if ( !themes ) { themes = [[NSMutableSet alloc] init]; } From 1f14f11f840f598d687cb796589084574716faf3 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Tue, 22 May 2018 20:59:31 -0400 Subject: [PATCH 058/160] Fixed documentation typo. --- framework/Source/CPTFunctionDataSource.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/Source/CPTFunctionDataSource.h b/framework/Source/CPTFunctionDataSource.h index 852ea168f..8a38b30fa 100644 --- a/framework/Source/CPTFunctionDataSource.h +++ b/framework/Source/CPTFunctionDataSource.h @@ -24,7 +24,7 @@ typedef double (^CPTDataSourceBlock)(double); @property (nonatomic, readwrite, strong, nullable) CPTPlotRange *dataRange; /// @name Factory Methods -/// @{ /// @{ +/// @{ +(nonnull instancetype)dataSourceForPlot:(nonnull CPTPlot *)plot withFunction:(nonnull CPTDataSourceFunction) function NS_SWIFT_NAME(init(for:withFunction:) ); +(nonnull instancetype)dataSourceForPlot:(nonnull CPTPlot *)plot withBlock:(nonnull CPTDataSourceBlock) block NS_SWIFT_NAME(init(for:withBlock:) ); From 66f836d90cdfaf56c4f0f4172980c5b51bbe5230 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 24 Jun 2018 13:44:35 -0400 Subject: [PATCH 059/160] Disabled the -Wobj-messaging-id warning for Xcode 10. Fixed issue #384. --- framework/xcconfig/CorePlotWarnings.xcconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/xcconfig/CorePlotWarnings.xcconfig b/framework/xcconfig/CorePlotWarnings.xcconfig index 35923df98..de1eb10af 100644 --- a/framework/xcconfig/CorePlotWarnings.xcconfig +++ b/framework/xcconfig/CorePlotWarnings.xcconfig @@ -81,4 +81,4 @@ CLANG_ANALYZER_SECURITY_INSECUREAPI_RAND = YES CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES CLANG_ANALYZER_SECURITY_INSECUREAPI_VFORK = YES -OTHER_CFLAGS = -Weverything -Wno-unused-parameter -Wno-undef -Wno-switch-enum -Wno-float-equal -Wno-padded -Wno-dollar-in-identifier-extension -Wno-custom-atomic-properties -Wno-gnu -Wno-assign-enum -Wno-pedantic -Wno-documentation -Wno-unknown-warning-option -Wno-cstring-format-directive -Wno-documentation-unknown-command -Wno-reserved-id-macro -Wno-incompatible-pointer-types-discards-qualifiers -Wno-partial-availability +OTHER_CFLAGS = -Weverything -Wno-unused-parameter -Wno-undef -Wno-switch-enum -Wno-float-equal -Wno-padded -Wno-dollar-in-identifier-extension -Wno-custom-atomic-properties -Wno-gnu -Wno-assign-enum -Wno-pedantic -Wno-documentation -Wno-unknown-warning-option -Wno-cstring-format-directive -Wno-documentation-unknown-command -Wno-reserved-id-macro -Wno-incompatible-pointer-types-discards-qualifiers -Wno-partial-availability -Wno-objc-messaging-id From 6f3ca9fbd030a4c65155dfef590478b039f6a731 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 24 Jun 2018 14:19:26 -0400 Subject: [PATCH 060/160] Fixed an Xcode 10 warning in the Simple Scatter Plot demo in the Plot Gallery example app. --- examples/CorePlotGallery/src/plots/SimpleScatterPlot.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/CorePlotGallery/src/plots/SimpleScatterPlot.m b/examples/CorePlotGallery/src/plots/SimpleScatterPlot.m index 78a7995ee..cb2d4999c 100644 --- a/examples/CorePlotGallery/src/plots/SimpleScatterPlot.m +++ b/examples/CorePlotGallery/src/plots/SimpleScatterPlot.m @@ -293,8 +293,8 @@ -(void)plotAreaWasSelected:(nonnull CPTPlotArea *)plotArea else { CPTScatterPlotInterpolation interpolation = CPTScatterPlotInterpolationHistogram; - // Decrease the histogram display option, and if < 0 display linear graph - if ( --self.histogramOption < 0 ) { + // Decrease the histogram display option, and if < CPTScatterPlotHistogramNormal display linear graph + if ( --self.histogramOption < CPTScatterPlotHistogramNormal ) { interpolation = CPTScatterPlotInterpolationLinear; // Set the histogram option to the count, as that is guaranteed to be the last available option + 1 From 32df2d832ad52e50d6a6d94c940649f8adedf2f7 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 24 Jun 2018 14:44:43 -0400 Subject: [PATCH 061/160] Added 1024x1024 iTunes art for the Plot Gallery example app. --- .../AppIcon.appiconset/iTunesArtwork.png | Bin 191272 -> 424596 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/examples/CorePlotGallery/Plot Gallery-iOS/Images.xcassets/AppIcon.appiconset/iTunesArtwork.png b/examples/CorePlotGallery/Plot Gallery-iOS/Images.xcassets/AppIcon.appiconset/iTunesArtwork.png index 1bde034e43c9ed26136e6b737453d188b13f65ac..228e5b86155e8d6df024479f5cee483aa5ce6b24 100644 GIT binary patch literal 424596 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≷uwpn%qWDt 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 {Xs|6J(Jf|Xql4pa{_!M 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

    >bX`t*EGjdcJtI}t0s!snPldIh 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´g_&;~EKQB$n5Olk9ZGFu8LvelO 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 YA$p7weq8J$39zZD{PV0#$vW(R0C&H<_y7O^ From 0d04bf6c61d8ac138cfa0a48a5b78caba4640b00 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 24 Jun 2018 16:26:37 -0400 Subject: [PATCH 062/160] Added missing launch image asset to the iOS Plot Gallery example app. --- .../Images.xcassets/Contents.json | 6 + .../LaunchImage.launchimage/Contents.json | 158 ++++++++++++++++++ 2 files changed, 164 insertions(+) create mode 100644 examples/CorePlotGallery/Plot Gallery-iOS/Images.xcassets/Contents.json create mode 100644 examples/CorePlotGallery/Plot Gallery-iOS/Images.xcassets/LaunchImage.launchimage/Contents.json diff --git a/examples/CorePlotGallery/Plot Gallery-iOS/Images.xcassets/Contents.json b/examples/CorePlotGallery/Plot Gallery-iOS/Images.xcassets/Contents.json new file mode 100644 index 000000000..da4a164c9 --- /dev/null +++ b/examples/CorePlotGallery/Plot Gallery-iOS/Images.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/examples/CorePlotGallery/Plot Gallery-iOS/Images.xcassets/LaunchImage.launchimage/Contents.json b/examples/CorePlotGallery/Plot Gallery-iOS/Images.xcassets/LaunchImage.launchimage/Contents.json new file mode 100644 index 000000000..6d2d4295e --- /dev/null +++ b/examples/CorePlotGallery/Plot Gallery-iOS/Images.xcassets/LaunchImage.launchimage/Contents.json @@ -0,0 +1,158 @@ +{ + "images" : [ + { + "orientation" : "portrait", + "idiom" : "iphone", + "extent" : "full-screen", + "minimum-system-version" : "11.0", + "subtype" : "2436h", + "scale" : "3x" + }, + { + "orientation" : "landscape", + "idiom" : "iphone", + "extent" : "full-screen", + "minimum-system-version" : "11.0", + "subtype" : "2436h", + "scale" : "3x" + }, + { + "orientation" : "portrait", + "idiom" : "iphone", + "extent" : "full-screen", + "minimum-system-version" : "8.0", + "subtype" : "736h", + "scale" : "3x" + }, + { + "orientation" : "landscape", + "idiom" : "iphone", + "extent" : "full-screen", + "minimum-system-version" : "8.0", + "subtype" : "736h", + "scale" : "3x" + }, + { + "orientation" : "portrait", + "idiom" : "iphone", + "extent" : "full-screen", + "minimum-system-version" : "8.0", + "subtype" : "667h", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "iphone", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "iphone", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "subtype" : "retina4", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "ipad", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "1x" + }, + { + "orientation" : "landscape", + "idiom" : "ipad", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "1x" + }, + { + "orientation" : "portrait", + "idiom" : "ipad", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "2x" + }, + { + "orientation" : "landscape", + "idiom" : "ipad", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "iphone", + "extent" : "full-screen", + "scale" : "1x" + }, + { + "orientation" : "portrait", + "idiom" : "iphone", + "extent" : "full-screen", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "iphone", + "extent" : "full-screen", + "subtype" : "retina4", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "ipad", + "extent" : "to-status-bar", + "scale" : "1x" + }, + { + "orientation" : "portrait", + "idiom" : "ipad", + "extent" : "full-screen", + "scale" : "1x" + }, + { + "orientation" : "landscape", + "idiom" : "ipad", + "extent" : "to-status-bar", + "scale" : "1x" + }, + { + "orientation" : "landscape", + "idiom" : "ipad", + "extent" : "full-screen", + "scale" : "1x" + }, + { + "orientation" : "portrait", + "idiom" : "ipad", + "extent" : "to-status-bar", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "ipad", + "extent" : "full-screen", + "scale" : "2x" + }, + { + "orientation" : "landscape", + "idiom" : "ipad", + "extent" : "to-status-bar", + "scale" : "2x" + }, + { + "orientation" : "landscape", + "idiom" : "ipad", + "extent" : "full-screen", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file From 09c5c594c82899d0a30de0b5216974b307fbb0cc Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 24 Jun 2018 16:27:21 -0400 Subject: [PATCH 063/160] Added base localization to all projects. --- QCPlugin/{ => Base.lproj}/Info.plist | 0 .../Settings.xib | 0 .../project.pbxproj | 21 ++- .../AAPLot/AAPLot.xcodeproj/project.pbxproj | 85 ++++++++--- .../AAPLot/{ => Base.lproj}/FlipsideView.xib | 0 examples/AAPLot/{ => Base.lproj}/Info.plist | 0 .../AAPLot/{ => Base.lproj}/Launch Screen.xib | 0 examples/AAPLot/{ => Base.lproj}/MainView.xib | 0 .../AAPLot/{ => Base.lproj}/MainWindow.xib | 0 .../CPTTestApp_iPad-Info.plist | 0 .../CPTTestApp_iPadViewController.xib | 0 .../{ => Base.lproj}/Launch Screen.xib | 16 +- .../{ => Base.lproj}/MainWindow.xib | 0 .../CPTTestApp-iPad.xcodeproj/project.pbxproj | 68 +++++++-- .../{ => Base.lproj}/BarChart.xib | 0 .../{ => Base.lproj}/Info.plist | 0 .../{ => Base.lproj}/Launch Screen.xib | 16 +- .../{ => Base.lproj}/MainWindow.xib | 0 .../{ => Base.lproj}/PieChart.xib | 0 .../{ => Base.lproj}/ScatterPlot.xib | 0 .../project.pbxproj | 101 +++++++++---- .../CPTTestApp/{ => Base.lproj}/Info.plist | 0 .../CPTTestApp.xcodeproj/project.pbxproj | 85 ++++++++--- .../Resources/{ => Base.lproj}/AxisDemo.xib | 0 .../Resources/{ => Base.lproj}/CPTTestApp.xib | 0 .../{ => Base.lproj}/PlotSymbolDemo.xib | 0 .../{ => Base.lproj}/SelectionDemo.xib | 0 .../Plot_Gallery_Mac-Info.plist | 0 .../Plot_Gallery_iOS-Info.plist | 0 .../Plot_Gallery_tvOS-Info.plist | 0 .../Plot_Gallery.xcodeproj/project.pbxproj | 125 ++++++++++++---- .../ios/{ => Base.lproj}/Launch Screen.xib | 23 +-- .../src/ios/{ => Base.lproj}/Main.storyboard | 63 ++++---- .../src/mac/{ => Base.lproj}/Icon.icns | Bin .../MainMenu.xib | 0 .../src/mac/en.lproj/MainMenu.strings | 129 +++++++++++++++++ .../src/tvOS/{ => Base.lproj}/Main.storyboard | 0 .../DatePlot/{ => Base.lproj}/DatePlot.xib | 0 examples/DatePlot/{ => Base.lproj}/Info.plist | 0 .../DatePlot.xcodeproj/project.pbxproj | 34 +++-- .../CPTPlotDocument.xib | 0 examples/DropPlot/{ => Base.lproj}/Info.plist | 0 .../MainMenu.xib | 0 .../DropPlot.xcodeproj/project.pbxproj | 25 +++- .../{ => Base.lproj}/Info.plist | 0 .../{ => Base.lproj}/minorTickFormatter.xib | 0 .../project.pbxproj | 33 ++++- .../RangePlot/{ => Base.lproj}/Info.plist | 0 .../RangePlot/{ => Base.lproj}/RangePlot.xib | 0 .../RangePlot.xcodeproj/project.pbxproj | 33 ++++- .../{ => Base.lproj}/Launch Screen.xib | 0 .../StockPlot/{ => Base.lproj}/MainWindow.xib | 0 .../{ => Base.lproj}/RootViewController.xib | 0 .../{ => Base.lproj}/StockPlot-Info.plist | 0 .../APYahooDataPullerGraph.xib | 0 .../StockPlot.xcodeproj/project.pbxproj | 85 ++++++++--- framework/CorePlot.xcodeproj/project.pbxproj | 137 ++++++++++++++---- .../CorePlot-CocoaTouch-Info.plist | 0 .../CorePlot-CocoaTouchTests-Info.plist | 0 .../Info/{ => Base.lproj}/CorePlot-Info.plist | 0 .../{ => Base.lproj}/CorePlot-iOS-Info.plist | 0 .../CorePlot-iOSTests-Info.plist | 0 .../{ => Base.lproj}/CorePlot-tvOS-Info.plist | 0 .../CorePlot-tvOSTests-Info.plist | 0 .../{ => Base.lproj}/CorePlotTests-Info.plist | 0 65 files changed, 817 insertions(+), 262 deletions(-) rename QCPlugin/{ => Base.lproj}/Info.plist (100%) rename QCPlugin/{English.lproj => Base.lproj}/Settings.xib (100%) rename examples/AAPLot/{ => Base.lproj}/FlipsideView.xib (100%) rename examples/AAPLot/{ => Base.lproj}/Info.plist (100%) rename examples/AAPLot/{ => Base.lproj}/Launch Screen.xib (100%) rename examples/AAPLot/{ => Base.lproj}/MainView.xib (100%) rename examples/AAPLot/{ => Base.lproj}/MainWindow.xib (100%) rename examples/CPTTestApp-iPad/{ => Base.lproj}/CPTTestApp_iPad-Info.plist (100%) rename examples/CPTTestApp-iPad/{ => Base.lproj}/CPTTestApp_iPadViewController.xib (100%) rename examples/CPTTestApp-iPad/{ => Base.lproj}/Launch Screen.xib (66%) rename examples/CPTTestApp-iPad/{ => Base.lproj}/MainWindow.xib (100%) rename examples/CPTTestApp-iPhone/{ => Base.lproj}/BarChart.xib (100%) rename examples/CPTTestApp-iPhone/{ => Base.lproj}/Info.plist (100%) rename examples/CPTTestApp-iPhone/{ => Base.lproj}/Launch Screen.xib (66%) rename examples/CPTTestApp-iPhone/{ => Base.lproj}/MainWindow.xib (100%) rename examples/CPTTestApp-iPhone/{ => Base.lproj}/PieChart.xib (100%) rename examples/CPTTestApp-iPhone/{ => Base.lproj}/ScatterPlot.xib (100%) rename examples/CPTTestApp/{ => Base.lproj}/Info.plist (100%) rename examples/CPTTestApp/Resources/{ => Base.lproj}/AxisDemo.xib (100%) rename examples/CPTTestApp/Resources/{ => Base.lproj}/CPTTestApp.xib (100%) rename examples/CPTTestApp/Resources/{ => Base.lproj}/PlotSymbolDemo.xib (100%) rename examples/CPTTestApp/Resources/{ => Base.lproj}/SelectionDemo.xib (100%) rename examples/CorePlotGallery/{ => Base.lproj}/Plot_Gallery_Mac-Info.plist (100%) rename examples/CorePlotGallery/{ => Base.lproj}/Plot_Gallery_iOS-Info.plist (100%) rename examples/CorePlotGallery/{ => Base.lproj}/Plot_Gallery_tvOS-Info.plist (100%) rename examples/CorePlotGallery/src/ios/{ => Base.lproj}/Launch Screen.xib (59%) rename examples/CorePlotGallery/src/ios/{ => Base.lproj}/Main.storyboard (85%) rename examples/CorePlotGallery/src/mac/{ => Base.lproj}/Icon.icns (100%) rename examples/CorePlotGallery/src/mac/{English.lproj => Base.lproj}/MainMenu.xib (100%) create mode 100644 examples/CorePlotGallery/src/mac/en.lproj/MainMenu.strings rename examples/CorePlotGallery/src/tvOS/{ => Base.lproj}/Main.storyboard (100%) rename examples/DatePlot/{ => Base.lproj}/DatePlot.xib (100%) rename examples/DatePlot/{ => Base.lproj}/Info.plist (100%) rename examples/DropPlot/{English.lproj => Base.lproj}/CPTPlotDocument.xib (100%) rename examples/DropPlot/{ => Base.lproj}/Info.plist (100%) rename examples/DropPlot/{English.lproj => Base.lproj}/MainMenu.xib (100%) rename examples/MinorTickLabels/{ => Base.lproj}/Info.plist (100%) rename examples/MinorTickLabels/{ => Base.lproj}/minorTickFormatter.xib (100%) rename examples/RangePlot/{ => Base.lproj}/Info.plist (100%) rename examples/RangePlot/{ => Base.lproj}/RangePlot.xib (100%) rename examples/StockPlot/{ => Base.lproj}/Launch Screen.xib (100%) rename examples/StockPlot/{ => Base.lproj}/MainWindow.xib (100%) rename examples/StockPlot/{ => Base.lproj}/RootViewController.xib (100%) rename examples/StockPlot/{ => Base.lproj}/StockPlot-Info.plist (100%) rename examples/StockPlot/Classes/{ => Base.lproj}/APYahooDataPullerGraph.xib (100%) rename framework/Info/{ => Base.lproj}/CorePlot-CocoaTouch-Info.plist (100%) rename framework/Info/{ => Base.lproj}/CorePlot-CocoaTouchTests-Info.plist (100%) rename framework/Info/{ => Base.lproj}/CorePlot-Info.plist (100%) rename framework/Info/{ => Base.lproj}/CorePlot-iOS-Info.plist (100%) rename framework/Info/{ => Base.lproj}/CorePlot-iOSTests-Info.plist (100%) rename framework/Info/{ => Base.lproj}/CorePlot-tvOS-Info.plist (100%) rename framework/Info/{ => Base.lproj}/CorePlot-tvOSTests-Info.plist (100%) rename framework/Info/{ => Base.lproj}/CorePlotTests-Info.plist (100%) diff --git a/QCPlugin/Info.plist b/QCPlugin/Base.lproj/Info.plist similarity index 100% rename from QCPlugin/Info.plist rename to QCPlugin/Base.lproj/Info.plist diff --git a/QCPlugin/English.lproj/Settings.xib b/QCPlugin/Base.lproj/Settings.xib similarity index 100% rename from QCPlugin/English.lproj/Settings.xib rename to QCPlugin/Base.lproj/Settings.xib diff --git a/QCPlugin/CorePlotQCPlugin.xcodeproj/project.pbxproj b/QCPlugin/CorePlotQCPlugin.xcodeproj/project.pbxproj index 847aee008..8761e06f2 100644 --- a/QCPlugin/CorePlotQCPlugin.xcodeproj/project.pbxproj +++ b/QCPlugin/CorePlotQCPlugin.xcodeproj/project.pbxproj @@ -125,9 +125,7 @@ 16BA95400A7EB2EB001E4983 /* CorePlotQCPlugin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CorePlotQCPlugin.h; sourceTree = ""; }; 16BA95410A7EB2EB001E4983 /* CorePlotQCPlugin.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = CorePlotQCPlugin.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 16BA96300A7EB9AC001E4983 /* Quartz.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quartz.framework; path = /System/Library/Frameworks/Quartz.framework; sourceTree = ""; }; - 7238D5510DB6988600E9A42D /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/Settings.xib; sourceTree = ""; }; 8D5B49B6048680CD000E48DA /* CorePlotQCPlugin.plugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CorePlotQCPlugin.plugin; sourceTree = BUILT_PRODUCTS_DIR; }; - 8D5B49B7048680CD000E48DA /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; A819AA0311FD3F23006D1C2D /* CPTPieChartPlugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPTPieChartPlugin.h; sourceTree = ""; }; A819AA0411FD3F23006D1C2D /* CPTPieChartPlugin.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CPTPieChartPlugin.m; sourceTree = ""; }; A89BAB3B1027EFBD004B2FE1 /* CorePlot.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = CorePlot.xcodeproj; path = ../framework/CorePlot.xcodeproj; sourceTree = SOURCE_ROOT; }; @@ -135,7 +133,9 @@ A8FC1815102CBADE00CF2266 /* CPTScatterPlotPlugin.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CPTScatterPlotPlugin.m; sourceTree = ""; }; A8FC1817102CBAEA00CF2266 /* CPTBarPlotPlugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPTBarPlotPlugin.h; sourceTree = ""; }; A8FC1818102CBAEA00CF2266 /* CPTBarPlotPlugin.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CPTBarPlotPlugin.m; sourceTree = ""; }; + C37A410E20E0326C00C4FF48 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Base; path = Base.lproj/Info.plist; sourceTree = ""; }; C3C8CFF619E9504C007E0BCB /* CorePlotWarnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = CorePlotWarnings.xcconfig; path = ../framework/xcconfig/CorePlotWarnings.xcconfig; sourceTree = ""; }; + C3DA083820E00C7700F73704 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/Settings.xib; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -181,7 +181,7 @@ isa = PBXGroup; children = ( 7238D5500DB6988600E9A42D /* Settings.xib */, - 8D5B49B7048680CD000E48DA /* Info.plist */, + C37A410F20E0326C00C4FF48 /* Info.plist */, ); name = Resources; sourceTree = ""; @@ -273,6 +273,7 @@ Japanese, French, German, + Base, ); mainGroup = 089C166AFE841209C02AAC07 /* Quartz Composer Plug In */; projectDirPath = ""; @@ -407,11 +408,19 @@ 7238D5500DB6988600E9A42D /* Settings.xib */ = { isa = PBXVariantGroup; children = ( - 7238D5510DB6988600E9A42D /* English */, + C3DA083820E00C7700F73704 /* Base */, ); name = Settings.xib; sourceTree = ""; }; + C37A410F20E0326C00C4FF48 /* Info.plist */ = { + isa = PBXVariantGroup; + children = ( + C37A410E20E0326C00C4FF48 /* Base */, + ); + name = Info.plist; + sourceTree = ""; + }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ @@ -428,7 +437,7 @@ GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = CorePlotQCPlugin_Prefix.pch; - INFOPLIST_FILE = Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Base.lproj/Info.plist"; INSTALL_PATH = "$(HOME)/Library/Graphics/Quartz Composer Plug-Ins"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @loader_path/../Frameworks"; OTHER_LDFLAGS = ""; @@ -451,7 +460,7 @@ GCC_MODEL_TUNING = G5; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = CorePlotQCPlugin_Prefix.pch; - INFOPLIST_FILE = Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Base.lproj/Info.plist"; INSTALL_PATH = "$(HOME)/Library/Graphics/Quartz Composer Plug-Ins"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @loader_path/../Frameworks"; OTHER_LDFLAGS = ""; diff --git a/examples/AAPLot/AAPLot.xcodeproj/project.pbxproj b/examples/AAPLot/AAPLot.xcodeproj/project.pbxproj index 80b5dc351..ea04af943 100644 --- a/examples/AAPLot/AAPLot.xcodeproj/project.pbxproj +++ b/examples/AAPLot/AAPLot.xcodeproj/project.pbxproj @@ -13,9 +13,6 @@ 1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; - 280E754D0DD40C5E005A515E /* FlipsideView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 280E754A0DD40C5E005A515E /* FlipsideView.xib */; }; - 280E754E0DD40C5E005A515E /* MainView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 280E754B0DD40C5E005A515E /* MainView.xib */; }; - 280E754F0DD40C5E005A515E /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 280E754C0DD40C5E005A515E /* MainWindow.xib */; }; 288765590DF743DE002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765580DF743DE002DB57D /* CoreGraphics.framework */; }; 289233A60DB2D0840083E9F9 /* FlipsideView.m in Sources */ = {isa = PBXBuildFile; fileRef = 289233A30DB2D0840083E9F9 /* FlipsideView.m */; }; 289233AE0DB2D0DB0083E9F9 /* MainViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 289233A90DB2D0DB0083E9F9 /* MainViewController.m */; }; @@ -24,9 +21,12 @@ AB8989470FE0309E00FDC37F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AB8989460FE0309E00FDC37F /* QuartzCore.framework */; }; AB8F94580FDEFA1500E61485 /* APYahooDataPuller.m in Sources */ = {isa = PBXBuildFile; fileRef = AB8F94570FDEFA1500E61485 /* APYahooDataPuller.m */; }; ABA5345E0FEB40CE0046A8DA /* AAPL.plist in Resources */ = {isa = PBXBuildFile; fileRef = ABA5345D0FEB40CE0046A8DA /* AAPL.plist */; }; + C3D0A1DB20E0198700BA2921 /* MainView.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3D0A1DD20E0198700BA2921 /* MainView.xib */; }; + C3D0A1EC20E0199600BA2921 /* Launch Screen.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3D0A1EE20E0199600BA2921 /* Launch Screen.xib */; }; + C3D0A1EF20E019A300BA2921 /* FlipsideView.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3D0A1F120E019A300BA2921 /* FlipsideView.xib */; }; + C3D0A1F220E019AB00BA2921 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3D0A1F420E019AB00BA2921 /* MainWindow.xib */; }; C3D3936C19FD6B1D00148319 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C3D3936B19FD6B1D00148319 /* Images.xcassets */; }; C3D414941A7D838200B6F5D6 /* libCorePlot-CocoaTouch.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C3D414911A7D836300B6F5D6 /* libCorePlot-CocoaTouch.a */; }; - C3F0BA3919EC9F6300F7CB47 /* Launch Screen.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3F0BA3819EC9F6300F7CB47 /* Launch Screen.xib */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -98,9 +98,6 @@ 1D3623250D0F684500981E51 /* AAPLotAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AAPLotAppDelegate.m; sourceTree = ""; }; 1D6058910D05DD3D006BFB54 /* AAPLot.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AAPLot.app; sourceTree = BUILT_PRODUCTS_DIR; }; 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 280E754A0DD40C5E005A515E /* FlipsideView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FlipsideView.xib; sourceTree = ""; }; - 280E754B0DD40C5E005A515E /* MainView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainView.xib; sourceTree = ""; }; - 280E754C0DD40C5E005A515E /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = MainWindow.xib; path = ../MainWindow.xib; sourceTree = ""; }; 288765580DF743DE002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 289233A20DB2D0840083E9F9 /* FlipsideView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FlipsideView.h; path = Classes/FlipsideView.h; sourceTree = ""; }; 289233A30DB2D0840083E9F9 /* FlipsideView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FlipsideView.m; path = Classes/FlipsideView.m; sourceTree = ""; }; @@ -112,16 +109,19 @@ 289233AD0DB2D0DB0083E9F9 /* FlipsideViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FlipsideViewController.m; path = Classes/FlipsideViewController.m; sourceTree = ""; }; 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 32CA4F630368D1EE00C91783 /* AAPLot_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AAPLot_Prefix.pch; sourceTree = ""; }; - 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; AB8989460FE0309E00FDC37F /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; AB8F94560FDEFA1500E61485 /* APYahooDataPuller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = APYahooDataPuller.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; AB8F94570FDEFA1500E61485 /* APYahooDataPuller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = APYahooDataPuller.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; ABA5345D0FEB40CE0046A8DA /* AAPL.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = AAPL.plist; sourceTree = ""; }; + C37A40D220E031AE00C4FF48 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Base; path = Base.lproj/Info.plist; sourceTree = ""; }; C3CA9B5819E1F79B008DF7A3 /* CorePlotWarnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = CorePlotWarnings.xcconfig; path = ../../framework/xcconfig/CorePlotWarnings.xcconfig; sourceTree = ""; }; C3CD282F17DE9B9C008EED1E /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; }; + C3D0A1EB20E0198E00BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainView.xib; sourceTree = ""; }; + C3D0A1ED20E0199600BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = "Base.lproj/Launch Screen.xib"; sourceTree = ""; }; + C3D0A1F020E019A300BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/FlipsideView.xib; sourceTree = ""; }; + C3D0A1F320E019AB00BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainWindow.xib; sourceTree = ""; }; C3D3936B19FD6B1D00148319 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = AAPLot/Images.xcassets; sourceTree = ""; }; C3D4147C1A7D836300B6F5D6 /* CorePlot.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = CorePlot.xcodeproj; path = ../../framework/CorePlot.xcodeproj; sourceTree = ""; }; - C3F0BA3819EC9F6300F7CB47 /* Launch Screen.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "Launch Screen.xib"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -156,7 +156,7 @@ 080E96DDFE201D6D7F000001 /* Application Controllers */ = { isa = PBXGroup; children = ( - 280E754C0DD40C5E005A515E /* MainWindow.xib */, + C3D0A1F420E019AB00BA2921 /* MainWindow.xib */, 1D3623240D0F684500981E51 /* AAPLotAppDelegate.h */, 1D3623250D0F684500981E51 /* AAPLotAppDelegate.m */, 289233AA0DB2D0DB0083E9F9 /* RootViewController.h */, @@ -177,7 +177,7 @@ 281C6CD70DB2D82200F60ACC /* Flipside View */ = { isa = PBXGroup; children = ( - 280E754A0DD40C5E005A515E /* FlipsideView.xib */, + C3D0A1F120E019A300BA2921 /* FlipsideView.xib */, 289233A20DB2D0840083E9F9 /* FlipsideView.h */, 289233A30DB2D0840083E9F9 /* FlipsideView.m */, 289233AC0DB2D0DB0083E9F9 /* FlipsideViewController.h */, @@ -189,10 +189,10 @@ 289233A00DB2D0730083E9F9 /* Main View */ = { isa = PBXGroup; children = ( - 280E754B0DD40C5E005A515E /* MainView.xib */, + C3D0A1DD20E0198700BA2921 /* MainView.xib */, 289233A80DB2D0DB0083E9F9 /* MainViewController.h */, 289233A90DB2D0DB0083E9F9 /* MainViewController.m */, - C3F0BA3819EC9F6300F7CB47 /* Launch Screen.xib */, + C3D0A1EE20E0199600BA2921 /* Launch Screen.xib */, ); name = "Main View"; sourceTree = ""; @@ -231,7 +231,7 @@ children = ( C3D3936B19FD6B1D00148319 /* Images.xcassets */, ABA5345D0FEB40CE0046A8DA /* AAPL.plist */, - 8D1107310486CEB800E47090 /* Info.plist */, + C37A40D320E031AE00C4FF48 /* Info.plist */, ); name = Resources; sourceTree = ""; @@ -306,6 +306,7 @@ French, German, en, + Base, ); mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; projectDirPath = ""; @@ -386,12 +387,12 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 280E754D0DD40C5E005A515E /* FlipsideView.xib in Resources */, - 280E754E0DD40C5E005A515E /* MainView.xib in Resources */, + C3D0A1EF20E019A300BA2921 /* FlipsideView.xib in Resources */, + C3D0A1DB20E0198700BA2921 /* MainView.xib in Resources */, C3D3936C19FD6B1D00148319 /* Images.xcassets in Resources */, - 280E754F0DD40C5E005A515E /* MainWindow.xib in Resources */, + C3D0A1F220E019AB00BA2921 /* MainWindow.xib in Resources */, ABA5345E0FEB40CE0046A8DA /* AAPL.plist in Resources */, - C3F0BA3919EC9F6300F7CB47 /* Launch Screen.xib in Resources */, + C3D0A1EC20E0199600BA2921 /* Launch Screen.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -416,6 +417,50 @@ }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXVariantGroup section */ + C37A40D320E031AE00C4FF48 /* Info.plist */ = { + isa = PBXVariantGroup; + children = ( + C37A40D220E031AE00C4FF48 /* Base */, + ); + name = Info.plist; + sourceTree = ""; + }; + C3D0A1DD20E0198700BA2921 /* MainView.xib */ = { + isa = PBXVariantGroup; + children = ( + C3D0A1EB20E0198E00BA2921 /* Base */, + ); + name = MainView.xib; + sourceTree = ""; + }; + C3D0A1EE20E0199600BA2921 /* Launch Screen.xib */ = { + isa = PBXVariantGroup; + children = ( + C3D0A1ED20E0199600BA2921 /* Base */, + ); + name = "Launch Screen.xib"; + sourceTree = ""; + }; + C3D0A1F120E019A300BA2921 /* FlipsideView.xib */ = { + isa = PBXVariantGroup; + children = ( + C3D0A1F020E019A300BA2921 /* Base */, + ); + name = FlipsideView.xib; + sourceTree = ""; + }; + C3D0A1F420E019AB00BA2921 /* MainWindow.xib */ = { + isa = PBXVariantGroup; + children = ( + C3D0A1F320E019AB00BA2921 /* Base */, + ); + name = MainWindow.xib; + path = ..; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + /* Begin XCBuildConfiguration section */ 1D6058940D05DD3E006BFB54 /* Debug */ = { isa = XCBuildConfiguration; @@ -433,7 +478,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = AAPLot_Prefix.pch; HEADER_SEARCH_PATHS = ""; - INFOPLIST_FILE = Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Base.lproj/Info.plist"; OTHER_LDFLAGS = ( "-ObjC", "-all_load", @@ -457,7 +502,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = AAPLot_Prefix.pch; HEADER_SEARCH_PATHS = ""; - INFOPLIST_FILE = Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Base.lproj/Info.plist"; OTHER_LDFLAGS = ( "-ObjC", "-all_load", diff --git a/examples/AAPLot/FlipsideView.xib b/examples/AAPLot/Base.lproj/FlipsideView.xib similarity index 100% rename from examples/AAPLot/FlipsideView.xib rename to examples/AAPLot/Base.lproj/FlipsideView.xib diff --git a/examples/AAPLot/Info.plist b/examples/AAPLot/Base.lproj/Info.plist similarity index 100% rename from examples/AAPLot/Info.plist rename to examples/AAPLot/Base.lproj/Info.plist diff --git a/examples/AAPLot/Launch Screen.xib b/examples/AAPLot/Base.lproj/Launch Screen.xib similarity index 100% rename from examples/AAPLot/Launch Screen.xib rename to examples/AAPLot/Base.lproj/Launch Screen.xib diff --git a/examples/AAPLot/MainView.xib b/examples/AAPLot/Base.lproj/MainView.xib similarity index 100% rename from examples/AAPLot/MainView.xib rename to examples/AAPLot/Base.lproj/MainView.xib diff --git a/examples/AAPLot/MainWindow.xib b/examples/AAPLot/Base.lproj/MainWindow.xib similarity index 100% rename from examples/AAPLot/MainWindow.xib rename to examples/AAPLot/Base.lproj/MainWindow.xib diff --git a/examples/CPTTestApp-iPad/CPTTestApp_iPad-Info.plist b/examples/CPTTestApp-iPad/Base.lproj/CPTTestApp_iPad-Info.plist similarity index 100% rename from examples/CPTTestApp-iPad/CPTTestApp_iPad-Info.plist rename to examples/CPTTestApp-iPad/Base.lproj/CPTTestApp_iPad-Info.plist diff --git a/examples/CPTTestApp-iPad/CPTTestApp_iPadViewController.xib b/examples/CPTTestApp-iPad/Base.lproj/CPTTestApp_iPadViewController.xib similarity index 100% rename from examples/CPTTestApp-iPad/CPTTestApp_iPadViewController.xib rename to examples/CPTTestApp-iPad/Base.lproj/CPTTestApp_iPadViewController.xib diff --git a/examples/CPTTestApp-iPad/Launch Screen.xib b/examples/CPTTestApp-iPad/Base.lproj/Launch Screen.xib similarity index 66% rename from examples/CPTTestApp-iPad/Launch Screen.xib rename to examples/CPTTestApp-iPad/Base.lproj/Launch Screen.xib index 31b1b876d..84090add7 100644 --- a/examples/CPTTestApp-iPad/Launch Screen.xib +++ b/examples/CPTTestApp-iPad/Base.lproj/Launch Screen.xib @@ -1,8 +1,12 @@ - - + + + + + - - + + + @@ -11,14 +15,14 @@ - - + diff --git a/examples/CPTTestApp-iPad/MainWindow.xib b/examples/CPTTestApp-iPad/Base.lproj/MainWindow.xib similarity index 100% rename from examples/CPTTestApp-iPad/MainWindow.xib rename to examples/CPTTestApp-iPad/Base.lproj/MainWindow.xib diff --git a/examples/CPTTestApp-iPad/CPTTestApp-iPad.xcodeproj/project.pbxproj b/examples/CPTTestApp-iPad/CPTTestApp-iPad.xcodeproj/project.pbxproj index 02cfb0bd3..3109c9d46 100644 --- a/examples/CPTTestApp-iPad/CPTTestApp-iPad.xcodeproj/project.pbxproj +++ b/examples/CPTTestApp-iPad/CPTTestApp-iPad.xcodeproj/project.pbxproj @@ -12,11 +12,11 @@ 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; 288765A50DF7441C002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765A40DF7441C002DB57D /* CoreGraphics.framework */; }; - 2899E5220DE3E06400AC0155 /* CPTTestApp_iPadViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2899E5210DE3E06400AC0155 /* CPTTestApp_iPadViewController.xib */; }; - 28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD733E0D9D9553002E5188 /* MainWindow.xib */; }; 28D7ACF80DDB3853001CB0EB /* CPTTestApp_iPadViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28D7ACF70DDB3853001CB0EB /* CPTTestApp_iPadViewController.m */; }; BC65758F116549890008F594 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC65758E116549890008F594 /* QuartzCore.framework */; }; - C34677AE19F3341700429A85 /* Launch Screen.xib in Resources */ = {isa = PBXBuildFile; fileRef = C34677AD19F3341700429A85 /* Launch Screen.xib */; }; + C3D0A1F520E019BF00BA2921 /* CPTTestApp_iPadViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3D0A1F720E019BF00BA2921 /* CPTTestApp_iPadViewController.xib */; }; + C3D0A20620E019CD00BA2921 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3D0A20820E019CD00BA2921 /* MainWindow.xib */; }; + C3D0A20920E019D400BA2921 /* Launch Screen.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3D0A20B20E019D400BA2921 /* Launch Screen.xib */; }; C3D3936019FD670400148319 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C3D3935F19FD670400148319 /* Images.xcassets */; }; C3D414AD1A7D844400B6F5D6 /* libCorePlot-CocoaTouch.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C3D414AA1A7D843800B6F5D6 /* libCorePlot-CocoaTouch.a */; }; C3F47B6E17BF99DE0075181F /* CorePlotIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = C3F47B6C17BF99DE0075181F /* CorePlotIcon.png */; }; @@ -89,17 +89,17 @@ 1D6058910D05DD3D006BFB54 /* CPTTestApp-iPad.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "CPTTestApp-iPad.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 288765A40DF7441C002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 2899E5210DE3E06400AC0155 /* CPTTestApp_iPadViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CPTTestApp_iPadViewController.xib; sourceTree = ""; }; - 28AD733E0D9D9553002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = ""; }; 28D7ACF60DDB3853001CB0EB /* CPTTestApp_iPadViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = CPTTestApp_iPadViewController.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 28D7ACF70DDB3853001CB0EB /* CPTTestApp_iPadViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = CPTTestApp_iPadViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 32CA4F630368D1EE00C91783 /* CPTTestApp_iPad_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPTTestApp_iPad_Prefix.pch; sourceTree = ""; }; - 8D1107310486CEB800E47090 /* CPTTestApp_iPad-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "CPTTestApp_iPad-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; BC65758E116549890008F594 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; - C34677AD19F3341700429A85 /* Launch Screen.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "Launch Screen.xib"; sourceTree = ""; }; C36E7CC519DE1C1F00EDEACB /* CorePlotWarnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = CorePlotWarnings.xcconfig; path = ../../framework/xcconfig/CorePlotWarnings.xcconfig; sourceTree = ""; }; + C37A40E120E0320500C4FF48 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Base; path = "Base.lproj/CPTTestApp_iPad-Info.plist"; sourceTree = ""; }; C3CD283817DE9C59008EED1E /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; }; + C3D0A20520E019C900BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/CPTTestApp_iPadViewController.xib; sourceTree = ""; }; + C3D0A20720E019CD00BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainWindow.xib; sourceTree = ""; }; + C3D0A20A20E019D400BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = "Base.lproj/Launch Screen.xib"; sourceTree = ""; }; C3D3935F19FD670400148319 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = "CPTTestApp-iPad/Images.xcassets"; sourceTree = ""; }; C3D414951A7D843800B6F5D6 /* CorePlot.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = CorePlot.xcodeproj; path = ../../framework/CorePlot.xcodeproj; sourceTree = ""; }; C3F47B6C17BF99DE0075181F /* CorePlotIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CorePlotIcon.png; sourceTree = ""; }; @@ -171,12 +171,12 @@ isa = PBXGroup; children = ( C3D3935F19FD670400148319 /* Images.xcassets */, - 2899E5210DE3E06400AC0155 /* CPTTestApp_iPadViewController.xib */, - 28AD733E0D9D9553002E5188 /* MainWindow.xib */, - C34677AD19F3341700429A85 /* Launch Screen.xib */, + C3D0A1F720E019BF00BA2921 /* CPTTestApp_iPadViewController.xib */, + C3D0A20820E019CD00BA2921 /* MainWindow.xib */, + C3D0A20B20E019D400BA2921 /* Launch Screen.xib */, C3F47B6C17BF99DE0075181F /* CorePlotIcon.png */, C3F47B6D17BF99DE0075181F /* CorePlotIcon@2x.png */, - 8D1107310486CEB800E47090 /* CPTTestApp_iPad-Info.plist */, + C37A40E220E0320500C4FF48 /* CPTTestApp_iPad-Info.plist */, ); name = Resources; sourceTree = ""; @@ -245,6 +245,7 @@ Japanese, French, German, + Base, ); mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; projectDirPath = ""; @@ -325,12 +326,12 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */, - 2899E5220DE3E06400AC0155 /* CPTTestApp_iPadViewController.xib in Resources */, + C3D0A20620E019CD00BA2921 /* MainWindow.xib in Resources */, + C3D0A1F520E019BF00BA2921 /* CPTTestApp_iPadViewController.xib in Resources */, C3F47B6E17BF99DE0075181F /* CorePlotIcon.png in Resources */, C3D3936019FD670400148319 /* Images.xcassets in Resources */, C3F47B6F17BF99DE0075181F /* CorePlotIcon@2x.png in Resources */, - C34677AE19F3341700429A85 /* Launch Screen.xib in Resources */, + C3D0A20920E019D400BA2921 /* Launch Screen.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -349,6 +350,41 @@ }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXVariantGroup section */ + C37A40E220E0320500C4FF48 /* CPTTestApp_iPad-Info.plist */ = { + isa = PBXVariantGroup; + children = ( + C37A40E120E0320500C4FF48 /* Base */, + ); + name = "CPTTestApp_iPad-Info.plist"; + sourceTree = ""; + }; + C3D0A1F720E019BF00BA2921 /* CPTTestApp_iPadViewController.xib */ = { + isa = PBXVariantGroup; + children = ( + C3D0A20520E019C900BA2921 /* Base */, + ); + name = CPTTestApp_iPadViewController.xib; + sourceTree = ""; + }; + C3D0A20820E019CD00BA2921 /* MainWindow.xib */ = { + isa = PBXVariantGroup; + children = ( + C3D0A20720E019CD00BA2921 /* Base */, + ); + name = MainWindow.xib; + sourceTree = ""; + }; + C3D0A20B20E019D400BA2921 /* Launch Screen.xib */ = { + isa = PBXVariantGroup; + children = ( + C3D0A20A20E019D400BA2921 /* Base */, + ); + name = "Launch Screen.xib"; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + /* Begin XCBuildConfiguration section */ 1D6058940D05DD3E006BFB54 /* Debug */ = { isa = XCBuildConfiguration; @@ -366,7 +402,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = CPTTestApp_iPad_Prefix.pch; HEADER_SEARCH_PATHS = ""; - INFOPLIST_FILE = "CPTTestApp_iPad-Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Base.lproj/CPTTestApp_iPad-Info.plist"; PRODUCT_BUNDLE_IDENTIFIER = org.CorePlot.CPTTestAppiPad; PRODUCT_NAME = "CPTTestApp-iPad"; }; @@ -386,7 +422,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = CPTTestApp_iPad_Prefix.pch; HEADER_SEARCH_PATHS = ""; - INFOPLIST_FILE = "CPTTestApp_iPad-Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Base.lproj/CPTTestApp_iPad-Info.plist"; PRODUCT_BUNDLE_IDENTIFIER = org.CorePlot.CPTTestAppiPad; PRODUCT_NAME = "CPTTestApp-iPad"; VALIDATE_PRODUCT = YES; diff --git a/examples/CPTTestApp-iPhone/BarChart.xib b/examples/CPTTestApp-iPhone/Base.lproj/BarChart.xib similarity index 100% rename from examples/CPTTestApp-iPhone/BarChart.xib rename to examples/CPTTestApp-iPhone/Base.lproj/BarChart.xib diff --git a/examples/CPTTestApp-iPhone/Info.plist b/examples/CPTTestApp-iPhone/Base.lproj/Info.plist similarity index 100% rename from examples/CPTTestApp-iPhone/Info.plist rename to examples/CPTTestApp-iPhone/Base.lproj/Info.plist diff --git a/examples/CPTTestApp-iPhone/Launch Screen.xib b/examples/CPTTestApp-iPhone/Base.lproj/Launch Screen.xib similarity index 66% rename from examples/CPTTestApp-iPhone/Launch Screen.xib rename to examples/CPTTestApp-iPhone/Base.lproj/Launch Screen.xib index 4529d82e3..b51d6d522 100644 --- a/examples/CPTTestApp-iPhone/Launch Screen.xib +++ b/examples/CPTTestApp-iPhone/Base.lproj/Launch Screen.xib @@ -1,8 +1,12 @@ - - + + + + + - - + + + @@ -11,14 +15,14 @@ - - + diff --git a/examples/CPTTestApp-iPhone/MainWindow.xib b/examples/CPTTestApp-iPhone/Base.lproj/MainWindow.xib similarity index 100% rename from examples/CPTTestApp-iPhone/MainWindow.xib rename to examples/CPTTestApp-iPhone/Base.lproj/MainWindow.xib diff --git a/examples/CPTTestApp-iPhone/PieChart.xib b/examples/CPTTestApp-iPhone/Base.lproj/PieChart.xib similarity index 100% rename from examples/CPTTestApp-iPhone/PieChart.xib rename to examples/CPTTestApp-iPhone/Base.lproj/PieChart.xib diff --git a/examples/CPTTestApp-iPhone/ScatterPlot.xib b/examples/CPTTestApp-iPhone/Base.lproj/ScatterPlot.xib similarity index 100% rename from examples/CPTTestApp-iPhone/ScatterPlot.xib rename to examples/CPTTestApp-iPhone/Base.lproj/ScatterPlot.xib diff --git a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj index 9cd930c80..9f4fe0105 100644 --- a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj +++ b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj @@ -9,21 +9,21 @@ /* Begin PBXBuildFile section */ 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; - 282CCBFE0DB6C98000C4EA27 /* BarChart.xib in Resources */ = {isa = PBXBuildFile; fileRef = 282CCBFD0DB6C98000C4EA27 /* BarChart.xib */; }; 288765080DF74369002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765070DF74369002DB57D /* CoreGraphics.framework */; }; - 28AD73880D9D96C1002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD73870D9D96C1002E5188 /* MainWindow.xib */; }; - BC74A34110FC418D00E7E90D /* PieChart.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC74A34010FC418D00E7E90D /* PieChart.xib */; }; BC8166CE1100DD00006D898E /* 16-line-chart.png in Resources */ = {isa = PBXBuildFile; fileRef = BC8166CC1100DD00006D898E /* 16-line-chart.png */; }; BC8166CF1100DD00006D898E /* 17-bar-chart.png in Resources */ = {isa = PBXBuildFile; fileRef = BC8166CD1100DD00006D898E /* 17-bar-chart.png */; }; BC8166D21100DD6F006D898E /* 62-contrast.png in Resources */ = {isa = PBXBuildFile; fileRef = BC8166D11100DD6F006D898E /* 62-contrast.png */; }; BC9B81DA0FB893F70035D8DA /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC9B81D90FB893F70035D8DA /* QuartzCore.framework */; }; - BC9B84360FB8B7110035D8DA /* ScatterPlot.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC9B84350FB8B7110035D8DA /* ScatterPlot.xib */; }; - C34677B219F3345500429A85 /* Launch Screen.xib in Resources */ = {isa = PBXBuildFile; fileRef = C34677B119F3345500429A85 /* Launch Screen.xib */; }; C359603719CE34FC005CDFB9 /* BarChartController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C359603319CE34FB005CDFB9 /* BarChartController.swift */; }; C359603819CE34FC005CDFB9 /* iPhoneAppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C359603419CE34FB005CDFB9 /* iPhoneAppDelegate.swift */; }; C359603919CE34FC005CDFB9 /* PieChartController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C359603519CE34FB005CDFB9 /* PieChartController.swift */; }; C359603A19CE34FC005CDFB9 /* ScatterPlotController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C359603619CE34FB005CDFB9 /* ScatterPlotController.swift */; }; C3B9F9D417503CDD001CCC50 /* BlueTexture.png in Resources */ = {isa = PBXBuildFile; fileRef = C3B9F9D317503CDD001CCC50 /* BlueTexture.png */; }; + C3D0A20C20E019EB00BA2921 /* PieChart.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3D0A20E20E019EB00BA2921 /* PieChart.xib */; }; + C3D0A21C20E019F000BA2921 /* BarChart.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3D0A21E20E019F000BA2921 /* BarChart.xib */; }; + C3D0A21F20E019F300BA2921 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3D0A22120E019F300BA2921 /* MainWindow.xib */; }; + C3D0A22220E019F800BA2921 /* ScatterPlot.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3D0A22420E019F800BA2921 /* ScatterPlot.xib */; }; + C3D0A22520E019FF00BA2921 /* Launch Screen.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3D0A22720E019FF00BA2921 /* Launch Screen.xib */; }; C3D3936419FD671100148319 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C3D3936319FD671100148319 /* Images.xcassets */; }; C3D414C61A7D847C00B6F5D6 /* libCorePlot-CocoaTouch.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C3D414C31A7D846500B6F5D6 /* libCorePlot-CocoaTouch.a */; }; /* End PBXBuildFile section */ @@ -91,25 +91,25 @@ 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 1D6058910D05DD3D006BFB54 /* CPTTestApp-iPhone.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "CPTTestApp-iPhone.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 282CCBFD0DB6C98000C4EA27 /* BarChart.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = BarChart.xib; sourceTree = ""; }; 288765070DF74369002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 28AD73870D9D96C1002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = ""; }; - 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - BC74A34010FC418D00E7E90D /* PieChart.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PieChart.xib; sourceTree = ""; }; BC8166CC1100DD00006D898E /* 16-line-chart.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "16-line-chart.png"; path = "GlyphishIcons/16-line-chart.png"; sourceTree = ""; }; BC8166CD1100DD00006D898E /* 17-bar-chart.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "17-bar-chart.png"; path = "GlyphishIcons/17-bar-chart.png"; sourceTree = ""; }; BC8166D11100DD6F006D898E /* 62-contrast.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "62-contrast.png"; path = "GlyphishIcons/62-contrast.png"; sourceTree = ""; }; BC9B81D90FB893F70035D8DA /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; - BC9B84350FB8B7110035D8DA /* ScatterPlot.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ScatterPlot.xib; sourceTree = ""; }; - C34677B119F3345500429A85 /* Launch Screen.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "Launch Screen.xib"; sourceTree = ""; }; C359603319CE34FB005CDFB9 /* BarChartController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BarChartController.swift; sourceTree = ""; }; C359603419CE34FB005CDFB9 /* iPhoneAppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = iPhoneAppDelegate.swift; sourceTree = ""; }; C359603519CE34FB005CDFB9 /* PieChartController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PieChartController.swift; sourceTree = ""; }; C359603619CE34FB005CDFB9 /* ScatterPlotController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScatterPlotController.swift; sourceTree = ""; }; C359603B19CE352A005CDFB9 /* CPTTestApp-iPhone-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = "CPTTestApp-iPhone-Bridging-Header.h"; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; + C37A40F020E0322D00C4FF48 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Base; path = Base.lproj/Info.plist; sourceTree = ""; }; C3B9F9D317503CDD001CCC50 /* BlueTexture.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BlueTexture.png; sourceTree = ""; }; C3C3CBDE19EA125D00A0296A /* CorePlotWarnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = CorePlotWarnings.xcconfig; path = ../../framework/xcconfig/CorePlotWarnings.xcconfig; sourceTree = ""; }; C3CD283D17DE9C95008EED1E /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; }; + C3D0A22820E01A0600BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/PieChart.xib; sourceTree = ""; }; + C3D0A22920E01A0600BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/BarChart.xib; sourceTree = ""; }; + C3D0A22A20E01A0600BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainWindow.xib; sourceTree = ""; }; + C3D0A22B20E01A0600BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/ScatterPlot.xib; sourceTree = ""; }; + C3D0A22C20E01A0600BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = "Base.lproj/Launch Screen.xib"; sourceTree = ""; }; C3D3936319FD671100148319 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = "CPTTestApp-iPhone/Images.xcassets"; sourceTree = ""; }; C3D414AE1A7D846500B6F5D6 /* CorePlot.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = CorePlot.xcodeproj; path = ../../framework/CorePlot.xcodeproj; sourceTree = ""; }; /* End PBXFileReference section */ @@ -182,12 +182,12 @@ BC8166CC1100DD00006D898E /* 16-line-chart.png */, BC8166CD1100DD00006D898E /* 17-bar-chart.png */, C3B9F9D317503CDD001CCC50 /* BlueTexture.png */, - BC74A34010FC418D00E7E90D /* PieChart.xib */, - 282CCBFD0DB6C98000C4EA27 /* BarChart.xib */, - 28AD73870D9D96C1002E5188 /* MainWindow.xib */, - 8D1107310486CEB800E47090 /* Info.plist */, - BC9B84350FB8B7110035D8DA /* ScatterPlot.xib */, - C34677B119F3345500429A85 /* Launch Screen.xib */, + C3D0A20E20E019EB00BA2921 /* PieChart.xib */, + C3D0A21E20E019F000BA2921 /* BarChart.xib */, + C3D0A22120E019F300BA2921 /* MainWindow.xib */, + C37A40F120E0322D00C4FF48 /* Info.plist */, + C3D0A22420E019F800BA2921 /* ScatterPlot.xib */, + C3D0A22720E019FF00BA2921 /* Launch Screen.xib */, ); name = Resources; sourceTree = ""; @@ -262,6 +262,7 @@ Japanese, French, German, + Base, ); mainGroup = 29B97314FDCFA39411CA2CEA /* CPTTestApp-iPhone */; projectDirPath = ""; @@ -342,12 +343,12 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 28AD73880D9D96C1002E5188 /* MainWindow.xib in Resources */, - 282CCBFE0DB6C98000C4EA27 /* BarChart.xib in Resources */, - BC9B84360FB8B7110035D8DA /* ScatterPlot.xib in Resources */, + C3D0A21F20E019F300BA2921 /* MainWindow.xib in Resources */, + C3D0A21C20E019F000BA2921 /* BarChart.xib in Resources */, + C3D0A22220E019F800BA2921 /* ScatterPlot.xib in Resources */, C3D3936419FD671100148319 /* Images.xcassets in Resources */, - BC74A34110FC418D00E7E90D /* PieChart.xib in Resources */, - C34677B219F3345500429A85 /* Launch Screen.xib in Resources */, + C3D0A20C20E019EB00BA2921 /* PieChart.xib in Resources */, + C3D0A22520E019FF00BA2921 /* Launch Screen.xib in Resources */, BC8166CE1100DD00006D898E /* 16-line-chart.png in Resources */, BC8166CF1100DD00006D898E /* 17-bar-chart.png in Resources */, BC8166D21100DD6F006D898E /* 62-contrast.png in Resources */, @@ -371,6 +372,57 @@ }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXVariantGroup section */ + C37A40F120E0322D00C4FF48 /* Info.plist */ = { + isa = PBXVariantGroup; + children = ( + C37A40F020E0322D00C4FF48 /* Base */, + ); + name = Info.plist; + sourceTree = ""; + }; + C3D0A20E20E019EB00BA2921 /* PieChart.xib */ = { + isa = PBXVariantGroup; + children = ( + C3D0A22820E01A0600BA2921 /* Base */, + ); + name = PieChart.xib; + sourceTree = ""; + }; + C3D0A21E20E019F000BA2921 /* BarChart.xib */ = { + isa = PBXVariantGroup; + children = ( + C3D0A22920E01A0600BA2921 /* Base */, + ); + name = BarChart.xib; + sourceTree = ""; + }; + C3D0A22120E019F300BA2921 /* MainWindow.xib */ = { + isa = PBXVariantGroup; + children = ( + C3D0A22A20E01A0600BA2921 /* Base */, + ); + name = MainWindow.xib; + sourceTree = ""; + }; + C3D0A22420E019F800BA2921 /* ScatterPlot.xib */ = { + isa = PBXVariantGroup; + children = ( + C3D0A22B20E01A0600BA2921 /* Base */, + ); + name = ScatterPlot.xib; + sourceTree = ""; + }; + C3D0A22720E019FF00BA2921 /* Launch Screen.xib */ = { + isa = PBXVariantGroup; + children = ( + C3D0A22C20E01A0600BA2921 /* Base */, + ); + name = "Launch Screen.xib"; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + /* Begin XCBuildConfiguration section */ 1D6058940D05DD3E006BFB54 /* Debug */ = { isa = XCBuildConfiguration; @@ -387,7 +439,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = CPTTestApp_iPhone_Prefix.pch; HEADER_SEARCH_PATHS = ""; - INFOPLIST_FILE = Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Base.lproj/Info.plist"; LIBRARY_SEARCH_PATHS = ""; OTHER_LDFLAGS = ( "-all_load", @@ -414,7 +466,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = CPTTestApp_iPhone_Prefix.pch; HEADER_SEARCH_PATHS = ""; - INFOPLIST_FILE = Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Base.lproj/Info.plist"; LIBRARY_SEARCH_PATHS = ""; OTHER_LDFLAGS = ( "-all_load", @@ -423,7 +475,6 @@ PRODUCT_BUNDLE_IDENTIFIER = org.CorePlot.CPTTestAppiPhone; PRODUCT_NAME = "CPTTestApp-iPhone"; "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; - SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OBJC_BRIDGING_HEADER = "CPTTestApp-iPhone-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_VERSION = 4.0; diff --git a/examples/CPTTestApp/Info.plist b/examples/CPTTestApp/Base.lproj/Info.plist similarity index 100% rename from examples/CPTTestApp/Info.plist rename to examples/CPTTestApp/Base.lproj/Info.plist diff --git a/examples/CPTTestApp/CPTTestApp.xcodeproj/project.pbxproj b/examples/CPTTestApp/CPTTestApp.xcodeproj/project.pbxproj index 87192c5e7..9f97317e2 100644 --- a/examples/CPTTestApp/CPTTestApp.xcodeproj/project.pbxproj +++ b/examples/CPTTestApp/CPTTestApp.xcodeproj/project.pbxproj @@ -12,17 +12,17 @@ 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; 8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; - 90AF4F440F36CF1800753D26 /* CPTTestApp.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90AF4F430F36CF1800753D26 /* CPTTestApp.xib */; }; BC8E74240FC0B96000DF8511 /* RotationView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC8E74230FC0B96000DF8511 /* RotationView.m */; }; - C317AB4F1093CC1E00B25011 /* PlotSymbolDemo.xib in Resources */ = {isa = PBXBuildFile; fileRef = C317AB4E1093CC1E00B25011 /* PlotSymbolDemo.xib */; }; - C317AB711093E09D00B25011 /* AxisDemo.xib in Resources */ = {isa = PBXBuildFile; fileRef = C317AB701093E09D00B25011 /* AxisDemo.xib */; }; C317AB751093E17500B25011 /* AxisDemoController.m in Sources */ = {isa = PBXBuildFile; fileRef = C317AB731093E17500B25011 /* AxisDemoController.m */; }; C34D4F8E0F8ED78400969C24 /* CPTPlotSymbolTestController.m in Sources */ = {isa = PBXBuildFile; fileRef = C34D4F8C0F8ED78400969C24 /* CPTPlotSymbolTestController.m */; }; C36912D21C0B48DF000A1D61 /* CorePlot.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 07032B6A11ABB9E000463D20 /* CorePlot.framework */; }; C36912D31C0B48DF000A1D61 /* CorePlot.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 07032B6A11ABB9E000463D20 /* CorePlot.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - C38017DD124132020052B00D /* SelectionDemo.xib in Resources */ = {isa = PBXBuildFile; fileRef = C38017DC124132020052B00D /* SelectionDemo.xib */; }; C38017E1124132610052B00D /* SelectionDemoController.m in Sources */ = {isa = PBXBuildFile; fileRef = C38017E0124132610052B00D /* SelectionDemoController.m */; }; C39BB9A4181C154500D95E01 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC8E737C0FC0B3CF00DF8511 /* QuartzCore.framework */; }; + C3D0A18B20E017C500BA2921 /* AxisDemo.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3D0A18D20E017C500BA2921 /* AxisDemo.xib */; }; + C3D0A19A20E017CC00BA2921 /* CPTTestApp.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3D0A19C20E017CC00BA2921 /* CPTTestApp.xib */; }; + C3D0A19D20E017D100BA2921 /* PlotSymbolDemo.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3D0A19F20E017D100BA2921 /* PlotSymbolDemo.xib */; }; + C3D0A1A020E017D600BA2921 /* SelectionDemo.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3D0A1A220E017D600BA2921 /* SelectionDemo.xib */; }; C3D3935C19FD653300148319 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C3D3935B19FD653300148319 /* Images.xcassets */; }; /* End PBXBuildFile section */ @@ -126,22 +126,22 @@ 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 32CA4F630368D1EE00C91783 /* CPTTestApp_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPTTestApp_Prefix.pch; sourceTree = ""; }; - 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 8D1107320486CEB800E47090 /* CPTTestApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CPTTestApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 90AF4F430F36CF1800753D26 /* CPTTestApp.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = CPTTestApp.xib; path = Resources/CPTTestApp.xib; sourceTree = ""; }; BC8E737C0FC0B3CF00DF8511 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; BC8E74220FC0B96000DF8511 /* RotationView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RotationView.h; path = Source/RotationView.h; sourceTree = ""; }; BC8E74230FC0B96000DF8511 /* RotationView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RotationView.m; path = Source/RotationView.m; sourceTree = ""; }; - C317AB4E1093CC1E00B25011 /* PlotSymbolDemo.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = PlotSymbolDemo.xib; path = Resources/PlotSymbolDemo.xib; sourceTree = ""; }; - C317AB701093E09D00B25011 /* AxisDemo.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = AxisDemo.xib; path = Resources/AxisDemo.xib; sourceTree = ""; }; C317AB731093E17500B25011 /* AxisDemoController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AxisDemoController.m; path = Source/AxisDemoController.m; sourceTree = ""; }; C317AB741093E17500B25011 /* AxisDemoController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AxisDemoController.h; path = Source/AxisDemoController.h; sourceTree = ""; }; C34D4F8C0F8ED78400969C24 /* CPTPlotSymbolTestController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CPTPlotSymbolTestController.m; path = Source/CPTPlotSymbolTestController.m; sourceTree = ""; }; C34D4F8D0F8ED78400969C24 /* CPTPlotSymbolTestController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CPTPlotSymbolTestController.h; path = Source/CPTPlotSymbolTestController.h; sourceTree = ""; }; - C38017DC124132020052B00D /* SelectionDemo.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = SelectionDemo.xib; path = Resources/SelectionDemo.xib; sourceTree = ""; }; + C37A40A620E030C000C4FF48 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Base; path = Base.lproj/Info.plist; sourceTree = ""; }; C38017DF124132610052B00D /* SelectionDemoController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SelectionDemoController.h; path = Source/SelectionDemoController.h; sourceTree = ""; }; C38017E0124132610052B00D /* SelectionDemoController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SelectionDemoController.m; path = Source/SelectionDemoController.m; sourceTree = ""; }; C3880C3919DCD6A000ED0618 /* CorePlotWarnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = CorePlotWarnings.xcconfig; path = ../../framework/xcconfig/CorePlotWarnings.xcconfig; sourceTree = ""; }; + C3D0A1A320E017E400BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/AxisDemo.xib; sourceTree = ""; }; + C3D0A1A420E017E400BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/CPTTestApp.xib; sourceTree = ""; }; + C3D0A1A520E017E400BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/PlotSymbolDemo.xib; sourceTree = ""; }; + C3D0A1A620E017E400BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/SelectionDemo.xib; sourceTree = ""; }; C3D3935B19FD653300148319 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = CPTTestApp/Images.xcassets; sourceTree = ""; }; /* End PBXFileReference section */ @@ -249,13 +249,13 @@ isa = PBXGroup; children = ( C3D3935B19FD653300148319 /* Images.xcassets */, - 8D1107310486CEB800E47090 /* Info.plist */, + C37A40A720E030C000C4FF48 /* Info.plist */, 07C13BBA0FF9322A00BEE616 /* BlueTexture.png */, 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, - C317AB701093E09D00B25011 /* AxisDemo.xib */, - 90AF4F430F36CF1800753D26 /* CPTTestApp.xib */, - C317AB4E1093CC1E00B25011 /* PlotSymbolDemo.xib */, - C38017DC124132020052B00D /* SelectionDemo.xib */, + C3D0A18D20E017C500BA2921 /* AxisDemo.xib */, + C3D0A19C20E017CC00BA2921 /* CPTTestApp.xib */, + C3D0A19F20E017D100BA2921 /* PlotSymbolDemo.xib */, + C3D0A1A220E017D600BA2921 /* SelectionDemo.xib */, ); name = Resources; sourceTree = ""; @@ -311,6 +311,7 @@ Japanese, French, German, + Base, ); mainGroup = 29B97314FDCFA39411CA2CEA /* CPTTestApp */; projectDirPath = ""; @@ -393,11 +394,11 @@ files = ( 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */, C3D3935C19FD653300148319 /* Images.xcassets in Resources */, - 90AF4F440F36CF1800753D26 /* CPTTestApp.xib in Resources */, + C3D0A19A20E017CC00BA2921 /* CPTTestApp.xib in Resources */, 07C13BBB0FF9322A00BEE616 /* BlueTexture.png in Resources */, - C317AB4F1093CC1E00B25011 /* PlotSymbolDemo.xib in Resources */, - C317AB711093E09D00B25011 /* AxisDemo.xib in Resources */, - C38017DD124132020052B00D /* SelectionDemo.xib in Resources */, + C3D0A19D20E017D100BA2921 /* PlotSymbolDemo.xib in Resources */, + C3D0A18B20E017C500BA2921 /* AxisDemo.xib in Resources */, + C3D0A1A020E017D600BA2921 /* SelectionDemo.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -441,6 +442,50 @@ name = InfoPlist.strings; sourceTree = ""; }; + C37A40A720E030C000C4FF48 /* Info.plist */ = { + isa = PBXVariantGroup; + children = ( + C37A40A620E030C000C4FF48 /* Base */, + ); + name = Info.plist; + sourceTree = ""; + }; + C3D0A18D20E017C500BA2921 /* AxisDemo.xib */ = { + isa = PBXVariantGroup; + children = ( + C3D0A1A320E017E400BA2921 /* Base */, + ); + name = AxisDemo.xib; + path = Resources; + sourceTree = ""; + }; + C3D0A19C20E017CC00BA2921 /* CPTTestApp.xib */ = { + isa = PBXVariantGroup; + children = ( + C3D0A1A420E017E400BA2921 /* Base */, + ); + name = CPTTestApp.xib; + path = Resources; + sourceTree = ""; + }; + C3D0A19F20E017D100BA2921 /* PlotSymbolDemo.xib */ = { + isa = PBXVariantGroup; + children = ( + C3D0A1A520E017E400BA2921 /* Base */, + ); + name = PlotSymbolDemo.xib; + path = Resources; + sourceTree = ""; + }; + C3D0A1A220E017D600BA2921 /* SelectionDemo.xib */ = { + isa = PBXVariantGroup; + children = ( + C3D0A1A620E017E400BA2921 /* Base */, + ); + name = SelectionDemo.xib; + path = Resources; + sourceTree = ""; + }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ @@ -460,7 +505,7 @@ GCC_PREFIX_HEADER = CPTTestApp_Prefix.pch; GCC_PREPROCESSOR_DEFINITIONS = ""; GCC_TREAT_WARNINGS_AS_ERRORS = YES; - INFOPLIST_FILE = Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Base.lproj/Info.plist"; INSTALL_PATH = "$(HOME)/Applications"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @loader_path/../Frameworks @executable_path/../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "org.CorePlot.${PRODUCT_NAME:identifier}"; @@ -481,7 +526,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = CPTTestApp_Prefix.pch; GCC_PREPROCESSOR_DEFINITIONS = ""; - INFOPLIST_FILE = Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Base.lproj/Info.plist"; INSTALL_PATH = "$(HOME)/Applications"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @loader_path/../Frameworks @executable_path/../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "org.CorePlot.${PRODUCT_NAME:identifier}"; diff --git a/examples/CPTTestApp/Resources/AxisDemo.xib b/examples/CPTTestApp/Resources/Base.lproj/AxisDemo.xib similarity index 100% rename from examples/CPTTestApp/Resources/AxisDemo.xib rename to examples/CPTTestApp/Resources/Base.lproj/AxisDemo.xib diff --git a/examples/CPTTestApp/Resources/CPTTestApp.xib b/examples/CPTTestApp/Resources/Base.lproj/CPTTestApp.xib similarity index 100% rename from examples/CPTTestApp/Resources/CPTTestApp.xib rename to examples/CPTTestApp/Resources/Base.lproj/CPTTestApp.xib diff --git a/examples/CPTTestApp/Resources/PlotSymbolDemo.xib b/examples/CPTTestApp/Resources/Base.lproj/PlotSymbolDemo.xib similarity index 100% rename from examples/CPTTestApp/Resources/PlotSymbolDemo.xib rename to examples/CPTTestApp/Resources/Base.lproj/PlotSymbolDemo.xib diff --git a/examples/CPTTestApp/Resources/SelectionDemo.xib b/examples/CPTTestApp/Resources/Base.lproj/SelectionDemo.xib similarity index 100% rename from examples/CPTTestApp/Resources/SelectionDemo.xib rename to examples/CPTTestApp/Resources/Base.lproj/SelectionDemo.xib diff --git a/examples/CorePlotGallery/Plot_Gallery_Mac-Info.plist b/examples/CorePlotGallery/Base.lproj/Plot_Gallery_Mac-Info.plist similarity index 100% rename from examples/CorePlotGallery/Plot_Gallery_Mac-Info.plist rename to examples/CorePlotGallery/Base.lproj/Plot_Gallery_Mac-Info.plist diff --git a/examples/CorePlotGallery/Plot_Gallery_iOS-Info.plist b/examples/CorePlotGallery/Base.lproj/Plot_Gallery_iOS-Info.plist similarity index 100% rename from examples/CorePlotGallery/Plot_Gallery_iOS-Info.plist rename to examples/CorePlotGallery/Base.lproj/Plot_Gallery_iOS-Info.plist diff --git a/examples/CorePlotGallery/Plot_Gallery_tvOS-Info.plist b/examples/CorePlotGallery/Base.lproj/Plot_Gallery_tvOS-Info.plist similarity index 100% rename from examples/CorePlotGallery/Plot_Gallery_tvOS-Info.plist rename to examples/CorePlotGallery/Base.lproj/Plot_Gallery_tvOS-Info.plist diff --git a/examples/CorePlotGallery/Plot_Gallery.xcodeproj/project.pbxproj b/examples/CorePlotGallery/Plot_Gallery.xcodeproj/project.pbxproj index 96702f6a1..777da1d8b 100644 --- a/examples/CorePlotGallery/Plot_Gallery.xcodeproj/project.pbxproj +++ b/examples/CorePlotGallery/Plot_Gallery.xcodeproj/project.pbxproj @@ -19,7 +19,6 @@ 4F22FFAF12342DB1006BF615 /* PlotGallery.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F22FFAC12342DB1006BF615 /* PlotGallery.m */; }; 4F22FFB012342DB1006BF615 /* PlotItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F22FFAE12342DB1006BF615 /* PlotItem.m */; }; 4F22FFE8123431D2006BF615 /* Quartz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F22FFE7123431D2006BF615 /* Quartz.framework */; }; - 4F35EBBD12360D89007C3389 /* Icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4F35EBBC12360D89007C3389 /* Icon.icns */; }; 4F35EBF7123611E3007C3389 /* PlotGalleryController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F35EBF4123611E3007C3389 /* PlotGalleryController.m */; }; 4F35EBF8123611E3007C3389 /* PlotView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F35EBF6123611E3007C3389 /* PlotView.m */; }; 4F8E1C14129077C200D2035F /* DatePlot.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F8E1C13129077C200D2035F /* DatePlot.m */; }; @@ -66,12 +65,11 @@ C30D8B411BCAFFC10003BB70 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C30D8B401BCAFFC10003BB70 /* Foundation.framework */; }; C30D8B431BCAFFCB0003BB70 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C30D8B421BCAFFCB0003BB70 /* UIKit.framework */; }; C3457A4D17AD7C5D000880F3 /* PiNumberFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = C3457A4C17AD7C5D000880F3 /* PiNumberFormatter.m */; }; + C3490DD820E025760089F309 /* Icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = C3490DDA20E025760089F309 /* Icon.icns */; }; C34CB5461BC9A83C009270A0 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C34CB5451BC9A83C009270A0 /* Images.xcassets */; }; C34CB5541BC9A889009270A0 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C34CB5481BC9A889009270A0 /* AppDelegate.m */; }; C34CB5551BC9A889009270A0 /* DetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C34CB54A1BC9A889009270A0 /* DetailViewController.m */; }; - C34CB5561BC9A889009270A0 /* Launch Screen.xib in Resources */ = {isa = PBXBuildFile; fileRef = C34CB54B1BC9A889009270A0 /* Launch Screen.xib */; }; C34CB5571BC9A889009270A0 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C34CB54C1BC9A889009270A0 /* main.m */; }; - C34CB5581BC9A889009270A0 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C34CB54D1BC9A889009270A0 /* Main.storyboard */; }; C34CB55A1BC9A889009270A0 /* RootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C34CB5511BC9A889009270A0 /* RootViewController.m */; }; C34CB55B1BC9A889009270A0 /* ThemeTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C34CB5531BC9A889009270A0 /* ThemeTableViewController.m */; }; C34CB5601BC9AB7B009270A0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C34CB55F1BC9AB7B009270A0 /* Foundation.framework */; }; @@ -111,10 +109,12 @@ C3A14BEC13AEB7E700D103EA /* RangePlot.m in Sources */ = {isa = PBXBuildFile; fileRef = C3A14BEB13AEB7E700D103EA /* RangePlot.m */; }; C3A31A5614DF782A00734AB7 /* ColoredBarChart.m in Sources */ = {isa = PBXBuildFile; fileRef = C3A31A5514DF782A00734AB7 /* ColoredBarChart.m */; }; C3AC1410150EDE5C00631001 /* CurvedScatterPlot.m in Sources */ = {isa = PBXBuildFile; fileRef = C3F42A2714D3A75F0044B323 /* CurvedScatterPlot.m */; }; - C3B9C2551BCB186800BD560B /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C3B9C2541BCB186800BD560B /* Main.storyboard */; }; C3B9C26F1BCB237000BD560B /* DetailViewControllerTV.m in Sources */ = {isa = PBXBuildFile; fileRef = C3B9C26A1BCB237000BD560B /* DetailViewControllerTV.m */; }; C3B9C2701BCB237000BD560B /* RootViewControllerTV.m in Sources */ = {isa = PBXBuildFile; fileRef = C3B9C26C1BCB237000BD560B /* RootViewControllerTV.m */; }; C3B9C2711BCB237000BD560B /* ThemeTableViewControllerTV.m in Sources */ = {isa = PBXBuildFile; fileRef = C3B9C26E1BCB237000BD560B /* ThemeTableViewControllerTV.m */; }; + C3D0A1B720E0187600BA2921 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C3D0A1B920E0187600BA2921 /* Main.storyboard */; }; + C3D0A1C420E0188800BA2921 /* Launch Screen.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3D0A1C620E0188800BA2921 /* Launch Screen.xib */; }; + C3D0A1C820E018DE00BA2921 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C3D0A1CA20E018DE00BA2921 /* Main.storyboard */; }; C3D2FE6319FF1D03002CD4D6 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C3D2FE6219FF1D03002CD4D6 /* Images.xcassets */; }; C3D70BA6175EB29E00F27173 /* ImageDemo.m in Sources */ = {isa = PBXBuildFile; fileRef = C3D70BA5175EB29E00F27173 /* ImageDemo.m */; }; C3EF42FD19FC75810060791A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C3EF42FC19FC75810060791A /* Images.xcassets */; }; @@ -245,9 +245,7 @@ 4F22FF4A1234298E006BF615 /* Plot_Gallery_MacAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Plot_Gallery_MacAppDelegate.h; path = src/mac/Plot_Gallery_MacAppDelegate.h; sourceTree = ""; }; 4F22FF4B1234298E006BF615 /* Plot_Gallery_MacAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Plot_Gallery_MacAppDelegate.m; path = src/mac/Plot_Gallery_MacAppDelegate.m; sourceTree = ""; }; 4F22FF5812342A21006BF615 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = InfoPlist.strings; sourceTree = ""; }; - 4F22FF5A12342A21006BF615 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = MainMenu.xib; sourceTree = ""; }; 4F22FF7B12342B5A006BF615 /* Plot_Gallery_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Plot_Gallery_Prefix.pch; sourceTree = ""; }; - 4F22FF7C12342B6E006BF615 /* Plot_Gallery_Mac-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Plot_Gallery_Mac-Info.plist"; sourceTree = ""; }; 4F22FF9A12342D7C006BF615 /* CompositePlot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = CompositePlot.h; path = src/plots/CompositePlot.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 4F22FF9B12342D7C006BF615 /* CompositePlot.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = CompositePlot.m; path = src/plots/CompositePlot.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 4F22FF9C12342D7C006BF615 /* GradientScatterPlot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GradientScatterPlot.h; path = src/plots/GradientScatterPlot.h; sourceTree = ""; }; @@ -263,7 +261,6 @@ 4F22FFAD12342DB1006BF615 /* PlotItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = PlotItem.h; path = src/shared/PlotItem.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 4F22FFAE12342DB1006BF615 /* PlotItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PlotItem.m; path = src/shared/PlotItem.m; sourceTree = ""; }; 4F22FFE7123431D2006BF615 /* Quartz.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quartz.framework; path = System/Library/Frameworks/Quartz.framework; sourceTree = SDKROOT; }; - 4F35EBBC12360D89007C3389 /* Icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = Icon.icns; path = src/mac/Icon.icns; sourceTree = ""; }; 4F35EBF3123611E3007C3389 /* PlotGalleryController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlotGalleryController.h; path = src/mac/PlotGalleryController.h; sourceTree = ""; }; 4F35EBF4123611E3007C3389 /* PlotGalleryController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PlotGalleryController.m; path = src/mac/PlotGalleryController.m; sourceTree = ""; }; 4F35EBF5123611E3007C3389 /* PlotView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlotView.h; path = src/mac/PlotView.h; sourceTree = ""; }; @@ -281,7 +278,6 @@ C30D8AFB1BCAF99D0003BB70 /* AppDelegateTV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AppDelegateTV.h; path = src/tvOS/AppDelegateTV.h; sourceTree = ""; }; C30D8AFC1BCAF99D0003BB70 /* AppDelegateTV.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = AppDelegateTV.m; path = src/tvOS/AppDelegateTV.m; sourceTree = ""; }; C30D8B071BCAF99D0003BB70 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = "Plot Gallery-tvOS/Assets.xcassets"; sourceTree = ""; }; - C30D8B091BCAF99D0003BB70 /* Plot_Gallery_tvOS-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Plot_Gallery_tvOS-Info.plist"; sourceTree = ""; }; C30D8B3A1BCAFFAE0003BB70 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.0.sdk/System/Library/Frameworks/Accelerate.framework; sourceTree = DEVELOPER_DIR; }; C30D8B3C1BCAFFB50003BB70 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; C30D8B3E1BCAFFBB0003BB70 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; @@ -289,20 +285,21 @@ C30D8B421BCAFFCB0003BB70 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; C3457A4B17AD7C5D000880F3 /* PiNumberFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PiNumberFormatter.h; path = src/shared/PiNumberFormatter.h; sourceTree = ""; }; C3457A4C17AD7C5D000880F3 /* PiNumberFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PiNumberFormatter.m; path = src/shared/PiNumberFormatter.m; sourceTree = ""; }; + C3490DCC20E025660089F309 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Base; path = "Base.lproj/Plot_Gallery_Mac-Info.plist"; sourceTree = ""; }; + C3490DD920E025760089F309 /* Base */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = Base; path = Base.lproj/Icon.icns; sourceTree = ""; }; + C3490DDB20E025B60089F309 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Base; path = "Base.lproj/Plot_Gallery_iOS-Info.plist"; sourceTree = ""; }; + C3490DDF20E026410089F309 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Base; path = "Base.lproj/Plot_Gallery_tvOS-Info.plist"; sourceTree = ""; }; C34CB52E1BC9A76A009270A0 /* Plot Gallery-iOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Plot Gallery-iOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; C34CB5451BC9A83C009270A0 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = "Plot Gallery-iOS/Images.xcassets"; sourceTree = ""; }; C34CB5471BC9A889009270A0 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = src/ios/AppDelegate.h; sourceTree = ""; }; C34CB5481BC9A889009270A0 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = src/ios/AppDelegate.m; sourceTree = ""; }; C34CB5491BC9A889009270A0 /* DetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DetailViewController.h; path = src/ios/DetailViewController.h; sourceTree = ""; }; C34CB54A1BC9A889009270A0 /* DetailViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DetailViewController.m; path = src/ios/DetailViewController.m; sourceTree = ""; }; - C34CB54B1BC9A889009270A0 /* Launch Screen.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = "Launch Screen.xib"; path = "src/ios/Launch Screen.xib"; sourceTree = ""; }; C34CB54C1BC9A889009270A0 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = src/ios/main.m; sourceTree = ""; }; - C34CB54D1BC9A889009270A0 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = Main.storyboard; path = src/ios/Main.storyboard; sourceTree = ""; }; C34CB5501BC9A889009270A0 /* RootViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RootViewController.h; path = src/ios/RootViewController.h; sourceTree = ""; }; C34CB5511BC9A889009270A0 /* RootViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RootViewController.m; path = src/ios/RootViewController.m; sourceTree = ""; }; C34CB5521BC9A889009270A0 /* ThemeTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThemeTableViewController.h; path = src/ios/ThemeTableViewController.h; sourceTree = ""; }; C34CB5531BC9A889009270A0 /* ThemeTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ThemeTableViewController.m; path = src/ios/ThemeTableViewController.m; sourceTree = ""; }; - C34CB55D1BC9A936009270A0 /* Plot_Gallery_iOS-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Plot_Gallery_iOS-Info.plist"; sourceTree = ""; }; C34CB55F1BC9AB7B009270A0 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; C34CB5611BC9AB85009270A0 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; C34CB5631BC9AB8C009270A0 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; @@ -326,7 +323,6 @@ C3A14BEB13AEB7E700D103EA /* RangePlot.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RangePlot.m; path = src/plots/RangePlot.m; sourceTree = ""; }; C3A31A5414DF782A00734AB7 /* ColoredBarChart.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ColoredBarChart.h; path = src/plots/ColoredBarChart.h; sourceTree = ""; }; C3A31A5514DF782A00734AB7 /* ColoredBarChart.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = ColoredBarChart.m; path = src/plots/ColoredBarChart.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - C3B9C2541BCB186800BD560B /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = Main.storyboard; path = src/tvOS/Main.storyboard; sourceTree = ""; }; C3B9C2691BCB237000BD560B /* DetailViewControllerTV.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DetailViewControllerTV.h; path = src/tvOS/DetailViewControllerTV.h; sourceTree = ""; }; C3B9C26A1BCB237000BD560B /* DetailViewControllerTV.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DetailViewControllerTV.m; path = src/tvOS/DetailViewControllerTV.m; sourceTree = ""; }; C3B9C26B1BCB237000BD560B /* RootViewControllerTV.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RootViewControllerTV.h; path = src/tvOS/RootViewControllerTV.h; sourceTree = ""; }; @@ -334,6 +330,10 @@ C3B9C26D1BCB237000BD560B /* ThemeTableViewControllerTV.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThemeTableViewControllerTV.h; path = src/tvOS/ThemeTableViewControllerTV.h; sourceTree = ""; }; C3B9C26E1BCB237000BD560B /* ThemeTableViewControllerTV.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ThemeTableViewControllerTV.m; path = src/tvOS/ThemeTableViewControllerTV.m; sourceTree = ""; }; C3C0DF2719D86B5E00631CAD /* CorePlotWarnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = CorePlotWarnings.xcconfig; path = ../../framework/xcconfig/CorePlotWarnings.xcconfig; sourceTree = ""; }; + C3D0A1B820E0187600BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + C3D0A1C520E0188800BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = "Base.lproj/Launch Screen.xib"; sourceTree = ""; }; + C3D0A1C720E0189900BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = ../Base.lproj/MainMenu.xib; sourceTree = ""; }; + C3D0A1C920E018DE00BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; C3D2FE6219FF1D03002CD4D6 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = img/Images.xcassets; sourceTree = ""; }; C3D70BA4175EB29E00F27173 /* ImageDemo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ImageDemo.h; path = src/plots/ImageDemo.h; sourceTree = ""; }; C3D70BA5175EB29E00F27173 /* ImageDemo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = ImageDemo.m; path = src/plots/ImageDemo.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; @@ -442,8 +442,8 @@ isa = PBXGroup; children = ( C3EF42FC19FC75810060791A /* Images.xcassets */, - 4F35EBBC12360D89007C3389 /* Icon.icns */, - 4F22FF7C12342B6E006BF615 /* Plot_Gallery_Mac-Info.plist */, + C3490DDA20E025760089F309 /* Icon.icns */, + C3490DCD20E025660089F309 /* Plot_Gallery_Mac-Info.plist */, 4F22FF5912342A21006BF615 /* MainMenu.xib */, 4F22FF5712342A21006BF615 /* InfoPlist.strings */, ); @@ -566,8 +566,8 @@ isa = PBXGroup; children = ( C30D8B071BCAF99D0003BB70 /* Assets.xcassets */, - C30D8B091BCAF99D0003BB70 /* Plot_Gallery_tvOS-Info.plist */, - C3B9C2541BCB186800BD560B /* Main.storyboard */, + C3490DE020E026410089F309 /* Plot_Gallery_tvOS-Info.plist */, + C3D0A1CA20E018DE00BA2921 /* Main.storyboard */, ); name = Resources; sourceTree = ""; @@ -593,9 +593,9 @@ isa = PBXGroup; children = ( C34CB5451BC9A83C009270A0 /* Images.xcassets */, - C34CB55D1BC9A936009270A0 /* Plot_Gallery_iOS-Info.plist */, - C34CB54D1BC9A889009270A0 /* Main.storyboard */, - C34CB54B1BC9A889009270A0 /* Launch Screen.xib */, + C3490DDC20E025B60089F309 /* Plot_Gallery_iOS-Info.plist */, + C3D0A1B920E0187600BA2921 /* Main.storyboard */, + C3D0A1C620E0188800BA2921 /* Launch Screen.xib */, ); name = Resources; sourceTree = ""; @@ -712,6 +712,7 @@ French, German, Base, + en, ); mainGroup = 29B97314FDCFA39411CA2CEA /* Plot Gallery-Mac */; projectDirPath = ""; @@ -798,7 +799,7 @@ 4F22FF5B12342A21006BF615 /* InfoPlist.strings in Resources */, C3EF42FD19FC75810060791A /* Images.xcassets in Resources */, 4F22FF5C12342A21006BF615 /* MainMenu.xib in Resources */, - 4F35EBBD12360D89007C3389 /* Icon.icns in Resources */, + C3490DD820E025760089F309 /* Icon.icns in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -808,7 +809,7 @@ files = ( C30D8B211BCAFD3E0003BB70 /* Images.xcassets in Resources */, C30D8B081BCAF99D0003BB70 /* Assets.xcassets in Resources */, - C3B9C2551BCB186800BD560B /* Main.storyboard in Resources */, + C3D0A1C820E018DE00BA2921 /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -818,8 +819,8 @@ files = ( C34CB5461BC9A83C009270A0 /* Images.xcassets in Resources */, C367EEE21BCAEA9E00A21FE7 /* Images.xcassets in Resources */, - C34CB5581BC9A889009270A0 /* Main.storyboard in Resources */, - C34CB5561BC9A889009270A0 /* Launch Screen.xib in Resources */, + C3D0A1B720E0187600BA2921 /* Main.storyboard in Resources */, + C3D0A1C420E0188800BA2921 /* Launch Screen.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -974,12 +975,72 @@ 4F22FF5912342A21006BF615 /* MainMenu.xib */ = { isa = PBXVariantGroup; children = ( - 4F22FF5A12342A21006BF615 /* English */, + C3D0A1C720E0189900BA2921 /* Base */, ); name = MainMenu.xib; path = src/mac/English.lproj; sourceTree = ""; }; + C3490DCD20E025660089F309 /* Plot_Gallery_Mac-Info.plist */ = { + isa = PBXVariantGroup; + children = ( + C3490DCC20E025660089F309 /* Base */, + ); + name = "Plot_Gallery_Mac-Info.plist"; + sourceTree = ""; + }; + C3490DDA20E025760089F309 /* Icon.icns */ = { + isa = PBXVariantGroup; + children = ( + C3490DD920E025760089F309 /* Base */, + ); + name = Icon.icns; + path = src/mac; + sourceTree = ""; + }; + C3490DDC20E025B60089F309 /* Plot_Gallery_iOS-Info.plist */ = { + isa = PBXVariantGroup; + children = ( + C3490DDB20E025B60089F309 /* Base */, + ); + name = "Plot_Gallery_iOS-Info.plist"; + sourceTree = ""; + }; + C3490DE020E026410089F309 /* Plot_Gallery_tvOS-Info.plist */ = { + isa = PBXVariantGroup; + children = ( + C3490DDF20E026410089F309 /* Base */, + ); + name = "Plot_Gallery_tvOS-Info.plist"; + sourceTree = ""; + }; + C3D0A1B920E0187600BA2921 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + C3D0A1B820E0187600BA2921 /* Base */, + ); + name = Main.storyboard; + path = src/ios; + sourceTree = ""; + }; + C3D0A1C620E0188800BA2921 /* Launch Screen.xib */ = { + isa = PBXVariantGroup; + children = ( + C3D0A1C520E0188800BA2921 /* Base */, + ); + name = "Launch Screen.xib"; + path = src/ios; + sourceTree = ""; + }; + C3D0A1CA20E018DE00BA2921 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + C3D0A1C920E018DE00BA2921 /* Base */, + ); + name = Main.storyboard; + path = src/tvOS; + sourceTree = ""; + }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ @@ -995,10 +1056,10 @@ GCC_DYNAMIC_NO_PIC = NO; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; - INFOPLIST_FILE = "Plot_Gallery_Mac-Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Base.lproj/Plot_Gallery_Mac-Info.plist"; INSTALL_PATH = "$(HOME)/Applications"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @loader_path/../Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 10.7; + MACOSX_DEPLOYMENT_TARGET = 10.8; OTHER_LDFLAGS = ( "-ObjC", "-all_load", @@ -1021,10 +1082,10 @@ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = s; - INFOPLIST_FILE = "Plot_Gallery_Mac-Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Base.lproj/Plot_Gallery_Mac-Info.plist"; INSTALL_PATH = "$(HOME)/Applications"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @loader_path/../Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 10.7; + MACOSX_DEPLOYMENT_TARGET = 10.8; OTHER_LDFLAGS = ( "-ObjC", "-all_load", @@ -1153,7 +1214,7 @@ GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; - INFOPLIST_FILE = "Plot_Gallery_tvOS-Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Base.lproj/Plot_Gallery_tvOS-Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = YES; PRODUCT_BUNDLE_IDENTIFIER = "com.CorePlot.Plot-Gallery-tvOS"; @@ -1193,7 +1254,7 @@ GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; - INFOPLIST_FILE = "Plot_Gallery_tvOS-Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Base.lproj/Plot_Gallery_tvOS-Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = "com.CorePlot.Plot-Gallery-tvOS"; @@ -1238,7 +1299,7 @@ GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; - INFOPLIST_FILE = "Plot_Gallery_iOS-Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Base.lproj/Plot_Gallery_iOS-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = YES; @@ -1278,7 +1339,7 @@ GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; - INFOPLIST_FILE = "Plot_Gallery_iOS-Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Base.lproj/Plot_Gallery_iOS-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = NO; diff --git a/examples/CorePlotGallery/src/ios/Launch Screen.xib b/examples/CorePlotGallery/src/ios/Base.lproj/Launch Screen.xib similarity index 59% rename from examples/CorePlotGallery/src/ios/Launch Screen.xib rename to examples/CorePlotGallery/src/ios/Base.lproj/Launch Screen.xib index a932c3b64..8a42da815 100644 --- a/examples/CorePlotGallery/src/ios/Launch Screen.xib +++ b/examples/CorePlotGallery/src/ios/Base.lproj/Launch Screen.xib @@ -1,27 +1,28 @@ - - + + + + + - - + + - + - - - + diff --git a/examples/CorePlotGallery/src/ios/Main.storyboard b/examples/CorePlotGallery/src/ios/Base.lproj/Main.storyboard similarity index 85% rename from examples/CorePlotGallery/src/ios/Main.storyboard rename to examples/CorePlotGallery/src/ios/Base.lproj/Main.storyboard index 99440a43b..949e2f780 100644 --- a/examples/CorePlotGallery/src/ios/Main.storyboard +++ b/examples/CorePlotGallery/src/ios/Base.lproj/Main.storyboard @@ -1,9 +1,12 @@ - - + + + + + - - + + @@ -11,8 +14,8 @@ + - @@ -31,17 +34,15 @@ - + - - - + + - - + @@ -66,37 +67,33 @@ - + - + - - + - + - + - - @@ -129,31 +126,27 @@ - + - - + - + - + - - - + @@ -176,8 +169,8 @@ + - diff --git a/examples/CorePlotGallery/src/mac/Icon.icns b/examples/CorePlotGallery/src/mac/Base.lproj/Icon.icns similarity index 100% rename from examples/CorePlotGallery/src/mac/Icon.icns rename to examples/CorePlotGallery/src/mac/Base.lproj/Icon.icns diff --git a/examples/CorePlotGallery/src/mac/English.lproj/MainMenu.xib b/examples/CorePlotGallery/src/mac/Base.lproj/MainMenu.xib similarity index 100% rename from examples/CorePlotGallery/src/mac/English.lproj/MainMenu.xib rename to examples/CorePlotGallery/src/mac/Base.lproj/MainMenu.xib diff --git a/examples/CorePlotGallery/src/mac/en.lproj/MainMenu.strings b/examples/CorePlotGallery/src/mac/en.lproj/MainMenu.strings new file mode 100644 index 000000000..e11842f48 --- /dev/null +++ b/examples/CorePlotGallery/src/mac/en.lproj/MainMenu.strings @@ -0,0 +1,129 @@ + +/* Class = "NSMenuItem"; title = "Bring All to Front"; ObjectID = "5"; */ +"5.title" = "Bring All to Front"; + +/* Class = "NSMenuItem"; title = "Window"; ObjectID = "19"; */ +"19.title" = "Window"; + +/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "23"; */ +"23.title" = "Minimize"; + +/* Class = "NSMenu"; title = "Window"; ObjectID = "24"; */ +"24.title" = "Window"; + +/* Class = "NSMenu"; title = "AMainMenu"; ObjectID = "29"; */ +"29.title" = "AMainMenu"; + +/* Class = "NSMenuItem"; title = "Plot Gallery"; ObjectID = "56"; */ +"56.title" = "Plot Gallery"; + +/* Class = "NSMenu"; title = "Plot Gallery"; ObjectID = "57"; */ +"57.title" = "Plot Gallery"; + +/* Class = "NSMenuItem"; title = "About Plot Gallery"; ObjectID = "58"; */ +"58.title" = "About Plot Gallery"; + +/* Class = "NSMenuItem"; title = "Close"; ObjectID = "73"; */ +"73.title" = "Close"; + +/* Class = "NSMenuItem"; title = "Page Setup..."; ObjectID = "77"; */ +"77.title" = "Page Setup..."; + +/* Class = "NSMenuItem"; title = "Print…"; ObjectID = "78"; */ +"78.title" = "Print…"; + +/* Class = "NSMenu"; title = "File"; ObjectID = "81"; */ +"81.title" = "File"; + +/* Class = "NSMenuItem"; title = "File"; ObjectID = "83"; */ +"83.title" = "File"; + +/* Class = "NSMenuItem"; title = "Preferences…"; ObjectID = "129"; */ +"129.title" = "Preferences…"; + +/* Class = "NSMenu"; title = "Services"; ObjectID = "130"; */ +"130.title" = "Services"; + +/* Class = "NSMenuItem"; title = "Services"; ObjectID = "131"; */ +"131.title" = "Services"; + +/* Class = "NSMenuItem"; title = "Hide Plot Gallery"; ObjectID = "134"; */ +"134.title" = "Hide Plot Gallery"; + +/* Class = "NSMenuItem"; title = "Quit Plot Gallery"; ObjectID = "136"; */ +"136.title" = "Quit Plot Gallery"; + +/* Class = "NSMenuItem"; title = "Hide Others"; ObjectID = "145"; */ +"145.title" = "Hide Others"; + +/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "150"; */ +"150.title" = "Show All"; + +/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "197"; */ +"197.title" = "Copy"; + +/* Class = "NSMenuItem"; title = "Select All"; ObjectID = "198"; */ +"198.title" = "Select All"; + +/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "199"; */ +"199.title" = "Cut"; + +/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "202"; */ +"202.title" = "Delete"; + +/* Class = "NSMenuItem"; title = "Paste"; ObjectID = "203"; */ +"203.title" = "Paste"; + +/* Class = "NSMenu"; title = "Edit"; ObjectID = "205"; */ +"205.title" = "Edit"; + +/* Class = "NSMenuItem"; title = "Undo"; ObjectID = "207"; */ +"207.title" = "Undo"; + +/* Class = "NSMenuItem"; title = "Redo"; ObjectID = "215"; */ +"215.title" = "Redo"; + +/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "217"; */ +"217.title" = "Edit"; + +/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "239"; */ +"239.title" = "Zoom"; + +/* Class = "NSMenuItem"; title = "View"; ObjectID = "295"; */ +"295.title" = "View"; + +/* Class = "NSMenu"; title = "View"; ObjectID = "296"; */ +"296.title" = "View"; + +/* Class = "NSMenuItem"; title = "Show Toolbar"; ObjectID = "297"; */ +"297.title" = "Show Toolbar"; + +/* Class = "NSMenuItem"; title = "Customize Toolbar…"; ObjectID = "298"; */ +"298.title" = "Customize Toolbar…"; + +/* Class = "NSWindow"; title = "Plot Gallery-Mac"; ObjectID = "371"; */ +"371.title" = "Plot Gallery-Mac"; + +/* Class = "NSMenuItem"; title = "Paste and Match Style"; ObjectID = "485"; */ +"485.title" = "Paste and Match Style"; + +/* Class = "NSMenuItem"; title = "Help"; ObjectID = "490"; */ +"490.title" = "Help"; + +/* Class = "NSMenu"; title = "Help"; ObjectID = "491"; */ +"491.title" = "Help"; + +/* Class = "NSMenuItem"; title = "Plot Gallery Help"; ObjectID = "492"; */ +"492.title" = "Plot Gallery Help"; + +/* Class = "NSMenu"; title = "OtherViews"; ObjectID = "558"; */ +"558.title" = "OtherViews"; + +/* Class = "NSToolbarItem"; label = "Theme"; ObjectID = "562"; */ +"562.label" = "Theme"; + +/* Class = "NSToolbarItem"; paletteLabel = "Theme"; ObjectID = "562"; */ +"562.paletteLabel" = "Theme"; + +/* Class = "NSMenuItem"; title = "Save TV Images…"; ObjectID = "JRn-xt-TSn"; */ +"JRn-xt-TSn.title" = "Save TV Images…"; diff --git a/examples/CorePlotGallery/src/tvOS/Main.storyboard b/examples/CorePlotGallery/src/tvOS/Base.lproj/Main.storyboard similarity index 100% rename from examples/CorePlotGallery/src/tvOS/Main.storyboard rename to examples/CorePlotGallery/src/tvOS/Base.lproj/Main.storyboard diff --git a/examples/DatePlot/DatePlot.xib b/examples/DatePlot/Base.lproj/DatePlot.xib similarity index 100% rename from examples/DatePlot/DatePlot.xib rename to examples/DatePlot/Base.lproj/DatePlot.xib diff --git a/examples/DatePlot/Info.plist b/examples/DatePlot/Base.lproj/Info.plist similarity index 100% rename from examples/DatePlot/Info.plist rename to examples/DatePlot/Base.lproj/Info.plist diff --git a/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj b/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj index f182143fd..6baa45917 100644 --- a/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj +++ b/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj @@ -11,10 +11,10 @@ 0761850B0F3CB1E800A89A76 /* CorePlot.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 076184C10F3CAD5900A89A76 /* CorePlot.framework */; }; 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; - 90AF4F440F36CF1800753D26 /* DatePlot.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90AF4F430F36CF1800753D26 /* DatePlot.xib */; }; BC8E737D0FC0B3CF00DF8511 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC8E737C0FC0B3CF00DF8511 /* QuartzCore.framework */; }; C33E19A8198330CA00182AF2 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33E19A7198330CA00182AF2 /* AppDelegate.swift */; }; C3A14440197DE35F0048F1FF /* DateController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3A1443F197DE35F0048F1FF /* DateController.swift */; }; + C3D0A1A720E0183A00BA2921 /* DatePlot.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3D0A1A920E0183A00BA2921 /* DatePlot.xib */; }; C3D3937419FD6E3500148319 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C3D3937319FD6E3500148319 /* Images.xcassets */; }; /* End PBXBuildFile section */ @@ -107,14 +107,14 @@ 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; - 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 8D1107320486CEB800E47090 /* DatePlot.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DatePlot.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 90AF4F430F36CF1800753D26 /* DatePlot.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = DatePlot.xib; sourceTree = ""; }; BC8E737C0FC0B3CF00DF8511 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; C33E19A7198330CA00182AF2 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = Source/AppDelegate.swift; sourceTree = ""; }; + C37A409820E030B500C4FF48 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Base; path = Base.lproj/Info.plist; sourceTree = ""; }; C3A1443E197DE35F0048F1FF /* DatePlot-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "DatePlot-Bridging-Header.h"; sourceTree = ""; }; C3A1443F197DE35F0048F1FF /* DateController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = DateController.swift; path = Source/DateController.swift; sourceTree = ""; }; C3C3CBBF19EA07F600A0296A /* CorePlotWarnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = CorePlotWarnings.xcconfig; path = ../../framework/xcconfig/CorePlotWarnings.xcconfig; sourceTree = ""; }; + C3D0A1B620E0184100BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/DatePlot.xib; sourceTree = ""; }; C3D3937319FD6E3500148319 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = DatePlot/Images.xcassets; sourceTree = ""; }; /* End PBXFileReference section */ @@ -206,8 +206,8 @@ isa = PBXGroup; children = ( C3D3937319FD6E3500148319 /* Images.xcassets */, - 90AF4F430F36CF1800753D26 /* DatePlot.xib */, - 8D1107310486CEB800E47090 /* Info.plist */, + C3D0A1A920E0183A00BA2921 /* DatePlot.xib */, + C37A409920E030B500C4FF48 /* Info.plist */, 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, ); name = Resources; @@ -277,6 +277,7 @@ Japanese, French, German, + Base, ); mainGroup = 29B97314FDCFA39411CA2CEA /* CPTTestApp */; projectDirPath = ""; @@ -359,7 +360,7 @@ files = ( 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */, C3D3937419FD6E3500148319 /* Images.xcassets in Resources */, - 90AF4F440F36CF1800753D26 /* DatePlot.xib in Resources */, + C3D0A1A720E0183A00BA2921 /* DatePlot.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -394,6 +395,22 @@ name = InfoPlist.strings; sourceTree = ""; }; + C37A409920E030B500C4FF48 /* Info.plist */ = { + isa = PBXVariantGroup; + children = ( + C37A409820E030B500C4FF48 /* Base */, + ); + name = Info.plist; + sourceTree = ""; + }; + C3D0A1A920E0183A00BA2921 /* DatePlot.xib */ = { + isa = PBXVariantGroup; + children = ( + C3D0A1B620E0184100BA2921 /* Base */, + ); + name = DatePlot.xib; + sourceTree = ""; + }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ @@ -414,7 +431,7 @@ GCC_PREFIX_HEADER = DatePlot_Prefix.pch; GCC_PREPROCESSOR_DEFINITIONS = ""; GCC_TREAT_WARNINGS_AS_ERRORS = YES; - INFOPLIST_FILE = Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Base.lproj/Info.plist"; INSTALL_PATH = "$(HOME)/Applications"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @loader_path/../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "org.CorePlot.${PRODUCT_NAME:identifier}"; @@ -439,12 +456,11 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = DatePlot_Prefix.pch; GCC_PREPROCESSOR_DEFINITIONS = ""; - INFOPLIST_FILE = Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Base.lproj/Info.plist"; INSTALL_PATH = "$(HOME)/Applications"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @loader_path/../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "org.CorePlot.${PRODUCT_NAME:identifier}"; PRODUCT_NAME = DatePlot; - SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OBJC_BRIDGING_HEADER = "DatePlot-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_VERSION = 3.0; diff --git a/examples/DropPlot/English.lproj/CPTPlotDocument.xib b/examples/DropPlot/Base.lproj/CPTPlotDocument.xib similarity index 100% rename from examples/DropPlot/English.lproj/CPTPlotDocument.xib rename to examples/DropPlot/Base.lproj/CPTPlotDocument.xib diff --git a/examples/DropPlot/Info.plist b/examples/DropPlot/Base.lproj/Info.plist similarity index 100% rename from examples/DropPlot/Info.plist rename to examples/DropPlot/Base.lproj/Info.plist diff --git a/examples/DropPlot/English.lproj/MainMenu.xib b/examples/DropPlot/Base.lproj/MainMenu.xib similarity index 100% rename from examples/DropPlot/English.lproj/MainMenu.xib rename to examples/DropPlot/Base.lproj/MainMenu.xib diff --git a/examples/DropPlot/DropPlot.xcodeproj/project.pbxproj b/examples/DropPlot/DropPlot.xcodeproj/project.pbxproj index 6461ca6c7..c616593df 100644 --- a/examples/DropPlot/DropPlot.xcodeproj/project.pbxproj +++ b/examples/DropPlot/DropPlot.xcodeproj/project.pbxproj @@ -105,8 +105,6 @@ 089C1660FE840EACC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 13E42FBA07B3F13500E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; - 1DDD58290DA1D0D100B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/CPTPlotDocument.xib; sourceTree = ""; }; - 1DDD582B0DA1D0D100B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = ""; }; 2A37F4ACFDCFA73011CA2CEA /* CPTPlotDocument.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = CPTPlotDocument.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 2A37F4AEFDCFA73011CA2CEA /* CPTPlotDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPTPlotDocument.h; sourceTree = ""; }; 2A37F4B0FDCFA73011CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; @@ -114,14 +112,16 @@ 2A37F4C4FDCFA73011CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 2A37F4C5FDCFA73011CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 32DBCF750370BD2300C91783 /* DropPlot_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DropPlot_Prefix.pch; sourceTree = ""; }; - 8D15AC360486D014006FF6A4 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 8D15AC370486D014006FF6A4 /* DropPlot.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DropPlot.app; sourceTree = BUILT_PRODUCTS_DIR; }; BC00E6470FE1BF0A00DE81E0 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; BC93AA7C0FDEFEAC00606226 /* CorePlot.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = CorePlot.xcodeproj; path = ../../framework/CorePlot.xcodeproj; sourceTree = SOURCE_ROOT; }; BC93AAF40FDF3F0200606226 /* NSString+ParseCSV.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+ParseCSV.h"; sourceTree = ""; }; BC93AAF50FDF3F0200606226 /* NSString+ParseCSV.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+ParseCSV.m"; sourceTree = ""; }; + C37A40A820E0314800C4FF48 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Base; path = Base.lproj/Info.plist; sourceTree = ""; }; C3D3937719FD705000148319 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = DropPlot/Images.xcassets; sourceTree = ""; }; C3D6210E19DF72E000652CE7 /* CorePlotWarnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = CorePlotWarnings.xcconfig; path = ../../framework/xcconfig/CorePlotWarnings.xcconfig; sourceTree = ""; }; + C3DA082A20E00C3C00F73704 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/CPTPlotDocument.xib; sourceTree = ""; }; + C3DA082B20E00C3C00F73704 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -207,7 +207,7 @@ children = ( C3D3937719FD705000148319 /* Images.xcassets */, 2A37F4B9FDCFA73011CA2CEA /* Credits.rtf */, - 8D15AC360486D014006FF6A4 /* Info.plist */, + C37A40A920E0314800C4FF48 /* Info.plist */, 089C165FFE840EACC02AAC07 /* InfoPlist.strings */, 1DDD58280DA1D0D100B32029 /* CPTPlotDocument.xib */, 1DDD582A0DA1D0D100B32029 /* MainMenu.xib */, @@ -279,6 +279,7 @@ Japanese, French, German, + Base, ); mainGroup = 2A37F4AAFDCFA73011CA2CEA /* DropPlot */; projectDirPath = ""; @@ -402,7 +403,7 @@ 1DDD58280DA1D0D100B32029 /* CPTPlotDocument.xib */ = { isa = PBXVariantGroup; children = ( - 1DDD58290DA1D0D100B32029 /* English */, + C3DA082A20E00C3C00F73704 /* Base */, ); name = CPTPlotDocument.xib; sourceTree = ""; @@ -410,7 +411,7 @@ 1DDD582A0DA1D0D100B32029 /* MainMenu.xib */ = { isa = PBXVariantGroup; children = ( - 1DDD582B0DA1D0D100B32029 /* English */, + C3DA082B20E00C3C00F73704 /* Base */, ); name = MainMenu.xib; sourceTree = ""; @@ -423,6 +424,14 @@ name = Credits.rtf; sourceTree = ""; }; + C37A40A920E0314800C4FF48 /* Info.plist */ = { + isa = PBXVariantGroup; + children = ( + C37A40A820E0314800C4FF48 /* Base */, + ); + name = Info.plist; + sourceTree = ""; + }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ @@ -440,7 +449,7 @@ GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = DropPlot_Prefix.pch; - INFOPLIST_FILE = Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Base.lproj/Info.plist"; INSTALL_PATH = "$(HOME)/Applications"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @loader_path/../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "org.CorePlot.${PRODUCT_NAME:identifier}"; @@ -461,7 +470,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = DropPlot_Prefix.pch; HEADER_SEARCH_PATHS = ""; - INFOPLIST_FILE = Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Base.lproj/Info.plist"; INSTALL_PATH = "$(HOME)/Applications"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @loader_path/../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "org.CorePlot.${PRODUCT_NAME:identifier}"; diff --git a/examples/MinorTickLabels/Info.plist b/examples/MinorTickLabels/Base.lproj/Info.plist similarity index 100% rename from examples/MinorTickLabels/Info.plist rename to examples/MinorTickLabels/Base.lproj/Info.plist diff --git a/examples/MinorTickLabels/minorTickFormatter.xib b/examples/MinorTickLabels/Base.lproj/minorTickFormatter.xib similarity index 100% rename from examples/MinorTickLabels/minorTickFormatter.xib rename to examples/MinorTickLabels/Base.lproj/minorTickFormatter.xib diff --git a/examples/MinorTickLabels/minorTickFormatter.xcodeproj/project.pbxproj b/examples/MinorTickLabels/minorTickFormatter.xcodeproj/project.pbxproj index e1bc49e80..069150b92 100644 --- a/examples/MinorTickLabels/minorTickFormatter.xcodeproj/project.pbxproj +++ b/examples/MinorTickLabels/minorTickFormatter.xcodeproj/project.pbxproj @@ -13,8 +13,8 @@ 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; 8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; - 90AF4F440F36CF1800753D26 /* minorTickFormatter.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90AF4F430F36CF1800753D26 /* minorTickFormatter.xib */; }; BC8E737D0FC0B3CF00DF8511 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC8E737C0FC0B3CF00DF8511 /* QuartzCore.framework */; }; + C3D0A1CB20E0195800BA2921 /* minorTickFormatter.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3D0A1CD20E0195800BA2921 /* minorTickFormatter.xib */; }; C3D3937C19FD732200148319 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C3D3937B19FD732200148319 /* Images.xcassets */; }; /* End PBXBuildFile section */ @@ -111,11 +111,11 @@ 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 32CA4F630368D1EE00C91783 /* minorTickFormatter_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = minorTickFormatter_Prefix.pch; sourceTree = ""; }; - 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 8D1107320486CEB800E47090 /* minorTickFormatter.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = minorTickFormatter.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 90AF4F430F36CF1800753D26 /* minorTickFormatter.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = minorTickFormatter.xib; sourceTree = ""; }; BC8E737C0FC0B3CF00DF8511 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + C37A40B620E0316900C4FF48 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Base; path = Base.lproj/Info.plist; sourceTree = ""; }; C37FFB5D19E1ECF0003F34C5 /* CorePlotWarnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = CorePlotWarnings.xcconfig; path = ../../framework/xcconfig/CorePlotWarnings.xcconfig; sourceTree = ""; }; + C3D0A1DA20E0195F00BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/minorTickFormatter.xib; sourceTree = ""; }; C3D3937B19FD732200148319 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = minorTickFormatter/Images.xcassets; sourceTree = ""; }; /* End PBXFileReference section */ @@ -216,8 +216,8 @@ isa = PBXGroup; children = ( C3D3937B19FD732200148319 /* Images.xcassets */, - 90AF4F430F36CF1800753D26 /* minorTickFormatter.xib */, - 8D1107310486CEB800E47090 /* Info.plist */, + C3D0A1CD20E0195800BA2921 /* minorTickFormatter.xib */, + C37A40B720E0316900C4FF48 /* Info.plist */, 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, ); name = Resources; @@ -273,6 +273,7 @@ Japanese, French, German, + Base, ); mainGroup = 29B97314FDCFA39411CA2CEA /* CPTTestApp */; projectDirPath = ""; @@ -355,7 +356,7 @@ files = ( 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */, C3D3937C19FD732200148319 /* Images.xcassets in Resources */, - 90AF4F440F36CF1800753D26 /* minorTickFormatter.xib in Resources */, + C3D0A1CB20E0195800BA2921 /* minorTickFormatter.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -390,6 +391,22 @@ name = InfoPlist.strings; sourceTree = ""; }; + C37A40B720E0316900C4FF48 /* Info.plist */ = { + isa = PBXVariantGroup; + children = ( + C37A40B620E0316900C4FF48 /* Base */, + ); + name = Info.plist; + sourceTree = ""; + }; + C3D0A1CD20E0195800BA2921 /* minorTickFormatter.xib */ = { + isa = PBXVariantGroup; + children = ( + C3D0A1DA20E0195F00BA2921 /* Base */, + ); + name = minorTickFormatter.xib; + sourceTree = ""; + }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ @@ -409,7 +426,7 @@ GCC_PREFIX_HEADER = minorTickFormatter_Prefix.pch; GCC_PREPROCESSOR_DEFINITIONS = ""; GCC_TREAT_WARNINGS_AS_ERRORS = YES; - INFOPLIST_FILE = Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Base.lproj/Info.plist"; INSTALL_PATH = "$(HOME)/Applications"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @loader_path/../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "org.CorePlot.${PRODUCT_NAME:identifier}"; @@ -430,7 +447,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = minorTickFormatter_Prefix.pch; GCC_PREPROCESSOR_DEFINITIONS = ""; - INFOPLIST_FILE = Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Base.lproj/Info.plist"; INSTALL_PATH = "$(HOME)/Applications"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @loader_path/../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "org.CorePlot.${PRODUCT_NAME:identifier}"; diff --git a/examples/RangePlot/Info.plist b/examples/RangePlot/Base.lproj/Info.plist similarity index 100% rename from examples/RangePlot/Info.plist rename to examples/RangePlot/Base.lproj/Info.plist diff --git a/examples/RangePlot/RangePlot.xib b/examples/RangePlot/Base.lproj/RangePlot.xib similarity index 100% rename from examples/RangePlot/RangePlot.xib rename to examples/RangePlot/Base.lproj/RangePlot.xib diff --git a/examples/RangePlot/RangePlot.xcodeproj/project.pbxproj b/examples/RangePlot/RangePlot.xcodeproj/project.pbxproj index 0208a6e03..c8e77ae28 100644 --- a/examples/RangePlot/RangePlot.xcodeproj/project.pbxproj +++ b/examples/RangePlot/RangePlot.xcodeproj/project.pbxproj @@ -13,8 +13,8 @@ 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; 8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; - 90AF4F440F36CF1800753D26 /* RangePlot.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90AF4F430F36CF1800753D26 /* RangePlot.xib */; }; BC8E737D0FC0B3CF00DF8511 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC8E737C0FC0B3CF00DF8511 /* QuartzCore.framework */; }; + C3D0A17B20E0179100BA2921 /* RangePlot.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3D0A17D20E0179100BA2921 /* RangePlot.xib */; }; C3D3938219FD786F00148319 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C3D3938119FD786F00148319 /* Images.xcassets */; }; /* End PBXBuildFile section */ @@ -111,11 +111,11 @@ 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 32CA4F630368D1EE00C91783 /* RangePlot_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RangePlot_Prefix.pch; sourceTree = ""; }; - 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 8D1107320486CEB800E47090 /* RangePlot.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RangePlot.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 90AF4F430F36CF1800753D26 /* RangePlot.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = RangePlot.xib; sourceTree = ""; }; BC8E737C0FC0B3CF00DF8511 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + C37A40C420E0318900C4FF48 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Base; path = Base.lproj/Info.plist; sourceTree = ""; }; C37FFB6019E1EEB6003F34C5 /* CorePlotWarnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = CorePlotWarnings.xcconfig; path = ../../framework/xcconfig/CorePlotWarnings.xcconfig; sourceTree = ""; }; + C3D0A18A20E0179F00BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/RangePlot.xib; sourceTree = ""; }; C3D3938119FD786F00148319 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = RangePlot/Images.xcassets; sourceTree = ""; }; /* End PBXFileReference section */ @@ -216,8 +216,8 @@ isa = PBXGroup; children = ( C3D3938119FD786F00148319 /* Images.xcassets */, - 90AF4F430F36CF1800753D26 /* RangePlot.xib */, - 8D1107310486CEB800E47090 /* Info.plist */, + C3D0A17D20E0179100BA2921 /* RangePlot.xib */, + C37A40C520E0318900C4FF48 /* Info.plist */, 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, ); name = Resources; @@ -273,6 +273,7 @@ Japanese, French, German, + Base, ); mainGroup = 29B97314FDCFA39411CA2CEA /* CPTTestApp */; projectDirPath = ""; @@ -355,7 +356,7 @@ files = ( 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */, C3D3938219FD786F00148319 /* Images.xcassets in Resources */, - 90AF4F440F36CF1800753D26 /* RangePlot.xib in Resources */, + C3D0A17B20E0179100BA2921 /* RangePlot.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -390,6 +391,22 @@ name = InfoPlist.strings; sourceTree = ""; }; + C37A40C520E0318900C4FF48 /* Info.plist */ = { + isa = PBXVariantGroup; + children = ( + C37A40C420E0318900C4FF48 /* Base */, + ); + name = Info.plist; + sourceTree = ""; + }; + C3D0A17D20E0179100BA2921 /* RangePlot.xib */ = { + isa = PBXVariantGroup; + children = ( + C3D0A18A20E0179F00BA2921 /* Base */, + ); + name = RangePlot.xib; + sourceTree = ""; + }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ @@ -409,7 +426,7 @@ GCC_PREFIX_HEADER = RangePlot_Prefix.pch; GCC_PREPROCESSOR_DEFINITIONS = ""; GCC_TREAT_WARNINGS_AS_ERRORS = YES; - INFOPLIST_FILE = Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Base.lproj/Info.plist"; INSTALL_PATH = "$(HOME)/Applications"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @loader_path/../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "org.CorePlot.${PRODUCT_NAME:identifier}"; @@ -430,7 +447,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = RangePlot_Prefix.pch; GCC_PREPROCESSOR_DEFINITIONS = ""; - INFOPLIST_FILE = Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Base.lproj/Info.plist"; INSTALL_PATH = "$(HOME)/Applications"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @loader_path/../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "org.CorePlot.${PRODUCT_NAME:identifier}"; diff --git a/examples/StockPlot/Launch Screen.xib b/examples/StockPlot/Base.lproj/Launch Screen.xib similarity index 100% rename from examples/StockPlot/Launch Screen.xib rename to examples/StockPlot/Base.lproj/Launch Screen.xib diff --git a/examples/StockPlot/MainWindow.xib b/examples/StockPlot/Base.lproj/MainWindow.xib similarity index 100% rename from examples/StockPlot/MainWindow.xib rename to examples/StockPlot/Base.lproj/MainWindow.xib diff --git a/examples/StockPlot/RootViewController.xib b/examples/StockPlot/Base.lproj/RootViewController.xib similarity index 100% rename from examples/StockPlot/RootViewController.xib rename to examples/StockPlot/Base.lproj/RootViewController.xib diff --git a/examples/StockPlot/StockPlot-Info.plist b/examples/StockPlot/Base.lproj/StockPlot-Info.plist similarity index 100% rename from examples/StockPlot/StockPlot-Info.plist rename to examples/StockPlot/Base.lproj/StockPlot-Info.plist diff --git a/examples/StockPlot/Classes/APYahooDataPullerGraph.xib b/examples/StockPlot/Classes/Base.lproj/APYahooDataPullerGraph.xib similarity index 100% rename from examples/StockPlot/Classes/APYahooDataPullerGraph.xib rename to examples/StockPlot/Classes/Base.lproj/APYahooDataPullerGraph.xib diff --git a/examples/StockPlot/StockPlot.xcodeproj/project.pbxproj b/examples/StockPlot/StockPlot.xcodeproj/project.pbxproj index 67a26be16..413dd4723 100644 --- a/examples/StockPlot/StockPlot.xcodeproj/project.pbxproj +++ b/examples/StockPlot/StockPlot.xcodeproj/project.pbxproj @@ -12,8 +12,6 @@ 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; 2892E4100DC94CBA00A64D0F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */; }; - 2899E5600DE3E45000AC0155 /* RootViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2899E55F0DE3E45000AC0155 /* RootViewController.xib */; }; - 28AD73600D9D9599002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD735F0D9D9599002E5188 /* MainWindow.xib */; }; 28C286E10D94DF7D0034E888 /* RootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28C286E00D94DF7D0034E888 /* RootViewController.m */; }; AB0363AA0FEF3681007B09A9 /* YHOO.plist in Resources */ = {isa = PBXBuildFile; fileRef = AB6FA6090FEB6DAA008DB04A /* YHOO.plist */; }; AB0363AB0FEF3684007B09A9 /* MSFT.plist in Resources */ = {isa = PBXBuildFile; fileRef = AB6FA60A0FEB6DAA008DB04A /* MSFT.plist */; }; @@ -24,8 +22,10 @@ AB4913C90FECC2B8008A08AB /* NSDictionary+APFinancialData.m in Sources */ = {isa = PBXBuildFile; fileRef = AB4913C70FECC2B8008A08AB /* NSDictionary+APFinancialData.m */; }; AB6FA4A40FEB579B008DB04A /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AB6FA4A30FEB579B008DB04A /* QuartzCore.framework */; }; AB6FA5590FEB6235008DB04A /* APYahooDataPullerGraph.m in Sources */ = {isa = PBXBuildFile; fileRef = AB6FA5570FEB6235008DB04A /* APYahooDataPullerGraph.m */; }; - AB6FA55A0FEB6235008DB04A /* APYahooDataPullerGraph.xib in Resources */ = {isa = PBXBuildFile; fileRef = AB6FA5580FEB6235008DB04A /* APYahooDataPullerGraph.xib */; }; - C36157E919D79AAC0036ACDA /* Launch Screen.xib in Resources */ = {isa = PBXBuildFile; fileRef = C36157E819D79AAC0036ACDA /* Launch Screen.xib */; }; + C3D0A22D20E01A1C00BA2921 /* APYahooDataPullerGraph.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3D0A22F20E01A1C00BA2921 /* APYahooDataPullerGraph.xib */; }; + C3D0A23E20E01A2A00BA2921 /* RootViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3D0A24020E01A2A00BA2921 /* RootViewController.xib */; }; + C3D0A24120E01A2E00BA2921 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3D0A24320E01A2E00BA2921 /* MainWindow.xib */; }; + C3D0A24420E01A3200BA2921 /* Launch Screen.xib in Resources */ = {isa = PBXBuildFile; fileRef = C3D0A24620E01A3200BA2921 /* Launch Screen.xib */; }; C3D3937019FD6CBF00148319 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C3D3936F19FD6CBF00148319 /* Images.xcassets */; }; C3D414DF1A7D84CC00B6F5D6 /* libCorePlot-CocoaTouch.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C3D414DC1A7D84BF00B6F5D6 /* libCorePlot-CocoaTouch.a */; }; /* End PBXBuildFile section */ @@ -96,13 +96,10 @@ 1D6058910D05DD3D006BFB54 /* StockPlot.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = StockPlot.app; sourceTree = BUILT_PRODUCTS_DIR; }; 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 2899E55F0DE3E45000AC0155 /* RootViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = RootViewController.xib; sourceTree = ""; }; 28A0AAE50D9B0CCF005BE974 /* StockPlot_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StockPlot_Prefix.pch; sourceTree = ""; }; - 28AD735F0D9D9599002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = ""; }; 28C286DF0D94DF7D0034E888 /* RootViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RootViewController.h; sourceTree = ""; }; 28C286E00D94DF7D0034E888 /* RootViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RootViewController.m; sourceTree = ""; }; 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 8D1107310486CEB800E47090 /* StockPlot-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "StockPlot-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; AB0364760FEF4603007B09A9 /* caution.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = caution.png; sourceTree = SOURCE_ROOT; }; AB4913C50FECC2B8008A08AB /* APYahooDataPuller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = APYahooDataPuller.h; path = Classes/APYahooDataPuller.h; sourceTree = SOURCE_ROOT; }; AB4913C60FECC2B8008A08AB /* APYahooDataPuller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = APYahooDataPuller.m; path = Classes/APYahooDataPuller.m; sourceTree = SOURCE_ROOT; }; @@ -111,14 +108,17 @@ AB6FA4DE0FEB59DB008DB04A /* NSDictionary+APFinancialData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+APFinancialData.h"; sourceTree = ""; }; AB6FA5560FEB6235008DB04A /* APYahooDataPullerGraph.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = APYahooDataPullerGraph.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; AB6FA5570FEB6235008DB04A /* APYahooDataPullerGraph.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = APYahooDataPullerGraph.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - AB6FA5580FEB6235008DB04A /* APYahooDataPullerGraph.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = APYahooDataPullerGraph.xib; path = Classes/APYahooDataPullerGraph.xib; sourceTree = ""; }; AB6FA6090FEB6DAA008DB04A /* YHOO.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = YHOO.plist; sourceTree = SOURCE_ROOT; }; AB6FA60A0FEB6DAA008DB04A /* MSFT.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = MSFT.plist; sourceTree = SOURCE_ROOT; }; AB6FA60B0FEB6DAA008DB04A /* GOOG.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = GOOG.plist; sourceTree = SOURCE_ROOT; }; AB6FA60C0FEB6DAA008DB04A /* AAPL.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = AAPL.plist; sourceTree = SOURCE_ROOT; }; - C36157E819D79AAC0036ACDA /* Launch Screen.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "Launch Screen.xib"; sourceTree = ""; }; + C37A40FF20E0325100C4FF48 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Base; path = "Base.lproj/StockPlot-Info.plist"; sourceTree = ""; }; C3CA9B5B19E203B2008DF7A3 /* CorePlotWarnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = CorePlotWarnings.xcconfig; path = ../../framework/xcconfig/CorePlotWarnings.xcconfig; sourceTree = ""; }; C3CD284717DE9D1F008EED1E /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; }; + C3D0A23D20E01A2300BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/APYahooDataPullerGraph.xib; sourceTree = ""; }; + C3D0A23F20E01A2A00BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/RootViewController.xib; sourceTree = ""; }; + C3D0A24220E01A2E00BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainWindow.xib; sourceTree = ""; }; + C3D0A24520E01A3200BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = "Base.lproj/Launch Screen.xib"; sourceTree = ""; }; C3D3936F19FD6CBF00148319 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = StockPlot/Images.xcassets; sourceTree = ""; }; C3D414C71A7D84BF00B6F5D6 /* CorePlot.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = CorePlot.xcodeproj; path = ../../framework/CorePlot.xcodeproj; sourceTree = ""; }; /* End PBXFileReference section */ @@ -199,11 +199,11 @@ AB6FA60A0FEB6DAA008DB04A /* MSFT.plist */, AB6FA60B0FEB6DAA008DB04A /* GOOG.plist */, AB6FA60C0FEB6DAA008DB04A /* AAPL.plist */, - AB6FA5580FEB6235008DB04A /* APYahooDataPullerGraph.xib */, - 2899E55F0DE3E45000AC0155 /* RootViewController.xib */, - 28AD735F0D9D9599002E5188 /* MainWindow.xib */, - 8D1107310486CEB800E47090 /* StockPlot-Info.plist */, - C36157E819D79AAC0036ACDA /* Launch Screen.xib */, + C3D0A22F20E01A1C00BA2921 /* APYahooDataPullerGraph.xib */, + C3D0A24020E01A2A00BA2921 /* RootViewController.xib */, + C3D0A24320E01A2E00BA2921 /* MainWindow.xib */, + C37A410020E0325100C4FF48 /* StockPlot-Info.plist */, + C3D0A24620E01A3200BA2921 /* Launch Screen.xib */, ); name = Resources; sourceTree = ""; @@ -278,6 +278,7 @@ French, German, en, + Base, ); mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; projectDirPath = ""; @@ -358,16 +359,16 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 28AD73600D9D9599002E5188 /* MainWindow.xib in Resources */, - 2899E5600DE3E45000AC0155 /* RootViewController.xib in Resources */, - AB6FA55A0FEB6235008DB04A /* APYahooDataPullerGraph.xib in Resources */, + C3D0A24120E01A2E00BA2921 /* MainWindow.xib in Resources */, + C3D0A23E20E01A2A00BA2921 /* RootViewController.xib in Resources */, + C3D0A22D20E01A1C00BA2921 /* APYahooDataPullerGraph.xib in Resources */, AB0363AA0FEF3681007B09A9 /* YHOO.plist in Resources */, C3D3937019FD6CBF00148319 /* Images.xcassets in Resources */, AB0363AB0FEF3684007B09A9 /* MSFT.plist in Resources */, AB0363AC0FEF3687007B09A9 /* GOOG.plist in Resources */, AB0363AD0FEF368A007B09A9 /* AAPL.plist in Resources */, AB0364770FEF4603007B09A9 /* caution.png in Resources */, - C36157E919D79AAC0036ACDA /* Launch Screen.xib in Resources */, + C3D0A24420E01A3200BA2921 /* Launch Screen.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -389,6 +390,50 @@ }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXVariantGroup section */ + C37A410020E0325100C4FF48 /* StockPlot-Info.plist */ = { + isa = PBXVariantGroup; + children = ( + C37A40FF20E0325100C4FF48 /* Base */, + ); + name = "StockPlot-Info.plist"; + sourceTree = ""; + }; + C3D0A22F20E01A1C00BA2921 /* APYahooDataPullerGraph.xib */ = { + isa = PBXVariantGroup; + children = ( + C3D0A23D20E01A2300BA2921 /* Base */, + ); + name = APYahooDataPullerGraph.xib; + path = Classes; + sourceTree = ""; + }; + C3D0A24020E01A2A00BA2921 /* RootViewController.xib */ = { + isa = PBXVariantGroup; + children = ( + C3D0A23F20E01A2A00BA2921 /* Base */, + ); + name = RootViewController.xib; + sourceTree = ""; + }; + C3D0A24320E01A2E00BA2921 /* MainWindow.xib */ = { + isa = PBXVariantGroup; + children = ( + C3D0A24220E01A2E00BA2921 /* Base */, + ); + name = MainWindow.xib; + sourceTree = ""; + }; + C3D0A24620E01A3200BA2921 /* Launch Screen.xib */ = { + isa = PBXVariantGroup; + children = ( + C3D0A24520E01A3200BA2921 /* Base */, + ); + name = "Launch Screen.xib"; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + /* Begin XCBuildConfiguration section */ 1D6058940D05DD3E006BFB54 /* Debug */ = { isa = XCBuildConfiguration; @@ -406,7 +451,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = StockPlot_Prefix.pch; HEADER_SEARCH_PATHS = ""; - INFOPLIST_FILE = "StockPlot-Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Base.lproj/StockPlot-Info.plist"; PRODUCT_BUNDLE_IDENTIFIER = "org.CorePlot.${PRODUCT_NAME:identifier}"; PRODUCT_NAME = StockPlot; }; @@ -426,7 +471,7 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = StockPlot_Prefix.pch; HEADER_SEARCH_PATHS = ""; - INFOPLIST_FILE = "StockPlot-Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Base.lproj/StockPlot-Info.plist"; PRODUCT_BUNDLE_IDENTIFIER = "org.CorePlot.${PRODUCT_NAME:identifier}"; PRODUCT_NAME = StockPlot; }; diff --git a/framework/CorePlot.xcodeproj/project.pbxproj b/framework/CorePlot.xcodeproj/project.pbxproj index b6fb21bb3..bb90ab8d8 100644 --- a/framework/CorePlot.xcodeproj/project.pbxproj +++ b/framework/CorePlot.xcodeproj/project.pbxproj @@ -1020,7 +1020,6 @@ 4CD7E7EF0F4B4FA700F9BCBB /* NSDecimalNumberExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSDecimalNumberExtensions.m; sourceTree = ""; }; 4CD7E9620F4B625900F9BCBB /* CPTUtilitiesTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPTUtilitiesTests.h; sourceTree = ""; }; 4CD7E9630F4B625900F9BCBB /* CPTUtilitiesTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CPTUtilitiesTests.m; sourceTree = ""; }; - 8DC2EF5A0486A6940098B216 /* CorePlot-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "CorePlot-Info.plist"; path = "Info/CorePlot-Info.plist"; sourceTree = ""; }; 8DC2EF5B0486A6940098B216 /* CorePlot.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CorePlot.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9021E5690FC69B2900443472 /* doxygen.config */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; lineEnding = 0; name = doxygen.config; path = ../documentation/doxygen/doxygen.config; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = ""; }; 906156BC0F375598001B75FC /* CPTLineStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = CPTLineStyle.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; @@ -1057,11 +1056,6 @@ C3226A451A69ED0900F77249 /* doxygen touch.config */ = {isa = PBXFileReference; lastKnownFileType = text; lineEnding = 0; name = "doxygen touch.config"; path = "../documentation/doxygen/doxygen touch.config"; sourceTree = ""; xcLanguageSpecificationIdentifier = ""; }; C3226A461A69ED1F00F77249 /* doxygen-cocoa-touch-tags.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = "doxygen-cocoa-touch-tags.xml"; path = "../documentation/doxygen/doxygen-cocoa-touch-tags.xml"; sourceTree = ""; }; C3226A471A69EE9200F77249 /* CorePlot-CocoaTouch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CorePlot-CocoaTouch.h"; sourceTree = ""; }; - C3226A4C1A69F07600F77249 /* CorePlotTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "CorePlotTests-Info.plist"; path = "Info/CorePlotTests-Info.plist"; sourceTree = SOURCE_ROOT; }; - C3226A4D1A69F09A00F77249 /* CorePlot-iOSTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "CorePlot-iOSTests-Info.plist"; path = "Info/CorePlot-iOSTests-Info.plist"; sourceTree = SOURCE_ROOT; }; - C3226A4E1A69F0AA00F77249 /* CorePlot-CocoaTouchTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "CorePlot-CocoaTouchTests-Info.plist"; path = "Info/CorePlot-CocoaTouchTests-Info.plist"; sourceTree = SOURCE_ROOT; }; - C3226A4F1A69F18C00F77249 /* CorePlot-CocoaTouch-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "CorePlot-CocoaTouch-Info.plist"; path = "Info/CorePlot-CocoaTouch-Info.plist"; sourceTree = ""; }; - C3226A501A69F1A700F77249 /* CorePlot-iOS-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "CorePlot-iOS-Info.plist"; path = "Info/CorePlot-iOS-Info.plist"; sourceTree = ""; }; C3226A511A69F6DA00F77249 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; C3226A531A69F6DF00F77249 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; C3226A551A69F6F000F77249 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/System/Library/Frameworks/Accelerate.framework; sourceTree = DEVELOPER_DIR; }; @@ -1085,6 +1079,10 @@ C342601D0FAE096C00072842 /* _CPTFillImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = _CPTFillImage.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; C342601E0FAE096C00072842 /* _CPTFillGradient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = _CPTFillGradient.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; C342601F0FAE096C00072842 /* CPTFill.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = CPTFill.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; + C3490DF120E028CF0089F309 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Base; path = "Base.lproj/CorePlot-Info.plist"; sourceTree = ""; }; + C3490DF320E028D30089F309 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Base; path = "Base.lproj/CorePlot-CocoaTouch-Info.plist"; sourceTree = ""; }; + C3490DF520E028D80089F309 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Base; path = "Base.lproj/CorePlot-iOS-Info.plist"; sourceTree = ""; }; + C3490DF720E028DC0089F309 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Base; path = "Base.lproj/CorePlot-tvOS-Info.plist"; sourceTree = ""; }; C349DCB2151AAFBF00BFD6A7 /* CPTCalendarFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = CPTCalendarFormatter.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; C349DCB3151AAFBF00BFD6A7 /* CPTCalendarFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = CPTCalendarFormatter.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; C34AFE6911021D010041675A /* CPTPlotSymbol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = CPTPlotSymbol.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; @@ -1099,10 +1097,12 @@ C377B3B91C122AA600891DF8 /* CPTCalendarFormatterTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPTCalendarFormatterTests.h; sourceTree = ""; }; C377B3BA1C122AA600891DF8 /* CPTCalendarFormatterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CPTCalendarFormatterTests.m; sourceTree = ""; }; C3791D07191D4C4C001EC514 /* CPTImagePlatformSpecific.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = CPTImagePlatformSpecific.m; path = MacOnly/CPTImagePlatformSpecific.m; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; + C37A406320E02B9D00C4FF48 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Base; path = "Base.lproj/CorePlot-tvOSTests-Info.plist"; sourceTree = ""; }; + C37A406520E02BA100C4FF48 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Base; path = "Base.lproj/CorePlot-CocoaTouchTests-Info.plist"; sourceTree = ""; }; + C37A406720E02BA500C4FF48 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Base; path = "Base.lproj/CorePlot-iOSTests-Info.plist"; sourceTree = ""; }; + C37A406920E02BE900C4FF48 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Base; path = "Base.lproj/CorePlotTests-Info.plist"; sourceTree = ""; }; C37EA6921BC83F2A0091C8F7 /* CorePlot.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CorePlot.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - C37EA6931BC83F2A0091C8F7 /* CorePlot-tvOS-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "CorePlot-tvOS-Info.plist"; path = "/Users/eskroch/Projects/Core Plot/framework/Info/CorePlot-tvOS-Info.plist"; sourceTree = ""; }; C37EA6B71BC83F2D0091C8F7 /* UnitTests tvOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "UnitTests tvOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - C37EA6B81BC83F2E0091C8F7 /* CorePlot-tvOSTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "CorePlot-tvOSTests-Info.plist"; path = "/Users/eskroch/Projects/Core Plot/framework/Info/CorePlot-tvOSTests-Info.plist"; sourceTree = ""; }; C38A09781A46185200D45436 /* CorePlot.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CorePlot.framework; sourceTree = BUILT_PRODUCTS_DIR; }; C38A09821A46185300D45436 /* UnitTests iOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "UnitTests iOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; C38A09BA1A4619A900D45436 /* libCorePlot-CocoaTouch.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libCorePlot-CocoaTouch.a"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -1618,10 +1618,10 @@ isa = PBXGroup; children = ( 071F3CB810FBAB5900D0A7B6 /* License.txt */, - 8DC2EF5A0486A6940098B216 /* CorePlot-Info.plist */, - C3226A4F1A69F18C00F77249 /* CorePlot-CocoaTouch-Info.plist */, - C3226A501A69F1A700F77249 /* CorePlot-iOS-Info.plist */, - C37EA6931BC83F2A0091C8F7 /* CorePlot-tvOS-Info.plist */, + C3490DF220E028CF0089F309 /* CorePlot-Info.plist */, + C3490DF420E028D30089F309 /* CorePlot-CocoaTouch-Info.plist */, + C3490DF620E028D80089F309 /* CorePlot-iOS-Info.plist */, + C3490DF820E028DC0089F309 /* CorePlot-tvOS-Info.plist */, 089C1666FE841158C02AAC07 /* InfoPlist.strings */, ); name = Resources; @@ -1766,10 +1766,10 @@ C3226A4B1A69F02900F77249 /* Resources */ = { isa = PBXGroup; children = ( - C3226A4C1A69F07600F77249 /* CorePlotTests-Info.plist */, - C3226A4D1A69F09A00F77249 /* CorePlot-iOSTests-Info.plist */, - C3226A4E1A69F0AA00F77249 /* CorePlot-CocoaTouchTests-Info.plist */, - C37EA6B81BC83F2E0091C8F7 /* CorePlot-tvOSTests-Info.plist */, + C37A406A20E02BE900C4FF48 /* CorePlotTests-Info.plist */, + C37A406820E02BA500C4FF48 /* CorePlot-iOSTests-Info.plist */, + C37A406620E02BA100C4FF48 /* CorePlot-CocoaTouchTests-Info.plist */, + C37A406420E02B9D00C4FF48 /* CorePlot-tvOSTests-Info.plist */, ); name = Resources; sourceTree = ""; @@ -2483,6 +2483,7 @@ Japanese, French, German, + Base, ); mainGroup = 0867D691FE84028FC02AAC07 /* CorePlot */; productRefGroup = 034768DFFF38A50411DB9C8B /* Products */; @@ -3196,6 +3197,78 @@ name = InfoPlist.strings; sourceTree = ""; }; + C3490DF220E028CF0089F309 /* CorePlot-Info.plist */ = { + isa = PBXVariantGroup; + children = ( + C3490DF120E028CF0089F309 /* Base */, + ); + name = "CorePlot-Info.plist"; + path = Info; + sourceTree = ""; + }; + C3490DF420E028D30089F309 /* CorePlot-CocoaTouch-Info.plist */ = { + isa = PBXVariantGroup; + children = ( + C3490DF320E028D30089F309 /* Base */, + ); + name = "CorePlot-CocoaTouch-Info.plist"; + path = Info/Base.lproj; + sourceTree = ""; + }; + C3490DF620E028D80089F309 /* CorePlot-iOS-Info.plist */ = { + isa = PBXVariantGroup; + children = ( + C3490DF520E028D80089F309 /* Base */, + ); + name = "CorePlot-iOS-Info.plist"; + path = Info/Base.lproj; + sourceTree = ""; + }; + C3490DF820E028DC0089F309 /* CorePlot-tvOS-Info.plist */ = { + isa = PBXVariantGroup; + children = ( + C3490DF720E028DC0089F309 /* Base */, + ); + name = "CorePlot-tvOS-Info.plist"; + path = "/Users/eskroch/Projects/Core Plot/framework/Info/Base.lproj"; + sourceTree = ""; + }; + C37A406420E02B9D00C4FF48 /* CorePlot-tvOSTests-Info.plist */ = { + isa = PBXVariantGroup; + children = ( + C37A406320E02B9D00C4FF48 /* Base */, + ); + name = "CorePlot-tvOSTests-Info.plist"; + path = "/Users/eskroch/Projects/Core Plot/framework/Info"; + sourceTree = ""; + }; + C37A406620E02BA100C4FF48 /* CorePlot-CocoaTouchTests-Info.plist */ = { + isa = PBXVariantGroup; + children = ( + C37A406520E02BA100C4FF48 /* Base */, + ); + name = "CorePlot-CocoaTouchTests-Info.plist"; + path = Info; + sourceTree = SOURCE_ROOT; + }; + C37A406820E02BA500C4FF48 /* CorePlot-iOSTests-Info.plist */ = { + isa = PBXVariantGroup; + children = ( + C37A406720E02BA500C4FF48 /* Base */, + ); + name = "CorePlot-iOSTests-Info.plist"; + path = Info; + sourceTree = SOURCE_ROOT; + }; + C37A406A20E02BE900C4FF48 /* CorePlotTests-Info.plist */ = { + isa = PBXVariantGroup; + children = ( + C37A406920E02BE900C4FF48 /* Base */, + ); + name = "CorePlotTests-Info.plist"; + path = Info; + sourceTree = SOURCE_ROOT; + }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ @@ -3203,7 +3276,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = C3C9D08C1BB5A44800931F32 /* CorePlotDebug.xcconfig */; buildSettings = { - INFOPLIST_FILE = "$(SRCROOT)/Info/CorePlotTests-Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Info/Base.lproj/CorePlotTests-Info.plist"; INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles"; MACOSX_DEPLOYMENT_TARGET = 10.8; PRODUCT_NAME = UnitTests; @@ -3216,7 +3289,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = C3C9D08D1BB5A45B00931F32 /* CorePlotRelease.xcconfig */; buildSettings = { - INFOPLIST_FILE = "$(SRCROOT)/Info/CorePlotTests-Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Info/Base.lproj/CorePlotTests-Info.plist"; INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles"; MACOSX_DEPLOYMENT_TARGET = 10.8; PRODUCT_NAME = UnitTests; @@ -3233,7 +3306,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; FRAMEWORK_VERSION = A; - INFOPLIST_FILE = "$(SRCROOT)/Info/CorePlot-Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Info/Base.lproj/CorePlot-Info.plist"; INSTALL_PATH = "@rpath"; MACOSX_DEPLOYMENT_TARGET = 10.8; PRODUCT_BUNDLE_IDENTIFIER = "com.CorePlot.$(PRODUCT_NAME:rfc1034identifier)"; @@ -3252,7 +3325,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; FRAMEWORK_VERSION = A; - INFOPLIST_FILE = "$(SRCROOT)/Info/CorePlot-Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Info/Base.lproj/CorePlot-Info.plist"; INSTALL_PATH = "@rpath"; MACOSX_DEPLOYMENT_TARGET = 10.8; PRODUCT_BUNDLE_IDENTIFIER = "com.CorePlot.$(PRODUCT_NAME:rfc1034identifier)"; @@ -3395,7 +3468,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "$(SRCROOT)/Info/CorePlot-tvOS-Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Info/Base.lproj/CorePlot-tvOS-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = YES; @@ -3417,7 +3490,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "$(SRCROOT)/Info/CorePlot-tvOS-Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Info/Base.lproj/CorePlot-tvOS-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = NO; @@ -3434,7 +3507,7 @@ baseConfigurationReference = C3C9D08C1BB5A44800931F32 /* CorePlotDebug.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = "$(SRCROOT)/Info/CorePlot-tvOSTests-Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Info/Base.lproj/CorePlot-tvOSTests-Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = YES; PRODUCT_BUNDLE_IDENTIFIER = "com.CorePlot.$(PRODUCT_NAME:rfc1034identifier)"; @@ -3450,7 +3523,7 @@ baseConfigurationReference = C3C9D08D1BB5A45B00931F32 /* CorePlotRelease.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = "$(SRCROOT)/Info/CorePlot-tvOSTests-Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Info/Base.lproj/CorePlot-tvOSTests-Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = "com.CorePlot.$(PRODUCT_NAME:rfc1034identifier)"; @@ -3471,7 +3544,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "$(SRCROOT)/Info/CorePlot-iOS-Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Info/Base.lproj/CorePlot-iOS-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; @@ -3494,7 +3567,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "$(SRCROOT)/Info/CorePlot-iOS-Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Info/Base.lproj/CorePlot-iOS-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; @@ -3512,7 +3585,7 @@ baseConfigurationReference = C3C9D08C1BB5A44800931F32 /* CorePlotDebug.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = "$(SRCROOT)/Info/CorePlot-iOSTests-Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Info/Base.lproj/CorePlot-iOSTests-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = YES; @@ -3529,7 +3602,7 @@ baseConfigurationReference = C3C9D08D1BB5A45B00931F32 /* CorePlotRelease.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = "$(SRCROOT)/Info/CorePlot-iOSTests-Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Info/Base.lproj/CorePlot-iOSTests-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = NO; @@ -3602,7 +3675,7 @@ baseConfigurationReference = C3C9D08C1BB5A44800931F32 /* CorePlotDebug.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = "$(SRCROOT)/Info/CorePlot-CocoaTouch-Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Info/Base.lproj/CorePlot-CocoaTouch-Info.plist"; INSTALL_PATH = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; MACOSX_DEPLOYMENT_TARGET = ""; @@ -3619,7 +3692,7 @@ baseConfigurationReference = C3C9D08D1BB5A45B00931F32 /* CorePlotRelease.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = "$(SRCROOT)/Info/CorePlot-CocoaTouch-Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Info/Base.lproj/CorePlot-CocoaTouch-Info.plist"; INSTALL_PATH = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; MACOSX_DEPLOYMENT_TARGET = ""; @@ -3636,7 +3709,7 @@ baseConfigurationReference = C3C9D08C1BB5A44800931F32 /* CorePlotDebug.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = "$(SRCROOT)/Info/CorePlot-CocoaTouchTests-Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Info/Base.lproj/CorePlot-CocoaTouchTests-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = YES; @@ -3653,7 +3726,7 @@ baseConfigurationReference = C3C9D08D1BB5A45B00931F32 /* CorePlotRelease.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = "$(SRCROOT)/Info/CorePlot-CocoaTouchTests-Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Info/Base.lproj/CorePlot-CocoaTouchTests-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = NO; diff --git a/framework/Info/CorePlot-CocoaTouch-Info.plist b/framework/Info/Base.lproj/CorePlot-CocoaTouch-Info.plist similarity index 100% rename from framework/Info/CorePlot-CocoaTouch-Info.plist rename to framework/Info/Base.lproj/CorePlot-CocoaTouch-Info.plist diff --git a/framework/Info/CorePlot-CocoaTouchTests-Info.plist b/framework/Info/Base.lproj/CorePlot-CocoaTouchTests-Info.plist similarity index 100% rename from framework/Info/CorePlot-CocoaTouchTests-Info.plist rename to framework/Info/Base.lproj/CorePlot-CocoaTouchTests-Info.plist diff --git a/framework/Info/CorePlot-Info.plist b/framework/Info/Base.lproj/CorePlot-Info.plist similarity index 100% rename from framework/Info/CorePlot-Info.plist rename to framework/Info/Base.lproj/CorePlot-Info.plist diff --git a/framework/Info/CorePlot-iOS-Info.plist b/framework/Info/Base.lproj/CorePlot-iOS-Info.plist similarity index 100% rename from framework/Info/CorePlot-iOS-Info.plist rename to framework/Info/Base.lproj/CorePlot-iOS-Info.plist diff --git a/framework/Info/CorePlot-iOSTests-Info.plist b/framework/Info/Base.lproj/CorePlot-iOSTests-Info.plist similarity index 100% rename from framework/Info/CorePlot-iOSTests-Info.plist rename to framework/Info/Base.lproj/CorePlot-iOSTests-Info.plist diff --git a/framework/Info/CorePlot-tvOS-Info.plist b/framework/Info/Base.lproj/CorePlot-tvOS-Info.plist similarity index 100% rename from framework/Info/CorePlot-tvOS-Info.plist rename to framework/Info/Base.lproj/CorePlot-tvOS-Info.plist diff --git a/framework/Info/CorePlot-tvOSTests-Info.plist b/framework/Info/Base.lproj/CorePlot-tvOSTests-Info.plist similarity index 100% rename from framework/Info/CorePlot-tvOSTests-Info.plist rename to framework/Info/Base.lproj/CorePlot-tvOSTests-Info.plist diff --git a/framework/Info/CorePlotTests-Info.plist b/framework/Info/Base.lproj/CorePlotTests-Info.plist similarity index 100% rename from framework/Info/CorePlotTests-Info.plist rename to framework/Info/Base.lproj/CorePlotTests-Info.plist From 3e4606d9cfc39fed231e901f910c8535c7a84f43 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Tue, 10 Jul 2018 19:23:16 -0400 Subject: [PATCH 064/160] Fixed a bug in -initWithCoder: for layer and plot space annotations. Fixed issue #385. --- framework/Source/CPTLayerAnnotation.m | 13 +++++++++++-- framework/Source/CPTPlotSpaceAnnotation.m | 9 +++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/framework/Source/CPTLayerAnnotation.m b/framework/Source/CPTLayerAnnotation.m index 97fbbda30..d24f6dd64 100644 --- a/framework/Source/CPTLayerAnnotation.m +++ b/framework/Source/CPTLayerAnnotation.m @@ -119,13 +119,22 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { if ( (self = [super initWithCoder:coder]) ) { - anchorLayer = [coder decodeObjectOfClass:[CPTLayer class] - forKey:@"CPTLayerAnnotation.anchorLayer"]; + CPTLayer *anchor = [coder decodeObjectOfClass:[CPTLayer class] + forKey:@"CPTLayerAnnotation.anchorLayer"]; xConstraints = [coder decodeObjectOfClass:[CPTConstraints class] forKey:@"CPTLayerAnnotation.xConstraints"]; yConstraints = [coder decodeObjectOfClass:[CPTConstraints class] forKey:@"CPTLayerAnnotation.yConstraints"]; rectAnchor = (CPTRectAnchor)[coder decodeIntegerForKey:@"CPTLayerAnnotation.rectAnchor"]; + + if ( anchor ) { + anchorLayer = anchor; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(positionContentLayer) + name:CPTLayerBoundsDidChangeNotification + object:anchor]; + } } return self; } diff --git a/framework/Source/CPTPlotSpaceAnnotation.m b/framework/Source/CPTPlotSpaceAnnotation.m index 2a775c310..57dde697e 100644 --- a/framework/Source/CPTPlotSpaceAnnotation.m +++ b/framework/Source/CPTPlotSpaceAnnotation.m @@ -113,13 +113,18 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { if ( (self = [super initWithCoder:coder]) ) { - anchorPlotPoint = [[coder decodeObjectOfClasses:[NSSet setWithArray:@[[NSArray class], [NSNumber class]]] - forKey:@"CPTPlotSpaceAnnotation.anchorPlotPoint"] copy]; + self.anchorPlotPoint = [[coder decodeObjectOfClasses:[NSSet setWithArray:@[[NSArray class], [NSNumber class]]] + forKey:@"CPTPlotSpaceAnnotation.anchorPlotPoint"] copy]; CPTPlotSpace *thePlotSpace = [coder decodeObjectOfClass:[CPTPlotSpace class] forKey:@"CPTPlotSpaceAnnotation.plotSpace"]; if ( thePlotSpace ) { plotSpace = thePlotSpace; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(setContentNeedsLayout) + name:CPTPlotSpaceCoordinateMappingDidChangeNotification + object:plotSpace]; } } return self; From d357770736517fe98ebe2ae04521a07b7649f4c8 Mon Sep 17 00:00:00 2001 From: Pascal Freiburghaus Date: Sun, 12 Aug 2018 14:26:12 +0200 Subject: [PATCH 065/160] Support creating CPTColor with NSColor and use NSColor for drawing if CPTColor has been created with NSColor. With the additions to CPTGraph and CPTLayer a minimal support for dynamic system colors and colors from the Asset Catalog is given for on screen drawing and printing. --- .../MacOnly/CPTPlatformSpecificCategories.m | 16 --- framework/Source/CPTColor.h | 13 +++ framework/Source/CPTColor.m | 97 ++++++++++++++++++- framework/Source/CPTColorTests.m | 12 +++ framework/Source/CPTGraph.m | 13 +++ framework/Source/CPTLayer.m | 11 +++ 6 files changed, 142 insertions(+), 20 deletions(-) diff --git a/framework/MacOnly/CPTPlatformSpecificCategories.m b/framework/MacOnly/CPTPlatformSpecificCategories.m index 82b37a8a3..278bce6d7 100644 --- a/framework/MacOnly/CPTPlatformSpecificCategories.m +++ b/framework/MacOnly/CPTPlatformSpecificCategories.m @@ -66,22 +66,6 @@ -(nonnull CPTNativeImage *)imageOfLayer @end -#pragma mark - CPTColor - -@implementation CPTColor(CPTPlatformSpecificColorExtensions) - -/** @property nsColor - * @brief Gets the color value as an NSColor. - **/ -@dynamic nsColor; - --(nonnull NSColor *)nsColor -{ - return [NSColor colorWithCIColor:[CIColor colorWithCGColor:self.cgColor]]; -} - -@end - #pragma mark - NSAttributedString @implementation NSAttributedString(CPTPlatformSpecificAttributedStringExtensions) diff --git a/framework/Source/CPTColor.h b/framework/Source/CPTColor.h index b341a487b..2f668815d 100644 --- a/framework/Source/CPTColor.h +++ b/framework/Source/CPTColor.h @@ -3,6 +3,10 @@ @property (nonatomic, readonly, nonnull) CGColorRef cgColor; @property (nonatomic, readonly, getter = isOpaque) BOOL opaque; +#if TARGET_OS_OSX +@property (nonatomic, readonly, nonnull) NSColor *nsColor; +#endif + /// @name Factory Methods /// @{ +(nonnull instancetype)clearColor; @@ -24,6 +28,11 @@ +(nonnull instancetype)colorWithCGColor:(nonnull CGColorRef)newCGColor; +(nonnull instancetype)colorWithComponentRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha; +(nonnull instancetype)colorWithGenericGray:(CGFloat)gray; + +#if TARGET_OS_OSX ++(nonnull instancetype)colorWithNSColor:(nonnull NSColor *)newNSColor; +#endif + /// @} /// @name Initialization @@ -32,6 +41,10 @@ -(nonnull instancetype)initWithComponentRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha; -(nullable instancetype)initWithCoder:(nonnull NSCoder *)decoder NS_DESIGNATED_INITIALIZER; +#if TARGET_OS_OSX +-(nonnull instancetype)initWithNSColor:(nonnull NSColor *)newNSColor NS_DESIGNATED_INITIALIZER; +#endif + -(nonnull instancetype)colorWithAlphaComponent:(CGFloat)alpha; /// @} diff --git a/framework/Source/CPTColor.m b/framework/Source/CPTColor.m index 8b6edb999..913c269d2 100644 --- a/framework/Source/CPTColor.m +++ b/framework/Source/CPTColor.m @@ -1,5 +1,8 @@ #import "CPTColor.h" +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdirect-ivar-access" + #import "CPTColorSpace.h" #import "CPTDefinitions.h" #import "CPTPlatformSpecificCategories.h" @@ -14,16 +17,45 @@ **/ @implementation CPTColor +#if TARGET_OS_OSX +/** @property nullable NSColor nsColorCahce + * @brief The NSColor to wrap around. + **/ +@synthesize nsColor = _nsColor; + +- (NSColor *)nsColor +{ + if (_nsColor) { + return _nsColor; + } else { + return [NSColor colorWithCIColor:[CIColor colorWithCGColor:self.cgColor]]; + } +} +#endif + /** @property nonnull CGColorRef cgColor * @brief The @ref CGColorRef to wrap around. **/ -@synthesize cgColor; +@synthesize cgColor = _cgColor; + +-(CGColorRef) cgColor +{ +#if TARGET_OS_OSX + if (_nsColor) { + return _nsColor.CGColor; + } +#endif + return _cgColor; +} + /** @property BOOL opaque * @brief If @YES, the color is completely opaque. */ @dynamic opaque; + + #pragma mark - #pragma mark Factory Methods @@ -318,6 +350,19 @@ +(nonnull instancetype)colorWithGenericGray:(CGFloat)gray return color; } +#if TARGET_OS_OSX +/** @brief Creates and returns a new CPTColor instance initialized with the provided NSColor. NSColor can be a dynamic system color + * or catalog color. This adds support for dark mode in macOS 10.14 + * @param newNSColor The color to wrap. + * @return A new CPTColor instance initialized with the provided NSColor. + **/ ++(nonnull instancetype)colorWithNSColor:(nonnull NSColor *)newNSColor +{ + return [[self alloc] initWithNSColor:newNSColor]; +} +#endif + + #pragma mark - #pragma mark Init/Dealloc @@ -330,7 +375,7 @@ -(nonnull instancetype)initWithCGColor:(nonnull CGColorRef)newCGColor { if ( (self = [super init]) ) { CGColorRetain(newCGColor); - cgColor = newCGColor; + _cgColor = newCGColor; } return self; } @@ -357,6 +402,21 @@ -(nonnull instancetype)initWithComponentRed:(CGFloat)red green:(CGFloat)green bl return self; } +#if TARGET_OS_OSX +/** @brief Initializes a newly allocated CPTColor object with the provided NSColor. + * + * @param newNSColor The color to wrap. + * @return The initialized CPTColor object. + **/ +-(nonnull instancetype)initWithNSColor:(nonnull NSColor *)newNSColor +{ + if ( (self = [super init]) ) { + _nsColor = newNSColor; + } + return self; +} +#endif + /// @cond -(nonnull instancetype)init @@ -366,7 +426,7 @@ -(nonnull instancetype)init -(void)dealloc { - CGColorRelease(cgColor); + CGColorRelease(_cgColor); } /// @endcond @@ -381,6 +441,12 @@ -(void)dealloc **/ -(nonnull instancetype)colorWithAlphaComponent:(CGFloat)alpha { +#if TARGET_OS_OSX + if (_nsColor) { + NSColor *newNSColor = [_nsColor colorWithAlphaComponent:alpha]; + return [[self class] colorWithNSColor:newNSColor]; + } +#endif CGColorRef newCGColor = CGColorCreateCopyWithAlpha(self.cgColor, alpha); CPTColor *newColor = [[self class] colorWithCGColor:newCGColor]; @@ -409,6 +475,10 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder { CGColorRef theColor = self.cgColor; +#if TARGET_OS_OSX + [coder encodeObject:_nsColor forKey:@"CPTColor.nsColor"]; +#endif + [coder encodeCGColorSpace:CGColorGetColorSpace(theColor) forKey:@"CPTColor.colorSpace"]; size_t numberOfComponents = CGColorGetNumberOfComponents(theColor); @@ -431,6 +501,15 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { if ( (self = [super init]) ) { + +#if TARGET_OS_OSX + NSColor *decodedNSColor = [coder decodeObjectOfClass:[NSColor class] + forKey:@"CPTColor.nsColor"]; + if (decodedNSColor) { + _nsColor = decodedNSColor; + return self; + } +#endif CGColorSpaceRef colorSpace = [coder newCGColorSpaceDecodeForKey:@"CPTColor.colorSpace"]; size_t numberOfComponents = (size_t)[coder decodeInt64ForKey:@"CPTColor.numberOfComponents"]; @@ -443,7 +522,7 @@ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder } CGColorRef color = CGColorCreate(colorSpace, colorComponents); - cgColor = color; + _cgColor = color; CGColorSpaceRelease(colorSpace); free(colorComponents); @@ -470,6 +549,14 @@ +(BOOL)supportsSecureCoding -(nonnull id)copyWithZone:(nullable NSZone *)zone { +#if TARGET_OS_OSX + NSColor *nsColorCopy = nil; + if ( _nsColor ) { + nsColorCopy = [_nsColor copyWithZone:zone]; + CPTColor *colorCopy = [[[self class] allocWithZone:zone] initWithNSColor:nsColorCopy]; + return colorCopy; + } +#endif CGColorRef cgColorCopy = NULL; CGColorRef myColor = self.cgColor; @@ -552,3 +639,5 @@ -(nullable id)debugQuickLookObject /// @endcond @end + +#pragma clang diagnostic pop diff --git a/framework/Source/CPTColorTests.m b/framework/Source/CPTColorTests.m index e2b0840a4..9c588937d 100644 --- a/framework/Source/CPTColorTests.m +++ b/framework/Source/CPTColorTests.m @@ -14,6 +14,18 @@ -(void)testKeyedArchivingRoundTrip CPTColor *newColor = [self archiveRoundTrip:color]; XCTAssertEqualObjects(color, newColor, @"Colors not equal"); + +#if TARGET_OS_OSX + if (@available(macOS 10.13, *)) { + + color = [CPTColor colorWithNSColor:[NSColor systemRedColor]]; + + newColor = [self archiveRoundTrip:color]; + + XCTAssertEqualObjects(color, newColor, @"Colors not equal"); + + } +#endif } @end diff --git a/framework/Source/CPTGraph.m b/framework/Source/CPTGraph.m index d80aa0c05..7b28ba8f0 100644 --- a/framework/Source/CPTGraph.m +++ b/framework/Source/CPTGraph.m @@ -379,7 +379,20 @@ -(void)layoutAndRenderInContext:(nonnull CGContextRef)context { [self reloadDataIfNeeded]; [self.axisSet.axes makeObjectsPerformSelector:@selector(relabel)]; + +#if TARGET_OS_OSX + if (@available(macOS 10.13, *)) { + NSAppearance *oldAppearance = NSAppearance.currentAppearance; + NSView *view = (NSView *)self.hostingView; + NSAppearance.currentAppearance = view.effectiveAppearance; + [super layoutAndRenderInContext:context]; + NSAppearance.currentAppearance = oldAppearance; + } else { + [super layoutAndRenderInContext:context]; + } +#else [super layoutAndRenderInContext:context]; +#endif } /// @endcond diff --git a/framework/Source/CPTLayer.m b/framework/Source/CPTLayer.m index 357326c0c..01580e478 100644 --- a/framework/Source/CPTLayer.m +++ b/framework/Source/CPTLayer.m @@ -323,7 +323,18 @@ -(void)display return; } else { +#if TARGET_OS_OSX + if (@available(macOS 10.13, *)) { + NSAppearance *oldAppearance = NSAppearance.currentAppearance; + NSAppearance.currentAppearance = ((NSView *)self.graph.hostingView).effectiveAppearance; + [super display]; + NSAppearance.currentAppearance = oldAppearance; + } else { + [super display]; + } +#else [super display]; +#endif } } From b68a81f7e1bfdedd09319230620279a03718eca2 Mon Sep 17 00:00:00 2001 From: Pascal Freiburghaus Date: Sun, 12 Aug 2018 15:46:14 +0200 Subject: [PATCH 066/160] Workaround for lack of @available check. Checking for availability of NSColor.colorNamed that is only there with 10.13 --- framework/Source/CPTColorTests.m | 3 ++- framework/Source/CPTGraph.m | 3 ++- framework/Source/CPTLayer.m | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/framework/Source/CPTColorTests.m b/framework/Source/CPTColorTests.m index 9c588937d..dc0890324 100644 --- a/framework/Source/CPTColorTests.m +++ b/framework/Source/CPTColorTests.m @@ -16,7 +16,8 @@ -(void)testKeyedArchivingRoundTrip XCTAssertEqualObjects(color, newColor, @"Colors not equal"); #if TARGET_OS_OSX - if (@available(macOS 10.13, *)) { + // Workaround since @available macro is not there + if ( [NSColor respondsToSelector:@selector(colorNamed:)] ) { color = [CPTColor colorWithNSColor:[NSColor systemRedColor]]; diff --git a/framework/Source/CPTGraph.m b/framework/Source/CPTGraph.m index 7b28ba8f0..e402bcb61 100644 --- a/framework/Source/CPTGraph.m +++ b/framework/Source/CPTGraph.m @@ -381,7 +381,8 @@ -(void)layoutAndRenderInContext:(nonnull CGContextRef)context [self.axisSet.axes makeObjectsPerformSelector:@selector(relabel)]; #if TARGET_OS_OSX - if (@available(macOS 10.13, *)) { + // Workaround since @available macro is not there + if ( [NSColor respondsToSelector:@selector(colorNamed:)] ) { NSAppearance *oldAppearance = NSAppearance.currentAppearance; NSView *view = (NSView *)self.hostingView; NSAppearance.currentAppearance = view.effectiveAppearance; diff --git a/framework/Source/CPTLayer.m b/framework/Source/CPTLayer.m index 01580e478..16ad03316 100644 --- a/framework/Source/CPTLayer.m +++ b/framework/Source/CPTLayer.m @@ -324,7 +324,8 @@ -(void)display } else { #if TARGET_OS_OSX - if (@available(macOS 10.13, *)) { + // Workaround since @available macro is not there + if ( [NSColor respondsToSelector:@selector(colorNamed:)] ) { NSAppearance *oldAppearance = NSAppearance.currentAppearance; NSAppearance.currentAppearance = ((NSView *)self.graph.hostingView).effectiveAppearance; [super display]; From 7ceb75790b40b95f45583e1816835e91e4a19e2e Mon Sep 17 00:00:00 2001 From: Pascal Freiburghaus Date: Sun, 12 Aug 2018 16:21:00 +0200 Subject: [PATCH 067/160] turning off undeclared-selector warning for respondsToSelector call. Otherwise travis build will not work. --- framework/Source/CPTColorTests.m | 3 +++ framework/Source/CPTGraph.m | 3 +++ framework/Source/CPTLayer.m | 4 ++++ 3 files changed, 10 insertions(+) diff --git a/framework/Source/CPTColorTests.m b/framework/Source/CPTColorTests.m index dc0890324..83897d3ae 100644 --- a/framework/Source/CPTColorTests.m +++ b/framework/Source/CPTColorTests.m @@ -16,6 +16,8 @@ -(void)testKeyedArchivingRoundTrip XCTAssertEqualObjects(color, newColor, @"Colors not equal"); #if TARGET_OS_OSX +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wundeclared-selector" // Workaround since @available macro is not there if ( [NSColor respondsToSelector:@selector(colorNamed:)] ) { @@ -26,6 +28,7 @@ -(void)testKeyedArchivingRoundTrip XCTAssertEqualObjects(color, newColor, @"Colors not equal"); } +#pragma clang diagnostic pop #endif } diff --git a/framework/Source/CPTGraph.m b/framework/Source/CPTGraph.m index e402bcb61..d3bf4bc88 100644 --- a/framework/Source/CPTGraph.m +++ b/framework/Source/CPTGraph.m @@ -381,6 +381,8 @@ -(void)layoutAndRenderInContext:(nonnull CGContextRef)context [self.axisSet.axes makeObjectsPerformSelector:@selector(relabel)]; #if TARGET_OS_OSX +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wundeclared-selector" // Workaround since @available macro is not there if ( [NSColor respondsToSelector:@selector(colorNamed:)] ) { NSAppearance *oldAppearance = NSAppearance.currentAppearance; @@ -391,6 +393,7 @@ -(void)layoutAndRenderInContext:(nonnull CGContextRef)context } else { [super layoutAndRenderInContext:context]; } +#pragma clang diagnostic pop #else [super layoutAndRenderInContext:context]; #endif diff --git a/framework/Source/CPTLayer.m b/framework/Source/CPTLayer.m index 16ad03316..1b95b7aeb 100644 --- a/framework/Source/CPTLayer.m +++ b/framework/Source/CPTLayer.m @@ -324,7 +324,10 @@ -(void)display } else { #if TARGET_OS_OSX +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wundeclared-selector" // Workaround since @available macro is not there + if ( [NSColor respondsToSelector:@selector(colorNamed:)] ) { NSAppearance *oldAppearance = NSAppearance.currentAppearance; NSAppearance.currentAppearance = ((NSView *)self.graph.hostingView).effectiveAppearance; @@ -333,6 +336,7 @@ -(void)display } else { [super display]; } +#pragma clang diagnostic pop #else [super display]; #endif From 81f86a6f14c63dd62607115db2c59e88261b1ac1 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Wed, 15 Aug 2018 17:47:05 -0400 Subject: [PATCH 068/160] Standardized code formatting. --- framework/Source/CPTColor.m | 28 +++++++++++++++------------- framework/Source/CPTColorTests.m | 8 +++----- framework/Source/CPTGraph.m | 7 ++++--- framework/Source/CPTLayer.m | 7 ++++--- 4 files changed, 26 insertions(+), 24 deletions(-) diff --git a/framework/Source/CPTColor.m b/framework/Source/CPTColor.m index 913c269d2..dd821d6e5 100644 --- a/framework/Source/CPTColor.m +++ b/framework/Source/CPTColor.m @@ -18,19 +18,22 @@ @implementation CPTColor #if TARGET_OS_OSX + /** @property nullable NSColor nsColorCahce * @brief The NSColor to wrap around. **/ @synthesize nsColor = _nsColor; -- (NSColor *)nsColor +-(NSColor *)nsColor { - if (_nsColor) { + if ( _nsColor ) { return _nsColor; - } else { + } + else { return [NSColor colorWithCIColor:[CIColor colorWithCGColor:self.cgColor]]; } } + #endif /** @property nonnull CGColorRef cgColor @@ -38,24 +41,21 @@ - (NSColor *)nsColor **/ @synthesize cgColor = _cgColor; --(CGColorRef) cgColor +-(CGColorRef)cgColor { #if TARGET_OS_OSX - if (_nsColor) { + if ( _nsColor ) { return _nsColor.CGColor; } #endif return _cgColor; } - /** @property BOOL opaque * @brief If @YES, the color is completely opaque. */ @dynamic opaque; - - #pragma mark - #pragma mark Factory Methods @@ -351,6 +351,7 @@ +(nonnull instancetype)colorWithGenericGray:(CGFloat)gray } #if TARGET_OS_OSX + /** @brief Creates and returns a new CPTColor instance initialized with the provided NSColor. NSColor can be a dynamic system color * or catalog color. This adds support for dark mode in macOS 10.14 * @param newNSColor The color to wrap. @@ -360,8 +361,8 @@ +(nonnull instancetype)colorWithNSColor:(nonnull NSColor *)newNSColor { return [[self alloc] initWithNSColor:newNSColor]; } -#endif +#endif #pragma mark - #pragma mark Init/Dealloc @@ -403,6 +404,7 @@ -(nonnull instancetype)initWithComponentRed:(CGFloat)red green:(CGFloat)green bl } #if TARGET_OS_OSX + /** @brief Initializes a newly allocated CPTColor object with the provided NSColor. * * @param newNSColor The color to wrap. @@ -415,6 +417,7 @@ -(nonnull instancetype)initWithNSColor:(nonnull NSColor *)newNSColor } return self; } + #endif /// @cond @@ -442,7 +445,7 @@ -(void)dealloc -(nonnull instancetype)colorWithAlphaComponent:(CGFloat)alpha { #if TARGET_OS_OSX - if (_nsColor) { + if ( _nsColor ) { NSColor *newNSColor = [_nsColor colorWithAlphaComponent:alpha]; return [[self class] colorWithNSColor:newNSColor]; } @@ -478,7 +481,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder #if TARGET_OS_OSX [coder encodeObject:_nsColor forKey:@"CPTColor.nsColor"]; #endif - + [coder encodeCGColorSpace:CGColorGetColorSpace(theColor) forKey:@"CPTColor.colorSpace"]; size_t numberOfComponents = CGColorGetNumberOfComponents(theColor); @@ -501,11 +504,10 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { if ( (self = [super init]) ) { - #if TARGET_OS_OSX NSColor *decodedNSColor = [coder decodeObjectOfClass:[NSColor class] forKey:@"CPTColor.nsColor"]; - if (decodedNSColor) { + if ( decodedNSColor ) { _nsColor = decodedNSColor; return self; } diff --git a/framework/Source/CPTColorTests.m b/framework/Source/CPTColorTests.m index 83897d3ae..6e880311a 100644 --- a/framework/Source/CPTColorTests.m +++ b/framework/Source/CPTColorTests.m @@ -14,19 +14,17 @@ -(void)testKeyedArchivingRoundTrip CPTColor *newColor = [self archiveRoundTrip:color]; XCTAssertEqualObjects(color, newColor, @"Colors not equal"); - + #if TARGET_OS_OSX #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wundeclared-selector" // Workaround since @available macro is not there if ( [NSColor respondsToSelector:@selector(colorNamed:)] ) { - color = [CPTColor colorWithNSColor:[NSColor systemRedColor]]; - + newColor = [self archiveRoundTrip:color]; - + XCTAssertEqualObjects(color, newColor, @"Colors not equal"); - } #pragma clang diagnostic pop #endif diff --git a/framework/Source/CPTGraph.m b/framework/Source/CPTGraph.m index d3bf4bc88..5ce48cf5c 100644 --- a/framework/Source/CPTGraph.m +++ b/framework/Source/CPTGraph.m @@ -379,18 +379,19 @@ -(void)layoutAndRenderInContext:(nonnull CGContextRef)context { [self reloadDataIfNeeded]; [self.axisSet.axes makeObjectsPerformSelector:@selector(relabel)]; - + #if TARGET_OS_OSX #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wundeclared-selector" // Workaround since @available macro is not there if ( [NSColor respondsToSelector:@selector(colorNamed:)] ) { NSAppearance *oldAppearance = NSAppearance.currentAppearance; - NSView *view = (NSView *)self.hostingView; + NSView *view = (NSView *)self.hostingView; NSAppearance.currentAppearance = view.effectiveAppearance; [super layoutAndRenderInContext:context]; NSAppearance.currentAppearance = oldAppearance; - } else { + } + else { [super layoutAndRenderInContext:context]; } #pragma clang diagnostic pop diff --git a/framework/Source/CPTLayer.m b/framework/Source/CPTLayer.m index 1b95b7aeb..636ba9057 100644 --- a/framework/Source/CPTLayer.m +++ b/framework/Source/CPTLayer.m @@ -327,13 +327,14 @@ -(void)display #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wundeclared-selector" // Workaround since @available macro is not there - + if ( [NSColor respondsToSelector:@selector(colorNamed:)] ) { NSAppearance *oldAppearance = NSAppearance.currentAppearance; - NSAppearance.currentAppearance = ((NSView *)self.graph.hostingView).effectiveAppearance; + NSAppearance.currentAppearance = ( (NSView *)self.graph.hostingView ).effectiveAppearance; [super display]; NSAppearance.currentAppearance = oldAppearance; - } else { + } + else { [super display]; } #pragma clang diagnostic pop From 26b002e0b52e6ef19e1ed090d2bb647a7a2f8fa8 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Wed, 15 Aug 2018 17:52:22 -0400 Subject: [PATCH 069/160] Added Pascal Freiburghaus to the license. --- License.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/License.txt b/License.txt index 0466e3b45..759564836 100644 --- a/License.txt +++ b/License.txt @@ -1,4 +1,4 @@ -Copyright (c) 2017, Drew McCormack, Brad Larson, Eric Skroch, Barry Wark, Dirkjan Krijnders, Rick Maddy, Vijay Kalusani, Caleb Cannon, Jeff Buck, Thomas Elstner, Jeroen Leenarts, Craig Hockenberry, Hartwig Wiesmann, Koen van der Drift, Nino Ag, Mike Lischke, Trevor Harmon, Travis Fischer, Graham Mueller, RafaÅ‚ Wójcik, Mike Rossetti, Michael Merickel, Lane Roathe, Ingmar Stein, Sean Holbert, Victor Martin Garcia, Jérôme Morissard, Demitri Muna, Tim Monzures, Kirill Yakimovich, and Tom Izaks. +Copyright (c) 2018, Drew McCormack, Brad Larson, Eric Skroch, Barry Wark, Dirkjan Krijnders, Rick Maddy, Vijay Kalusani, Caleb Cannon, Jeff Buck, Thomas Elstner, Jeroen Leenarts, Craig Hockenberry, Hartwig Wiesmann, Koen van der Drift, Nino Ag, Mike Lischke, Trevor Harmon, Travis Fischer, Graham Mueller, RafaÅ‚ Wójcik, Mike Rossetti, Michael Merickel, Lane Roathe, Ingmar Stein, Sean Holbert, Victor Martin Garcia, Jérôme Morissard, Demitri Muna, Tim Monzures, Kirill Yakimovich, Tom Izaks, and Pascal Freiburghaus. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: From 9c0c9fc4e56af5bd5877d8b7c7a9edeaa5eff41e Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Wed, 15 Aug 2018 19:06:59 -0400 Subject: [PATCH 070/160] Fixed -respondsToSelector: checks to check methods actually called in the protected code. --- framework/Source/CPTColorTests.m | 2 +- framework/Source/CPTGraph.m | 2 +- framework/Source/CPTLayer.m | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/framework/Source/CPTColorTests.m b/framework/Source/CPTColorTests.m index 6e880311a..ea7a9fb8c 100644 --- a/framework/Source/CPTColorTests.m +++ b/framework/Source/CPTColorTests.m @@ -19,7 +19,7 @@ -(void)testKeyedArchivingRoundTrip #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wundeclared-selector" // Workaround since @available macro is not there - if ( [NSColor respondsToSelector:@selector(colorNamed:)] ) { + if ( [NSColor respondsToSelector:@selector(systemRedColor)] ) { color = [CPTColor colorWithNSColor:[NSColor systemRedColor]]; newColor = [self archiveRoundTrip:color]; diff --git a/framework/Source/CPTGraph.m b/framework/Source/CPTGraph.m index 5ce48cf5c..213b701e2 100644 --- a/framework/Source/CPTGraph.m +++ b/framework/Source/CPTGraph.m @@ -384,7 +384,7 @@ -(void)layoutAndRenderInContext:(nonnull CGContextRef)context #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wundeclared-selector" // Workaround since @available macro is not there - if ( [NSColor respondsToSelector:@selector(colorNamed:)] ) { + if ( [NSView respondsToSelector:@selector(effectiveAppearance)] ) { NSAppearance *oldAppearance = NSAppearance.currentAppearance; NSView *view = (NSView *)self.hostingView; NSAppearance.currentAppearance = view.effectiveAppearance; diff --git a/framework/Source/CPTLayer.m b/framework/Source/CPTLayer.m index 636ba9057..131879887 100644 --- a/framework/Source/CPTLayer.m +++ b/framework/Source/CPTLayer.m @@ -328,7 +328,7 @@ -(void)display #pragma clang diagnostic ignored "-Wundeclared-selector" // Workaround since @available macro is not there - if ( [NSColor respondsToSelector:@selector(colorNamed:)] ) { + if ( [NSView respondsToSelector:@selector(effectiveAppearance)] ) { NSAppearance *oldAppearance = NSAppearance.currentAppearance; NSAppearance.currentAppearance = ( (NSView *)self.graph.hostingView ).effectiveAppearance; [super display]; From 2be52a02a3cdc785db9b03128a7f9104d881dc03 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Wed, 15 Aug 2018 19:07:35 -0400 Subject: [PATCH 071/160] Replace direct ivar access in CPTColor with properties. --- framework/Source/CPTColor.m | 80 +++++++++++++++++++++++-------------- 1 file changed, 50 insertions(+), 30 deletions(-) diff --git a/framework/Source/CPTColor.m b/framework/Source/CPTColor.m index dd821d6e5..ba9cfdcde 100644 --- a/framework/Source/CPTColor.m +++ b/framework/Source/CPTColor.m @@ -1,13 +1,23 @@ #import "CPTColor.h" -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdirect-ivar-access" - #import "CPTColorSpace.h" #import "CPTDefinitions.h" #import "CPTPlatformSpecificCategories.h" #import "NSCoderExtensions.h" +/// @cond + +@interface CPTColor() + +#if TARGET_OS_OSX +@property (nonatomic, readonly, nullable) NSColor *nsColorCache; +#endif +@end + +/// @endcond + +#pragma mark - + /** @brief An immutable color. * * An immutable object wrapper class around @ref CGColorRef. @@ -19,15 +29,23 @@ @implementation CPTColor #if TARGET_OS_OSX -/** @property nullable NSColor nsColorCahce +/** @internal + * @property nullable NSColor *nsColorCache * @brief The NSColor to wrap around. **/ -@synthesize nsColor = _nsColor; +@synthesize nsColorCache; + +/** @property nonnull NSColor *nsColor + * @brief The NSColor to wrap around. + **/ +@dynamic nsColor; -(NSColor *)nsColor { - if ( _nsColor ) { - return _nsColor; + NSColor *theNSColor = self.nsColorCache; + + if ( theNSColor ) { + return theNSColor; } else { return [NSColor colorWithCIColor:[CIColor colorWithCGColor:self.cgColor]]; @@ -39,16 +57,17 @@ -(NSColor *)nsColor /** @property nonnull CGColorRef cgColor * @brief The @ref CGColorRef to wrap around. **/ -@synthesize cgColor = _cgColor; +@synthesize cgColor; -(CGColorRef)cgColor { #if TARGET_OS_OSX - if ( _nsColor ) { - return _nsColor.CGColor; + NSColor *theNSColor = self.nsColorCache; + if ( theNSColor ) { + return theNSColor.CGColor; } #endif - return _cgColor; + return cgColor; } /** @property BOOL opaque @@ -352,8 +371,10 @@ +(nonnull instancetype)colorWithGenericGray:(CGFloat)gray #if TARGET_OS_OSX -/** @brief Creates and returns a new CPTColor instance initialized with the provided NSColor. NSColor can be a dynamic system color - * or catalog color. This adds support for dark mode in macOS 10.14 +/** @brief Creates and returns a new CPTColor instance initialized with the provided NSColor. + * + * NSColor can be a dynamic system color or catalog color. This adds support for dark mode in macOS 10.14. + * * @param newNSColor The color to wrap. * @return A new CPTColor instance initialized with the provided NSColor. **/ @@ -376,7 +397,7 @@ -(nonnull instancetype)initWithCGColor:(nonnull CGColorRef)newCGColor { if ( (self = [super init]) ) { CGColorRetain(newCGColor); - _cgColor = newCGColor; + cgColor = newCGColor; } return self; } @@ -406,6 +427,8 @@ -(nonnull instancetype)initWithComponentRed:(CGFloat)red green:(CGFloat)green bl #if TARGET_OS_OSX /** @brief Initializes a newly allocated CPTColor object with the provided NSColor. + * + * NSColor can be a dynamic system color or catalog color. This adds support for dark mode in macOS 10.14. * * @param newNSColor The color to wrap. * @return The initialized CPTColor object. @@ -413,7 +436,7 @@ -(nonnull instancetype)initWithComponentRed:(CGFloat)red green:(CGFloat)green bl -(nonnull instancetype)initWithNSColor:(nonnull NSColor *)newNSColor { if ( (self = [super init]) ) { - _nsColor = newNSColor; + nsColorCache = newNSColor; } return self; } @@ -429,7 +452,7 @@ -(nonnull instancetype)init -(void)dealloc { - CGColorRelease(_cgColor); + CGColorRelease(cgColor); } /// @endcond @@ -445,8 +468,9 @@ -(void)dealloc -(nonnull instancetype)colorWithAlphaComponent:(CGFloat)alpha { #if TARGET_OS_OSX - if ( _nsColor ) { - NSColor *newNSColor = [_nsColor colorWithAlphaComponent:alpha]; + NSColor *theNSColor = self.nsColorCache; + if ( theNSColor ) { + NSColor *newNSColor = [theNSColor colorWithAlphaComponent:alpha]; return [[self class] colorWithNSColor:newNSColor]; } #endif @@ -476,12 +500,12 @@ -(BOOL)isOpaque -(void)encodeWithCoder:(nonnull NSCoder *)coder { - CGColorRef theColor = self.cgColor; - #if TARGET_OS_OSX - [coder encodeObject:_nsColor forKey:@"CPTColor.nsColor"]; + [coder encodeConditionalObject:self.nsColorCache forKey:@"CPTColor.nsColorCache"]; #endif + CGColorRef theColor = self.cgColor; + [coder encodeCGColorSpace:CGColorGetColorSpace(theColor) forKey:@"CPTColor.colorSpace"]; size_t numberOfComponents = CGColorGetNumberOfComponents(theColor); @@ -506,10 +530,9 @@ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder if ( (self = [super init]) ) { #if TARGET_OS_OSX NSColor *decodedNSColor = [coder decodeObjectOfClass:[NSColor class] - forKey:@"CPTColor.nsColor"]; + forKey:@"CPTColor.nsColorCache"]; if ( decodedNSColor ) { - _nsColor = decodedNSColor; - return self; + nsColorCache = decodedNSColor; } #endif CGColorSpaceRef colorSpace = [coder newCGColorSpaceDecodeForKey:@"CPTColor.colorSpace"]; @@ -524,7 +547,7 @@ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder } CGColorRef color = CGColorCreate(colorSpace, colorComponents); - _cgColor = color; + cgColor = color; CGColorSpaceRelease(colorSpace); free(colorComponents); @@ -552,9 +575,8 @@ +(BOOL)supportsSecureCoding -(nonnull id)copyWithZone:(nullable NSZone *)zone { #if TARGET_OS_OSX - NSColor *nsColorCopy = nil; - if ( _nsColor ) { - nsColorCopy = [_nsColor copyWithZone:zone]; + NSColor *nsColorCopy = [self.nsColorCache copyWithZone:zone]; + if ( nsColorCopy ) { CPTColor *colorCopy = [[[self class] allocWithZone:zone] initWithNSColor:nsColorCopy]; return colorCopy; } @@ -641,5 +663,3 @@ -(nullable id)debugQuickLookObject /// @endcond @end - -#pragma clang diagnostic pop From 9aa8d05a8ae70cc5d8066bdd0187d017fa445df4 Mon Sep 17 00:00:00 2001 From: Pascal Freiburghaus Date: Thu, 16 Aug 2018 17:52:16 +0200 Subject: [PATCH 072/160] Corrected check for existence of selector. Otherwise the Appearance will never be set properly and dynamic colors will be incorrect. --- framework/Source/CPTGraph.m | 2 +- framework/Source/CPTLayer.m | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/framework/Source/CPTGraph.m b/framework/Source/CPTGraph.m index 213b701e2..425947632 100644 --- a/framework/Source/CPTGraph.m +++ b/framework/Source/CPTGraph.m @@ -384,7 +384,7 @@ -(void)layoutAndRenderInContext:(nonnull CGContextRef)context #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wundeclared-selector" // Workaround since @available macro is not there - if ( [NSView respondsToSelector:@selector(effectiveAppearance)] ) { + if ( [NSView instancesRespondToSelector:@selector(effectiveAppearance)] ) { NSAppearance *oldAppearance = NSAppearance.currentAppearance; NSView *view = (NSView *)self.hostingView; NSAppearance.currentAppearance = view.effectiveAppearance; diff --git a/framework/Source/CPTLayer.m b/framework/Source/CPTLayer.m index 131879887..ad78b0582 100644 --- a/framework/Source/CPTLayer.m +++ b/framework/Source/CPTLayer.m @@ -328,7 +328,7 @@ -(void)display #pragma clang diagnostic ignored "-Wundeclared-selector" // Workaround since @available macro is not there - if ( [NSView respondsToSelector:@selector(effectiveAppearance)] ) { + if ( [NSView instancesRespondToSelector:@selector(effectiveAppearance)] ) { NSAppearance *oldAppearance = NSAppearance.currentAppearance; NSAppearance.currentAppearance = ( (NSView *)self.graph.hostingView ).effectiveAppearance; [super display]; From c40443fde54d62956ae73cb43c02928178bdb1a3 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sat, 22 Sep 2018 14:27:21 -0400 Subject: [PATCH 073/160] Removed unneeded data conversion in the Gradient Scatter Plot in the Plot Gallery example app. --- examples/CorePlotGallery/src/plots/GradientScatterPlot.m | 4 ---- 1 file changed, 4 deletions(-) diff --git a/examples/CorePlotGallery/src/plots/GradientScatterPlot.m b/examples/CorePlotGallery/src/plots/GradientScatterPlot.m index ce63d545b..c16ee9215 100644 --- a/examples/CorePlotGallery/src/plots/GradientScatterPlot.m +++ b/examples/CorePlotGallery/src/plots/GradientScatterPlot.m @@ -200,10 +200,6 @@ -(nullable id)numberForPlot:(nonnull CPTPlot *)plot field:(NSUInteger)fieldEnum NSString *key = (fieldEnum == CPTScatterPlotFieldX ? @"x" : @"y"); NSNumber *num = self.plotData[index][key]; - if ( fieldEnum == CPTScatterPlotFieldY ) { - num = @(num.doubleValue); - } - return num; } From 176bcd920515a1db801fd252997444915baad52e Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Tue, 23 Oct 2018 19:42:18 -0400 Subject: [PATCH 074/160] Fixed event handling bug in the DropPlot example app. Fixed issue #394. --- examples/DropPlot/CPTPlotDocument.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/DropPlot/CPTPlotDocument.m b/examples/DropPlot/CPTPlotDocument.m index 6665b9562..3d9b8d072 100644 --- a/examples/DropPlot/CPTPlotDocument.m +++ b/examples/DropPlot/CPTPlotDocument.m @@ -437,7 +437,7 @@ -(BOOL)plotSpace:(nonnull CPTPlotSpace *)space shouldHandlePointingDeviceUpEvent self.dragEnd = interactionPoint; // double-click to completely zoom out - if ( event.clickCount == 2 ) { + if ( (event.type != NSEventTypeScrollWheel) && (event.clickCount == 2) ) { CPTPlotArea *plotArea = self.graph.plotAreaFrame.plotArea; CGPoint dragEndInPlotArea = [self.graph convertPoint:interactionPoint toLayer:plotArea]; From 3414aca95c078c781f389f33d0f49ba09fa63369 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 18 Nov 2018 09:00:28 -0500 Subject: [PATCH 075/160] Updated code formatting with Uncrustify 0.68 --- QCPlugin/CPTBarPlotPlugin.m | 38 +++--- QCPlugin/CPTPieChartPlugin.m | 40 +++---- QCPlugin/CPTScatterPlotPlugin.m | 4 +- QCPlugin/CorePlotQCPlugin.m | 109 +++++++++--------- examples/CPTTestApp/Source/Controller.m | 4 +- examples/CPTTestApp/Source/RotationView.m | 1 + .../src/ios/DetailViewController.m | 1 + .../src/ios/RootViewController.m | 1 + .../src/ios/ThemeTableViewController.m | 2 +- .../src/mac/PlotGalleryController.m | 6 +- .../src/plots/CurvedInterpolationDemo.m | 4 +- .../src/tvOS/ThemeTableViewControllerTV.m | 2 +- .../MacOnly/CPTTextStylePlatformSpecific.m | 6 +- framework/Source/CPTAnimation.m | 10 +- framework/Source/CPTPlot.m | 1 + framework/Source/CPTRangePlot.h | 12 +- framework/Source/CPTRangePlot.m | 4 +- framework/Source/CPTScatterPlot.m | 4 +- framework/Source/CPTTradingRangePlot.m | 4 +- framework/Source/CPTUtilitiesTests.m | 12 +- scripts/uncrustify.cfg | 53 ++++++--- 21 files changed, 171 insertions(+), 147 deletions(-) diff --git a/QCPlugin/CPTBarPlotPlugin.m b/QCPlugin/CPTBarPlotPlugin.m index 14d358b7b..d92cb84f0 100644 --- a/QCPlugin/CPTBarPlotPlugin.m +++ b/QCPlugin/CPTBarPlotPlugin.m @@ -30,8 +30,8 @@ @implementation CPTBarPlotPlugIn +(nonnull NSDictionary *)attributes { return @{ - QCPlugInAttributeNameKey: @"Core Plot Bar Chart", - QCPlugInAttributeDescriptionKey: @"Bar chart" + QCPlugInAttributeNameKey: @"Core Plot Bar Chart", + QCPlugInAttributeDescriptionKey: @"Bar chart" }; } @@ -41,58 +41,58 @@ +(nullable CPTDictionary *)attributesForPropertyPortWithKey:(nullable NSString * if ( [key isEqualToString:@"inputBarWidth"] ) { return @{ - QCPortAttributeNameKey: @"Bar Width", - QCPortAttributeDefaultValueKey: @1.0, - QCPortAttributeMinimumValueKey: @0.0 + QCPortAttributeNameKey: @"Bar Width", + QCPortAttributeDefaultValueKey: @1.0, + QCPortAttributeMinimumValueKey: @0.0 }; } if ( [key isEqualToString:@"inputBarOffset"] ) { return @{ - QCPortAttributeNameKey: @"Bar Offset", - QCPortAttributeDefaultValueKey: @0.5 + QCPortAttributeNameKey: @"Bar Offset", + QCPortAttributeDefaultValueKey: @0.5 }; } if ( [key isEqualToString:@"inputBaseValue"] ) { return @{ - QCPortAttributeNameKey: @"Base Value", - QCPortAttributeDefaultValueKey: @0.0 + QCPortAttributeNameKey: @"Base Value", + QCPortAttributeDefaultValueKey: @0.0 }; } if ( [key isEqualToString:@"inputHorizontalBars"] ) { return @{ - QCPortAttributeNameKey: @"Horizontal Bars", - QCPortAttributeDefaultValueKey: @NO + QCPortAttributeNameKey: @"Horizontal Bars", + QCPortAttributeDefaultValueKey: @NO }; } if ( [key isEqualToString:@"inputXMin"] ) { return @{ - QCPortAttributeNameKey: @"X Range Min", - QCPortAttributeDefaultValueKey: @0.0 + QCPortAttributeNameKey: @"X Range Min", + QCPortAttributeDefaultValueKey: @0.0 }; } if ( [key isEqualToString:@"inputXMax"] ) { return @{ - QCPortAttributeNameKey: @"X Range Max", - QCPortAttributeDefaultValueKey: @5.0 + QCPortAttributeNameKey: @"X Range Max", + QCPortAttributeDefaultValueKey: @5.0 }; } if ( [key isEqualToString:@"inputYMin"] ) { return @{ - QCPortAttributeNameKey: @"Y Range Min", - QCPortAttributeDefaultValueKey: @0.0 + QCPortAttributeNameKey: @"Y Range Min", + QCPortAttributeDefaultValueKey: @0.0 }; } if ( [key isEqualToString:@"inputYMax"] ) { return @{ - QCPortAttributeNameKey: @"Y Range Max", - QCPortAttributeDefaultValueKey: @5.0 + QCPortAttributeNameKey: @"Y Range Max", + QCPortAttributeDefaultValueKey: @5.0 }; } diff --git a/QCPlugin/CPTPieChartPlugin.m b/QCPlugin/CPTPieChartPlugin.m index eab948de8..6466a2e8d 100644 --- a/QCPlugin/CPTPieChartPlugin.m +++ b/QCPlugin/CPTPieChartPlugin.m @@ -28,8 +28,8 @@ @implementation CPTPieChartPlugIn +(nonnull NSDictionary *)attributes { return @{ - QCPlugInAttributeNameKey: @"Core Plot Pie Chart", - QCPlugInAttributeDescriptionKey: @"Pie chart" + QCPlugInAttributeNameKey: @"Core Plot Pie Chart", + QCPlugInAttributeDescriptionKey: @"Pie chart" }; } @@ -72,51 +72,51 @@ +(nullable CPTDictionary *)attributesForPropertyPortWithKey:(nullable NSString * // A few additional ports for the pie chart type ... if ( [key isEqualToString:@"inputPieRadius"] ) { return @{ - QCPortAttributeNameKey: @"Pie Radius", - QCPortAttributeMinimumValueKey: @0.0, - QCPortAttributeDefaultValueKey: @0.75 + QCPortAttributeNameKey: @"Pie Radius", + QCPortAttributeMinimumValueKey: @0.0, + QCPortAttributeDefaultValueKey: @0.75 }; } else if ( [key isEqualToString:@"inputSliceLabelOffset"] ) { return @{ - QCPortAttributeNameKey: @"Label Offset", - QCPortAttributeDefaultValueKey: @20.0 + QCPortAttributeNameKey: @"Label Offset", + QCPortAttributeDefaultValueKey: @20.0 }; } else if ( [key isEqualToString:@"inputStartAngle"] ) { return @{ - QCPortAttributeNameKey: @"Start Angle", - QCPortAttributeDefaultValueKey: @0.0 + QCPortAttributeNameKey: @"Start Angle", + QCPortAttributeDefaultValueKey: @0.0 }; } else if ( [key isEqualToString:@"inputSliceDirection"] ) { return @{ - QCPortAttributeNameKey: @"Slice Direction", - QCPortAttributeMaximumValueKey: @1, - QCPortAttributeMenuItemsKey: @[@"Clockwise", @"Counter-Clockwise"], - QCPortAttributeDefaultValueKey: @0 + QCPortAttributeNameKey: @"Slice Direction", + QCPortAttributeMaximumValueKey: @1, + QCPortAttributeMenuItemsKey: @[@"Clockwise", @"Counter-Clockwise"], + QCPortAttributeDefaultValueKey: @0 }; } else if ( [key isEqualToString:@"inputBorderWidth"] ) { return @{ - QCPortAttributeNameKey: @"Border Width", - QCPortAttributeMinimumValueKey: @0.0, - QCPortAttributeDefaultValueKey: @1.0 + QCPortAttributeNameKey: @"Border Width", + QCPortAttributeMinimumValueKey: @0.0, + QCPortAttributeDefaultValueKey: @1.0 }; } else if ( [key isEqualToString:@"inputBorderColor"] ) { CGColorRef grayColor = CGColorCreateGenericGray(0.0, 1.0); CPTDictionary *result = @{ - QCPortAttributeNameKey: @"Border Color", - QCPortAttributeDefaultValueKey: (id)CFBridgingRelease(grayColor) + QCPortAttributeNameKey: @"Border Color", + QCPortAttributeDefaultValueKey: (id)CFBridgingRelease(grayColor) }; return result; } else if ( [key isEqualToString:@"inputLabelColor"] ) { CGColorRef grayColor = CGColorCreateGenericGray(1.0, 1.0); CPTDictionary *result = @{ - QCPortAttributeNameKey: @"Label Color", - QCPortAttributeDefaultValueKey: (id)CFBridgingRelease(grayColor) + QCPortAttributeNameKey: @"Label Color", + QCPortAttributeDefaultValueKey: (id)CFBridgingRelease(grayColor) }; return result; } diff --git a/QCPlugin/CPTScatterPlotPlugin.m b/QCPlugin/CPTScatterPlotPlugin.m index d8833570b..59c9203ee 100644 --- a/QCPlugin/CPTScatterPlotPlugin.m +++ b/QCPlugin/CPTScatterPlotPlugin.m @@ -25,8 +25,8 @@ @implementation CPTScatterPlotPlugIn +(nonnull NSDictionary *)attributes { return @{ - QCPlugInAttributeNameKey: @"Core Plot Scatter Plot", - QCPlugInAttributeDescriptionKey: @"Scatter plot" + QCPlugInAttributeNameKey: @"Core Plot Scatter Plot", + QCPlugInAttributeDescriptionKey: @"Scatter plot" }; } diff --git a/QCPlugin/CorePlotQCPlugin.m b/QCPlugin/CorePlotQCPlugin.m index 673bbd0a4..75a7efbdf 100644 --- a/QCPlugin/CorePlotQCPlugin.m +++ b/QCPlugin/CorePlotQCPlugin.m @@ -90,8 +90,8 @@ @implementation CorePlotQCPlugIn */ return @{ - QCPlugInAttributeNameKey: kQCPlugIn_Name, - QCPlugInAttributeDescriptionKey: kQCPlugIn_Description + QCPlugInAttributeNameKey: kQCPlugIn_Name, + QCPlugInAttributeDescriptionKey: kQCPlugIn_Description }; } @@ -194,157 +194,157 @@ +(nullable CPTDictionary *)attributesForPropertyPortWithKey:(nullable NSString * if ( [key isEqualToString:@"inputXMin"] ) { return @{ - QCPortAttributeNameKey: @"X Range Min", - QCPortAttributeDefaultValueKey: @(-1.0) + QCPortAttributeNameKey: @"X Range Min", + QCPortAttributeDefaultValueKey: @(-1.0) }; } if ( [key isEqualToString:@"inputXMax"] ) { return @{ - QCPortAttributeNameKey: @"X Range Max", - QCPortAttributeDefaultValueKey: @1.0 + QCPortAttributeNameKey: @"X Range Max", + QCPortAttributeDefaultValueKey: @1.0 }; } if ( [key isEqualToString:@"inputYMin"] ) { return @{ - QCPortAttributeNameKey: @"Y Range Min", - QCPortAttributeDefaultValueKey: @(-1.0) + QCPortAttributeNameKey: @"Y Range Min", + QCPortAttributeDefaultValueKey: @(-1.0) }; } if ( [key isEqualToString:@"inputYMax"] ) { return @{ - QCPortAttributeNameKey: @"Y Range Max", - QCPortAttributeDefaultValueKey: @1.0 + QCPortAttributeNameKey: @"Y Range Max", + QCPortAttributeDefaultValueKey: @1.0 }; } if ( [key isEqualToString:@"inputXMajorIntervals"] ) { return @{ - QCPortAttributeNameKey: @"X Major Intervals", - QCPortAttributeDefaultValueKey: @4.0, - QCPortAttributeMinimumValueKey: @0.0 + QCPortAttributeNameKey: @"X Major Intervals", + QCPortAttributeDefaultValueKey: @4.0, + QCPortAttributeMinimumValueKey: @0.0 }; } if ( [key isEqualToString:@"inputYMajorIntervals"] ) { return @{ - QCPortAttributeNameKey: @"Y Major Intervals", - QCPortAttributeDefaultValueKey: @4.0, - QCPortAttributeMinimumValueKey: @0.0 + QCPortAttributeNameKey: @"Y Major Intervals", + QCPortAttributeDefaultValueKey: @4.0, + QCPortAttributeMinimumValueKey: @0.0 }; } if ( [key isEqualToString:@"inputXMinorIntervals"] ) { return @{ - QCPortAttributeNameKey: @"X Minor Intervals", - QCPortAttributeDefaultValueKey: @1, - QCPortAttributeMinimumValueKey: @0 + QCPortAttributeNameKey: @"X Minor Intervals", + QCPortAttributeDefaultValueKey: @1, + QCPortAttributeMinimumValueKey: @0 }; } if ( [key isEqualToString:@"inputYMinorIntervals"] ) { return @{ - QCPortAttributeNameKey: @"Y Minor Intervals", - QCPortAttributeDefaultValueKey: @1, - QCPortAttributeMinimumValueKey: @0 + QCPortAttributeNameKey: @"Y Minor Intervals", + QCPortAttributeDefaultValueKey: @1, + QCPortAttributeMinimumValueKey: @0 }; } if ( [key isEqualToString:@"inputAxisColor"] ) { CGColorRef axisColor = CGColorCreateGenericRGB(1.0, 1.0, 1.0, 1.0); CPTDictionary *result = @{ - QCPortAttributeNameKey: @"Axis Color", - QCPortAttributeDefaultValueKey: (id)CFBridgingRelease(axisColor) + QCPortAttributeNameKey: @"Axis Color", + QCPortAttributeDefaultValueKey: (id)CFBridgingRelease(axisColor) }; return result; } if ( [key isEqualToString:@"inputAxisLineWidth"] ) { return @{ - QCPortAttributeNameKey: @"Axis Line Width", - QCPortAttributeMinimumValueKey: @0.0, - QCPortAttributeDefaultValueKey: @1.0 + QCPortAttributeNameKey: @"Axis Line Width", + QCPortAttributeMinimumValueKey: @0.0, + QCPortAttributeDefaultValueKey: @1.0 }; } if ( [key isEqualToString:@"inputAxisMajorTickWidth"] ) { return @{ - QCPortAttributeNameKey: @"Major Tick Width", - QCPortAttributeMinimumValueKey: @0.0, - QCPortAttributeDefaultValueKey: @2.0 + QCPortAttributeNameKey: @"Major Tick Width", + QCPortAttributeMinimumValueKey: @0.0, + QCPortAttributeDefaultValueKey: @2.0 }; } if ( [key isEqualToString:@"inputAxisMinorTickWidth"] ) { return @{ - QCPortAttributeNameKey: @"Minor Tick Width", - QCPortAttributeMinimumValueKey: @0.0, - QCPortAttributeDefaultValueKey: @1.0 + QCPortAttributeNameKey: @"Minor Tick Width", + QCPortAttributeMinimumValueKey: @0.0, + QCPortAttributeDefaultValueKey: @1.0 }; } if ( [key isEqualToString:@"inputAxisMajorTickLength"] ) { return @{ - QCPortAttributeNameKey: @"Major Tick Length", - QCPortAttributeMinimumValueKey: @0.0, - QCPortAttributeDefaultValueKey: @10.0 + QCPortAttributeNameKey: @"Major Tick Length", + QCPortAttributeMinimumValueKey: @0.0, + QCPortAttributeDefaultValueKey: @10.0 }; } if ( [key isEqualToString:@"inputAxisMinorTickLength"] ) { return @{ - QCPortAttributeNameKey: @"Minor Tick Length", - QCPortAttributeMinimumValueKey: @0.0, - QCPortAttributeDefaultValueKey: @3.0 + QCPortAttributeNameKey: @"Minor Tick Length", + QCPortAttributeMinimumValueKey: @0.0, + QCPortAttributeDefaultValueKey: @3.0 }; } if ( [key isEqualToString:@"inputMajorGridLineWidth"] ) { return @{ - QCPortAttributeNameKey: @"Major Grid Line Width", - QCPortAttributeMinimumValueKey: @0.0, - QCPortAttributeDefaultValueKey: @1.0 + QCPortAttributeNameKey: @"Major Grid Line Width", + QCPortAttributeMinimumValueKey: @0.0, + QCPortAttributeDefaultValueKey: @1.0 }; } if ( [key isEqualToString:@"inputMinorGridLineWidth"] ) { return @{ - QCPortAttributeNameKey: @"Minor Grid Line Width", - QCPortAttributeMinimumValueKey: @0.0, - QCPortAttributeDefaultValueKey: @0.0 + QCPortAttributeNameKey: @"Minor Grid Line Width", + QCPortAttributeMinimumValueKey: @0.0, + QCPortAttributeDefaultValueKey: @0.0 }; } if ( [key isEqualToString:@"inputPlotAreaColor"] ) { CGColorRef plotAreaColor = CGColorCreateGenericRGB(0.0, 0.0, 0.0, 0.4); CPTDictionary *result = @{ - QCPortAttributeNameKey: @"Plot Area Color", - QCPortAttributeDefaultValueKey: (id)CFBridgingRelease(plotAreaColor) + QCPortAttributeNameKey: @"Plot Area Color", + QCPortAttributeDefaultValueKey: (id)CFBridgingRelease(plotAreaColor) }; return result; } if ( [key isEqualToString:@"inputPixelsWide"] ) { return @{ - QCPortAttributeNameKey: @"Pixels Wide", - QCPortAttributeMinimumValueKey: @1, - QCPortAttributeDefaultValueKey: @512 + QCPortAttributeNameKey: @"Pixels Wide", + QCPortAttributeMinimumValueKey: @1, + QCPortAttributeDefaultValueKey: @512 }; } if ( [key isEqualToString:@"inputPixelsHigh"] ) { return @{ - QCPortAttributeNameKey: @"Pixels High", - QCPortAttributeMinimumValueKey: @1, - QCPortAttributeDefaultValueKey: @512 + QCPortAttributeNameKey: @"Pixels High", + QCPortAttributeMinimumValueKey: @1, + QCPortAttributeDefaultValueKey: @512 }; } if ( [key isEqualToString:@"outputImage"] ) { return @{ - QCPortAttributeNameKey: @"Image" + QCPortAttributeNameKey: @"Image" }; } @@ -525,6 +525,7 @@ -(nullable CGImageRef)newAreaFillImage:(NSUInteger)index NSString *key = [NSString stringWithFormat:@"plotFillImage%lu", (unsigned long)index]; id img = [self valueForInputKey:key]; + if ( !img ) { return nil; } diff --git a/examples/CPTTestApp/Source/Controller.m b/examples/CPTTestApp/Source/Controller.m index 36d381e3b..5dce4b566 100644 --- a/examples/CPTTestApp/Source/Controller.m +++ b/examples/CPTTestApp/Source/Controller.m @@ -68,8 +68,8 @@ -(id)newObject NSNumber *y1 = @(1.2 * arc4random() / (double)UINT32_MAX + 1.2); return @{ - @"x": x1, - @"y": y1 + @"x": x1, + @"y": y1 }; } diff --git a/examples/CPTTestApp/Source/RotationView.m b/examples/CPTTestApp/Source/RotationView.m index 2c145a4b6..4cb6b5137 100644 --- a/examples/CPTTestApp/Source/RotationView.m +++ b/examples/CPTTestApp/Source/RotationView.m @@ -56,6 +56,7 @@ -(void)mouseDragged:(nonnull NSEvent *)theEvent ( (displacementInX / totalRotation) * oldTransform.m32 + (displacementInY / totalRotation) * oldTransform.m31 ) ); id theDelegate = self.rotationDelegate; + [theDelegate rotateObjectUsingTransform:newTransform]; self.rotationTransform = newTransform; diff --git a/examples/CorePlotGallery/src/ios/DetailViewController.m b/examples/CorePlotGallery/src/ios/DetailViewController.m index ecf8ed0c1..6d14600b2 100644 --- a/examples/CorePlotGallery/src/ios/DetailViewController.m +++ b/examples/CorePlotGallery/src/ios/DetailViewController.m @@ -134,6 +134,7 @@ -(void)themeChanged:(nonnull NSNotification *)notification NSDictionary *themeInfo = notification.userInfo; NSString *themeName = themeInfo[PlotGalleryThemeNameKey]; + if ( themeName ) { [self themeSelectedWithName:themeName]; } diff --git a/examples/CorePlotGallery/src/ios/RootViewController.m b/examples/CorePlotGallery/src/ios/RootViewController.m index 0e61ad1f3..a2e18f019 100644 --- a/examples/CorePlotGallery/src/ios/RootViewController.m +++ b/examples/CorePlotGallery/src/ios/RootViewController.m @@ -74,6 +74,7 @@ -(void)themeChanged:(nonnull NSNotification *)notification NSDictionary *themeInfo = notification.userInfo; NSString *themeName = themeInfo[PlotGalleryThemeNameKey]; + if ( themeName ) { self.currentThemeName = themeName; } diff --git a/examples/CorePlotGallery/src/ios/ThemeTableViewController.m b/examples/CorePlotGallery/src/ios/ThemeTableViewController.m index 08d140dc7..f9b322d99 100644 --- a/examples/CorePlotGallery/src/ios/ThemeTableViewController.m +++ b/examples/CorePlotGallery/src/ios/ThemeTableViewController.m @@ -89,7 +89,7 @@ -(nonnull UITableViewCell *)tableView:(nonnull UITableView *)tableView cellForRo -(void)tableView:(nonnull UITableView *)tableView didSelectRowAtIndexPath:(nonnull NSIndexPath *)indexPath { NSDictionary *themeInfo = @{ - PlotGalleryThemeNameKey: self.themes[(NSUInteger)indexPath.row] + PlotGalleryThemeNameKey: self.themes[(NSUInteger)indexPath.row] }; [[NSNotificationCenter defaultCenter] postNotificationName:PlotGalleryThemeDidChangeNotification diff --git a/examples/CorePlotGallery/src/mac/PlotGalleryController.m b/examples/CorePlotGallery/src/mac/PlotGalleryController.m index 77d70e201..e5d3ab5e8 100644 --- a/examples/CorePlotGallery/src/mac/PlotGalleryController.m +++ b/examples/CorePlotGallery/src/mac/PlotGalleryController.m @@ -293,9 +293,9 @@ -(nonnull CPTDictionary *)imageBrowser:(nonnull IKImageBrowserView *)aBrowser gr NSValue *groupRange = [NSValue valueWithRange:NSMakeRange(offset, [[PlotGallery sharedPlotGallery] numberOfRowsInSection:index])]; return @{ - IKImageBrowserGroupStyleKey: @(IKGroupDisclosureStyle), - IKImageBrowserGroupTitleKey: groupTitle, - IKImageBrowserGroupRangeKey: groupRange + IKImageBrowserGroupStyleKey: @(IKGroupDisclosureStyle), + IKImageBrowserGroupTitleKey: groupTitle, + IKImageBrowserGroupRangeKey: groupRange }; } diff --git a/examples/CorePlotGallery/src/plots/CurvedInterpolationDemo.m b/examples/CorePlotGallery/src/plots/CurvedInterpolationDemo.m index a29e268cc..0f80ac6fd 100644 --- a/examples/CorePlotGallery/src/plots/CurvedInterpolationDemo.m +++ b/examples/CorePlotGallery/src/plots/CurvedInterpolationDemo.m @@ -60,8 +60,8 @@ -(void)generateData NSNumber *y = yValues[i]; if ( x && y ) { [generatedData addObject:@{ - @"x": x, - @"y": y + @"x": x, + @"y": y }]; } } diff --git a/examples/CorePlotGallery/src/tvOS/ThemeTableViewControllerTV.m b/examples/CorePlotGallery/src/tvOS/ThemeTableViewControllerTV.m index 560c42897..79e582247 100644 --- a/examples/CorePlotGallery/src/tvOS/ThemeTableViewControllerTV.m +++ b/examples/CorePlotGallery/src/tvOS/ThemeTableViewControllerTV.m @@ -89,7 +89,7 @@ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NS -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSDictionary *themeInfo = @{ - PlotGalleryThemeNameKey: self.themes[(NSUInteger)indexPath.row] + PlotGalleryThemeNameKey: self.themes[(NSUInteger)indexPath.row] }; [[NSNotificationCenter defaultCenter] postNotificationName:PlotGalleryThemeDidChangeNotification diff --git a/framework/MacOnly/CPTTextStylePlatformSpecific.m b/framework/MacOnly/CPTTextStylePlatformSpecific.m index 6160c0f36..ffae248c4 100644 --- a/framework/MacOnly/CPTTextStylePlatformSpecific.m +++ b/framework/MacOnly/CPTTextStylePlatformSpecific.m @@ -255,9 +255,9 @@ -(void)drawInRect:(CGRect)rect withTextStyle:(nullable CPTTextStyle *)style inCo paragraphStyle.lineBreakMode = style.lineBreakMode; CPTDictionary *attributes = @{ - NSFontAttributeName: theFont, - NSForegroundColorAttributeName: foregroundColor, - NSParagraphStyleAttributeName: paragraphStyle + NSFontAttributeName: theFont, + NSForegroundColorAttributeName: foregroundColor, + NSParagraphStyleAttributeName: paragraphStyle }; [self drawWithRect:NSRectFromCGRect(rect) options:CPTStringDrawingOptions diff --git a/framework/Source/CPTAnimation.m b/framework/Source/CPTAnimation.m index 609691e7d..df5fe2cb6 100644 --- a/framework/Source/CPTAnimation.m +++ b/framework/Source/CPTAnimation.m @@ -334,11 +334,11 @@ -(void)update CGFloat progress = timingFunction(currentTime - startTime, duration); CPTDictionary *parameters = @{ - CPTAnimationOperationKey: animationOperation, - CPTAnimationValueKey: [period tweenedValueForProgress:progress], - CPTAnimationValueClassKey: valueClass ? valueClass : [NSNull null], - CPTAnimationStartedKey: @(started), - CPTAnimationFinishedKey: @(currentTime >= endTime) + CPTAnimationOperationKey: animationOperation, + CPTAnimationValueKey: [period tweenedValueForProgress:progress], + CPTAnimationValueClassKey: valueClass ? valueClass : [NSNull null], + CPTAnimationStartedKey: @(started), + CPTAnimationFinishedKey: @(currentTime >= endTime) }; // Used -performSelectorOnMainThread:... instead of GCD to ensure the animation continues to run in all run loop common modes. diff --git a/framework/Source/CPTPlot.m b/framework/Source/CPTPlot.m index 590ad66be..c7fff7fbf 100644 --- a/framework/Source/CPTPlot.m +++ b/framework/Source/CPTPlot.m @@ -1841,6 +1841,7 @@ -(void)drawSwatchForLegend:(nonnull CPTLegend *)legend atIndex:(NSUInteger)idx i id theDelegate = (id)self.delegate; CPTFill *theFill = nil; + if ( [theDelegate respondsToSelector:@selector(legend:fillForSwatchAtIndex:forPlot:)] ) { theFill = [theDelegate legend:legend fillForSwatchAtIndex:idx forPlot:self]; } diff --git a/framework/Source/CPTRangePlot.h b/framework/Source/CPTRangePlot.h index 6e9d3f112..538d06f12 100644 --- a/framework/Source/CPTRangePlot.h +++ b/framework/Source/CPTRangePlot.h @@ -25,12 +25,12 @@ extern CPTRangePlotBinding __nonnull const CPTRangePlotBindingBarLineStyles; * @brief Enumeration of range plot data source field types **/ typedef NS_ENUM (NSInteger, CPTRangePlotField) { - CPTRangePlotFieldX, ///< X values. - CPTRangePlotFieldY, ///< Y values. - CPTRangePlotFieldHigh, ///< relative High values. - CPTRangePlotFieldLow, ///< relative Low values. - CPTRangePlotFieldLeft, ///< relative Left values. - CPTRangePlotFieldRight, ///< relative Right values. + CPTRangePlotFieldX, ///< X values. + CPTRangePlotFieldY, ///< Y values. + CPTRangePlotFieldHigh, ///< relative High values. + CPTRangePlotFieldLow, ///< relative Low values. + CPTRangePlotFieldLeft, ///< relative Left values. + CPTRangePlotFieldRight ///< relative Right values. }; #pragma mark - diff --git a/framework/Source/CPTRangePlot.m b/framework/Source/CPTRangePlot.m index 0c1b96711..43ea065e8 100644 --- a/framework/Source/CPTRangePlot.m +++ b/framework/Source/CPTRangePlot.m @@ -971,11 +971,11 @@ -(nonnull CPTNumberArray *)fieldIdentifiersForCoordinate:(CPTCoordinate)coord switch ( coord ) { case CPTCoordinateX: result = @[@(CPTRangePlotFieldX)]; - break; + break; case CPTCoordinateY: result = @[@(CPTRangePlotFieldY)]; - break; + break; default: [NSException raise:CPTException format:@"Invalid coordinate passed to fieldIdentifiersForCoordinate:"]; diff --git a/framework/Source/CPTScatterPlot.m b/framework/Source/CPTScatterPlot.m index 0f2119f1b..be517abd9 100644 --- a/framework/Source/CPTScatterPlot.m +++ b/framework/Source/CPTScatterPlot.m @@ -1760,11 +1760,11 @@ -(nonnull CPTNumberArray *)fieldIdentifiersForCoordinate:(CPTCoordinate)coord switch ( coord ) { case CPTCoordinateX: result = @[@(CPTScatterPlotFieldX)]; - break; + break; case CPTCoordinateY: result = @[@(CPTScatterPlotFieldY)]; - break; + break; default: [NSException raise:CPTException format:@"Invalid coordinate passed to fieldIdentifiersForCoordinate:"]; diff --git a/framework/Source/CPTTradingRangePlot.m b/framework/Source/CPTTradingRangePlot.m index 70bedd26a..75d592a6f 100644 --- a/framework/Source/CPTTradingRangePlot.m +++ b/framework/Source/CPTTradingRangePlot.m @@ -1167,14 +1167,14 @@ -(nonnull CPTNumberArray *)fieldIdentifiersForCoordinate:(CPTCoordinate)coord switch ( coord ) { case CPTCoordinateX: result = @[@(CPTTradingRangePlotFieldX)]; - break; + break; case CPTCoordinateY: result = @[@(CPTTradingRangePlotFieldOpen), @(CPTTradingRangePlotFieldLow), @(CPTTradingRangePlotFieldHigh), @(CPTTradingRangePlotFieldClose)]; - break; + break; default: [NSException raise:CPTException format:@"Invalid coordinate passed to fieldIdentifiersForCoordinate:"]; diff --git a/framework/Source/CPTUtilitiesTests.m b/framework/Source/CPTUtilitiesTests.m index f3d3d0734..7d2bf28d8 100644 --- a/framework/Source/CPTUtilitiesTests.m +++ b/framework/Source/CPTUtilitiesTests.m @@ -130,12 +130,12 @@ -(void)testNSDecimalNumberBugFix { NSArray *strings = @[ - @"0", // validation tests - @"1", - @"1.8446744073709551615", // 64/65 bit tests (radar 32520109) - @"1.8446744073709551616", - @"9.821426272392280061", // radar 25465729 tests - @"9.821426272392280060", + @"0", // validation tests + @"1", + @"1.8446744073709551615", // 64/65 bit tests (radar 32520109) + @"1.8446744073709551616", + @"9.821426272392280061", // radar 25465729 tests + @"9.821426272392280060", ]; for ( NSString *string in strings ) { diff --git a/scripts/uncrustify.cfg b/scripts/uncrustify.cfg index ee9fd5978..c03276abf 100644 --- a/scripts/uncrustify.cfg +++ b/scripts/uncrustify.cfg @@ -1,4 +1,4 @@ -# Uncrustify-0.67 +# Uncrustify-0.68 newlines = auto input_tab_size = 4 output_tab_size = 4 @@ -35,10 +35,12 @@ sp_paren_paren = remove sp_cparen_oparen = remove sp_balance_nested_parens = true sp_paren_brace = force +sp_brace_brace = force sp_before_ptr_star = force sp_before_unnamed_ptr_star = force sp_between_ptr_star = remove sp_after_ptr_star = remove +sp_after_ptr_block_caret = remove sp_after_ptr_star_qualifier = remove sp_after_ptr_star_func = remove sp_ptr_star_paren = remove @@ -48,8 +50,8 @@ sp_before_unnamed_byref = force sp_after_byref = remove sp_after_byref_func = remove sp_before_byref_func = force -sp_after_ptr_block_caret = remove sp_after_type = force +sp_after_decltype = ignore sp_before_template_paren = ignore sp_template_angle = force sp_before_angle = remove @@ -63,8 +65,8 @@ sp_angle_shift = add sp_permit_cpp11_shift = false sp_before_sparen = force sp_inside_sparen = force -sp_inside_sparen_close = ignore sp_inside_sparen_open = ignore +sp_inside_sparen_close = ignore sp_after_sparen = force sp_sparen_brace = force sp_invariant_paren = ignore @@ -88,6 +90,8 @@ sp_before_mdatype_commas = remove sp_between_mdatype_commas = remove sp_paren_comma = force sp_before_ellipsis = remove +sp_type_ellipsis = remove +sp_paren_ellipsis = remove sp_after_class_colon = force sp_before_class_colon = force sp_after_constr_colon = remove @@ -100,7 +104,10 @@ sp_after_cast = remove sp_inside_paren_cast = remove sp_cpp_cast_paren = remove sp_sizeof_paren = remove -sp_after_tag = ignore +sp_sizeof_ellipsis = remove +sp_sizeof_ellipsis_paren = remove +sp_decltype_paren = remove +sp_after_tag = remove sp_inside_braces_enum = remove sp_inside_braces_struct = remove sp_inside_braces_oc_dict = force @@ -131,6 +138,7 @@ sp_func_call_user_paren_paren = remove sp_func_class_paren = remove sp_func_class_paren_empty = remove sp_return_paren = force +sp_return_brace = force sp_attribute_paren = remove sp_defined_paren = remove sp_throw_paren = force @@ -214,6 +222,7 @@ sp_after_noexcept = ignore force_tab_after_define = false indent_columns = 4 indent_continue = 0 +indent_continue_class_head = 0 indent_single_newlines = false indent_param = 0 indent_with_tabs = 0 @@ -279,8 +288,8 @@ indent_first_for_expr = false indent_square_nl = false indent_preserve_sql = true indent_align_assign = true -indent_oc_block = true indent_align_paren = true +indent_oc_block = true indent_oc_block_msg = 0 indent_oc_msg_colon = 0 indent_oc_msg_prioritize_first_colon = true @@ -308,7 +317,9 @@ nl_func_leave_one_liners = true nl_cpp_lambda_leave_one_liners = false nl_if_leave_one_liners = false nl_while_leave_one_liners = false +nl_for_leave_one_liners = false nl_oc_msg_leave_one_liner = false +nl_oc_mdef_brace = force nl_oc_block_brace = remove nl_oc_interface_brace = force nl_oc_implementation_brace = force @@ -347,8 +358,9 @@ nl_try_brace = remove nl_getset_brace = force nl_for_brace = remove nl_catch_brace = remove -nl_brace_catch = force nl_oc_catch_brace = remove +nl_brace_catch = force +nl_oc_brace_catch = force nl_brace_square = remove nl_brace_fparen = remove nl_while_brace = remove @@ -364,9 +376,9 @@ nl_synchronized_brace = remove nl_multi_line_cond = false nl_multi_line_define = false nl_before_case = true -nl_before_throw = force nl_after_case = true nl_case_colon_brace = force +nl_before_throw = force nl_namespace_brace = force nl_template_class = force nl_class_brace = force @@ -423,8 +435,8 @@ nl_after_brace_close = false nl_after_vbrace_close = false nl_brace_struct_var = force nl_define_macro = false -nl_squeeze_ifdef = true nl_squeeze_paren_close = false +nl_squeeze_ifdef = true nl_squeeze_ifdef_top_level = false nl_before_if = ignore nl_after_if = ignore @@ -440,12 +452,10 @@ nl_before_do = ignore nl_after_do = ignore nl_ds_struct_enum_cmt = false nl_ds_struct_enum_close_brace = false -nl_before_func_class_def = 0 -nl_before_func_class_proto = 0 nl_class_colon = remove nl_constr_colon = ignore -nl_create_if_one_liner = true nl_namespace_two_to_one_liner = false +nl_create_if_one_liner = true nl_create_for_one_liner = false nl_create_while_one_liner = false nl_create_func_def_one_liner = false @@ -454,12 +464,15 @@ nl_split_for_one_liner = false nl_split_while_one_liner = false nl_max = 2 nl_max_blank_in_func = 0 +nl_before_func_body_proto = 0 +nl_before_func_body_def = 0 +nl_before_func_class_proto = 0 +nl_before_func_class_def = 0 nl_after_func_proto = 1 nl_after_func_proto_group = 2 nl_after_func_class_proto = 0 nl_after_func_class_proto_group = 0 -nl_before_func_body_def = 0 -nl_before_func_body_proto = 0 +nl_class_leave_one_liner_groups = false nl_after_func_body = 2 nl_after_func_body_class = 0 nl_after_func_body_one_liner = 1 @@ -478,6 +491,7 @@ nl_after_try_catch_finally = 1 nl_around_cs_property = 1 nl_between_get_set = 1 nl_property_brace = ignore +nl_inside_namespace = 0 eat_blanks_after_open_brace = true eat_blanks_before_close_brace = true nl_remove_extra_newlines = 0 @@ -510,6 +524,8 @@ align_func_params_span = 0 align_func_params_thresh = 0 align_func_params_gap = 0 align_same_func_call_params = false +align_same_func_call_params_span = 0 +align_same_func_call_params_thresh = 0 align_var_def_span = 0 align_var_def_star_style = 1 align_var_def_amp_style = 1 @@ -521,6 +537,7 @@ align_var_def_attribute = true align_var_def_inline = true align_assign_span = 1 align_assign_thresh = 0 +align_assign_decl_func = 0 align_enum_equ_span = 1 align_enum_equ_thresh = 0 align_var_class_span = 0 @@ -537,6 +554,7 @@ align_typedef_star_style = 1 align_typedef_amp_style = 1 align_right_cmt_span = 2 align_right_cmt_mix = false +align_right_cmt_same_level = false align_right_cmt_gap = 1 align_right_cmt_at_col = 1 align_func_proto_span = 2 @@ -563,10 +581,10 @@ cmt_indent_multi = true cmt_c_group = true cmt_c_nl_start = true cmt_c_nl_end = true +cmt_cpp_to_c = false cmt_cpp_group = true cmt_cpp_nl_start = true cmt_cpp_nl_end = true -cmt_cpp_to_c = false cmt_star_cont = true cmt_sp_before_star_cont = 0 cmt_sp_after_star_cont = 0 @@ -586,10 +604,10 @@ mod_full_brace_function = force mod_full_brace_if = force mod_full_brace_if_chain = false mod_full_brace_if_chain_only = false -mod_full_brace_nl = 1 -mod_full_brace_nl_block_rem_mlcond = false mod_full_brace_while = force mod_full_brace_using = ignore +mod_full_brace_nl = 1 +mod_full_brace_nl_block_rem_mlcond = false mod_paren_on_return = remove mod_pawn_semicolon = true mod_full_paren_if_bool = true @@ -606,6 +624,7 @@ mod_sort_include = true mod_move_case_break = false mod_case_brace = remove mod_remove_empty_return = true +mod_enum_last_comma = remove mod_sort_oc_properties = false mod_sort_oc_property_class_weight = 0 mod_sort_oc_property_thread_safe_weight = 0 @@ -637,5 +656,5 @@ use_indent_continue_only_once = false indent_cpp_lambda_only_once = false use_options_overriding_for_qt_macros = true warn_level_tabs_found_in_verbatim_string_literals = 2 -# option(s) with 'not default' value: 278 +# option(s) with 'not default' value: 312 # From 9ca484d39571d74f38658c23c724ea24d2191fe6 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Tue, 5 Feb 2019 19:49:19 -0500 Subject: [PATCH 076/160] Updated the DatePlot example app to Swift 4. --- examples/DatePlot/DatePlot.xcodeproj/project.pbxproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj b/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj index 6baa45917..3068b7b86 100644 --- a/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj +++ b/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj @@ -438,7 +438,7 @@ PRODUCT_NAME = DatePlot; SWIFT_OBJC_BRIDGING_HEADER = "DatePlot-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.0; }; name = Debug; }; @@ -463,7 +463,7 @@ PRODUCT_NAME = DatePlot; SWIFT_OBJC_BRIDGING_HEADER = "DatePlot-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.0; }; name = Release; }; From 2130f34493467e6cf8ff195257d2e1abce8d2372 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 17 Mar 2019 06:53:55 -0400 Subject: [PATCH 077/160] Added missing call to [super awakeFromNib]. --- examples/CorePlotGallery/src/mac/PlotGalleryController.m | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/CorePlotGallery/src/mac/PlotGalleryController.m b/examples/CorePlotGallery/src/mac/PlotGalleryController.m index e5d3ab5e8..5a5e3d438 100644 --- a/examples/CorePlotGallery/src/mac/PlotGalleryController.m +++ b/examples/CorePlotGallery/src/mac/PlotGalleryController.m @@ -51,6 +51,8 @@ -(void)setupThemes -(void)awakeFromNib { + [super awakeFromNib]; + [[PlotGallery sharedPlotGallery] sortByTitle]; self.splitView.delegate = self; From e5cd28e4375ada4160d751c9d112d54d049a87df Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 17 Mar 2019 06:57:14 -0400 Subject: [PATCH 078/160] Removed unused Nu console code from the Plot Gallery example app. --- .../src/mac/PlotGalleryController.m | 25 ------------------- 1 file changed, 25 deletions(-) diff --git a/examples/CorePlotGallery/src/mac/PlotGalleryController.m b/examples/CorePlotGallery/src/mac/PlotGalleryController.m index 5a5e3d438..c19f9f9db 100644 --- a/examples/CorePlotGallery/src/mac/PlotGalleryController.m +++ b/examples/CorePlotGallery/src/mac/PlotGalleryController.m @@ -6,7 +6,6 @@ #import "PlotGalleryController.h" #import "dlfcn.h" -// #define EMBED_NU 1 static const CGFloat CPT_SPLIT_VIEW_MIN_LHS_WIDTH = 150.0; @@ -66,24 +65,6 @@ -(void)awakeFromNib self.hostingView.delegate = self; [self setupThemes]; - -#ifdef EMBED_NU - // Setup a Nu console without the help of the Nu include files or - // an explicit link of the Nu framework, which may not be installed - nuHandle = dlopen("/Library/Frameworks/Nu.framework/Nu", RTLD_LAZY); - - if ( nuHandle ) { - NSString *consoleStartup = - @"(progn \ - (load \"console\") \ - (set $console ((NuConsoleWindowController alloc) init)))"; - - Class nuClass = NSClassFromString(@"Nu"); - id parser = [nuClass performSelector:@selector(parser)]; - id code = [parser performSelector:@selector(parse:) withObject:consoleStartup]; - [parser performSelector:@selector(eval:) withObject:code]; - } -#endif } -(void)dealloc @@ -94,12 +75,6 @@ -(void)dealloc [imageBrowser setDataSource:nil]; [imageBrowser setDelegate:nil]; [hostingView setDelegate:nil]; - -#ifdef EMBED_NU - if ( nuHandle ) { - dlclose(nuHandle); - } -#endif } -(void)setFrameSize:(NSSize)newSize From a47d8e1feaffb92585ccdd7c93447b5498105b59 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 17 Mar 2019 06:58:14 -0400 Subject: [PATCH 079/160] Coding style updates (use property notation where possible) in the Plot Gallery example app. --- .../src/mac/PlotGalleryController.m | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/examples/CorePlotGallery/src/mac/PlotGalleryController.m b/examples/CorePlotGallery/src/mac/PlotGalleryController.m index c19f9f9db..8109d74df 100644 --- a/examples/CorePlotGallery/src/mac/PlotGalleryController.m +++ b/examples/CorePlotGallery/src/mac/PlotGalleryController.m @@ -56,9 +56,9 @@ -(void)awakeFromNib self.splitView.delegate = self; - [self.imageBrowser setDelegate:self]; - [self.imageBrowser setDataSource:self]; - [self.imageBrowser setCellsStyleMask:IKCellsStyleShadowed | IKCellsStyleTitled]; // | IKCellsStyleSubtitled]; + self.imageBrowser.delegate = self; + self.imageBrowser.dataSource = self; + self.imageBrowser.cellsStyleMask = IKCellsStyleShadowed | IKCellsStyleTitled; // | IKCellsStyleSubtitled; [self.imageBrowser reloadData]; @@ -71,10 +71,10 @@ -(void)dealloc { [self setPlotItem:nil]; - [splitView setDelegate:nil]; - [imageBrowser setDataSource:nil]; - [imageBrowser setDelegate:nil]; - [hostingView setDelegate:nil]; + splitView.delegate = nil; + imageBrowser.dataSource = nil; + imageBrowser.delegate = nil; + hostingView.delegate = nil; } -(void)setFrameSize:(NSSize)newSize From e7175432d0c3209e8cf3a472b87a5c685f13f486 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Tue, 14 May 2019 19:04:27 -0400 Subject: [PATCH 080/160] Updated code formatting for Uncrustify 0.69. --- QCPlugin/CPTScatterPlotPlugin.m | 2 +- QCPlugin/CorePlotQCPlugin.m | 16 +-- examples/AAPLot/Classes/MainViewController.m | 6 +- .../Source/CPTPlotSymbolTestController.m | 10 +- examples/CPTTestApp/Source/Controller.m | 4 +- examples/CPTTestApp/Source/RotationView.m | 8 +- .../CorePlotGallery/src/ios/AppDelegate.m | 2 +- .../src/ios/RootViewController.m | 2 +- examples/CorePlotGallery/src/ios/main.m | 2 +- .../src/mac/PlotGalleryController.m | 2 +- .../src/plots/CandlestickPlot.m | 8 +- .../src/plots/ColoredBarChart.m | 2 +- .../CorePlotGallery/src/plots/CompositePlot.m | 58 ++++----- .../CorePlotGallery/src/plots/ControlChart.m | 4 +- .../src/plots/CurvedInterpolationDemo.m | 4 +- .../src/plots/CurvedScatterPlot.m | 8 +- examples/CorePlotGallery/src/plots/DatePlot.m | 2 +- .../CorePlotGallery/src/plots/DonutChart.m | 6 +- .../CorePlotGallery/src/plots/FunctionPlot.m | 2 +- examples/CorePlotGallery/src/plots/OHLCPlot.m | 8 +- .../CorePlotGallery/src/plots/RangePlot.m | 2 +- .../CorePlotGallery/src/plots/RealTimePlot.m | 4 +- .../src/plots/SimplePieChart.m | 10 +- .../src/plots/VerticalBarChart.m | 6 +- .../src/shared/PiNumberFormatter.m | 6 +- .../CorePlotGallery/src/shared/PlotItem.m | 6 +- examples/CorePlotGallery/src/tvOS/main.m | 2 +- examples/DropPlot/CPTPlotDocument.m | 22 ++-- .../StockPlot/Classes/APYahooDataPuller.m | 2 +- framework/MacOnly/CPTGraphHostingView.m | 10 +- .../MacOnly/CPTPlatformSpecificCategories.m | 4 +- framework/Source/CPTAnimation.h | 4 +- framework/Source/CPTAnimation.m | 2 +- framework/Source/CPTAxis.m | 58 ++++----- framework/Source/CPTAxisLabel.m | 12 +- framework/Source/CPTAxisLabelTests.m | 28 ++--- framework/Source/CPTAxisTitle.m | 8 +- framework/Source/CPTBarPlot.m | 32 ++--- framework/Source/CPTBorderedLayer.m | 4 +- framework/Source/CPTColor.m | 4 +- framework/Source/CPTDataSourceTestCase.m | 6 +- framework/Source/CPTDefinitions.h | 8 +- framework/Source/CPTFunctionDataSource.h | 8 +- framework/Source/CPTFunctionDataSource.m | 22 ++-- framework/Source/CPTGradient.m | 46 +++---- framework/Source/CPTGraph.m | 4 +- framework/Source/CPTImage.m | 50 ++++---- framework/Source/CPTLayer.h | 4 +- framework/Source/CPTLayer.m | 54 ++++----- framework/Source/CPTLayerAnnotation.m | 2 +- framework/Source/CPTLayerTests.m | 2 +- framework/Source/CPTLegend.m | 22 ++-- framework/Source/CPTLegendEntry.m | 4 +- framework/Source/CPTLineCap.m | 40 +++---- framework/Source/CPTLineStyle.m | 4 +- framework/Source/CPTMutableNumericData.m | 4 +- framework/Source/CPTMutableNumericDataTests.m | 32 ++--- ...CPTMutableNumericDataTypeConversionTests.m | 30 ++--- framework/Source/CPTMutablePlotRange.m | 6 +- .../Source/CPTNumericData+TypeConversion.m | 34 +++--- framework/Source/CPTNumericData.m | 26 ++-- framework/Source/CPTNumericDataTests.m | 46 +++---- framework/Source/CPTNumericDataType.m | 4 +- ...umericDataTypeConversionPerformanceTests.m | 8 +- .../CPTNumericDataTypeConversionTests.m | 30 ++--- framework/Source/CPTPathExtensions.m | 2 +- framework/Source/CPTPieChart.m | 32 ++--- framework/Source/CPTPlot.h | 4 +- framework/Source/CPTPlot.m | 12 +- framework/Source/CPTPlotArea.m | 8 +- framework/Source/CPTPlotRange.m | 6 +- framework/Source/CPTPlotRangeTests.m | 4 +- framework/Source/CPTPlotSpace.m | 4 +- framework/Source/CPTPlotSpaceAnnotation.m | 4 +- framework/Source/CPTPlotSymbol.m | 62 +++++----- framework/Source/CPTRangePlot.m | 42 +++---- framework/Source/CPTScatterPlot.m | 112 +++++++++--------- framework/Source/CPTScatterPlotTests.m | 22 ++-- framework/Source/CPTShadow.m | 2 +- framework/Source/CPTTextLayer.m | 2 +- framework/Source/CPTTradingRangePlot.m | 24 ++-- framework/Source/CPTUtilities.m | 22 ++-- framework/Source/CPTUtilitiesTests.m | 10 +- framework/Source/CPTXYAxis.m | 36 +++--- framework/Source/CPTXYPlotSpace.m | 34 +++--- framework/Source/CPTXYPlotSpaceTests.m | 26 ++-- framework/Source/NSCoderExtensions.m | 4 +- framework/Source/_CPTAnimationCGFloatPeriod.m | 2 +- .../Source/_CPTAnimationNSDecimalPeriod.m | 14 +-- .../Source/_CPTAnimationNSNumberPeriod.m | 6 +- .../Source/_CPTAnimationPlotRangePeriod.m | 8 +- .../Source/_CPTAnimationTimingFunctions.m | 44 +++---- framework/Source/_CPTConstraintsFixed.m | 4 +- framework/Source/_CPTConstraintsRelative.m | 2 +- framework/Source/_CPTMaskLayer.m | 2 +- framework/iPhoneOnly/CPTGraphHostingView.m | 4 +- .../CPTPlatformSpecificCategories.m | 4 +- scripts/uncrustify.cfg | 40 +++++-- 98 files changed, 748 insertions(+), 734 deletions(-) diff --git a/QCPlugin/CPTScatterPlotPlugin.m b/QCPlugin/CPTScatterPlotPlugin.m index 59c9203ee..6fb21dd2a 100644 --- a/QCPlugin/CPTScatterPlotPlugin.m +++ b/QCPlugin/CPTScatterPlotPlugin.m @@ -197,7 +197,7 @@ -(BOOL)configurePlots if ( fillColor ) { plot.areaFill = [CPTFill fillWithColor:[CPTColor colorWithCGColor:fillColor]]; } - plot.areaBaseValue = @(MAX(self.inputYMin, MIN(self.inputYMax, 0.0) ) ); + plot.areaBaseValue = @( MAX( self.inputYMin, MIN(self.inputYMax, 0.0) ) ); [plot reloadData]; } diff --git a/QCPlugin/CorePlotQCPlugin.m b/QCPlugin/CorePlotQCPlugin.m index 75a7efbdf..2c45d90f3 100644 --- a/QCPlugin/CorePlotQCPlugin.m +++ b/QCPlugin/CorePlotQCPlugin.m @@ -451,11 +451,11 @@ -(BOOL)configureAxis set.xAxis.labelTextStyle = textStyle; double xrange = self.inputXMax - self.inputXMin; - set.xAxis.majorIntervalLength = @(xrange / (self.inputXMajorIntervals) ); + set.xAxis.majorIntervalLength = @( xrange / (self.inputXMajorIntervals) ); set.xAxis.minorTicksPerInterval = self.inputXMinorIntervals; double yrange = self.inputYMax - self.inputYMin; - set.yAxis.majorIntervalLength = @(yrange / (self.inputYMajorIntervals) ); + set.yAxis.majorIntervalLength = @( yrange / (self.inputYMajorIntervals) ); set.yAxis.minorTicksPerInterval = self.inputYMinorIntervals; set.xAxis.minorTickLength = self.inputAxisMinorTickLength; @@ -577,7 +577,7 @@ -(void)createImageResourcesWithContext:(nonnull id)context size_t rowBytes = (size_t)boundsSize.width * 4; if ( rowBytes % 16 ) { - rowBytes = ( (rowBytes / 16) + 1 ) * 16; + rowBytes = ( (rowBytes / 16) + 1) * 16; } if ( !self.imageData ) { @@ -610,7 +610,7 @@ -(void)createImageResourcesWithContext:(nonnull id)context CGContextRelease(newContext); if ( rowBytes % 16 ) { - rowBytes = ( (rowBytes / 16) + 1 ) * 16; + rowBytes = ( (rowBytes / 16) + 1) * 16; } // Note: I don't have a PPC to test on so this may or may not cause some color issues @@ -751,7 +751,7 @@ -(BOOL)configureGraph */ // Configure the graph area - CGRect frame = CPTRectMake(0.0, 0.0, MAX(1, self.inputPixelsWide), MAX(1, self.inputPixelsHigh) ); + CGRect frame = CPTRectMake( 0.0, 0.0, MAX(1, self.inputPixelsWide), MAX(1, self.inputPixelsHigh) ); self.graph.bounds = frame; @@ -812,9 +812,9 @@ -(BOOL)execute:(nonnull id)context atTime:(NSTimeInterval)time // Draw the plot ... CGSize boundsSize = self.graph.bounds.size; CGContextRef bmContext = self.bitmapContext; - CGContextClearRect(bmContext, CPTRectMake(0.0, 0.0, boundsSize.width, boundsSize.height) ); + CGContextClearRect( bmContext, CPTRectMake(0.0, 0.0, boundsSize.width, boundsSize.height) ); CGContextSetRGBFillColor(bmContext, 0.0, 0.0, 0.0, 0.0); - CGContextFillRect(bmContext, CPTRectMake(0, 0, boundsSize.width, boundsSize.height) ); + CGContextFillRect( bmContext, CPTRectMake(0, 0, boundsSize.width, boundsSize.height) ); CGContextSetAllowsAntialiasing(bmContext, true); if ( configurationCheck ) { @@ -822,7 +822,7 @@ -(BOOL)execute:(nonnull id)context atTime:(NSTimeInterval)time [self.graph recursivelyRenderInContext:bmContext]; } else { - drawErrorText(bmContext, CPTRectMake(0, 0, self.inputPixelsWide, self.inputPixelsHigh) ); + drawErrorText( bmContext, CPTRectMake(0, 0, self.inputPixelsWide, self.inputPixelsHigh) ); } // CGContextSetAllowsAntialiasing(bitmapContext, false); diff --git a/examples/AAPLot/Classes/MainViewController.m b/examples/AAPLot/Classes/MainViewController.m index d47ff32ef..3f8535192 100644 --- a/examples/AAPLot/Classes/MainViewController.m +++ b/examples/AAPLot/Classes/MainViewController.m @@ -155,7 +155,7 @@ -(nullable CPTNumericData *)dataForPlot:(nonnull CPTPlot *)plot recordIndexRange numFields = 2; } - NSMutableData *data = [[NSMutableData alloc] initWithLength:indexRange.length * numFields * (useDoubles ? sizeof(double) : sizeof(NSDecimal) )]; + NSMutableData *data = [[NSMutableData alloc] initWithLength:indexRange.length * numFields * ( useDoubles ? sizeof(double) : sizeof(NSDecimal) )]; const NSUInteger maxIndex = NSMaxRange(indexRange); @@ -376,7 +376,7 @@ -(nullable CPTNumericData *)dataForPlot:(nonnull CPTPlot *)plot recordIndexRange numFields = 2; } - NSMutableData *data = [[NSMutableData alloc] initWithLength:indexRange.length * numFields * (useDoubles ? sizeof(double) : sizeof(NSDecimal) )]; + NSMutableData *data = [[NSMutableData alloc] initWithLength:indexRange.length * numFields * ( useDoubles ? sizeof(double) : sizeof(NSDecimal) )]; const NSUInteger maxIndex = NSMaxRange(indexRange); @@ -652,7 +652,7 @@ -(void)dataPullerDidFinishFetch:(nonnull APYahooDataPuller *)dp animationOperation = [CPTAnimation animate:volumePlotSpace property:@"yRange" fromPlotRange:[CPTPlotRange plotRangeWithLocationDecimal:volumeLowDisplayLocation.decimalValue - lengthDecimal:CPTDecimalMultiply(volumeLengthDisplayLocation.decimalValue, CPTDecimalFromInteger(10) )] + lengthDecimal:CPTDecimalMultiply( volumeLengthDisplayLocation.decimalValue, CPTDecimalFromInteger(10) )] toPlotRange:[CPTPlotRange plotRangeWithLocation:volumeLowDisplayLocation length:volumeLengthDisplayLocation] duration:2.5]; diff --git a/examples/CPTTestApp/Source/CPTPlotSymbolTestController.m b/examples/CPTTestApp/Source/CPTPlotSymbolTestController.m index b16f2a5a9..3d949701e 100644 --- a/examples/CPTTestApp/Source/CPTPlotSymbolTestController.m +++ b/examples/CPTTestApp/Source/CPTPlotSymbolTestController.m @@ -82,7 +82,7 @@ -(nullable id)numberForPlot:(nonnull CPTPlot *)plot field:(NSUInteger)fieldEnum break; case CPTScatterPlotFieldY: - num = @( ( (NSString *)plot.identifier ).integerValue ); + num = @( ( (NSString *)plot.identifier).integerValue); break; default: @@ -103,7 +103,7 @@ -(nullable CPTPlotSymbol *)symbolForScatterPlot:(nonnull CPTScatterPlot *)plot r symbolShadow.shadowColor = [CPTColor blackColor]; CPTPlotSymbol *symbol = [[CPTPlotSymbol alloc] init]; - symbol.symbolType = (CPTPlotSymbolType)( (NSString *)plot.identifier ).intValue; + symbol.symbolType = (CPTPlotSymbolType)( (NSString *)plot.identifier).intValue; symbol.fill = [CPTFill fillWithGradient:gradientFill]; symbol.shadow = symbolShadow; @@ -116,9 +116,9 @@ -(nullable CPTPlotSymbol *)symbolForScatterPlot:(nonnull CPTScatterPlot *)plot r CGMutablePathRef path = CGPathCreateMutable(); CGPathMoveToPoint(path, NULL, 0., 0.); - CGPathAddEllipseInRect(path, NULL, CGRectMake(0., 0., 10., 10.) ); - CGPathAddEllipseInRect(path, NULL, CGRectMake(1.5, 4., 3., 3.) ); - CGPathAddEllipseInRect(path, NULL, CGRectMake(5.5, 4., 3., 3.) ); + CGPathAddEllipseInRect( path, NULL, CGRectMake(0., 0., 10., 10.) ); + CGPathAddEllipseInRect( path, NULL, CGRectMake(1.5, 4., 3., 3.) ); + CGPathAddEllipseInRect( path, NULL, CGRectMake(5.5, 4., 3., 3.) ); CGPathMoveToPoint(path, NULL, 5., 2.); CGPathAddArc(path, NULL, 5., 3.3, 2.8, 0., M_PI, TRUE); CGPathCloseSubpath(path); diff --git a/examples/CPTTestApp/Source/Controller.m b/examples/CPTTestApp/Source/Controller.m index 5dce4b566..911fa3a46 100644 --- a/examples/CPTTestApp/Source/Controller.m +++ b/examples/CPTTestApp/Source/Controller.m @@ -64,7 +64,7 @@ -(void)awakeFromNib -(id)newObject { - NSNumber *x1 = @(1.0 + ( (NSMutableArray *)self.content ).count * 0.05); + NSNumber *x1 = @(1.0 + ( (NSMutableArray *)self.content).count * 0.05); NSNumber *y1 = @(1.2 * arc4random() / (double)UINT32_MAX + 1.2); return @{ @@ -780,7 +780,7 @@ -(void)setLabelRotation:(CGFloat)newRotation { labelRotation = newRotation; - ( (CPTXYAxisSet *)self.graph.axisSet ).yAxis.labelRotation = newRotation; + ( (CPTXYAxisSet *)self.graph.axisSet).yAxis.labelRotation = newRotation; [self.graph plotWithIdentifier:dataSourcePlot].labelRotation = newRotation; } diff --git a/examples/CPTTestApp/Source/RotationView.m b/examples/CPTTestApp/Source/RotationView.m index 4cb6b5137..e8c0de112 100644 --- a/examples/CPTTestApp/Source/RotationView.m +++ b/examples/CPTTestApp/Source/RotationView.m @@ -50,10 +50,10 @@ -(void)mouseDragged:(nonnull NSEvent *)theEvent CGFloat totalRotation = sqrt(displacementInX * displacementInX + displacementInY * displacementInY); CATransform3D oldTransform = self.rotationTransform; - CATransform3D newTransform = CATransform3DRotate(oldTransform, totalRotation * M_PI / 180.0, - ( (displacementInX / totalRotation) * oldTransform.m12 + (displacementInY / totalRotation) * oldTransform.m11 ), - ( (displacementInX / totalRotation) * oldTransform.m22 + (displacementInY / totalRotation) * oldTransform.m21 ), - ( (displacementInX / totalRotation) * oldTransform.m32 + (displacementInY / totalRotation) * oldTransform.m31 ) ); + CATransform3D newTransform = CATransform3DRotate( oldTransform, totalRotation * M_PI / 180.0, + ( (displacementInX / totalRotation) * oldTransform.m12 + (displacementInY / totalRotation) * oldTransform.m11), + ( (displacementInX / totalRotation) * oldTransform.m22 + (displacementInY / totalRotation) * oldTransform.m21), + ( (displacementInX / totalRotation) * oldTransform.m32 + (displacementInY / totalRotation) * oldTransform.m31) ); id theDelegate = self.rotationDelegate; diff --git a/examples/CorePlotGallery/src/ios/AppDelegate.m b/examples/CorePlotGallery/src/ios/AppDelegate.m index 2f60c0a90..7356bbf8d 100644 --- a/examples/CorePlotGallery/src/ios/AppDelegate.m +++ b/examples/CorePlotGallery/src/ios/AppDelegate.m @@ -35,7 +35,7 @@ -(BOOL)application:(nonnull UIApplication *)application didFinishLaunchingWithOp -(BOOL)splitViewController:(UISplitViewController *)splitViewController collapseSecondaryViewController:(UIViewController *)secondaryViewController ontoPrimaryViewController:(UIViewController *)primaryViewController { - if ( [secondaryViewController isKindOfClass:[UINavigationController class]] && [( (UINavigationController *)secondaryViewController ).topViewController isKindOfClass:[DetailViewController class]] && ( ( (DetailViewController *)( (UINavigationController *)secondaryViewController ).topViewController ).detailItem == nil ) ) { + if ( [secondaryViewController isKindOfClass:[UINavigationController class]] && [( (UINavigationController *)secondaryViewController).topViewController isKindOfClass:[DetailViewController class]] && ( ( (DetailViewController *)( (UINavigationController *)secondaryViewController).topViewController).detailItem == nil) ) { // Return YES to indicate that we have handled the collapse by doing nothing; the secondary controller will be discarded. return YES; } diff --git a/examples/CorePlotGallery/src/ios/RootViewController.m b/examples/CorePlotGallery/src/ios/RootViewController.m index a2e18f019..9bfce6548 100644 --- a/examples/CorePlotGallery/src/ios/RootViewController.m +++ b/examples/CorePlotGallery/src/ios/RootViewController.m @@ -50,7 +50,7 @@ -(void)dealloc -(void)prepareForSegue:(nonnull UIStoryboardSegue *)segue sender:(nullable id)sender { if ( [segue.identifier isEqualToString:@"showDetail"] ) { - DetailViewController *controller = (DetailViewController *)( (UINavigationController *)segue.destinationViewController ).topViewController; + DetailViewController *controller = (DetailViewController *)( (UINavigationController *)segue.destinationViewController).topViewController; controller.navigationItem.leftBarButtonItem = self.splitViewController.displayModeButtonItem; controller.navigationItem.leftItemsSupplementBackButton = YES; diff --git a/examples/CorePlotGallery/src/ios/main.m b/examples/CorePlotGallery/src/ios/main.m index 12709130c..da456e0b4 100644 --- a/examples/CorePlotGallery/src/ios/main.m +++ b/examples/CorePlotGallery/src/ios/main.m @@ -8,6 +8,6 @@ int main(int argc, char *argv[]) { @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]) ); + return UIApplicationMain( argc, argv, nil, NSStringFromClass([AppDelegate class]) ); } } diff --git a/examples/CorePlotGallery/src/mac/PlotGalleryController.m b/examples/CorePlotGallery/src/mac/PlotGalleryController.m index 8109d74df..ed8ba5d93 100644 --- a/examples/CorePlotGallery/src/mac/PlotGalleryController.m +++ b/examples/CorePlotGallery/src/mac/PlotGalleryController.m @@ -167,7 +167,7 @@ -(void)exportTVImageWithSize:(CGSize)size toURL:(NSURL *)url showPlots:(BOOL)sho NSGraphicsContext *bitmapContext = [NSGraphicsContext graphicsContextWithBitmapImageRep:layerImage]; CGContextRef context = (CGContextRef)bitmapContext.graphicsPort; - CGContextClearRect(context, CGRectMake(0.0, 0.0, boundsSize.width, boundsSize.height) ); + CGContextClearRect( context, CGRectMake(0.0, 0.0, boundsSize.width, boundsSize.height) ); CGContextSetAllowsAntialiasing(context, true); CGContextSetShouldSmoothFonts(context, false); [imageView.layer renderInContext:context]; diff --git a/examples/CorePlotGallery/src/plots/CandlestickPlot.m b/examples/CorePlotGallery/src/plots/CandlestickPlot.m index 4bc33610d..d4aa96b91 100644 --- a/examples/CorePlotGallery/src/plots/CandlestickPlot.m +++ b/examples/CorePlotGallery/src/plots/CandlestickPlot.m @@ -46,8 +46,8 @@ -(void)generateData double rOpen = 3.0 * arc4random() / (double)UINT32_MAX + 1.0; double rClose = (arc4random() / (double)UINT32_MAX - 0.5) * 0.125 + rOpen; - double rHigh = MAX(rOpen, MAX(rClose, (arc4random() / (double)UINT32_MAX - 0.5) * 0.5 + rOpen) ); - double rLow = MIN(rOpen, MIN(rClose, (arc4random() / (double)UINT32_MAX - 0.5) * 0.5 + rOpen) ); + double rHigh = MAX( rOpen, MAX(rClose, (arc4random() / (double)UINT32_MAX - 0.5) * 0.5 + rOpen) ); + double rLow = MIN( rOpen, MIN(rClose, (arc4random() / (double)UINT32_MAX - 0.5) * 0.5 + rOpen) ); [newData addObject: @{ @(CPTTradingRangePlotFieldX): @(x), @@ -105,7 +105,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT CPTLineCap *lineCap = [[CPTLineCap alloc] init]; lineCap.lineStyle = xAxis.axisLineStyle; lineCap.lineCapType = CPTLineCapTypeSweptArrow; - lineCap.size = CGSizeMake(self.titleSize * CPTFloat(0.5), self.titleSize * CPTFloat(0.625) ); + lineCap.size = CGSizeMake( self.titleSize * CPTFloat(0.5), self.titleSize * CPTFloat(0.625) ); CPTColor *lineColor = xAxis.axisLineStyle.lineColor; if ( lineColor ) { @@ -175,7 +175,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT newGraph.legend.swatchLayout = CPTLegendSwatchLayoutRight; newGraph.legendAnchor = CPTRectAnchorBottom; - newGraph.legendDisplacement = CGPointMake(0.0, self.titleSize * CPTFloat(3.0) ); + newGraph.legendDisplacement = CGPointMake( 0.0, self.titleSize * CPTFloat(3.0) ); // Set plot ranges CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)newGraph.defaultPlotSpace; diff --git a/examples/CorePlotGallery/src/plots/ColoredBarChart.m b/examples/CorePlotGallery/src/plots/ColoredBarChart.m index 5d91fb8f1..2adf8cef2 100644 --- a/examples/CorePlotGallery/src/plots/ColoredBarChart.m +++ b/examples/CorePlotGallery/src/plots/ColoredBarChart.m @@ -133,7 +133,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT graph.legend = theLegend; graph.legendAnchor = CPTRectAnchorTop; - graph.legendDisplacement = CGPointMake(0.0, self.titleSize * CPTFloat(-2.625) ); + graph.legendDisplacement = CGPointMake( 0.0, self.titleSize * CPTFloat(-2.625) ); } #pragma mark - diff --git a/examples/CorePlotGallery/src/plots/CompositePlot.m b/examples/CorePlotGallery/src/plots/CompositePlot.m index 60e7b7670..2b5700a87 100644 --- a/examples/CorePlotGallery/src/plots/CompositePlot.m +++ b/examples/CorePlotGallery/src/plots/CompositePlot.m @@ -58,20 +58,20 @@ -(nonnull instancetype)init -(void)setFrameSize:(NSSize)newSize { - self.scatterPlotView.frame = NSMakeRect(0.0, - 0.0, - newSize.width, - newSize.height * CPTFloat(0.5) ); + self.scatterPlotView.frame = NSMakeRect( 0.0, + 0.0, + newSize.width, + newSize.height * CPTFloat(0.5) ); - self.barChartView.frame = NSMakeRect(0.0, - newSize.height * CPTFloat(0.5), - newSize.width * CPTFloat(0.5), - newSize.height * CPTFloat(0.5) ); + self.barChartView.frame = NSMakeRect( 0.0, + newSize.height * CPTFloat(0.5), + newSize.width * CPTFloat(0.5), + newSize.height * CPTFloat(0.5) ); - self.pieChartView.frame = NSMakeRect(newSize.width * CPTFloat(0.5), - newSize.height * CPTFloat(0.5), - newSize.width * CPTFloat(0.5), - newSize.height * CPTFloat(0.5) ); + self.pieChartView.frame = NSMakeRect( newSize.width * CPTFloat(0.5), + newSize.height * CPTFloat(0.5), + newSize.width * CPTFloat(0.5), + newSize.height * CPTFloat(0.5) ); [self.scatterPlotView setNeedsDisplay:YES]; [self.barChartView setNeedsDisplay:YES]; @@ -170,20 +170,20 @@ -(void)renderInView:(nonnull PlotGalleryNativeView *)hostingView withTheme:(null #else NSRect viewRect = hostingView.bounds; - scatterView.frame = NSMakeRect(0.0, - 0.0, - viewRect.size.width, - viewRect.size.height * CPTFloat(0.5) ); + scatterView.frame = NSMakeRect( 0.0, + 0.0, + viewRect.size.width, + viewRect.size.height * CPTFloat(0.5) ); - barView.frame = NSMakeRect(0.0, - viewRect.size.height * CPTFloat(0.5), - viewRect.size.width * CPTFloat(0.5), - viewRect.size.height * CPTFloat(0.5) ); + barView.frame = NSMakeRect( 0.0, + viewRect.size.height * CPTFloat(0.5), + viewRect.size.width * CPTFloat(0.5), + viewRect.size.height * CPTFloat(0.5) ); - pieView.frame = NSMakeRect(viewRect.size.width * CPTFloat(0.5), - viewRect.size.height * CPTFloat(0.5), - viewRect.size.width * CPTFloat(0.5), - viewRect.size.height * CPTFloat(0.5) ); + pieView.frame = NSMakeRect( viewRect.size.width * CPTFloat(0.5), + viewRect.size.height * CPTFloat(0.5), + viewRect.size.width * CPTFloat(0.5), + viewRect.size.height * CPTFloat(0.5) ); for ( NSView *view in @[scatterView, barView, pieView] ) { [view setAutoresizesSubviews:YES]; @@ -422,8 +422,8 @@ -(void)renderPieChartInHostingView:(nonnull CPTGraphHostingView *)hostingView wi // Add pie chart CPTPieChart *piePlot = [[CPTPieChart alloc] init]; piePlot.dataSource = self; - piePlot.pieRadius = MIN(CPTFloat(0.7) * (hostingView.frame.size.height - CPTFloat(2.0) * self.pieChart.paddingLeft) / CPTFloat(2.0), - CPTFloat(0.7) * (hostingView.frame.size.width - CPTFloat(2.0) * self.pieChart.paddingTop) / CPTFloat(2.0) ); + piePlot.pieRadius = MIN( CPTFloat(0.7) * (hostingView.frame.size.height - CPTFloat(2.0) * self.pieChart.paddingLeft) / CPTFloat(2.0), + CPTFloat(0.7) * (hostingView.frame.size.width - CPTFloat(2.0) * self.pieChart.paddingTop) / CPTFloat(2.0) ); piePlot.identifier = @"Pie Chart 1"; piePlot.startAngle = CPTFloat(M_PI_4); piePlot.sliceDirection = CPTPieDirectionCounterClockwise; @@ -575,7 +575,7 @@ -(nullable CPTPlotSymbol *)symbolForScatterPlot:(nonnull CPTScatterPlot *)plot r CPTPlotSymbol *symbol = nil; // Use the default symbol - if ( [(NSString *) plot.identifier isEqualToString:@"Blue Plot"] && ( (NSInteger)index == self.selectedIndex ) ) { + if ( [(NSString *) plot.identifier isEqualToString:@"Blue Plot"] && ( (NSInteger)index == self.selectedIndex) ) { dispatch_once(&onceToken, ^{ redDot = [[CPTPlotSymbol alloc] init]; redDot.symbolType = CPTPlotSymbolTypeEllipse; @@ -602,10 +602,10 @@ -(void)setSelectedIndex:(NSInteger)newIndex CPTScatterPlot *thePlot = (CPTScatterPlot *)[self.scatterPlot plotWithIdentifier:@"Blue Plot"]; if ( oldIndex != NSNotFound ) { - [thePlot reloadPlotSymbolsInIndexRange:NSMakeRange( (NSUInteger)oldIndex, 1 )]; + [thePlot reloadPlotSymbolsInIndexRange:NSMakeRange( (NSUInteger)oldIndex, 1)]; } if ( newIndex != NSNotFound ) { - [thePlot reloadPlotSymbolsInIndexRange:NSMakeRange( (NSUInteger)newIndex, 1 )]; + [thePlot reloadPlotSymbolsInIndexRange:NSMakeRange( (NSUInteger)newIndex, 1)]; } } } diff --git a/examples/CorePlotGallery/src/plots/ControlChart.m b/examples/CorePlotGallery/src/plots/ControlChart.m index bb41290eb..e86bbff2f 100644 --- a/examples/CorePlotGallery/src/plots/ControlChart.m +++ b/examples/CorePlotGallery/src/plots/ControlChart.m @@ -58,7 +58,7 @@ -(void)generateData double error = value.doubleValue - self.meanValue; sum += error * error; } - double stdDev = sqrt( (1.0 / (numberOfPoints - 1) ) * sum ); + double stdDev = sqrt( ( 1.0 / (numberOfPoints - 1) ) * sum); self.standardError = stdDev / sqrt(numberOfPoints); } } @@ -207,7 +207,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT graph.legend.cornerRadius = 5.0; graph.legend.numberOfRows = 1; graph.legendAnchor = CPTRectAnchorBottom; - graph.legendDisplacement = CGPointMake(0.0, self.titleSize * CPTFloat(4.0) ); + graph.legendDisplacement = CGPointMake( 0.0, self.titleSize * CPTFloat(4.0) ); } #pragma mark - diff --git a/examples/CorePlotGallery/src/plots/CurvedInterpolationDemo.m b/examples/CorePlotGallery/src/plots/CurvedInterpolationDemo.m index 0f80ac6fd..b699f581c 100644 --- a/examples/CorePlotGallery/src/plots/CurvedInterpolationDemo.m +++ b/examples/CorePlotGallery/src/plots/CurvedInterpolationDemo.m @@ -106,7 +106,7 @@ -(void)renderInGraphHostingView:(CPTGraphHostingView *)hostingView withTheme:(CP redLineStyle.lineColor = [[CPTColor redColor] colorWithAlphaComponent:0.5]; CPTLineCap *lineCap = [CPTLineCap sweptArrowPlotLineCap]; - lineCap.size = CGSizeMake(self.titleSize * CPTFloat(0.625), self.titleSize * CPTFloat(0.625) ); + lineCap.size = CGSizeMake( self.titleSize * CPTFloat(0.625), self.titleSize * CPTFloat(0.625) ); // Axes // Label x axis with a fixed interval policy @@ -243,7 +243,7 @@ -(void)renderInGraphHostingView:(CPTGraphHostingView *)hostingView withTheme:(CP graph.legend.borderLineStyle = x.axisLineStyle; graph.legend.cornerRadius = 5.0; graph.legendAnchor = CPTRectAnchorBottom; - graph.legendDisplacement = CGPointMake(0.0, self.titleSize * CPTFloat(2.0) ); + graph.legendDisplacement = CGPointMake( 0.0, self.titleSize * CPTFloat(2.0) ); } #pragma mark - diff --git a/examples/CorePlotGallery/src/plots/CurvedScatterPlot.m b/examples/CorePlotGallery/src/plots/CurvedScatterPlot.m index 862886784..1daa64d28 100644 --- a/examples/CorePlotGallery/src/plots/CurvedScatterPlot.m +++ b/examples/CorePlotGallery/src/plots/CurvedScatterPlot.m @@ -94,7 +94,7 @@ -(void)generateData [contentArray addObject: @{ @"x": @(xLoc), - @"y": @( (dy / dx) / 20.0 ) } + @"y": @( (dy / dx) / 20.0) } ]; } @@ -121,7 +121,7 @@ -(void)generateData [contentArray addObject: @{ @"x": @(xLoc), - @"y": @( (dy / dx) / 20.0 ) } + @"y": @( (dy / dx) / 20.0) } ]; } @@ -169,7 +169,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT redLineStyle.lineColor = [[CPTColor redColor] colorWithAlphaComponent:0.5]; CPTLineCap *lineCap = [CPTLineCap sweptArrowPlotLineCap]; - lineCap.size = CGSizeMake(self.titleSize * CPTFloat(0.625), self.titleSize * CPTFloat(0.625) ); + lineCap.size = CGSizeMake( self.titleSize * CPTFloat(0.625), self.titleSize * CPTFloat(0.625) ); // Axes // Label x axis with a fixed interval policy @@ -291,7 +291,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT graph.legend.borderLineStyle = x.axisLineStyle; graph.legend.cornerRadius = 5.0; graph.legendAnchor = CPTRectAnchorBottom; - graph.legendDisplacement = CGPointMake(0.0, self.titleSize * CPTFloat(2.0) ); + graph.legendDisplacement = CGPointMake( 0.0, self.titleSize * CPTFloat(2.0) ); } #pragma mark - diff --git a/examples/CorePlotGallery/src/plots/DatePlot.m b/examples/CorePlotGallery/src/plots/DatePlot.m index e311b1afd..7179dadb6 100644 --- a/examples/CorePlotGallery/src/plots/DatePlot.m +++ b/examples/CorePlotGallery/src/plots/DatePlot.m @@ -100,7 +100,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace; NSTimeInterval xLow = 0.0; - plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:@(xLow) length:@(oneDay * (kNumPoints - 1) )]; + plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:@(xLow) length:@( oneDay * (kNumPoints - 1) )]; plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:@1.0 length:@2.0]; plotSpace.allowsUserInteraction = YES; diff --git a/examples/CorePlotGallery/src/plots/DonutChart.m b/examples/CorePlotGallery/src/plots/DonutChart.m index e6c3d94a7..32233f90d 100644 --- a/examples/CorePlotGallery/src/plots/DonutChart.m +++ b/examples/CorePlotGallery/src/plots/DonutChart.m @@ -59,8 +59,8 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT whiteShadow.shadowColor = [[CPTColor whiteColor] colorWithAlphaComponent:0.25]; // Add pie chart - const CGFloat outerRadius = MIN(CPTFloat(0.7) * (hostingView.frame.size.height - CPTFloat(2.0) * graph.paddingLeft) / CPTFloat(2.0), - CPTFloat(0.7) * (hostingView.frame.size.width - CPTFloat(2.0) * graph.paddingTop) / CPTFloat(2.0) ); + const CGFloat outerRadius = MIN( CPTFloat(0.7) * (hostingView.frame.size.height - CPTFloat(2.0) * graph.paddingLeft) / CPTFloat(2.0), + CPTFloat(0.7) * (hostingView.frame.size.width - CPTFloat(2.0) * graph.paddingTop) / CPTFloat(2.0) ); const CGFloat innerRadius = outerRadius / CPTFloat(2.0); CPTPieChart *piePlot = [[CPTPieChart alloc] init]; @@ -92,7 +92,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT // Add another pie chart piePlot = [[CPTPieChart alloc] init]; piePlot.dataSource = self; - piePlot.pieRadius = (animated ? CPTFloat(0.0) : (innerRadius - CPTFloat(5.0) ) ); + piePlot.pieRadius = ( animated ? CPTFloat(0.0) : ( innerRadius - CPTFloat(5.0) ) ); piePlot.identifier = innerChartName; piePlot.borderLineStyle = whiteLineStyle; piePlot.startAngle = CPTFloat(M_PI_4); diff --git a/examples/CorePlotGallery/src/plots/FunctionPlot.m b/examples/CorePlotGallery/src/plots/FunctionPlot.m index e8d75e10c..a52e81d02 100644 --- a/examples/CorePlotGallery/src/plots/FunctionPlot.m +++ b/examples/CorePlotGallery/src/plots/FunctionPlot.m @@ -201,7 +201,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT graph.legend.numberOfRows = 1; graph.legend.delegate = self; graph.legendAnchor = CPTRectAnchorBottom; - graph.legendDisplacement = CGPointMake(0.0, self.titleSize * CPTFloat(1.25) ); + graph.legendDisplacement = CGPointMake( 0.0, self.titleSize * CPTFloat(1.25) ); } #if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE diff --git a/examples/CorePlotGallery/src/plots/OHLCPlot.m b/examples/CorePlotGallery/src/plots/OHLCPlot.m index 002265bdf..a2ce2ac9a 100644 --- a/examples/CorePlotGallery/src/plots/OHLCPlot.m +++ b/examples/CorePlotGallery/src/plots/OHLCPlot.m @@ -46,8 +46,8 @@ -(void)generateData double rOpen = 3.0 * arc4random() / (double)UINT32_MAX + 1.0; double rClose = (arc4random() / (double)UINT32_MAX - 0.5) * 0.125 + rOpen; - double rHigh = MAX(rOpen, MAX(rClose, (arc4random() / (double)UINT32_MAX - 0.5) * 0.5 + rOpen) ); - double rLow = MIN(rOpen, MIN(rClose, (arc4random() / (double)UINT32_MAX - 0.5) * 0.5 + rOpen) ); + double rHigh = MAX( rOpen, MAX(rClose, (arc4random() / (double)UINT32_MAX - 0.5) * 0.5 + rOpen) ); + double rLow = MIN( rOpen, MIN(rClose, (arc4random() / (double)UINT32_MAX - 0.5) * 0.5 + rOpen) ); [newData addObject: @{ @(CPTTradingRangePlotFieldX): @(x), @@ -105,7 +105,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT CPTLineCap *lineCap = [[CPTLineCap alloc] init]; lineCap.lineStyle = xAxis.axisLineStyle; lineCap.lineCapType = CPTLineCapTypeOpenArrow; - lineCap.size = CGSizeMake(self.titleSize * CPTFloat(0.5), self.titleSize * CPTFloat(0.5) ); + lineCap.size = CGSizeMake( self.titleSize * CPTFloat(0.5), self.titleSize * CPTFloat(0.5) ); xAxis.axisLineCapMax = lineCap; CPTXYAxis *yAxis = xyAxisSet.yAxis; @@ -170,7 +170,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT newGraph.legend.cornerRadius = 5.0; newGraph.legend.swatchCornerRadius = 5.0; newGraph.legendAnchor = CPTRectAnchorBottom; - newGraph.legendDisplacement = CGPointMake(0.0, self.titleSize * CPTFloat(3.0) ); + newGraph.legendDisplacement = CGPointMake( 0.0, self.titleSize * CPTFloat(3.0) ); // Set plot ranges CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)newGraph.defaultPlotSpace; diff --git a/examples/CorePlotGallery/src/plots/RangePlot.m b/examples/CorePlotGallery/src/plots/RangePlot.m index 4845d4246..5fa05060e 100644 --- a/examples/CorePlotGallery/src/plots/RangePlot.m +++ b/examples/CorePlotGallery/src/plots/RangePlot.m @@ -171,7 +171,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT newGraph.legend.cornerRadius = 5.0; newGraph.legend.swatchCornerRadius = 3.0; newGraph.legendAnchor = CPTRectAnchorTop; - newGraph.legendDisplacement = CGPointMake(0.0, self.titleSize * CPTFloat(-2.0) - CPTFloat(12.0) ); + newGraph.legendDisplacement = CGPointMake( 0.0, self.titleSize * CPTFloat(-2.0) - CPTFloat(12.0) ); } #pragma mark - diff --git a/examples/CorePlotGallery/src/plots/RealTimePlot.m b/examples/CorePlotGallery/src/plots/RealTimePlot.m index 93f567e91..a7ac2cec4 100644 --- a/examples/CorePlotGallery/src/plots/RealTimePlot.m +++ b/examples/CorePlotGallery/src/plots/RealTimePlot.m @@ -172,7 +172,7 @@ -(void)newData:(nonnull NSTimer *)theTimer CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)theGraph.defaultPlotSpace; NSUInteger location = (self.currentIndex >= kMaxDataPoints ? self.currentIndex - kMaxDataPoints + 2 : 0); - CPTPlotRange *oldRange = [CPTPlotRange plotRangeWithLocation:@( (location > 0) ? (location - 1) : 0 ) + CPTPlotRange *oldRange = [CPTPlotRange plotRangeWithLocation:@( (location > 0) ? (location - 1) : 0) length:@(kMaxDataPoints - 2)]; CPTPlotRange *newRange = [CPTPlotRange plotRangeWithLocation:@(location) length:@(kMaxDataPoints - 2)]; @@ -184,7 +184,7 @@ -(void)newData:(nonnull NSTimer *)theTimer duration:CPTFloat(1.0 / kFrameRate)]; self.currentIndex++; - [self.plotData addObject:@( (1.0 - kAlpha) * self.plotData.lastObject.doubleValue + kAlpha * arc4random() / (double)UINT32_MAX )]; + [self.plotData addObject:@( (1.0 - kAlpha) * self.plotData.lastObject.doubleValue + kAlpha * arc4random() / (double)UINT32_MAX)]; [thePlot insertDataAtIndex:self.plotData.count - 1 numberOfRecords:1]; } } diff --git a/examples/CorePlotGallery/src/plots/SimplePieChart.m b/examples/CorePlotGallery/src/plots/SimplePieChart.m index 402b1b63a..a4bec7036 100644 --- a/examples/CorePlotGallery/src/plots/SimplePieChart.m +++ b/examples/CorePlotGallery/src/plots/SimplePieChart.m @@ -68,8 +68,8 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT // Add pie chart CPTPieChart *piePlot = [[CPTPieChart alloc] init]; piePlot.dataSource = self; - piePlot.pieRadius = MIN(CPTFloat(0.7) * (hostingView.frame.size.height - CPTFloat(2.0) * graph.paddingLeft) / CPTFloat(2.0), - CPTFloat(0.7) * (hostingView.frame.size.width - CPTFloat(2.0) * graph.paddingTop) / CPTFloat(2.0) ); + piePlot.pieRadius = MIN( CPTFloat(0.7) * (hostingView.frame.size.height - CPTFloat(2.0) * graph.paddingLeft) / CPTFloat(2.0), + CPTFloat(0.7) * (hostingView.frame.size.width - CPTFloat(2.0) * graph.paddingTop) / CPTFloat(2.0) ); piePlot.identifier = self.title; piePlot.startAngle = CPTFloat(M_PI_4); piePlot.sliceDirection = CPTPieDirectionCounterClockwise; @@ -136,7 +136,7 @@ -(void)pieChart:(nonnull CPTPieChart *)plot sliceWasSelectedAtRecordIndex:(NSUIn self.offsetIndex = NSNotFound; CPTMutableNumberArray *newData = [[NSMutableArray alloc] init]; - NSUInteger dataCount = (NSUInteger)lrint(ceil(10.0 * arc4random() / (double)UINT32_MAX) ) + 1; + NSUInteger dataCount = (NSUInteger)lrint( ceil(10.0 * arc4random() / (double)UINT32_MAX) ) + 1; for ( NSUInteger i = 1; i < dataCount; i++ ) { [newData addObject:@(100.0 * arc4random() / (double)UINT32_MAX)]; } @@ -156,8 +156,8 @@ -(void)legend:(nonnull CPTLegend *)legend legendEntryForPlot:(nonnull CPTPlot *) [CPTAnimation animate:self property:@"sliceOffset" - from:(idx == self.offsetIndex ? CPTNAN : CPTFloat(0.0) ) - to:(idx == self.offsetIndex ? CPTFloat(0.0) : CPTFloat(35.0) ) + from:( idx == self.offsetIndex ? CPTNAN : CPTFloat(0.0) ) + to:( idx == self.offsetIndex ? CPTFloat(0.0) : CPTFloat(35.0) ) duration:0.5 animationCurve:CPTAnimationCurveCubicOut delegate:nil]; diff --git a/examples/CorePlotGallery/src/plots/VerticalBarChart.m b/examples/CorePlotGallery/src/plots/VerticalBarChart.m index d6a817946..175748319 100644 --- a/examples/CorePlotGallery/src/plots/VerticalBarChart.m +++ b/examples/CorePlotGallery/src/plots/VerticalBarChart.m @@ -130,7 +130,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT { y.majorIntervalLength = (kUseHorizontalBars ? @1.0 : @10.0); y.minorTicksPerInterval = (kUseHorizontalBars ? 0 : 9); - y.orthogonalPosition = (kUseHorizontalBars ? @0.0 : @(-0.5) ); + y.orthogonalPosition = ( kUseHorizontalBars ? @0.0 : @(-0.5) ); y.preferredNumberOfMajorTicks = 8; y.majorGridLineStyle = majorGridLineStyle; @@ -211,7 +211,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT theLegend.fill = [CPTFill fillWithColor:[CPTColor colorWithGenericGray:CPTFloat(0.15)]]; theLegend.borderLineStyle = barLineStyle; theLegend.cornerRadius = textSize * CPTFloat(0.25); - theLegend.swatchSize = CGSizeMake(textSize * CPTFloat(0.75), textSize * CPTFloat(0.75) ); + theLegend.swatchSize = CGSizeMake( textSize * CPTFloat(0.75), textSize * CPTFloat(0.75) ); whiteTextStyle.fontSize = textSize * CPTFloat(0.5); theLegend.textStyle = whiteTextStyle; theLegend.rowMargin = textSize * CPTFloat(0.25); @@ -226,7 +226,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT CPTPlotSpaceAnnotation *legendAnnotation = [[CPTPlotSpaceAnnotation alloc] initWithPlotSpace:barPlotSpace anchorPlotPoint:plotPoint]; legendAnnotation.contentLayer = theLegend; - legendAnnotation.contentAnchorPoint = (kUseHorizontalBars ? CGPointMake(1.0, 0.0) : CGPointMake(0.0, 1.0) ); + legendAnnotation.contentAnchorPoint = ( kUseHorizontalBars ? CGPointMake(1.0, 0.0) : CGPointMake(0.0, 1.0) ); [graph.plotAreaFrame.plotArea addAnnotation:legendAnnotation]; } diff --git a/examples/CorePlotGallery/src/shared/PiNumberFormatter.m b/examples/CorePlotGallery/src/shared/PiNumberFormatter.m index 8f9fd1e72..baf917936 100644 --- a/examples/CorePlotGallery/src/shared/PiNumberFormatter.m +++ b/examples/CorePlotGallery/src/shared/PiNumberFormatter.m @@ -22,7 +22,7 @@ -(nullable NSString *)stringForObjectValue:(nullable id)coordinateValue NSString *string = nil; if ( [coordinateValue respondsToSelector:@selector(doubleValue)] ) { - double value = ( (NSNumber *)coordinateValue ).doubleValue / M_PI; + double value = ( (NSNumber *)coordinateValue).doubleValue / M_PI; double factor = round(self.multiplier.doubleValue); if ( factor == 0.0 ) { @@ -32,7 +32,7 @@ -(nullable NSString *)stringForObjectValue:(nullable id)coordinateValue double numerator = round(value * factor); double denominator = factor; double fraction = numerator / denominator; - double divisor = ABS(gcd(numerator, denominator) ); + double divisor = ABS( gcd(numerator, denominator) ); if ( fraction == 0.0 ) { string = @"0"; @@ -70,7 +70,7 @@ -(nullable NSString *)stringForObjectValue:(nullable id)coordinateValue while ( a != 0.0 ) { c = a; - a = round(fmod(b, a) ); + a = round( fmod(b, a) ); b = c; } diff --git a/examples/CorePlotGallery/src/shared/PlotItem.m b/examples/CorePlotGallery/src/shared/PlotItem.m index c508b2690..b3abb4d42 100644 --- a/examples/CorePlotGallery/src/shared/PlotItem.m +++ b/examples/CorePlotGallery/src/shared/PlotItem.m @@ -174,7 +174,7 @@ -(void)formatAllGraphs graph.title = (self.graphs.count == 1 ? self.title : nil); graph.titleTextStyle = textStyle; - graph.titleDisplacement = CPTPointMake(0.0, textStyle.fontSize * CPTFloat(1.5) ); + graph.titleDisplacement = CPTPointMake( 0.0, textStyle.fontSize * CPTFloat(1.5) ); graph.titlePlotAreaFrameAnchor = CPTRectAnchorTop; // Padding @@ -228,7 +228,7 @@ -(void)formatAllGraphs textStyle.fontSize = labelSize; theLegend.textStyle = textStyle; - theLegend.swatchSize = CGSizeMake(labelSize * CPTFloat(1.5), labelSize * CPTFloat(1.5) ); + theLegend.swatchSize = CGSizeMake( labelSize * CPTFloat(1.5), labelSize * CPTFloat(1.5) ); theLegend.rowMargin = labelSize * CPTFloat(0.75); theLegend.columnMargin = labelSize * CPTFloat(0.75); @@ -314,7 +314,7 @@ -(nonnull NSImage *)image NSGraphicsContext *bitmapContext = [NSGraphicsContext graphicsContextWithBitmapImageRep:layerImage]; CGContextRef context = (CGContextRef)bitmapContext.graphicsPort; - CGContextClearRect(context, CGRectMake(0.0, 0.0, boundsSize.width, boundsSize.height) ); + CGContextClearRect( context, CGRectMake(0.0, 0.0, boundsSize.width, boundsSize.height) ); CGContextSetAllowsAntialiasing(context, true); CGContextSetShouldSmoothFonts(context, false); [imageView.layer renderInContext:context]; diff --git a/examples/CorePlotGallery/src/tvOS/main.m b/examples/CorePlotGallery/src/tvOS/main.m index 240881c5c..cee796cdf 100644 --- a/examples/CorePlotGallery/src/tvOS/main.m +++ b/examples/CorePlotGallery/src/tvOS/main.m @@ -4,6 +4,6 @@ int main(int argc, char *argv[]) { @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegateTV class]) ); + return UIApplicationMain( argc, argv, nil, NSStringFromClass([AppDelegateTV class]) ); } } diff --git a/examples/DropPlot/CPTPlotDocument.m b/examples/DropPlot/CPTPlotDocument.m index 3d9b8d072..e5b14117b 100644 --- a/examples/DropPlot/CPTPlotDocument.m +++ b/examples/DropPlot/CPTPlotDocument.m @@ -90,9 +90,9 @@ -(void)windowControllerDidLoadNib:(nonnull NSWindowController *)windowController // Setup plot space CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)newGraph.defaultPlotSpace; plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:@(self.minimumValueForXAxis) - length:@(ceil( (self.maximumValueForXAxis - self.minimumValueForXAxis) / self.majorIntervalLengthForX ) * self.majorIntervalLengthForX)]; + length:@(ceil( (self.maximumValueForXAxis - self.minimumValueForXAxis) / self.majorIntervalLengthForX) * self.majorIntervalLengthForX)]; plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:@(self.minimumValueForYAxis) - length:@(ceil( (self.maximumValueForYAxis - self.minimumValueForYAxis) / self.majorIntervalLengthForY ) * self.majorIntervalLengthForY)]; + length:@(ceil( (self.maximumValueForYAxis - self.minimumValueForYAxis) / self.majorIntervalLengthForY) * self.majorIntervalLengthForY)]; // this allows the plot to respond to mouse events plotSpace.delegate = self; @@ -201,13 +201,13 @@ -(BOOL)readFromData:(nonnull NSData *)data ofType:(NSString *)typeName error:(NS double intervalX = (maxX - minX) / 5.0; if ( intervalX > 0.0 ) { - intervalX = pow(10.0, ceil(log10(intervalX) ) ); + intervalX = pow( 10.0, ceil( log10(intervalX) ) ); } self.majorIntervalLengthForX = intervalX; double intervalY = (maxY - minY) / 10.0; if ( intervalY > 0.0 ) { - intervalY = pow(10.0, ceil(log10(intervalY) ) ); + intervalY = pow( 10.0, ceil( log10(intervalY) ) ); } self.majorIntervalLengthForY = intervalY; @@ -297,9 +297,9 @@ -(IBAction)zoomOut CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)self.graph.defaultPlotSpace; plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:@(minX) - length:@(ceil( (maxX - minX) / intervalX ) * intervalX)]; + length:@(ceil( (maxX - minX) / intervalX) * intervalX)]; plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:@(minY) - length:@(ceil( (maxY - minY) / intervalY ) * intervalY)]; + length:@(ceil( (maxY - minY) / intervalY) * intervalY)]; CPTXYAxisSet *axisSet = (CPTXYAxisSet *)self.graph.axisSet; axisSet.xAxis.labelingPolicy = CPTAxisLabelingPolicyFixedInterval; axisSet.yAxis.labelingPolicy = CPTAxisLabelingPolicyFixedInterval; @@ -374,11 +374,11 @@ -(BOOL)plotSpace:(nonnull CPTPlotSpace *)space shouldHandlePointingDeviceDragged CGPoint dragEndInPlotArea = [self.graph convertPoint:interactionPoint toLayer:plotArea]; // create the dragrect from dragStart to the current location - CGFloat endX = MAX(MIN(dragEndInPlotArea.x, CGRectGetMaxX(plotBounds) ), CGRectGetMinX(plotBounds) ); - CGFloat endY = MAX(MIN(dragEndInPlotArea.y, CGRectGetMaxY(plotBounds) ), CGRectGetMinY(plotBounds) ); - CGRect borderRect = CGRectMake(dragStartInPlotArea.x, dragStartInPlotArea.y, - (endX - dragStartInPlotArea.x), - (endY - dragStartInPlotArea.y) ); + CGFloat endX = MAX( MIN( dragEndInPlotArea.x, CGRectGetMaxX(plotBounds) ), CGRectGetMinX(plotBounds) ); + CGFloat endY = MAX( MIN( dragEndInPlotArea.y, CGRectGetMaxY(plotBounds) ), CGRectGetMinY(plotBounds) ); + CGRect borderRect = CGRectMake( dragStartInPlotArea.x, dragStartInPlotArea.y, + (endX - dragStartInPlotArea.x), + (endY - dragStartInPlotArea.y) ); annotation.contentAnchorPoint = CGPointMake(dragEndInPlotArea.x >= dragStartInPlotArea.x ? 0.0 : 1.0, dragEndInPlotArea.y >= dragStartInPlotArea.y ? 0.0 : 1.0); diff --git a/examples/StockPlot/Classes/APYahooDataPuller.m b/examples/StockPlot/Classes/APYahooDataPuller.m index ce857b1d5..4c71585c3 100644 --- a/examples/StockPlot/Classes/APYahooDataPuller.m +++ b/examples/StockPlot/Classes/APYahooDataPuller.m @@ -65,7 +65,7 @@ -(nonnull CPTDictionary *)sanitizedFinancialLine:(nonnull CPTDictionary *)theFin for ( id key in aFinancialLine.allKeys ) { id something = aFinancialLine[key]; if ( [something respondsToSelector:@selector(decimalValue)] ) { - something = [NSDecimalNumber decimalNumberWithDecimal:( (NSNumber *)something ).decimalValue]; + something = [NSDecimalNumber decimalNumberWithDecimal:( (NSNumber *)something).decimalValue]; aFinancialLine[key] = something; } } diff --git a/framework/MacOnly/CPTGraphHostingView.m b/framework/MacOnly/CPTGraphHostingView.m index e691e3b63..699951e74 100644 --- a/framework/MacOnly/CPTGraphHostingView.m +++ b/framework/MacOnly/CPTGraphHostingView.m @@ -186,14 +186,14 @@ -(void)drawRect:(NSRect)dirtyRect } // scale the view isotropically so that it fits on the printed page - CGFloat widthScale = (sourceRect.size.width != CPTFloat(0.0) ) ? destinationRect.size.width / sourceRect.size.width : CPTFloat(1.0); - CGFloat heightScale = (sourceRect.size.height != CPTFloat(0.0) ) ? destinationRect.size.height / sourceRect.size.height : CPTFloat(1.0); + CGFloat widthScale = ( sourceRect.size.width != CPTFloat(0.0) ) ? destinationRect.size.width / sourceRect.size.width : CPTFloat(1.0); + CGFloat heightScale = ( sourceRect.size.height != CPTFloat(0.0) ) ? destinationRect.size.height / sourceRect.size.height : CPTFloat(1.0); CGFloat scale = MIN(widthScale, heightScale); // position the view so that its centered on the printed page CGPoint offset = destinationRect.origin; - offset.x += ( (destinationRect.size.width - (sourceRect.size.width * scale) ) / CPTFloat(2.0) ); - offset.y += ( (destinationRect.size.height - (sourceRect.size.height * scale) ) / CPTFloat(2.0) ); + offset.x += ( ( destinationRect.size.width - (sourceRect.size.width * scale) ) / CPTFloat(2.0) ); + offset.y += ( ( destinationRect.size.height - (sourceRect.size.height * scale) ) / CPTFloat(2.0) ); NSAffineTransform *transform = [NSAffineTransform transform]; [transform translateXBy:offset.x yBy:offset.y]; @@ -588,7 +588,7 @@ -(void)observeValueForKeyPath:(nullable NSString *)keyPath ofObject:(nullable id -(void)setHostedGraph:(nullable CPTGraph *)newGraph { - NSParameterAssert( (newGraph == nil) || [newGraph isKindOfClass:[CPTGraph class]] ); + NSParameterAssert( (newGraph == nil) || [newGraph isKindOfClass:[CPTGraph class]]); if ( newGraph != hostedGraph ) { self.wantsLayer = YES; diff --git a/framework/MacOnly/CPTPlatformSpecificCategories.m b/framework/MacOnly/CPTPlatformSpecificCategories.m index 278bce6d7..8365e489b 100644 --- a/framework/MacOnly/CPTPlatformSpecificCategories.m +++ b/framework/MacOnly/CPTPlatformSpecificCategories.m @@ -19,7 +19,7 @@ -(nonnull CPTNativeImage *)imageOfLayer CGFloat scale = 0.0; if ( [self respondsToSelector:@selector(hostingView)] ) { - scale = ( (CPTGraph *)self ).hostingView.window.backingScaleFactor; + scale = ( (CPTGraph *)self).hostingView.window.backingScaleFactor; } else { NSWindow *myWindow = self.graph.hostingView.window; @@ -52,7 +52,7 @@ -(nonnull CPTNativeImage *)imageOfLayer NSGraphicsContext *bitmapContext = [NSGraphicsContext graphicsContextWithBitmapImageRep:layerImage]; CGContextRef context = (CGContextRef)bitmapContext.graphicsPort; - CGContextClearRect(context, CPTRectMake(0.0, 0.0, boundsSize.width, boundsSize.height) ); + CGContextClearRect( context, CPTRectMake(0.0, 0.0, boundsSize.width, boundsSize.height) ); CGContextSetAllowsAntialiasing(context, true); CGContextSetShouldSmoothFonts(context, false); [self layoutAndRenderInContext:context]; diff --git a/framework/Source/CPTAnimation.h b/framework/Source/CPTAnimation.h index fed97c656..19798f351 100644 --- a/framework/Source/CPTAnimation.h +++ b/framework/Source/CPTAnimation.h @@ -46,8 +46,8 @@ typedef NS_ENUM (NSInteger, CPTAnimationCurve) { /** * @brief Animation delegate. **/ -#if ( ( TARGET_OS_SIMULATOR || TARGET_OS_IPHONE || TARGET_OS_TV) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= 100000) ) \ - || (TARGET_OS_MAC && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101200) ) +#if ( (TARGET_OS_SIMULATOR || TARGET_OS_IPHONE || TARGET_OS_TV ) && ( __IPHONE_OS_VERSION_MAX_ALLOWED >= 100000) ) \ + || (TARGET_OS_MAC && ( MAC_OS_X_VERSION_MAX_ALLOWED >= 101200) ) // CAAnimationDelegate is defined by Core Animation in iOS 10.0+, macOS 10.12+, and tvOS 10.0+ @protocol CPTAnimationDelegate #else diff --git a/framework/Source/CPTAnimation.m b/framework/Source/CPTAnimation.m index df5fe2cb6..d937288c6 100644 --- a/framework/Source/CPTAnimation.m +++ b/framework/Source/CPTAnimation.m @@ -401,7 +401,7 @@ -(void)updateOnMainThreadWithParameters:(nonnull CPTDictionary *)parameters id tweenedValue = parameters[CPTAnimationValueKey]; if ( [tweenedValue isKindOfClass:[NSDecimalNumber class]] ) { - NSDecimal buffer = ( (NSDecimalNumber *)tweenedValue ).decimalValue; + NSDecimal buffer = ( (NSDecimalNumber *)tweenedValue).decimalValue; typedef void (*SetterType)(id, SEL, NSDecimal); SetterType setterMethod = (SetterType)[boundObject methodForSelector:boundSetter]; diff --git a/framework/Source/CPTAxis.m b/framework/Source/CPTAxis.m index 116ea5aa0..dc79ee43d 100644 --- a/framework/Source/CPTAxis.m +++ b/framework/Source/CPTAxis.m @@ -954,7 +954,7 @@ -(void)generateFixedIntervalMajorTickLocations:(CPTNumberSet *__autoreleasing *) NSDecimal minorInterval; NSUInteger minorTickCount = self.minorTicksPerInterval; if ( minorTickCount > 0 ) { - minorInterval = CPTDecimalDivide(majorInterval, CPTDecimalFromUnsignedInteger(minorTickCount + 1) ); + minorInterval = CPTDecimalDivide( majorInterval, CPTDecimalFromUnsignedInteger(minorTickCount + 1) ); } else { minorInterval = zero; @@ -1091,16 +1091,16 @@ -(void)autoGenerateMajorTickLocations:(CPTNumberSet *__autoreleasing *)newMajorL majorInterval = CPTNiceLength(range.lengthDecimal); } else { - majorInterval = CPTDecimalDivide(range.lengthDecimal, CPTDecimalFromUnsignedInteger(numTicks - 1) ); + majorInterval = CPTDecimalDivide( range.lengthDecimal, CPTDecimalFromUnsignedInteger(numTicks - 1) ); majorInterval = CPTNiceNum(majorInterval); } if ( CPTDecimalLessThan(majorInterval, zero) ) { - majorInterval = CPTDecimalMultiply(majorInterval, CPTDecimalFromInteger(-1) ); + majorInterval = CPTDecimalMultiply( majorInterval, CPTDecimalFromInteger(-1) ); } NSDecimal minorInterval; if ( minorTicks > 1 ) { - minorInterval = CPTDecimalDivide(majorInterval, CPTDecimalFromUnsignedInteger(minorTicks) ); + minorInterval = CPTDecimalDivide( majorInterval, CPTDecimalFromUnsignedInteger(minorTicks) ); } else { minorInterval = zero; @@ -1155,14 +1155,14 @@ -(void)autoGenerateMajorTickLocations:(CPTNumberSet *__autoreleasing *)newMajorL length = log10(maxLimit / minLimit); double interval = signbit(length) ? -1.0 : 1.0; - double intervalStep = pow(10.0, fabs(interval) ); + double intervalStep = pow( 10.0, fabs(interval) ); // Determine minor interval - double minorInterval = intervalStep * 0.9 * pow(10.0, floor(log10(minLimit) ) ) / minorTicks; + double minorInterval = intervalStep * 0.9 * pow( 10.0, floor( log10(minLimit) ) ) / minorTicks; // Determine the initial and final major indexes for the actual visible range - NSInteger initialIndex = (NSInteger)lrint(floor(log10(minLimit / fabs(interval) ) ) ); // can be negative - NSInteger finalIndex = (NSInteger)lrint(ceil(log10(maxLimit / fabs(interval) ) ) ); // can be negative + NSInteger initialIndex = (NSInteger)lrint( floor( log10( minLimit / fabs(interval) ) ) ); // can be negative + NSInteger finalIndex = (NSInteger)lrint( ceil( log10( maxLimit / fabs(interval) ) ) ); // can be negative // Iterate through the indexes with visible ticks and build the locations sets for ( NSInteger i = initialIndex; i <= finalIndex; i++ ) { @@ -1200,14 +1200,14 @@ -(void)autoGenerateMajorTickLocations:(CPTNumberSet *__autoreleasing *)newMajorL double modMinLimit = CPTLogModulus(minLimit); double modMaxLimit = CPTLogModulus(maxLimit); - double multiplier = pow(10.0, floor(log10(length) ) ); + double multiplier = pow( 10.0, floor( log10(length) ) ); multiplier = (multiplier < 1.0) ? multiplier : 1.0; double intervalStep = 10.0; // Determine the initial and final major indexes for the actual visible range - NSInteger initialIndex = (NSInteger)lrint(floor(modMinLimit / multiplier) ); // can be negative - NSInteger finalIndex = (NSInteger)lrint(ceil(modMaxLimit / multiplier) ); // can be negative + NSInteger initialIndex = (NSInteger)lrint( floor(modMinLimit / multiplier) ); // can be negative + NSInteger finalIndex = (NSInteger)lrint( ceil(modMaxLimit / multiplier) ); // can be negative if ( initialIndex < 0 ) { // Determine minor interval @@ -1218,10 +1218,10 @@ -(void)autoGenerateMajorTickLocations:(CPTNumberSet *__autoreleasing *)newMajorL double sign = -multiplier; if ( multiplier < 1.0 ) { - pointLocation = sign * pow(10.0, fabs( (double)i ) - 1.0); + pointLocation = sign * pow(10.0, fabs( (double)i) - 1.0); } else { - pointLocation = sign * pow(10.0, fabs( (double)i ) ); + pointLocation = sign * pow( 10.0, fabs( (double)i) ); } for ( NSUInteger j = 1; j < minorTicks; j++ ) { @@ -1258,10 +1258,10 @@ -(void)autoGenerateMajorTickLocations:(CPTNumberSet *__autoreleasing *)newMajorL double sign = multiplier; if ( multiplier < 1.0 ) { - pointLocation = sign * pow(10.0, fabs( (double)i ) - 1.0); + pointLocation = sign * pow(10.0, fabs( (double)i) - 1.0); } else { - pointLocation = sign * pow(10.0, fabs( (double)i ) ); + pointLocation = sign * pow( 10.0, fabs( (double)i) ); } for ( NSUInteger j = 1; j < minorTicks; j++ ) { @@ -1330,15 +1330,15 @@ -(void)generateEqualMajorTickLocations:(CPTNumberSet *__autoreleasing *)newMajor if ( majorTickCount < 2 ) { majorTickCount = 2; } - NSDecimal majorInterval = CPTDecimalDivide(range.lengthDecimal, CPTDecimalFromUnsignedInteger(majorTickCount - 1) ); + NSDecimal majorInterval = CPTDecimalDivide( range.lengthDecimal, CPTDecimalFromUnsignedInteger(majorTickCount - 1) ); if ( CPTDecimalLessThan(majorInterval, zero) ) { - majorInterval = CPTDecimalMultiply(majorInterval, CPTDecimalFromInteger(-1) ); + majorInterval = CPTDecimalMultiply( majorInterval, CPTDecimalFromInteger(-1) ); } NSDecimal minorInterval; NSUInteger minorTickCount = self.minorTicksPerInterval; if ( minorTickCount > 0 ) { - minorInterval = CPTDecimalDivide(majorInterval, CPTDecimalFromUnsignedInteger(minorTickCount + 1) ); + minorInterval = CPTDecimalDivide( majorInterval, CPTDecimalFromUnsignedInteger(minorTickCount + 1) ); } else { minorInterval = zero; @@ -1393,20 +1393,20 @@ NSDecimal CPTNiceNum(NSDecimal x) x = CPTDecimalMultiply(x, minusOne); } - short exponent = (short)lrint(floor(log10(CPTDecimalDoubleValue(x) ) ) ); + short exponent = (short)lrint( floor( log10( CPTDecimalDoubleValue(x) ) ) ); NSDecimal fractionPart; NSDecimalMultiplyByPowerOf10(&fractionPart, &x, -exponent, NSRoundPlain); NSDecimal roundedFraction; - if ( CPTDecimalLessThan(fractionPart, CPTDecimalFromDouble(1.5) ) ) { + if ( CPTDecimalLessThan( fractionPart, CPTDecimalFromDouble(1.5) ) ) { roundedFraction = CPTDecimalFromInteger(1); } - else if ( CPTDecimalLessThan(fractionPart, CPTDecimalFromInteger(3) ) ) { + else if ( CPTDecimalLessThan( fractionPart, CPTDecimalFromInteger(3) ) ) { roundedFraction = CPTDecimalFromInteger(2); } - else if ( CPTDecimalLessThan(fractionPart, CPTDecimalFromInteger(7) ) ) { + else if ( CPTDecimalLessThan( fractionPart, CPTDecimalFromInteger(7) ) ) { roundedFraction = CPTDecimalFromInteger(5); } else { @@ -1445,11 +1445,11 @@ NSDecimal CPTNiceLength(NSDecimal length) NSDecimal roundedNumber; - if ( CPTDecimalGreaterThan(length, CPTDecimalFromInteger(10) ) ) { + if ( CPTDecimalGreaterThan( length, CPTDecimalFromInteger(10) ) ) { NSDecimalRound(&roundedNumber, &length, 0, NSRoundDown); } else { - short exponent = (short)lrint(floor(log10(CPTDecimalDoubleValue(length) ) ) ) - 1; + short exponent = (short)lrint( floor( log10( CPTDecimalDoubleValue(length) ) ) ) - 1; NSDecimalRound(&roundedNumber, &length, -exponent, NSRoundDown); } @@ -2385,7 +2385,7 @@ -(void)setLabelTextStyle:(nullable CPTTextStyle *)newStyle for ( CPTAxisLabel *axisLabel in self.axisLabels ) { CPTLayer *contentLayer = axisLabel.contentLayer; if ( [contentLayer isKindOfClass:textLayerClass] ) { - ( (CPTTextLayer *)contentLayer ).textStyle = labelTextStyle; + ( (CPTTextLayer *)contentLayer).textStyle = labelTextStyle; } } @@ -2402,7 +2402,7 @@ -(void)setMinorTickLabelTextStyle:(nullable CPTTextStyle *)newStyle for ( CPTAxisLabel *axisLabel in self.minorTickAxisLabels ) { CPTLayer *contentLayer = axisLabel.contentLayer; if ( [contentLayer isKindOfClass:textLayerClass] ) { - ( (CPTTextLayer *)contentLayer ).textStyle = minorTickLabelTextStyle; + ( (CPTTextLayer *)contentLayer).textStyle = minorTickLabelTextStyle; } } @@ -2463,7 +2463,7 @@ -(void)setTitleTextStyle:(nullable CPTTextStyle *)newStyle CPTLayer *contentLayer = self.axisTitle.contentLayer; if ( [contentLayer isKindOfClass:[CPTTextLayer class]] ) { - ( (CPTTextLayer *)contentLayer ).textStyle = titleTextStyle; + ( (CPTTextLayer *)contentLayer).textStyle = titleTextStyle; [self updateAxisTitle]; } } @@ -2512,7 +2512,7 @@ -(void)setTitle:(nullable NSString *)newTitle if ( title ) { CPTLayer *contentLayer = self.axisTitle.contentLayer; if ( [contentLayer isKindOfClass:[CPTTextLayer class]] ) { - ( (CPTTextLayer *)contentLayer ).text = title; + ( (CPTTextLayer *)contentLayer).text = title; [self updateAxisTitle]; } } @@ -2538,7 +2538,7 @@ -(void)setAttributedTitle:(nullable NSAttributedString *)newTitle CPTLayer *contentLayer = self.axisTitle.contentLayer; if ( [contentLayer isKindOfClass:[CPTTextLayer class]] ) { - ( (CPTTextLayer *)contentLayer ).attributedText = attributedTitle; + ( (CPTTextLayer *)contentLayer).attributedText = attributedTitle; [self updateAxisTitle]; } } diff --git a/framework/Source/CPTAxisLabel.m b/framework/Source/CPTAxisLabel.m index 576ca0077..96955e4b9 100644 --- a/framework/Source/CPTAxisLabel.m +++ b/framework/Source/CPTAxisLabel.m @@ -151,14 +151,14 @@ -(void)positionRelativeToViewPoint:(CGPoint)point forCoordinate:(CPTCoordinate)c } CGPoint newPosition = point; - CGFloat *value = (coordinate == CPTCoordinateX ? &(newPosition.x) : &(newPosition.y) ); + CGFloat *value = ( coordinate == CPTCoordinateX ? &(newPosition.x) : &(newPosition.y) ); CGFloat angle = CPTFloat(0.0); CGFloat labelRotation = self.rotation; if ( isnan(labelRotation) ) { - labelRotation = (coordinate == CPTCoordinateX ? CPTFloat(M_PI_2) : CPTFloat(0.0) ); + labelRotation = ( coordinate == CPTCoordinateX ? CPTFloat(M_PI_2) : CPTFloat(0.0) ); } - content.transform = CATransform3DMakeRotation(labelRotation, CPTFloat(0.0), CPTFloat(0.0), CPTFloat(1.0) ); + content.transform = CATransform3DMakeRotation( labelRotation, CPTFloat(0.0), CPTFloat(0.0), CPTFloat(1.0) ); CGRect contentFrame = content.frame; // Position the anchor point along the closest edge. @@ -280,7 +280,7 @@ -(void)positionRelativeToViewPoint:(CGPoint)point forCoordinate:(CPTCoordinate)c newAnchorY /= ABS(newAnchorX); newAnchorX = signbit(newAnchorX) ? CPTFloat(-1.0) : CPTFloat(1.0); } - CGPoint anchor = CPTPointMake( (newAnchorX + CPTFloat(1.0) ) / CPTFloat(2.0), (newAnchorY + CPTFloat(1.0) ) / CPTFloat(2.0) ); + CGPoint anchor = CPTPointMake( ( newAnchorX + CPTFloat(1.0) ) / CPTFloat(2.0), ( newAnchorY + CPTFloat(1.0) ) / CPTFloat(2.0) ); content.anchorPoint = anchor; content.position = newPosition; @@ -329,7 +329,7 @@ -(BOOL)isEqual:(nullable id)object return YES; } else if ( [object isKindOfClass:[self class]] ) { - NSNumber *location = ( (CPTAxisLabel *)object ).tickLocation; + NSNumber *location = ( (CPTAxisLabel *)object).tickLocation; if ( location ) { return [self.tickLocation isEqualToNumber:location]; @@ -355,7 +355,7 @@ -(NSUInteger)hash double tickLocationAsDouble = self.tickLocation.doubleValue; if ( !isnan(tickLocationAsDouble) ) { - hashValue = (NSUInteger)lrint(fmod(ABS(tickLocationAsDouble), (double)NSUIntegerMax) ); + hashValue = (NSUInteger)lrint( fmod(ABS(tickLocationAsDouble), (double)NSUIntegerMax) ); } return hashValue; diff --git a/framework/Source/CPTAxisLabelTests.m b/framework/Source/CPTAxisLabelTests.m index 21efacd1c..eee894a7f 100644 --- a/framework/Source/CPTAxisLabelTests.m +++ b/framework/Source/CPTAxisLabelTests.m @@ -19,8 +19,8 @@ static CGPoint roundPoint(CGPoint position, CGSize contentSize, CGPoint anchor) CGPoint newAnchor = CGPointMake(contentSize.width * anchor.x, contentSize.height * anchor.y); - newPosition.x = ceil(position.x - newAnchor.x - CPTFloat(0.5) ) + newAnchor.x; - newPosition.y = ceil(position.y - newAnchor.y - CPTFloat(0.5) ) + newAnchor.y; + newPosition.x = ceil( position.x - newAnchor.x - CPTFloat(0.5) ) + newAnchor.x; + newPosition.y = ceil( position.y - newAnchor.y - CPTFloat(0.5) ) + newAnchor.y; return newPosition; } @@ -60,8 +60,8 @@ -(void)testPositionRelativeToViewPointPositionsForXCoordinate CGPoint newPosition = roundPoint(CGPointMake(start - label.offset, start), contentSize, contentLayer.anchorPoint); - XCTAssertEqualWithAccuracy(contentLayer.position.x, newPosition.x, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); - XCTAssertEqualWithAccuracy(contentLayer.position.y, newPosition.y, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy( contentLayer.position.x, newPosition.x, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy( contentLayer.position.y, newPosition.y, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.x, CPTFloat(1.0), precision, @"Should anchor at (1.0, 0.5)"); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.y, CPTFloat(0.5), precision, @"Should anchor at (1.0, 0.5)"); @@ -73,8 +73,8 @@ -(void)testPositionRelativeToViewPointPositionsForXCoordinate newPosition = roundPoint(CGPointMake(start - label.offset, start), contentSize, contentLayer.anchorPoint); - XCTAssertEqualWithAccuracy(contentLayer.position.x, newPosition.x, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); - XCTAssertEqualWithAccuracy(contentLayer.position.y, newPosition.y, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy( contentLayer.position.x, newPosition.x, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy( contentLayer.position.y, newPosition.y, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.x, CPTFloat(1.0), precision, @"Should anchor at (1.0, 0.5)"); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.y, CPTFloat(0.5), precision, @"Should anchor at (1.0, 0.5)"); @@ -86,8 +86,8 @@ -(void)testPositionRelativeToViewPointPositionsForXCoordinate newPosition = roundPoint(CGPointMake(start + label.offset, start), contentSize, contentLayer.anchorPoint); - XCTAssertEqualWithAccuracy(contentLayer.position.x, newPosition.x, precision, @"Should add positive offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); - XCTAssertEqualWithAccuracy(contentLayer.position.y, newPosition.y, precision, @"Should add positive offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy( contentLayer.position.x, newPosition.x, precision, @"Should add positive offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy( contentLayer.position.y, newPosition.y, precision, @"Should add positive offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.x, CPTFloat(0.0), precision, @"Should anchor at (0.0, 0.5)"); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.y, CPTFloat(0.5), precision, @"Should anchor at (0.0, 0.5)"); } @@ -117,8 +117,8 @@ -(void)testPositionRelativeToViewPointPositionsForYCoordinate CGPoint newPosition = roundPoint(CGPointMake(start, start - label.offset), contentSize, contentLayer.anchorPoint); - XCTAssertEqualWithAccuracy(contentLayer.position.x, newPosition.x, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); - XCTAssertEqualWithAccuracy(contentLayer.position.y, newPosition.y, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy( contentLayer.position.x, newPosition.x, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy( contentLayer.position.y, newPosition.y, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.x, CPTFloat(0.5), precision, @"Should anchor at (0.5, 1.0)"); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.y, CPTFloat(1.0), precision, @"Should anchor at (0.5, 1.0)"); @@ -130,8 +130,8 @@ -(void)testPositionRelativeToViewPointPositionsForYCoordinate newPosition = roundPoint(CGPointMake(start, start - label.offset), contentSize, contentLayer.anchorPoint); - XCTAssertEqualWithAccuracy(contentLayer.position.x, newPosition.x, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); - XCTAssertEqualWithAccuracy(contentLayer.position.y, newPosition.y, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy( contentLayer.position.x, newPosition.x, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy( contentLayer.position.y, newPosition.y, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.x, CPTFloat(0.5), precision, @"Should anchor at (0.5, 1.0)"); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.y, CPTFloat(1.0), precision, @"Should anchor at (0.5, 1.0)"); @@ -143,8 +143,8 @@ -(void)testPositionRelativeToViewPointPositionsForYCoordinate newPosition = roundPoint(CGPointMake(start, start + label.offset), contentSize, contentLayer.anchorPoint); - XCTAssertEqualWithAccuracy(contentLayer.position.x, newPosition.x, precision, @"Should add positive offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); - XCTAssertEqualWithAccuracy(contentLayer.position.y, newPosition.y, precision, @"Should add positive offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy( contentLayer.position.x, newPosition.x, precision, @"Should add positive offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy( contentLayer.position.y, newPosition.y, precision, @"Should add positive offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.x, CPTFloat(0.5), precision, @"Should anchor at (0.5, 0.0)"); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.y, CPTFloat(0.0), precision, @"Should anchor at (0.5, 0.0)"); } diff --git a/framework/Source/CPTAxisTitle.m b/framework/Source/CPTAxisTitle.m index d195c8273..d40080766 100644 --- a/framework/Source/CPTAxisTitle.m +++ b/framework/Source/CPTAxisTitle.m @@ -56,7 +56,7 @@ -(BOOL)isEqual:(nullable id)object return NO; } - NSNumber *location = ( (CPTAxisLabel *)object ).tickLocation; + NSNumber *location = ( (CPTAxisLabel *)object).tickLocation; if ( location ) { return [self.tickLocation isEqualToNumber:location]; @@ -82,10 +82,10 @@ -(NSUInteger)hash double tickLocationAsDouble = self.tickLocation.doubleValue; if ( !isnan(tickLocationAsDouble) ) { - hashValue = (NSUInteger)lrint(fmod(ABS(tickLocationAsDouble), (double)NSUIntegerMax) ); + hashValue = (NSUInteger)lrint( fmod(ABS(tickLocationAsDouble), (double)NSUIntegerMax) ); } - hashValue += (NSUInteger)lrint(fmod(ABS(self.rotation), (double)NSUIntegerMax) ); - hashValue += (NSUInteger)lrint(fmod(ABS(self.offset), (double)NSUIntegerMax) ); + hashValue += (NSUInteger)lrint( fmod(ABS(self.rotation), (double)NSUIntegerMax) ); + hashValue += (NSUInteger)lrint( fmod(ABS(self.offset), (double)NSUIntegerMax) ); return hashValue; } diff --git a/framework/Source/CPTBarPlot.m b/framework/Source/CPTBarPlot.m index d2bc184b2..037f78d02 100644 --- a/framework/Source/CPTBarPlot.m +++ b/framework/Source/CPTBarPlot.m @@ -406,7 +406,7 @@ -(void)reloadPlotDataInIndexRange:(NSRange)indexRange CPTMutableNumericData *locationData = nil; if ( self.doublePrecisionCache ) { locationData = [[CPTMutableNumericData alloc] initWithData:[NSData data] - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) shape:nil]; locationData.shape = @[@(indexRange.length)]; @@ -425,13 +425,13 @@ -(void)reloadPlotDataInIndexRange:(NSRange)indexRange } else { locationData = [[CPTMutableNumericData alloc] initWithData:[NSData data] - dataType:CPTDataType(CPTDecimalDataType, sizeof(NSDecimal), CFByteOrderGetCurrent() ) + dataType:CPTDataType( CPTDecimalDataType, sizeof(NSDecimal), CFByteOrderGetCurrent() ) shape:nil]; locationData.shape = @[@(indexRange.length)]; NSDecimal delta = CPTDecimalFromInteger(1); if ( indexRange.length > 1 ) { - delta = CPTDecimalDivide(self.plotRange.lengthDecimal, CPTDecimalFromUnsignedInteger(indexRange.length - 1) ); + delta = CPTDecimalDivide( self.plotRange.lengthDecimal, CPTDecimalFromUnsignedInteger(indexRange.length - 1) ); } NSDecimal locationDecimal = self.plotRange.locationDecimal; @@ -454,7 +454,7 @@ -(void)reloadPlotDataInIndexRange:(NSRange)indexRange CPTMutableNumericData *locationData = nil; if ( self.doublePrecisionCache ) { locationData = [[CPTMutableNumericData alloc] initWithData:[NSData data] - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) shape:nil]; locationData.shape = @[@(indexRange.length)]; @@ -468,7 +468,7 @@ -(void)reloadPlotDataInIndexRange:(NSRange)indexRange } else { locationData = [[CPTMutableNumericData alloc] initWithData:[NSData data] - dataType:CPTDataType(CPTDecimalDataType, sizeof(NSDecimal), CFByteOrderGetCurrent() ) + dataType:CPTDataType( CPTDecimalDataType, sizeof(NSDecimal), CFByteOrderGetCurrent() ) shape:nil]; locationData.shape = @[@(indexRange.length)]; @@ -789,12 +789,12 @@ -(nullable CPTPlotRange *)plotRangeEnclosingBars NSDecimal barOffsetLength = [self lengthInPlotCoordinates:self.barOffset.decimalValue]; NSDecimal barWidthLength = [self lengthInPlotCoordinates:self.barWidth.decimalValue]; - NSDecimal halfBarWidth = CPTDecimalDivide(barWidthLength, CPTDecimalFromInteger(2) ); + NSDecimal halfBarWidth = CPTDecimalDivide( barWidthLength, CPTDecimalFromInteger(2) ); NSDecimal rangeLocation = range.locationDecimal; NSDecimal rangeLength = range.lengthDecimal; - if ( CPTDecimalGreaterThanOrEqualTo(rangeLength, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalGreaterThanOrEqualTo( rangeLength, CPTDecimalFromInteger(0) ) ) { rangeLocation = CPTDecimalSubtract(rangeLocation, halfBarWidth); range.locationDecimal = CPTDecimalAdd(rangeLocation, barOffsetLength); @@ -993,14 +993,14 @@ -(nonnull CGMutablePathRef)newBarPathWithContext:(nullable CGContextRef)context } } - CGFloat radius = MIN(MIN(self.barCornerRadius, ABS(barRect.size.width) * CPTFloat(0.5) ), ABS(barRect.size.height) * CPTFloat(0.5) ); - CGFloat baseRadius = MIN(MIN(self.barBaseCornerRadius, ABS(barRect.size.width) * CPTFloat(0.5) ), ABS(barRect.size.height) * CPTFloat(0.5) ); + CGFloat radius = MIN( MIN( self.barCornerRadius, ABS(barRect.size.width) * CPTFloat(0.5) ), ABS(barRect.size.height) * CPTFloat(0.5) ); + CGFloat baseRadius = MIN( MIN( self.barBaseCornerRadius, ABS(barRect.size.width) * CPTFloat(0.5) ), ABS(barRect.size.height) * CPTFloat(0.5) ); - if ( widthNegative && (barRect.size.width > CPTFloat(0.0) ) ) { + if ( widthNegative && ( barRect.size.width > CPTFloat(0.0) ) ) { barRect.origin.x += barRect.size.width; barRect.size.width = -barRect.size.width; } - if ( heightNegative && (barRect.size.height > CPTFloat(0.0) ) ) { + if ( heightNegative && ( barRect.size.height > CPTFloat(0.0) ) ) { barRect.origin.y += barRect.size.height; barRect.size.height = -barRect.size.height; } @@ -1053,14 +1053,14 @@ -(nonnull CGMutablePathRef)newBarPathWithContext:(nullable CGContextRef)context else { // rounded at both ends if ( horizontalBars ) { - CGPathMoveToPoint(path, NULL, barRect.origin.x, CGRectGetMidY(barRect) ); + CGPathMoveToPoint( path, NULL, barRect.origin.x, CGRectGetMidY(barRect) ); CGPathAddArcToPoint(path, NULL, barRect.origin.x, tipY, CGRectGetMidX(barRect), tipY, baseRadius); CGPathAddArcToPoint(path, NULL, tipX, tipY, tipX, CGRectGetMidY(barRect), radius); CGPathAddArcToPoint(path, NULL, tipX, barRect.origin.y, CGRectGetMidX(barRect), barRect.origin.y, radius); CGPathAddArcToPoint(path, NULL, barRect.origin.x, barRect.origin.y, barRect.origin.x, CGRectGetMidY(barRect), baseRadius); } else { - CGPathMoveToPoint(path, NULL, barRect.origin.x, CGRectGetMidY(barRect) ); + CGPathMoveToPoint( path, NULL, barRect.origin.x, CGRectGetMidY(barRect) ); CGPathAddArcToPoint(path, NULL, barRect.origin.x, tipY, CGRectGetMidX(barRect), tipY, radius); CGPathAddArcToPoint(path, NULL, tipX, tipY, tipX, CGRectGetMidY(barRect), radius); CGPathAddArcToPoint(path, NULL, tipX, barRect.origin.y, CGRectGetMidX(barRect), barRect.origin.y, baseRadius); @@ -1081,8 +1081,8 @@ -(BOOL)barIsVisibleWithBasePoint:(CGPoint)basePoint CPTPlotArea *thePlotArea = self.plotArea; - CGFloat lowerBound = (horizontalBars ? CGRectGetMinY(thePlotArea.bounds) : CGRectGetMinX(thePlotArea.bounds) ); - CGFloat upperBound = (horizontalBars ? CGRectGetMaxY(thePlotArea.bounds) : CGRectGetMaxX(thePlotArea.bounds) ); + CGFloat lowerBound = ( horizontalBars ? CGRectGetMinY(thePlotArea.bounds) : CGRectGetMinX(thePlotArea.bounds) ); + CGFloat upperBound = ( horizontalBars ? CGRectGetMaxY(thePlotArea.bounds) : CGRectGetMaxX(thePlotArea.bounds) ); CGFloat base = (horizontalBars ? basePoint.y : basePoint.x); return (base + halfBarWidth >= lowerBound) && (base - halfBarWidth <= upperBound); @@ -1231,7 +1231,7 @@ -(void)positionLabelAnnotation:(nonnull CPTPlotSpaceAnnotation *)label forIndex: BOOL horizontalBars = self.barsAreHorizontal; CPTCoordinate coordinate = (horizontalBars ? CPTCoordinateX : CPTCoordinateY); CPTPlotRange *lengthRange = [self.plotSpace plotRangeForCoordinate:coordinate]; - if ( CPTDecimalLessThan(lengthRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalLessThan( lengthRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { positiveDirection = !positiveDirection; } diff --git a/framework/Source/CPTBorderedLayer.m b/framework/Source/CPTBorderedLayer.m index 4087581d0..6c89fa02f 100644 --- a/framework/Source/CPTBorderedLayer.m +++ b/framework/Source/CPTBorderedLayer.m @@ -271,7 +271,7 @@ -(nullable CGPathRef)sublayerMaskingPath CGFloat lineWidth = self.borderLineStyle.lineWidth; CGRect selfBounds = CGRectInset(self.bounds, lineWidth, lineWidth); - path = CPTCreateRoundedRectPath(selfBounds, self.cornerRadius - lineWidth * CPTFloat(0.5) ); + path = CPTCreateRoundedRectPath( selfBounds, self.cornerRadius - lineWidth * CPTFloat(0.5) ); self.innerBorderPath = path; CGPathRelease(path); @@ -306,7 +306,7 @@ -(void)removeFromSuperlayer -(void)updateOpacity { - BOOL opaqueLayer = (self.cornerRadius <= CPTFloat(0.0) ); + BOOL opaqueLayer = ( self.cornerRadius <= CPTFloat(0.0) ); CPTFill *theFill = self.fill; diff --git a/framework/Source/CPTColor.m b/framework/Source/CPTColor.m index ba9cfdcde..3cb817042 100644 --- a/framework/Source/CPTColor.m +++ b/framework/Source/CPTColor.m @@ -539,7 +539,7 @@ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder size_t numberOfComponents = (size_t)[coder decodeInt64ForKey:@"CPTColor.numberOfComponents"]; - CGFloat *colorComponents = calloc(numberOfComponents, sizeof(CGFloat) ); + CGFloat *colorComponents = calloc( numberOfComponents, sizeof(CGFloat) ); for ( size_t i = 0; i < numberOfComponents; i++ ) { NSString *newKey = [[NSString alloc] initWithFormat:@"CPTColor.component[%zu]", i]; @@ -615,7 +615,7 @@ -(BOOL)isEqual:(nullable id)object return YES; } else if ( [object isKindOfClass:[self class]] ) { - return CGColorEqualToColor(self.cgColor, ( (CPTColor *)object ).cgColor); + return CGColorEqualToColor(self.cgColor, ( (CPTColor *)object).cgColor); } else { return NO; diff --git a/framework/Source/CPTDataSourceTestCase.m b/framework/Source/CPTDataSourceTestCase.m index 117f95768..333df3157 100644 --- a/framework/Source/CPTDataSourceTestCase.m +++ b/framework/Source/CPTDataSourceTestCase.m @@ -51,7 +51,7 @@ -(void)buildData arr = [NSMutableArray arrayWithCapacity:recordCount]; for ( NSUInteger i = 0; i < recordCount; i++ ) { - [arr insertObject:@(sin(2 * M_PI * (double)i / (double)recordCount) ) atIndex:i]; + [arr insertObject:@( sin(2 * M_PI * (double)i / (double)recordCount) ) atIndex:i]; } self.yData = arr; } @@ -81,7 +81,7 @@ -(nonnull CPTPlotRange *)yRange CPTMutablePlotRange *range = [self plotRangeForData:data]; if ( self.plots.count > 1 ) { - range.lengthDecimal = CPTDecimalAdd(range.lengthDecimal, CPTDecimalFromUnsignedInteger(self.plots.count) ); + range.lengthDecimal = CPTDecimalAdd( range.lengthDecimal, CPTDecimalFromUnsignedInteger(self.plots.count) ); } return range; @@ -122,7 +122,7 @@ -(nullable CPTNumberArray *)numbersForPlot:(nonnull CPTPlot *)plot XCTAssertTrue([[self plots] containsObject:plot], @"Plot missing"); CPTMutableNumberArray *shiftedResult = [NSMutableArray arrayWithCapacity:result.count]; for ( NSDecimalNumber *d in result ) { - [shiftedResult addObject:[d decimalNumberByAdding:[NSDecimalNumber decimalNumberWithDecimal:CPTDecimalFromCGFloat(CPTDataSourceTestCasePlotOffset * ([self.plots indexOfObject:plot] + 1) )]]]; + [shiftedResult addObject:[d decimalNumberByAdding:[NSDecimalNumber decimalNumberWithDecimal:CPTDecimalFromCGFloat( CPTDataSourceTestCasePlotOffset * ([self.plots indexOfObject:plot] + 1) )]]]; } result = shiftedResult; diff --git a/framework/Source/CPTDefinitions.h b/framework/Source/CPTDefinitions.h index 6668c85a8..963f29fb2 100644 --- a/framework/Source/CPTDefinitions.h +++ b/framework/Source/CPTDefinitions.h @@ -49,14 +49,14 @@ * @hideinitializer * @brief Marks a type definition to be imported into Swift as an enumeration. **/ -#define cpt_swift_enum __attribute__( (swift_wrapper(enum) ) ) +#define cpt_swift_enum __attribute__( ( swift_wrapper(enum) ) ) /** * @def cpt_swift_struct * @hideinitializer * @brief Marks a type definition to be imported into Swift as a structure. **/ -#define cpt_swift_struct __attribute__( (swift_wrapper(struct) ) ) +#define cpt_swift_struct __attribute__( ( swift_wrapper(struct) ) ) // Type safety defines @@ -105,14 +105,14 @@ * @param dy The y-offset. * @brief A replacement for @ref CGRectInset(), casting each offset parameter to @ref CGFloat. **/ -#define CPTRectInset(rect, dx, dy) CGRectInset(rect, (CGFloat)(dx), (CGFloat)(dy) ) +#define CPTRectInset(rect, dx, dy) CGRectInset( rect, (CGFloat)(dx), (CGFloat)(dy) ) /** * @def CPTNAN * @hideinitializer * @brief The not-a-number constant (@NAN), cast to @ref CGFloat. **/ -#define CPTNAN ( (CGFloat)NAN ) +#define CPTNAN ( (CGFloat)NAN) /** * @brief Enumeration of numeric types diff --git a/framework/Source/CPTFunctionDataSource.h b/framework/Source/CPTFunctionDataSource.h index 8a38b30fa..877c074c4 100644 --- a/framework/Source/CPTFunctionDataSource.h +++ b/framework/Source/CPTFunctionDataSource.h @@ -25,17 +25,17 @@ typedef double (^CPTDataSourceBlock)(double); /// @name Factory Methods /// @{ -+(nonnull instancetype)dataSourceForPlot:(nonnull CPTPlot *)plot withFunction:(nonnull CPTDataSourceFunction) function NS_SWIFT_NAME(init(for:withFunction:) ); ++(nonnull instancetype)dataSourceForPlot:(nonnull CPTPlot *)plot withFunction:(nonnull CPTDataSourceFunction) function NS_SWIFT_NAME( init(for:withFunction:) ); -+(nonnull instancetype)dataSourceForPlot:(nonnull CPTPlot *)plot withBlock:(nonnull CPTDataSourceBlock) block NS_SWIFT_NAME(init(for:withBlock:) ); ++(nonnull instancetype)dataSourceForPlot:(nonnull CPTPlot *)plot withBlock:(nonnull CPTDataSourceBlock) block NS_SWIFT_NAME( init(for:withBlock:) ); /// @} /// @name Initialization /// @{ --(nonnull instancetype)initForPlot:(nonnull CPTPlot *)plot withFunction:(nonnull CPTDataSourceFunction) function NS_SWIFT_NAME(init(forPlot:withFunction:) ); +-(nonnull instancetype)initForPlot:(nonnull CPTPlot *)plot withFunction:(nonnull CPTDataSourceFunction) function NS_SWIFT_NAME( init(forPlot:withFunction:) ); --(nonnull instancetype)initForPlot:(nonnull CPTPlot *)plot withBlock:(nonnull CPTDataSourceBlock) block NS_SWIFT_NAME(init(forPlot:withBlock:) ); +-(nonnull instancetype)initForPlot:(nonnull CPTPlot *)plot withBlock:(nonnull CPTDataSourceBlock) block NS_SWIFT_NAME( init(forPlot:withBlock:) ); /// @} diff --git a/framework/Source/CPTFunctionDataSource.m b/framework/Source/CPTFunctionDataSource.m index 5a682aaf2..5ac2041c6 100644 --- a/framework/Source/CPTFunctionDataSource.m +++ b/framework/Source/CPTFunctionDataSource.m @@ -176,7 +176,7 @@ -(void)dealloc -(void)setResolution:(CGFloat)newResolution { - NSParameterAssert(newResolution > CPTFloat(0.0) ); + NSParameterAssert( newResolution > CPTFloat(0.0) ); if ( newResolution != resolution ) { resolution = newResolution; @@ -222,7 +222,7 @@ -(void)plotBoundsChanged if ( plotSpace ) { CGFloat width = plot.bounds.size.width; if ( width > CPTFloat(0.0) ) { - NSUInteger count = (NSUInteger)lrint(ceil(width / self.resolution) ) + 1; + NSUInteger count = (NSUInteger)lrint( ceil(width / self.resolution) ) + 1; if ( count > self.cachedCount ) { self.dataCount = count; @@ -271,7 +271,7 @@ -(void)plotSpaceChanged if ( step > 0.0 ) { double minLimit = plotRange.minLimitDouble; if ( ![cachedRange containsDouble:minLimit] ) { - NSUInteger numPoints = (NSUInteger)lrint( (ceil( (cachedRange.minLimitDouble - minLimit) / step ) ) ); + NSUInteger numPoints = (NSUInteger)lrint( ( ceil( (cachedRange.minLimitDouble - minLimit) / step) ) ); NSDecimal offset = CPTDecimalFromDouble(step * numPoints); cachedRange.locationDecimal = CPTDecimalSubtract(cachedRange.locationDecimal, offset); @@ -284,7 +284,7 @@ -(void)plotSpaceChanged double maxLimit = plotRange.maxLimitDouble; if ( ![cachedRange containsDouble:maxLimit] ) { - NSUInteger numPoints = (NSUInteger)lrint(ceil( (maxLimit - cachedRange.maxLimitDouble) / step ) ); + NSUInteger numPoints = (NSUInteger)lrint( ceil( (maxLimit - cachedRange.maxLimitDouble) / step) ); NSDecimal offset = CPTDecimalFromDouble(step * numPoints); cachedRange.lengthDecimal = CPTDecimalAdd(cachedRange.lengthDecimal, offset); @@ -297,7 +297,7 @@ -(void)plotSpaceChanged else { double maxLimit = plotRange.maxLimitDouble; if ( ![cachedRange containsDouble:maxLimit] ) { - NSUInteger numPoints = (NSUInteger)lrint(ceil( (cachedRange.maxLimitDouble - maxLimit) / step ) ); + NSUInteger numPoints = (NSUInteger)lrint( ceil( (cachedRange.maxLimitDouble - maxLimit) / step) ); NSDecimal offset = CPTDecimalFromDouble(step * numPoints); cachedRange.locationDecimal = CPTDecimalSubtract(cachedRange.locationDecimal, offset); @@ -310,7 +310,7 @@ -(void)plotSpaceChanged double minLimit = plotRange.minLimitDouble; if ( ![cachedRange containsDouble:minLimit] ) { - NSUInteger numPoints = (NSUInteger)lrint(ceil( (minLimit - cachedRange.minLimitDouble) / step ) ); + NSUInteger numPoints = (NSUInteger)lrint( ceil( (minLimit - cachedRange.minLimitDouble) / step) ); NSDecimal offset = CPTDecimalFromDouble(step * numPoints); cachedRange.lengthDecimal = CPTDecimalAdd(cachedRange.lengthDecimal, offset); @@ -392,11 +392,11 @@ -(nullable CPTNumericData *)dataForPlot:(nonnull CPTPlot *)plot recordIndexRange NSMutableData *data = [[NSMutableData alloc] initWithLength:indexRange.length * 2 * sizeof(double)]; double *xBytes = data.mutableBytes; - double *yBytes = data.mutableBytes + (indexRange.length * sizeof(double) ); + double *yBytes = data.mutableBytes + ( indexRange.length * sizeof(double) ); double location = xRange.locationDouble; double length = xRange.lengthDouble; - double denom = (double)(count - ( (count > 1) ? 1 : 0 ) ); + double denom = (double)( count - ( (count > 1) ? 1 : 0) ); NSUInteger lastIndex = NSMaxRange(indexRange); @@ -404,7 +404,7 @@ -(nullable CPTNumericData *)dataForPlot:(nonnull CPTPlot *)plot recordIndexRange if ( function ) { for ( NSUInteger i = indexRange.location; i < lastIndex; i++ ) { - double x = location + ( (double)i / denom ) * length; + double x = location + ( (double)i / denom) * length; *xBytes++ = x; *yBytes++ = function(x); @@ -415,7 +415,7 @@ -(nullable CPTNumericData *)dataForPlot:(nonnull CPTPlot *)plot recordIndexRange if ( functionBlock ) { for ( NSUInteger i = indexRange.location; i < lastIndex; i++ ) { - double x = location + ( (double)i / denom ) * length; + double x = location + ( (double)i / denom) * length; *xBytes++ = x; *yBytes++ = functionBlock(x); @@ -424,7 +424,7 @@ -(nullable CPTNumericData *)dataForPlot:(nonnull CPTPlot *)plot recordIndexRange } numericData = [CPTNumericData numericDataWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) shape:@[@(indexRange.length), @2] dataOrder:CPTDataOrderColumnsFirst]; } diff --git a/framework/Source/CPTGradient.m b/framework/Source/CPTGradient.m index 30cec7eeb..6ac0e0b5c 100644 --- a/framework/Source/CPTGradient.m +++ b/framework/Source/CPTGradient.m @@ -798,15 +798,15 @@ -(CGColorRef)newColorAtPosition:(CGFloat)position switch ( self.blendingMode ) { case CPTLinearBlendingMode: - CPTLinearEvaluation( (__bridge void *)(self), &position, components ); + CPTLinearEvaluation( (__bridge void *)(self), &position, components); break; case CPTChromaticBlendingMode: - CPTChromaticEvaluation( (__bridge void *)(self), &position, components ); + CPTChromaticEvaluation( (__bridge void *)(self), &position, components); break; case CPTInverseChromaticBlendingMode: - CPTInverseChromaticEvaluation( (__bridge void *)(self), &position, components ); + CPTInverseChromaticEvaluation( (__bridge void *)(self), &position, components); break; } @@ -902,7 +902,7 @@ -(BOOL)isOpaque CPTGradientElement *list = self.elementList; while ( opaqueGradient && (list != NULL) ) { - opaqueGradient = opaqueGradient && (list->color.alpha >= CPTFloat(1.0) ); + opaqueGradient = opaqueGradient && ( list->color.alpha >= CPTFloat(1.0) ); list = list->nextElement; } @@ -1034,12 +1034,12 @@ -(nonnull CGShadingRef)newAxialGradientInRect:(CGRect)rect CGPoint startPoint, endPoint; if ( self.angle == CPTFloat(0.0) ) { - startPoint = CPTPointMake(CGRectGetMinX(rect), CGRectGetMinY(rect) ); // right of rect - endPoint = CPTPointMake(CGRectGetMaxX(rect), CGRectGetMinY(rect) ); // left of rect + startPoint = CPTPointMake( CGRectGetMinX(rect), CGRectGetMinY(rect) ); // right of rect + endPoint = CPTPointMake( CGRectGetMaxX(rect), CGRectGetMinY(rect) ); // left of rect } else if ( self.angle == CPTFloat(90.0) ) { - startPoint = CPTPointMake(CGRectGetMinX(rect), CGRectGetMinY(rect) ); // bottom of rect - endPoint = CPTPointMake(CGRectGetMinX(rect), CGRectGetMaxY(rect) ); // top of rect + startPoint = CPTPointMake( CGRectGetMinX(rect), CGRectGetMinY(rect) ); // bottom of rect + endPoint = CPTPointMake( CGRectGetMinX(rect), CGRectGetMaxY(rect) ); // top of rect } else { // ok, we'll do the calculations now CGFloat x, y; @@ -1050,7 +1050,7 @@ -(nonnull CGShadingRef)newAxialGradientInRect:(CGRect)rect CGFloat rAngle = self.angle * CPTFloat(M_PI / 180.0); // convert the angle to radians - if ( fabs(tan(rAngle) ) <= CPTFloat(1.0) ) { // for range [-45,45], [135,225] + if ( fabs( tan(rAngle) ) <= CPTFloat(1.0) ) { // for range [-45,45], [135,225] x = CGRectGetWidth(rect); y = CGRectGetHeight(rect); @@ -1058,7 +1058,7 @@ -(nonnull CGShadingRef)newAxialGradientInRect:(CGRect)rect cosA = cos(rAngle); tanA = tan(rAngle); - length = x / fabs(cosA) + (y - x * fabs(tanA) ) * fabs(sinA); + length = x / fabs(cosA) + ( y - x * fabs(tanA) ) * fabs(sinA); deltaX = length * cosA / CPTFloat(2.0); deltaY = length * sinA / CPTFloat(2.0); @@ -1073,7 +1073,7 @@ -(nonnull CGShadingRef)newAxialGradientInRect:(CGRect)rect cosA = cos(rAngle); tanA = tan(rAngle); - length = x / fabs(cosA) + (y - x * fabs(tanA) ) * fabs(sinA); + length = x / fabs(cosA) + ( y - x * fabs(tanA) ) * fabs(sinA); deltaX = -length * sinA / CPTFloat(2.0); deltaY = length * cosA / CPTFloat(2.0); @@ -1096,12 +1096,12 @@ -(nonnull CGShadingRef)newRadialGradientInRect:(CGRect)rect context:(nonnull CGC CGPoint theStartAnchor = self.startAnchor; - startPoint = CPTPointMake(fma(CGRectGetWidth(rect), theStartAnchor.x, CGRectGetMinX(rect) ), - fma(CGRectGetHeight(rect), theStartAnchor.y, CGRectGetMinY(rect) ) ); + startPoint = CPTPointMake( fma( CGRectGetWidth(rect), theStartAnchor.x, CGRectGetMinX(rect) ), + fma( CGRectGetHeight(rect), theStartAnchor.y, CGRectGetMinY(rect) ) ); CGPoint theEndAnchor = self.endAnchor; - endPoint = CPTPointMake(fma(CGRectGetWidth(rect), theEndAnchor.x, CGRectGetMinX(rect) ), - fma(CGRectGetHeight(rect), theEndAnchor.y, CGRectGetMinY(rect) ) ); + endPoint = CPTPointMake( fma( CGRectGetWidth(rect), theEndAnchor.x, CGRectGetMinX(rect) ), + fma( CGRectGetHeight(rect), theEndAnchor.y, CGRectGetMinY(rect) ) ); startRadius = CPTFloat(-1.0); if ( CGRectGetHeight(rect) > CGRectGetWidth(rect) ) { @@ -1151,10 +1151,10 @@ -(void)setBlendingMode:(CPTGradientBlendingMode)mode static const CGFloat input_value_range[2] = { 0, 1 }; // range for the evaluator input static const CGFloat output_value_ranges[8] = { 0, 1, 0, 1, 0, 1, 0, 1 }; // ranges for the evaluator output (4 returned values) - CGFunctionRef cgFunction = CGFunctionCreate( (__bridge void *)(self), // the two transition colors - 1, input_value_range, // number of inputs (just fraction of progression) - 4, output_value_ranges, // number of outputs (4 - RGBa) - &evaluationCallbackInfo ); // info for using the evaluator function + CGFunctionRef cgFunction = CGFunctionCreate( (__bridge void *)(self), // the two transition colors + 1, input_value_range, // number of inputs (just fraction of progression) + 4, output_value_ranges, // number of outputs (4 - RGBa) + &evaluationCallbackInfo); // info for using the evaluator function if ( cgFunction ) { self.gradientFunction = cgFunction; @@ -1167,7 +1167,7 @@ -(void)addElement:(nonnull CPTGradientElement *)newElement if ( (curElement == NULL) || (newElement->position < curElement->position) ) { CPTGradientElement *tmpNext = curElement; - CPTGradientElement *newElementList = calloc(1, sizeof(CPTGradientElement) ); + CPTGradientElement *newElementList = calloc( 1, sizeof(CPTGradientElement) ); if ( newElementList ) { *newElementList = *newElement; newElementList->nextElement = tmpNext; @@ -1182,7 +1182,7 @@ -(void)addElement:(nonnull CPTGradientElement *)newElement } CPTGradientElement *tmpNext = curElement->nextElement; - curElement->nextElement = calloc(1, sizeof(CPTGradientElement) ); + curElement->nextElement = calloc( 1, sizeof(CPTGradientElement) ); *(curElement->nextElement) = *newElement; curElement->nextElement->nextElement = tmpNext; } @@ -1573,11 +1573,11 @@ void CPTTransformRGB_HSV(CGFloat *__nonnull components) // H,S,B -> R,G,B void CPTTransformHSV_RGB(CGFloat *__nonnull components) // H,S,B -> R,G,B { CGFloat R = CPTFloat(0.0), G = CPTFloat(0.0), B = CPTFloat(0.0); - CGFloat H = fmod(components[0], CPTFloat(360.0) ); // map to [0,360) + CGFloat H = fmod( components[0], CPTFloat(360.0) ); // map to [0,360) CGFloat S = components[1]; CGFloat V = components[2]; - int Hi = (int)lrint(floor(H / CPTFloat(60.0) ) ) % 6; + int Hi = (int)lrint( floor( H / CPTFloat(60.0) ) ) % 6; CGFloat f = H / CPTFloat(60.0) - Hi; CGFloat p = V * (CPTFloat(1.0) - S); CGFloat q = V * (CPTFloat(1.0) - f * S); diff --git a/framework/Source/CPTGraph.m b/framework/Source/CPTGraph.m index 425947632..5bdc68543 100644 --- a/framework/Source/CPTGraph.m +++ b/framework/Source/CPTGraph.m @@ -914,7 +914,7 @@ -(void)setTitle:(nullable NSString *)newTitle if ( title ) { if ( theTitleAnnotation ) { - ( (CPTTextLayer *)theTitleAnnotation.contentLayer ).text = title; + ( (CPTTextLayer *)theTitleAnnotation.contentLayer).text = title; } else { CPTPlotAreaFrame *frameLayer = self.plotAreaFrame; @@ -956,7 +956,7 @@ -(void)setAttributedTitle:(nullable NSAttributedString *)newTitle self.title = [attributedTitle.string copy]; if ( theTitleAnnotation ) { - ( (CPTTextLayer *)theTitleAnnotation.contentLayer ).attributedText = attributedTitle; + ( (CPTTextLayer *)theTitleAnnotation.contentLayer).attributedText = attributedTitle; } else { CPTPlotAreaFrame *frameLayer = self.plotAreaFrame; diff --git a/framework/Source/CPTImage.m b/framework/Source/CPTImage.m index 1ed0e56e9..b35e35d7b 100644 --- a/framework/Source/CPTImage.m +++ b/framework/Source/CPTImage.m @@ -134,7 +134,7 @@ -(nonnull instancetype)initWithContentsOfFile:(nonnull NSString *)path **/ -(nonnull instancetype)initWithCGImage:(nullable CGImageRef)anImage scale:(CGFloat)newScale { - NSParameterAssert(newScale > CPTFloat(0.0) ); + NSParameterAssert( newScale > CPTFloat(0.0) ); if ( (self = [super init]) ) { CGImageRetain(anImage); @@ -371,35 +371,35 @@ -(BOOL)isEqual:(nullable id)object CGColorSpaceRef otherColorSpace = CGImageGetColorSpace(otherCGImage); if ( equalImages ) { - equalImages = (CGImageGetWidth(selfCGImage) == CGImageGetWidth(otherCGImage) ); + equalImages = ( CGImageGetWidth(selfCGImage) == CGImageGetWidth(otherCGImage) ); } if ( equalImages ) { - equalImages = (CGImageGetHeight(selfCGImage) == CGImageGetHeight(otherCGImage) ); + equalImages = ( CGImageGetHeight(selfCGImage) == CGImageGetHeight(otherCGImage) ); } if ( equalImages ) { - equalImages = (CGImageGetBitsPerComponent(selfCGImage) == CGImageGetBitsPerComponent(otherCGImage) ); + equalImages = ( CGImageGetBitsPerComponent(selfCGImage) == CGImageGetBitsPerComponent(otherCGImage) ); } if ( equalImages ) { - equalImages = (CGImageGetBitsPerPixel(selfCGImage) == CGImageGetBitsPerPixel(otherCGImage) ); + equalImages = ( CGImageGetBitsPerPixel(selfCGImage) == CGImageGetBitsPerPixel(otherCGImage) ); } if ( equalImages ) { - equalImages = (CGImageGetBytesPerRow(selfCGImage) == CGImageGetBytesPerRow(otherCGImage) ); + equalImages = ( CGImageGetBytesPerRow(selfCGImage) == CGImageGetBytesPerRow(otherCGImage) ); } if ( equalImages ) { - equalImages = (CGImageGetBitmapInfo(selfCGImage) == CGImageGetBitmapInfo(otherCGImage) ); + equalImages = ( CGImageGetBitmapInfo(selfCGImage) == CGImageGetBitmapInfo(otherCGImage) ); } if ( equalImages ) { - equalImages = (CGImageGetShouldInterpolate(selfCGImage) == CGImageGetShouldInterpolate(otherCGImage) ); + equalImages = ( CGImageGetShouldInterpolate(selfCGImage) == CGImageGetShouldInterpolate(otherCGImage) ); } if ( equalImages ) { - equalImages = (CGImageGetRenderingIntent(selfCGImage) == CGImageGetRenderingIntent(otherCGImage) ); + equalImages = ( CGImageGetRenderingIntent(selfCGImage) == CGImageGetRenderingIntent(otherCGImage) ); } // decode array @@ -430,8 +430,8 @@ -(BOOL)isEqual:(nullable id)object // color space if ( equalImages ) { - equalImages = (CGColorSpaceGetModel(selfColorSpace) == CGColorSpaceGetModel(otherColorSpace) ) && - (CGColorSpaceGetNumberOfComponents(selfColorSpace) == CGColorSpaceGetNumberOfComponents(otherColorSpace) ); + equalImages = ( CGColorSpaceGetModel(selfColorSpace) == CGColorSpaceGetModel(otherColorSpace) ) && + ( CGColorSpaceGetNumberOfComponents(selfColorSpace) == CGColorSpaceGetNumberOfComponents(otherColorSpace) ); } // data provider @@ -472,7 +472,7 @@ -(NSUInteger)hash // Equal objects must hash the same. CGImageRef selfCGImage = self.image; - return (CGImageGetWidth(selfCGImage) * CGImageGetHeight(selfCGImage) ) + + return ( CGImageGetWidth(selfCGImage) * CGImageGetHeight(selfCGImage) ) + CGImageGetBitsPerComponent(selfCGImage) + CGImageGetBitsPerPixel(selfCGImage) + CGImageGetBytesPerRow(selfCGImage) + @@ -526,7 +526,7 @@ -(nullable CPTNativeImage *)nativeImage #if TARGET_OS_SIMULATOR || TARGET_OS_IPHONE CGFloat theScale = self.scale; - if ( imageRef && (theScale > CPTFloat(0.0) ) ) { + if ( imageRef && ( theScale > CPTFloat(0.0) ) ) { nativeImage = [UIImage imageWithCGImage:imageRef scale:theScale orientation:UIImageOrientationUp]; @@ -536,7 +536,7 @@ -(nullable CPTNativeImage *)nativeImage nativeImage = [[NSImage alloc] initWithCGImage:imageRef size:NSZeroSize]; } else { - CGSize imageSize = CGSizeMake(CGImageGetWidth(imageRef), CGImageGetHeight(imageRef) ); + CGSize imageSize = CGSizeMake( CGImageGetWidth(imageRef), CGImageGetHeight(imageRef) ); NSBitmapImageRep *imageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:(NSInteger)imageSize.width @@ -565,7 +565,7 @@ -(nullable CPTNativeImage *)nativeImage -(void)setScale:(CGFloat)newScale { - NSParameterAssert(newScale > CPTFloat(0.0) ); + NSParameterAssert( newScale > CPTFloat(0.0) ); if ( newScale != scale ) { scale = newScale; @@ -633,17 +633,17 @@ -(void)makeImageSlices // top row if ( capTop > CPTFloat(0.0) ) { if ( capLeft > CPTFloat(0.0) ) { - CGImageRef sliceImage = CGImageCreateWithImageInRect(theImage, CPTRectMake(0.0, 0.0, capLeft, capTop) ); + CGImageRef sliceImage = CGImageCreateWithImageInRect( theImage, CPTRectMake(0.0, 0.0, capLeft, capTop) ); imageSlices.slice[CPTSliceTopLeft] = sliceImage; } if ( centerSize.width > CPTFloat(0.0) ) { - CGImageRef sliceImage = CGImageCreateWithImageInRect(theImage, CPTRectMake(capLeft, 0.0, centerSize.width, capTop) ); + CGImageRef sliceImage = CGImageCreateWithImageInRect( theImage, CPTRectMake(capLeft, 0.0, centerSize.width, capTop) ); imageSlices.slice[CPTSliceTop] = sliceImage; } if ( capRight > CPTFloat(0.0) ) { - CGImageRef sliceImage = CGImageCreateWithImageInRect(theImage, CPTRectMake(width - capRight, 0.0, capRight, capTop) ); + CGImageRef sliceImage = CGImageCreateWithImageInRect( theImage, CPTRectMake(width - capRight, 0.0, capRight, capTop) ); imageSlices.slice[CPTSliceTopRight] = sliceImage; } } @@ -651,17 +651,17 @@ -(void)makeImageSlices // middle row if ( centerSize.height > CPTFloat(0.0) ) { if ( capLeft > CPTFloat(0.0) ) { - CGImageRef sliceImage = CGImageCreateWithImageInRect(theImage, CPTRectMake(0.0, capTop, capLeft, centerSize.height) ); + CGImageRef sliceImage = CGImageCreateWithImageInRect( theImage, CPTRectMake(0.0, capTop, capLeft, centerSize.height) ); imageSlices.slice[CPTSliceLeft] = sliceImage; } if ( centerSize.width > CPTFloat(0.0) ) { - CGImageRef sliceImage = CGImageCreateWithImageInRect(theImage, CPTRectMake(capLeft, capTop, centerSize.width, centerSize.height) ); + CGImageRef sliceImage = CGImageCreateWithImageInRect( theImage, CPTRectMake(capLeft, capTop, centerSize.width, centerSize.height) ); imageSlices.slice[CPTSliceMiddle] = sliceImage; } if ( capRight > CPTFloat(0.0) ) { - CGImageRef sliceImage = CGImageCreateWithImageInRect(theImage, CPTRectMake(width - capRight, capTop, capRight, centerSize.height) ); + CGImageRef sliceImage = CGImageCreateWithImageInRect( theImage, CPTRectMake(width - capRight, capTop, capRight, centerSize.height) ); imageSlices.slice[CPTSliceRight] = sliceImage; } } @@ -669,17 +669,17 @@ -(void)makeImageSlices // bottom row if ( capBottom > CPTFloat(0.0) ) { if ( capLeft > CPTFloat(0.0) ) { - CGImageRef sliceImage = CGImageCreateWithImageInRect(theImage, CPTRectMake(0.0, height - capBottom, capLeft, capBottom) ); + CGImageRef sliceImage = CGImageCreateWithImageInRect( theImage, CPTRectMake(0.0, height - capBottom, capLeft, capBottom) ); imageSlices.slice[CPTSliceBottomLeft] = sliceImage; } if ( centerSize.width > CPTFloat(0.0) ) { - CGImageRef sliceImage = CGImageCreateWithImageInRect(theImage, CPTRectMake(capLeft, height - capBottom, centerSize.width, capBottom) ); + CGImageRef sliceImage = CGImageCreateWithImageInRect( theImage, CPTRectMake(capLeft, height - capBottom, centerSize.width, capBottom) ); imageSlices.slice[CPTSliceBottom] = sliceImage; } if ( capRight > CPTFloat(0.0) ) { - CGImageRef sliceImage = CGImageCreateWithImageInRect(theImage, CPTRectMake(width - capRight, height - capBottom, capRight, capBottom) ); + CGImageRef sliceImage = CGImageCreateWithImageInRect( theImage, CPTRectMake(width - capRight, height - capBottom, capRight, capBottom) ); imageSlices.slice[CPTSliceBottomRight] = sliceImage; } } @@ -692,7 +692,7 @@ -(void)makeImageSlices -(void)drawImage:(nonnull CGImageRef)theImage inContext:(nonnull CGContextRef)context rect:(CGRect)rect scaleRatio:(CGFloat)scaleRatio { - if ( theImage && (rect.size.width > CPTFloat(0.0) ) && (rect.size.height > CPTFloat(0.0) ) ) { + if ( theImage && ( rect.size.width > CPTFloat(0.0) ) && ( rect.size.height > CPTFloat(0.0) ) ) { CGFloat imageScale = self.scale; CGContextSaveGState(context); diff --git a/framework/Source/CPTLayer.h b/framework/Source/CPTLayer.h index e3ccd5ff5..92fc3391e 100644 --- a/framework/Source/CPTLayer.h +++ b/framework/Source/CPTLayer.h @@ -68,8 +68,8 @@ typedef NSMutableSet CPTMutableSublayerSet; /** * @brief Layer delegate. **/ -#if ( ( TARGET_OS_SIMULATOR || TARGET_OS_IPHONE || TARGET_OS_TV) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= 100000) ) \ - || (TARGET_OS_MAC && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101200) ) +#if ( (TARGET_OS_SIMULATOR || TARGET_OS_IPHONE || TARGET_OS_TV ) && ( __IPHONE_OS_VERSION_MAX_ALLOWED >= 100000) ) \ + || (TARGET_OS_MAC && ( MAC_OS_X_VERSION_MAX_ALLOWED >= 101200) ) // CALayerDelegate is defined by Core Animation in iOS 10.0+, macOS 10.12+, and tvOS 10.0+ @protocol CPTLayerDelegate #else diff --git a/framework/Source/CPTLayer.m b/framework/Source/CPTLayer.m index ad78b0582..3e93c7964 100644 --- a/framework/Source/CPTLayer.m +++ b/framework/Source/CPTLayer.m @@ -330,7 +330,7 @@ -(void)display if ( [NSView instancesRespondToSelector:@selector(effectiveAppearance)] ) { NSAppearance *oldAppearance = NSAppearance.currentAppearance; - NSAppearance.currentAppearance = ( (NSView *)self.graph.hostingView ).effectiveAppearance; + NSAppearance.currentAppearance = ( (NSView *)self.graph.hostingView).effectiveAppearance; [super display]; NSAppearance.currentAppearance = oldAppearance; } @@ -437,7 +437,7 @@ -(void)applyTransform:(CATransform3D)transform3D toContext:(nonnull CGContextRef anchorOffset.y = selfBounds.origin.y + anchorPoint.y * selfBounds.size.height); CGAffineTransform affineTransform = CGAffineTransformMakeTranslation(-anchorOffset.x, -anchorOffset.y); - affineTransform = CGAffineTransformConcat(affineTransform, CATransform3DGetAffineTransform(transform3D) ); + affineTransform = CGAffineTransformConcat( affineTransform, CATransform3DGetAffineTransform(transform3D) ); affineTransform = CGAffineTransformTranslate(affineTransform, anchorOffset.x, anchorOffset.y); CGRect transformedBounds = CGRectApplyAffineTransform(selfBounds, affineTransform); @@ -465,7 +465,7 @@ -(void)layoutAndRenderInContext:(nonnull CGContextRef)context -(nonnull NSData *)dataForPDFRepresentationOfLayer { NSMutableData *pdfData = [[NSMutableData alloc] init]; - CGDataConsumerRef dataConsumer = CGDataConsumerCreateWithCFData( (__bridge CFMutableDataRef)pdfData ); + CGDataConsumerRef dataConsumer = CGDataConsumerCreateWithCFData( (__bridge CFMutableDataRef)pdfData); const CGRect mediaBox = CPTRectMake(0.0, 0.0, self.bounds.size.width, self.bounds.size.height); CGContextRef pdfContext = CGPDFContextCreate(dataConsumer, &mediaBox, NULL); @@ -545,8 +545,8 @@ -(void)pixelAlign boundsSize.height * anchor.y); if ( scale == CPTFloat(1.0) ) { - newPosition.x = ceil(currentPosition.x - newAnchor.x - CPTFloat(0.5) ) + newAnchor.x; - newPosition.y = ceil(currentPosition.y - newAnchor.y - CPTFloat(0.5) ) + newAnchor.y; + newPosition.x = ceil( currentPosition.x - newAnchor.x - CPTFloat(0.5) ) + newAnchor.x; + newPosition.y = ceil( currentPosition.y - newAnchor.y - CPTFloat(0.5) ) + newAnchor.y; } else { newPosition.x = ceil( (currentPosition.x - newAnchor.x) * scale - CPTFloat(0.5) ) / scale + newAnchor.x; @@ -560,8 +560,8 @@ -(void)pixelAlign boundsSize.width * anchor.x); if ( scale == CPTFloat(1.0) ) { - newPosition.x = ceil(currentPosition.x - newAnchor.x - CPTFloat(0.5) ) + newAnchor.x; - newPosition.y = ceil(currentPosition.y - newAnchor.y - CPTFloat(0.5) ) + newAnchor.y; + newPosition.x = ceil( currentPosition.x - newAnchor.x - CPTFloat(0.5) ) + newAnchor.x; + newPosition.y = ceil( currentPosition.y - newAnchor.y - CPTFloat(0.5) ) + newAnchor.y; } else { newPosition.x = ceil( (currentPosition.x - newAnchor.x) * scale - CPTFloat(0.5) ) / scale + newAnchor.x; @@ -626,7 +626,7 @@ -(CGSize)shadowMargin CGSize shadowOffset = myShadow.shadowOffset; CGFloat shadowRadius = myShadow.shadowBlurRadius; - margin = CGSizeMake(ceil(ABS(shadowOffset.width) + ABS(shadowRadius) ), ceil(ABS(shadowOffset.height) + ABS(shadowRadius) ) ); + margin = CGSizeMake( ceil( ABS(shadowOffset.width) + ABS(shadowRadius) ), ceil( ABS(shadowOffset.height) + ABS(shadowRadius) ) ); } return margin; @@ -656,14 +656,14 @@ -(void)layoutSublayers CGSize subLayerSize = selfBounds.size; subLayerSize.width -= leftPadding + rightPadding; - subLayerSize.width = MAX(subLayerSize.width, CPTFloat(0.0) ); + subLayerSize.width = MAX( subLayerSize.width, CPTFloat(0.0) ); subLayerSize.width = round(subLayerSize.width); subLayerSize.height -= topPadding + bottomPadding; - subLayerSize.height = MAX(subLayerSize.height, CPTFloat(0.0) ); + subLayerSize.height = MAX( subLayerSize.height, CPTFloat(0.0) ); subLayerSize.height = round(subLayerSize.height); CGRect subLayerFrame; - subLayerFrame.origin = CGPointMake(round(leftPadding), round(bottomPadding) ); + subLayerFrame.origin = CGPointMake( round(leftPadding), round(bottomPadding) ); subLayerFrame.size = subLayerSize; CPTSublayerSet *excludedSublayers = self.sublayersExcludedFromAutomaticLayout; @@ -714,7 +714,7 @@ -(void)setSublayers:(nullable CPTSublayerArray *)sublayers CGFloat scale = self.contentsScale; for ( CALayer *layer in sublayers ) { if ( [layer isKindOfClass:layerClass] ) { - ( (CPTLayer *)layer ).contentsScale = scale; + ( (CPTLayer *)layer).contentsScale = scale; } } } @@ -724,7 +724,7 @@ -(void)addSublayer:(nonnull CALayer *)layer [super addSublayer:layer]; if ( [layer isKindOfClass:[CPTLayer class]] ) { - ( (CPTLayer *)layer ).contentsScale = self.contentsScale; + ( (CPTLayer *)layer).contentsScale = self.contentsScale; } } @@ -733,7 +733,7 @@ -(void)insertSublayer:(nonnull CALayer *)layer atIndex:(unsigned)idx [super insertSublayer:layer atIndex:idx]; if ( [layer isKindOfClass:[CPTLayer class]] ) { - ( (CPTLayer *)layer ).contentsScale = self.contentsScale; + ( (CPTLayer *)layer).contentsScale = self.contentsScale; } } @@ -742,7 +742,7 @@ -(void)insertSublayer:(nonnull CALayer *)layer below:(nullable CALayer *)sibling [super insertSublayer:layer below:sibling]; if ( [layer isKindOfClass:[CPTLayer class]] ) { - ( (CPTLayer *)layer ).contentsScale = self.contentsScale; + ( (CPTLayer *)layer).contentsScale = self.contentsScale; } } @@ -751,7 +751,7 @@ -(void)insertSublayer:(nonnull CALayer *)layer above:(nullable CALayer *)sibling [super insertSublayer:layer above:sibling]; if ( [layer isKindOfClass:[CPTLayer class]] ) { - ( (CPTLayer *)layer ).contentsScale = self.contentsScale; + ( (CPTLayer *)layer).contentsScale = self.contentsScale; } } @@ -760,7 +760,7 @@ -(void)replaceSublayer:(nonnull CALayer *)layer with:(nonnull CALayer *)layer2 [super replaceSublayer:layer with:layer2]; if ( [layer2 isKindOfClass:[CPTLayer class]] ) { - ( (CPTLayer *)layer2 ).contentsScale = self.contentsScale; + ( (CPTLayer *)layer2).contentsScale = self.contentsScale; } } @@ -819,7 +819,7 @@ -(void)applySublayerMaskToContext:(nonnull CGContextRef)context forSublayer:(non } CGAffineTransform sublayerTransform = CATransform3DGetAffineTransform(sublayer.transform); - CGContextConcatCTM(context, CGAffineTransformInvert(sublayerTransform) ); + CGContextConcatCTM( context, CGAffineTransformInvert(sublayerTransform) ); CALayer *superlayer = self.superlayer; if ( [superlayer isKindOfClass:[CPTLayer class]] ) { @@ -907,7 +907,7 @@ -(void)setHidden:(BOOL)newHidden -(void)setContentsScale:(CGFloat)newContentsScale { - NSParameterAssert(newContentsScale > CPTFloat(0.0) ); + NSParameterAssert( newContentsScale > CPTFloat(0.0) ); if ( self.contentsScale != newContentsScale ) { if ( [CALayer instancesRespondToSelector:@selector(setContentsScale:)] ) { @@ -1006,14 +1006,14 @@ -(CGPoint)anchorPoint if ( self.shadow ) { CGSize sizeOffset = self.shadowMargin; CGRect selfBounds = self.bounds; - CGSize adjustedSize = CGSizeMake(selfBounds.size.width + sizeOffset.width * CPTFloat(2.0), - selfBounds.size.height + sizeOffset.height * CPTFloat(2.0) ); + CGSize adjustedSize = CGSizeMake( selfBounds.size.width + sizeOffset.width * CPTFloat(2.0), + selfBounds.size.height + sizeOffset.height * CPTFloat(2.0) ); if ( selfBounds.size.width > CPTFloat(0.0) ) { - adjustedAnchor.x = (adjustedAnchor.x - CPTFloat(0.5) ) * (adjustedSize.width / selfBounds.size.width) + CPTFloat(0.5); + adjustedAnchor.x = ( adjustedAnchor.x - CPTFloat(0.5) ) * (adjustedSize.width / selfBounds.size.width) + CPTFloat(0.5); } if ( selfBounds.size.height > CPTFloat(0.0) ) { - adjustedAnchor.y = (adjustedAnchor.y - CPTFloat(0.5) ) * (adjustedSize.height / selfBounds.size.height) + CPTFloat(0.5); + adjustedAnchor.y = ( adjustedAnchor.y - CPTFloat(0.5) ) * (adjustedSize.height / selfBounds.size.height) + CPTFloat(0.5); } } @@ -1025,14 +1025,14 @@ -(void)setAnchorPoint:(CGPoint)newAnchorPoint if ( self.shadow ) { CGSize sizeOffset = self.shadowMargin; CGRect selfBounds = self.bounds; - CGSize adjustedSize = CGSizeMake(selfBounds.size.width + sizeOffset.width * CPTFloat(2.0), - selfBounds.size.height + sizeOffset.height * CPTFloat(2.0) ); + CGSize adjustedSize = CGSizeMake( selfBounds.size.width + sizeOffset.width * CPTFloat(2.0), + selfBounds.size.height + sizeOffset.height * CPTFloat(2.0) ); if ( adjustedSize.width > CPTFloat(0.0) ) { - newAnchorPoint.x = (newAnchorPoint.x - CPTFloat(0.5) ) * (selfBounds.size.width / adjustedSize.width) + CPTFloat(0.5); + newAnchorPoint.x = ( newAnchorPoint.x - CPTFloat(0.5) ) * (selfBounds.size.width / adjustedSize.width) + CPTFloat(0.5); } if ( adjustedSize.height > CPTFloat(0.0) ) { - newAnchorPoint.y = (newAnchorPoint.y - CPTFloat(0.5) ) * (selfBounds.size.height / adjustedSize.height) + CPTFloat(0.5); + newAnchorPoint.y = ( newAnchorPoint.y - CPTFloat(0.5) ) * (selfBounds.size.height / adjustedSize.height) + CPTFloat(0.5); } } diff --git a/framework/Source/CPTLayerAnnotation.m b/framework/Source/CPTLayerAnnotation.m index d24f6dd64..2def0a17a 100644 --- a/framework/Source/CPTLayerAnnotation.m +++ b/framework/Source/CPTLayerAnnotation.m @@ -168,7 +168,7 @@ -(void)positionContentLayer content.anchorPoint = self.contentAnchorPoint; content.position = newPosition; - content.transform = CATransform3DMakeRotation(self.rotation, CPTFloat(0.0), CPTFloat(0.0), CPTFloat(1.0) ); + content.transform = CATransform3DMakeRotation( self.rotation, CPTFloat(0.0), CPTFloat(0.0), CPTFloat(1.0) ); [content pixelAlign]; } } diff --git a/framework/Source/CPTLayerTests.m b/framework/Source/CPTLayerTests.m index 879fb87d6..20276d78e 100644 --- a/framework/Source/CPTLayerTests.m +++ b/framework/Source/CPTLayerTests.m @@ -142,7 +142,7 @@ -(void)testPositionsWithScale:(CGFloat)scale anchorPoint:(CGPoint)anchor expecte self.layer.anchorPoint = anchor; for ( NSUInteger i = 0; i < positionCount; i++ ) { - CGFloat position = ( (NSNumber *)( (self.positions)[i] ) ).cgFloatValue; + CGFloat position = ( (NSNumber *)( (self.positions)[i]) ).cgFloatValue; CGPoint layerPosition = CGPointMake(position, position); self.layer.position = layerPosition; diff --git a/framework/Source/CPTLegend.m b/framework/Source/CPTLegend.m index 47567c861..60df99453 100644 --- a/framework/Source/CPTLegend.m +++ b/framework/Source/CPTLegend.m @@ -555,8 +555,8 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context // calculate column positions CPTNumberArray *computedColumnWidths = self.columnWidthsThatFit; NSUInteger columnCount = computedColumnWidths.count; - CGFloat *actualColumnWidths = calloc(columnCount, sizeof(CGFloat) ); - CGFloat *columnPositions = calloc(columnCount, sizeof(CGFloat) ); + CGFloat *actualColumnWidths = calloc( columnCount, sizeof(CGFloat) ); + CGFloat *columnPositions = calloc( columnCount, sizeof(CGFloat) ); columnPositions[0] = self.paddingLeft; CGFloat theOffset = self.titleOffset; CGSize theSwatchSize = self.swatchSize; @@ -579,8 +579,8 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context // calculate row positions CPTNumberArray *computedRowHeights = self.rowHeightsThatFit; NSUInteger rowCount = computedRowHeights.count; - CGFloat *actualRowHeights = calloc(rowCount, sizeof(CGFloat) ); - CGFloat *rowPositions = calloc(rowCount, sizeof(CGFloat) ); + CGFloat *actualRowHeights = calloc( rowCount, sizeof(CGFloat) ); + CGFloat *rowPositions = calloc( rowCount, sizeof(CGFloat) ); rowPositions[rowCount - 1] = self.paddingBottom; CGFloat theRowMargin = self.rowMargin; CGFloat lastRowHeight = 0.0; @@ -691,7 +691,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context } // draw title - [legendEntry drawTitleInRect:CPTAlignRectToUserSpace(context, CPTRectMake(titleLeft, rowPosition + padBottom, actualColumnWidths[col] + CPTFloat(1.0), actualRowHeights[row]) ) + [legendEntry drawTitleInRect:CPTAlignRectToUserSpace( context, CPTRectMake(titleLeft, rowPosition + padBottom, actualColumnWidths[col] + CPTFloat(1.0), actualRowHeights[row]) ) inContext:context scale:self.contentsScale]; } @@ -763,7 +763,7 @@ -(void)recalculateLayout NSUInteger legendEntryCount = self.legendEntries.count; if ( (rowCount == 0) && (columnCount == 0) ) { - rowCount = (NSUInteger)lrint(sqrt( (double)legendEntryCount ) ); + rowCount = (NSUInteger)lrint( sqrt( (double)legendEntryCount) ); columnCount = rowCount; if ( rowCount * columnCount < legendEntryCount ) { columnCount++; @@ -788,8 +788,8 @@ -(void)recalculateLayout // compute row heights and column widths NSUInteger row = 0; NSUInteger col = 0; - CGFloat *maxTitleHeight = calloc(rowCount, sizeof(CGFloat) ); - CGFloat *maxTitleWidth = calloc(columnCount, sizeof(CGFloat) ); + CGFloat *maxTitleHeight = calloc( rowCount, sizeof(CGFloat) ); + CGFloat *maxTitleWidth = calloc( columnCount, sizeof(CGFloat) ); CGSize theSwatchSize = self.swatchSize; CPTNumberArray *desiredRowHeights = self.rowHeights; CPTNumberArray *desiredColumnWidths = self.columnWidths; @@ -865,7 +865,7 @@ -(void)recalculateLayout } } if ( columnCount > 0 ) { - legendSize.width += ( (theSwatchSize.width + self.titleOffset + self.entryPaddingLeft + self.entryPaddingRight) * columnCount ) + (self.columnMargin * (columnCount - 1) ); + legendSize.width += ( (theSwatchSize.width + self.titleOffset + self.entryPaddingLeft + self.entryPaddingRight) * columnCount) + ( self.columnMargin * (columnCount - 1) ); } NSUInteger rows = row; @@ -876,10 +876,10 @@ -(void)recalculateLayout legendSize.height += [height cgFloatValue]; } if ( rows > 0 ) { - legendSize.height += ( (self.entryPaddingBottom + self.entryPaddingTop) * rowCount ) + (self.rowMargin * (rows - 1) ); + legendSize.height += ( (self.entryPaddingBottom + self.entryPaddingTop) * rowCount) + ( self.rowMargin * (rows - 1) ); } - self.bounds = CPTRectMake(0.0, 0.0, ceil(legendSize.width), ceil(legendSize.height) ); + self.bounds = CPTRectMake( 0.0, 0.0, ceil(legendSize.width), ceil(legendSize.height) ); [self pixelAlign]; self.layoutChanged = NO; diff --git a/framework/Source/CPTLegendEntry.m b/framework/Source/CPTLegendEntry.m index e50c088e3..475f7f9fb 100644 --- a/framework/Source/CPTLegendEntry.m +++ b/framework/Source/CPTLegendEntry.m @@ -153,8 +153,8 @@ -(void)drawTitleInRect:(CGRect)rect inContext:(nonnull CGContextRef)context scal #if TARGET_OS_SIMULATOR || TARGET_OS_IPHONE CGContextSaveGState(context); CGContextTranslateCTM(context, CPTFloat(0.0), rect.origin.y); - CGContextScaleCTM(context, CPTFloat(1.0), CPTFloat(-1.0) ); - CGContextTranslateCTM(context, CPTFloat(0.0), -CGRectGetMaxY(rect) ); + CGContextScaleCTM( context, CPTFloat(1.0), CPTFloat(-1.0) ); + CGContextTranslateCTM( context, CPTFloat(0.0), -CGRectGetMaxY(rect) ); #endif // center the title vertically CGRect textRect = rect; diff --git a/framework/Source/CPTLineCap.m b/framework/Source/CPTLineCap.m index ac606d7ec..1e8130b1b 100644 --- a/framework/Source/CPTLineCap.m +++ b/framework/Source/CPTLineCap.m @@ -431,12 +431,12 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context atPoint:(CGPoint)ce if ( theLineStyle || theFill ) { CGContextSaveGState(context); CGContextTranslateCTM(context, center.x, center.y); - CGContextRotateCTM(context, atan2(direction.y, direction.x) - CPTFloat(M_PI_2) ); // standard symbol points up + CGContextRotateCTM( context, atan2(direction.y, direction.x) - CPTFloat(M_PI_2) ); // standard symbol points up if ( theFill ) { // use fillRect instead of fillPath so that images and gradients are properly centered in the symbol CGSize symbolSize = self.size; - CGSize halfSize = CPTSizeMake(symbolSize.width / CPTFloat(2.0), symbolSize.height / CPTFloat(2.0) ); + CGSize halfSize = CPTSizeMake( symbolSize.width / CPTFloat(2.0), symbolSize.height / CPTFloat(2.0) ); CGRect bounds = CPTRectMake(-halfSize.width, -halfSize.height, symbolSize.width, symbolSize.height); CGContextSaveGState(context); @@ -480,7 +480,7 @@ -(nonnull CGPathRef)newLineCapPath { CGFloat dx, dy; CGSize lineCapSize = self.size; - CGSize halfSize = CPTSizeMake(lineCapSize.width / CPTFloat(2.0), lineCapSize.height / CPTFloat(2.0) ); + CGSize halfSize = CPTSizeMake( lineCapSize.width / CPTFloat(2.0), lineCapSize.height / CPTFloat(2.0) ); CGMutablePathRef lineCapPath = CGPathCreateMutable(); @@ -491,47 +491,47 @@ -(nonnull CGPathRef)newLineCapPath case CPTLineCapTypeOpenArrow: CGPathMoveToPoint(lineCapPath, NULL, -halfSize.width, -halfSize.height); - CGPathAddLineToPoint(lineCapPath, NULL, CPTFloat(0.0), CPTFloat(0.0) ); + CGPathAddLineToPoint( lineCapPath, NULL, CPTFloat(0.0), CPTFloat(0.0) ); CGPathAddLineToPoint(lineCapPath, NULL, halfSize.width, -halfSize.height); break; case CPTLineCapTypeSolidArrow: CGPathMoveToPoint(lineCapPath, NULL, -halfSize.width, -halfSize.height); - CGPathAddLineToPoint(lineCapPath, NULL, CPTFloat(0.0), CPTFloat(0.0) ); + CGPathAddLineToPoint( lineCapPath, NULL, CPTFloat(0.0), CPTFloat(0.0) ); CGPathAddLineToPoint(lineCapPath, NULL, halfSize.width, -halfSize.height); CGPathCloseSubpath(lineCapPath); break; case CPTLineCapTypeSweptArrow: CGPathMoveToPoint(lineCapPath, NULL, -halfSize.width, -halfSize.height); - CGPathAddLineToPoint(lineCapPath, NULL, CPTFloat(0.0), CPTFloat(0.0) ); + CGPathAddLineToPoint( lineCapPath, NULL, CPTFloat(0.0), CPTFloat(0.0) ); CGPathAddLineToPoint(lineCapPath, NULL, halfSize.width, -halfSize.height); - CGPathAddLineToPoint(lineCapPath, NULL, CPTFloat(0.0), -lineCapSize.height * CPTFloat(0.375) ); + CGPathAddLineToPoint( lineCapPath, NULL, CPTFloat(0.0), -lineCapSize.height * CPTFloat(0.375) ); CGPathCloseSubpath(lineCapPath); break; case CPTLineCapTypeRectangle: - CGPathAddRect(lineCapPath, NULL, CPTRectMake(-halfSize.width, -halfSize.height, halfSize.width * CPTFloat(2.0), halfSize.height * CPTFloat(2.0) ) ); + CGPathAddRect( lineCapPath, NULL, CPTRectMake( -halfSize.width, -halfSize.height, halfSize.width * CPTFloat(2.0), halfSize.height * CPTFloat(2.0) ) ); break; case CPTLineCapTypeEllipse: - CGPathAddEllipseInRect(lineCapPath, NULL, CPTRectMake(-halfSize.width, -halfSize.height, halfSize.width * CPTFloat(2.0), halfSize.height * CPTFloat(2.0) ) ); + CGPathAddEllipseInRect( lineCapPath, NULL, CPTRectMake( -halfSize.width, -halfSize.height, halfSize.width * CPTFloat(2.0), halfSize.height * CPTFloat(2.0) ) ); break; case CPTLineCapTypeDiamond: CGPathMoveToPoint(lineCapPath, NULL, CPTFloat(0.0), halfSize.height); - CGPathAddLineToPoint(lineCapPath, NULL, halfSize.width, CPTFloat(0.0) ); + CGPathAddLineToPoint( lineCapPath, NULL, halfSize.width, CPTFloat(0.0) ); CGPathAddLineToPoint(lineCapPath, NULL, CPTFloat(0.0), -halfSize.height); - CGPathAddLineToPoint(lineCapPath, NULL, -halfSize.width, CPTFloat(0.0) ); + CGPathAddLineToPoint( lineCapPath, NULL, -halfSize.width, CPTFloat(0.0) ); CGPathCloseSubpath(lineCapPath); break; case CPTLineCapTypePentagon: CGPathMoveToPoint(lineCapPath, NULL, CPTFloat(0.0), halfSize.height); - CGPathAddLineToPoint(lineCapPath, NULL, halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); - CGPathAddLineToPoint(lineCapPath, NULL, halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); - CGPathAddLineToPoint(lineCapPath, NULL, -halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); - CGPathAddLineToPoint(lineCapPath, NULL, -halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); + CGPathAddLineToPoint( lineCapPath, NULL, halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); + CGPathAddLineToPoint( lineCapPath, NULL, halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); + CGPathAddLineToPoint( lineCapPath, NULL, -halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); + CGPathAddLineToPoint( lineCapPath, NULL, -halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); CGPathCloseSubpath(lineCapPath); break; @@ -549,8 +549,8 @@ -(nonnull CGPathRef)newLineCapPath break; case CPTLineCapTypeBar: - CGPathMoveToPoint(lineCapPath, NULL, halfSize.width, CPTFloat(0.0) ); - CGPathAddLineToPoint(lineCapPath, NULL, -halfSize.width, CPTFloat(0.0) ); + CGPathMoveToPoint( lineCapPath, NULL, halfSize.width, CPTFloat(0.0) ); + CGPathAddLineToPoint( lineCapPath, NULL, -halfSize.width, CPTFloat(0.0) ); break; case CPTLineCapTypeCross: @@ -581,8 +581,8 @@ -(nonnull CGPathRef)newLineCapPath CGFloat dy1 = lineCapSize.height / oldBounds.size.height; CGAffineTransform scaleTransform = CGAffineTransformScale(CGAffineTransformIdentity, dx1, dy1); - scaleTransform = CGAffineTransformConcat(scaleTransform, - CGAffineTransformMakeTranslation(-halfSize.width, -halfSize.height) ); + scaleTransform = CGAffineTransformConcat( scaleTransform, + CGAffineTransformMakeTranslation(-halfSize.width, -halfSize.height) ); CGPathAddPath(lineCapPath, &scaleTransform, customPath); } } @@ -601,7 +601,7 @@ -(nonnull CGPathRef)newLineCapPath -(nullable id)debugQuickLookObject { const CGSize symbolSize = self.size; - const CGSize halfSize = CPTSizeMake(symbolSize.width * CPTFloat(0.5), symbolSize.height * CPTFloat(0.5) ); + const CGSize halfSize = CPTSizeMake( symbolSize.width * CPTFloat(0.5), symbolSize.height * CPTFloat(0.5) ); const CGRect rect = CGRectMake(-halfSize.width, -halfSize.height, symbolSize.width, symbolSize.height); const CGPoint centerPoint = CGPointMake(halfSize.width, halfSize.height); diff --git a/framework/Source/CPTLineStyle.m b/framework/Source/CPTLineStyle.m index 330f4c05b..27a8e6671 100644 --- a/framework/Source/CPTLineStyle.m +++ b/framework/Source/CPTLineStyle.m @@ -239,7 +239,7 @@ -(void)setLineStyleInContext:(nonnull CGContextRef)context NSUInteger dashCount = myDashPattern.count; if ( dashCount > 0 ) { - CGFloat *dashLengths = (CGFloat *)calloc(dashCount, sizeof(CGFloat) ); + CGFloat *dashLengths = (CGFloat *)calloc( dashCount, sizeof(CGFloat) ); NSUInteger dashCounter = 0; for ( NSNumber *currentDashLength in myDashPattern ) { @@ -309,7 +309,7 @@ -(void)strokeRect:(CGRect)rect inContext:(nonnull CGContextRef)context -(void)strokePathWithGradient:(nonnull CPTGradient *)gradient inContext:(nonnull CGContextRef)context { if ( gradient ) { - CGRect deviceRect = CGContextConvertRectToDeviceSpace(context, CPTRectMake(0.0, 0.0, 1.0, 1.0) ); + CGRect deviceRect = CGContextConvertRectToDeviceSpace( context, CPTRectMake(0.0, 0.0, 1.0, 1.0) ); CGFloat step = CPTFloat(2.0) / deviceRect.size.height; diff --git a/framework/Source/CPTMutableNumericData.m b/framework/Source/CPTMutableNumericData.m index 0e80d6e71..71325f27e 100644 --- a/framework/Source/CPTMutableNumericData.m +++ b/framework/Source/CPTMutableNumericData.m @@ -49,7 +49,7 @@ @implementation CPTMutableNumericData -(nullable void *)mutableSamplePointer:(NSUInteger)sample { if ( sample < self.numberOfSamples ) { - return (void *)( (char *)self.mutableBytes + sample * self.sampleBytes ); + return (void *)( (char *)self.mutableBytes + sample * self.sampleBytes); } else { return NULL; @@ -87,7 +87,7 @@ -(nullable void *)mutableSamplePointerAtIndex:(NSUInteger)idx, ... -(nonnull void *)mutableBytes { - return ( (NSMutableData *)self.data ).mutableBytes; + return ( (NSMutableData *)self.data).mutableBytes; } /// @endcond diff --git a/framework/Source/CPTMutableNumericDataTests.m b/framework/Source/CPTMutableNumericDataTests.m index 9a218d5bb..b9183aa1c 100644 --- a/framework/Source/CPTMutableNumericDataTests.m +++ b/framework/Source/CPTMutableNumericDataTests.m @@ -28,7 +28,7 @@ -(void)testNumberOfDimensionsGivesShapeCount NSMutableData *data = [NSMutableData dataWithLength:nElems * sizeof(float)]; CPTMutableNumericData *nd = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:shape]; XCTAssertEqual(nd.numberOfDimensions, nd.shape.count, @"numberOfDimensions == shape.count == 3"); @@ -64,7 +64,7 @@ -(void)testIllegalShapeRaisesException NSMutableData *data = [NSMutableData dataWithLength:nElems * sizeof(NSUInteger)]; XCTAssertThrowsSpecificNamed(testData = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType(CPTUnsignedIntegerDataType, sizeof(NSUInteger), NSHostByteOrder() ) + dataType:CPTDataType( CPTUnsignedIntegerDataType, sizeof(NSUInteger), NSHostByteOrder() ) shape:shape], NSException, CPTNumericDataException, @@ -95,7 +95,7 @@ -(void)testBytesEqualDataBytes } CPTMutableNumericData *nd = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType(CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ) + dataType:CPTDataType( CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ) shape:nil]; NSMutableData *expected = data; @@ -113,7 +113,7 @@ -(void)testArchivingRoundTrip } CPTMutableNumericData *nd = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; CPTMutableNumericData *nd2 = [self archiveRoundTrip:nd]; @@ -140,7 +140,7 @@ -(void)testNumberOfSamplesCorrectForDataType } CPTMutableNumericData *nd = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; XCTAssertEqual([nd numberOfSamples], nElems, @"numberOfSamples == nElems"); @@ -153,7 +153,7 @@ -(void)testNumberOfSamplesCorrectForDataType } nd = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType(CPTIntegerDataType, sizeof(char), NSHostByteOrder() ) + dataType:CPTDataType( CPTIntegerDataType, sizeof(char), NSHostByteOrder() ) shape:nil]; XCTAssertEqual([nd numberOfSamples], nElems, @"numberOfSamples == nElems"); @@ -170,7 +170,7 @@ -(void)testDataTypeAccessorsCorrectForDataType } CPTMutableNumericData *nd = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; XCTAssertEqual([nd dataTypeFormat], CPTFloatingPointDataType, @"dataTypeFormat"); @@ -189,7 +189,7 @@ -(void)testConvertTypeConvertsType } CPTMutableNumericData *fd = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; CPTNumericData *dd = [fd dataByConvertingToType:CPTFloatingPointDataType @@ -198,7 +198,7 @@ -(void)testConvertTypeConvertsType const double *doubleSamples = (const double *)dd.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - XCTAssertTrue( (double)samples[i] == doubleSamples[i], @"(float)%g != (double)%g", (double)samples[i], doubleSamples[i] ); + XCTAssertTrue( (double)samples[i] == doubleSamples[i], @"(float)%g != (double)%g", (double)samples[i], doubleSamples[i]); } } @@ -213,12 +213,12 @@ -(void)testSamplePointerCorrect } CPTMutableNumericData *fd = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; - XCTAssertEqual( ( (float *)[fd mutableBytes] ) + 4, (float *)[fd mutableSamplePointer:4], @"%p,%p", samples + 4, (float *)[fd mutableSamplePointer:4] ); - XCTAssertEqual( ( (float *)[fd mutableBytes] ), (float *)[fd mutableSamplePointer:0], @"" ); - XCTAssertEqual( ( (float *)[fd mutableBytes] ) + nElems - 1, (float *)[fd mutableSamplePointer:nElems - 1], @"" ); + XCTAssertEqual( ( (float *)[fd mutableBytes]) + 4, (float *)[fd mutableSamplePointer:4], @"%p,%p", samples + 4, (float *)[fd mutableSamplePointer:4]); + XCTAssertEqual( ( (float *)[fd mutableBytes]), (float *)[fd mutableSamplePointer:0], @""); + XCTAssertEqual( ( (float *)[fd mutableBytes]) + nElems - 1, (float *)[fd mutableSamplePointer:nElems - 1], @""); XCTAssertNil([fd samplePointer:nElems], @"too many samples"); } @@ -233,7 +233,7 @@ -(void)testSampleValueCorrect } CPTMutableNumericData *fd = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; XCTAssertEqualWithAccuracy([[fd sampleValue:0] doubleValue], sin(0), 0.01, @"sample value"); @@ -245,13 +245,13 @@ -(void)testMutableCopy const NSUInteger nElems = 10; NSMutableData *data = [NSMutableData dataWithLength:nElems * sizeof(float)]; CPTNumericData *nd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; CPTMutableNumericData *ndCopy = [nd mutableCopy]; // should be mutable--if not, this will error - ndCopy.dataType = CPTDataType(CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ); + ndCopy.dataType = CPTDataType( CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ); } @end diff --git a/framework/Source/CPTMutableNumericDataTypeConversionTests.m b/framework/Source/CPTMutableNumericDataTypeConversionTests.m index ec1154c87..51c52d03f 100644 --- a/framework/Source/CPTMutableNumericDataTypeConversionTests.m +++ b/framework/Source/CPTMutableNumericDataTypeConversionTests.m @@ -18,14 +18,14 @@ -(void)testFloatToDoubleInPlaceConversion } CPTMutableNumericData *numericData = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; numericData.sampleBytes = sizeof(double); const double *doubleSamples = (const double *)numericData.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - XCTAssertEqualWithAccuracy( (double)samples[i], doubleSamples[i], precision, @"(float)%g != (double)%g", (double)samples[i], doubleSamples[i] ); + XCTAssertEqualWithAccuracy( (double)samples[i], doubleSamples[i], precision, @"(float)%g != (double)%g", (double)samples[i], doubleSamples[i]); } } @@ -39,14 +39,14 @@ -(void)testDoubleToFloatInPlaceConversion } CPTMutableNumericData *numericData = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ) shape:nil]; numericData.sampleBytes = sizeof(float); const float *floatSamples = (const float *)numericData.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - XCTAssertEqualWithAccuracy( (double)floatSamples[i], samples[i], precision, @"(float)%g != (double)%g", (double)floatSamples[i], samples[i] ); + XCTAssertEqualWithAccuracy( (double)floatSamples[i], samples[i], precision, @"(float)%g != (double)%g", (double)floatSamples[i], samples[i]); } } @@ -60,14 +60,14 @@ -(void)testFloatToIntegerInPlaceConversion } CPTMutableNumericData *numericData = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; - numericData.dataType = CPTDataType(CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ); + numericData.dataType = CPTDataType( CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ); const NSInteger *intSamples = (const NSInteger *)numericData.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - XCTAssertEqualWithAccuracy( (NSInteger)samples[i], intSamples[i], precision, @"(float)%g != (NSInteger)%ld", (double)samples[i], (long)intSamples[i] ); + XCTAssertEqualWithAccuracy( (NSInteger)samples[i], intSamples[i], precision, @"(float)%g != (NSInteger)%ld", (double)samples[i], (long)intSamples[i]); } } @@ -81,10 +81,10 @@ -(void)testIntegerToFloatInPlaceConversion } CPTMutableNumericData *numericData = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType(CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ) + dataType:CPTDataType( CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ) shape:nil]; - numericData.dataType = CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ); + numericData.dataType = CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ); const float *floatSamples = (const float *)numericData.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { @@ -98,14 +98,14 @@ -(void)testDecimalToDoubleInPlaceConversion NSDecimal *samples = (NSDecimal *)data.mutableBytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - samples[i] = CPTDecimalFromDouble(sin(i) ); + samples[i] = CPTDecimalFromDouble( sin(i) ); } CPTMutableNumericData *numericData = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType(CPTDecimalDataType, sizeof(NSDecimal), NSHostByteOrder() ) + dataType:CPTDataType( CPTDecimalDataType, sizeof(NSDecimal), NSHostByteOrder() ) shape:nil]; - numericData.dataType = CPTDataType(CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ); + numericData.dataType = CPTDataType( CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ); const double *doubleSamples = (const double *)numericData.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { @@ -123,14 +123,14 @@ -(void)testDoubleToDecimalInPlaceConversion } CPTMutableNumericData *numericData = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ) shape:nil]; - numericData.dataType = CPTDataType(CPTDecimalDataType, sizeof(NSDecimal), NSHostByteOrder() ); + numericData.dataType = CPTDataType( CPTDecimalDataType, sizeof(NSDecimal), NSHostByteOrder() ); const NSDecimal *decimalSamples = (const NSDecimal *)numericData.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - XCTAssertTrue(CPTDecimalEquals(decimalSamples[i], CPTDecimalFromDouble(samples[i]) ), @"(NSDecimal)%@ != (double)%g", CPTDecimalStringValue(decimalSamples[i]), samples[i]); + XCTAssertTrue(CPTDecimalEquals( decimalSamples[i], CPTDecimalFromDouble(samples[i]) ), @"(NSDecimal)%@ != (double)%g", CPTDecimalStringValue(decimalSamples[i]), samples[i]); } } diff --git a/framework/Source/CPTMutablePlotRange.m b/framework/Source/CPTMutablePlotRange.m index 4a5870f73..4f17749f1 100644 --- a/framework/Source/CPTMutablePlotRange.m +++ b/framework/Source/CPTMutablePlotRange.m @@ -80,7 +80,7 @@ -(void)unionPlotRange:(nullable CPTPlotRange *)other NSDecimal maximum = CPTDecimalGreaterThan(max1, max2) ? max1 : max2; NSDecimal newLocation, newLength; - if ( CPTDecimalGreaterThanOrEqualTo(self.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalGreaterThanOrEqualTo( self.lengthDecimal, CPTDecimalFromInteger(0) ) ) { newLocation = minimum; newLength = CPTDecimalSubtract(maximum, minimum); } @@ -112,7 +112,7 @@ -(void)intersectionPlotRange:(nullable CPTPlotRange *)other if ( CPTDecimalGreaterThanOrEqualTo(maximum, minimum) ) { NSDecimal newLocation, newLength; - if ( CPTDecimalGreaterThanOrEqualTo(self.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalGreaterThanOrEqualTo( self.lengthDecimal, CPTDecimalFromInteger(0) ) ) { newLocation = minimum; newLength = CPTDecimalSubtract(maximum, minimum); } @@ -140,7 +140,7 @@ -(void)expandRangeByFactor:(nonnull NSNumber *)factor { NSDecimal oldLength = self.lengthDecimal; NSDecimal newLength = CPTDecimalMultiply(oldLength, factor.decimalValue); - NSDecimal locationOffset = CPTDecimalDivide(CPTDecimalSubtract(oldLength, newLength), CPTDecimalFromInteger(2) ); + NSDecimal locationOffset = CPTDecimalDivide( CPTDecimalSubtract(oldLength, newLength), CPTDecimalFromInteger(2) ); NSDecimal newLocation = CPTDecimalAdd(self.locationDecimal, locationOffset); self.locationDecimal = newLocation; diff --git a/framework/Source/CPTNumericData+TypeConversion.m b/framework/Source/CPTNumericData+TypeConversion.m index d94742162..5c192bc99 100644 --- a/framework/Source/CPTNumericData+TypeConversion.m +++ b/framework/Source/CPTNumericData+TypeConversion.m @@ -29,7 +29,7 @@ -(nonnull CPTNumericData *)dataByConvertingToDataType:(CPTNumericDataType)newDat NSParameterAssert(myDataType.dataTypeFormat != CPTUndefinedDataType); NSParameterAssert(myDataType.byteOrder != CFByteOrderUnknown); - NSParameterAssert(CPTDataTypeIsSupported(newDataType) ); + NSParameterAssert( CPTDataTypeIsSupported(newDataType) ); NSParameterAssert(newDataType.dataTypeFormat != CPTUndefinedDataType); NSParameterAssert(newDataType.byteOrder != CFByteOrderUnknown); @@ -39,7 +39,7 @@ -(nonnull CPTNumericData *)dataByConvertingToDataType:(CPTNumericDataType)newDat if ( CPTDataTypeEqualToDataType(myDataType, newDataType) ) { newData = self.data; } - else if ( (myDataType.sampleBytes == sizeof(int8_t) ) && (newDataType.sampleBytes == sizeof(int8_t) ) ) { + else if ( ( myDataType.sampleBytes == sizeof(int8_t) ) && ( newDataType.sampleBytes == sizeof(int8_t) ) ) { newData = self.data; } else { @@ -105,7 +105,7 @@ case sizeof(int8_t): switch ( destDataType->sampleBytes ) { case sizeof(int8_t): { // int8_t -> int8_t - memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(int8_t) ); + memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(int8_t) ); } break; @@ -281,7 +281,7 @@ case sizeof(int8_t): case sizeof(int16_t): { // int16_t -> int16_t - memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(int16_t) ); + memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(int16_t) ); } break; @@ -457,7 +457,7 @@ case sizeof(int16_t): case sizeof(int32_t): { // int32_t -> int32_t - memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(int32_t) ); + memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(int32_t) ); } break; @@ -633,7 +633,7 @@ case sizeof(int32_t): case sizeof(int64_t): { // int64_t -> int64_t - memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(int64_t) ); + memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(int64_t) ); } break; } @@ -817,7 +817,7 @@ case sizeof(int64_t): switch ( destDataType->sampleBytes ) { case sizeof(uint8_t): { // uint8_t -> uint8_t - memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(uint8_t) ); + memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(uint8_t) ); } break; @@ -993,7 +993,7 @@ case sizeof(uint8_t): case sizeof(uint16_t): { // uint16_t -> uint16_t - memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(uint16_t) ); + memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(uint16_t) ); } break; @@ -1169,7 +1169,7 @@ case sizeof(uint16_t): case sizeof(uint32_t): { // uint32_t -> uint32_t - memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(uint32_t) ); + memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(uint32_t) ); } break; @@ -1345,7 +1345,7 @@ case sizeof(uint32_t): case sizeof(uint64_t): { // uint64_t -> uint64_t - memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(uint64_t) ); + memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(uint64_t) ); } break; } @@ -1529,7 +1529,7 @@ case sizeof(uint64_t): switch ( destDataType->sampleBytes ) { case sizeof(float): { // float -> float - memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(float) ); + memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(float) ); } break; @@ -1705,7 +1705,7 @@ case sizeof(float): case sizeof(double): { // double -> double - memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(double) ); + memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(double) ); } break; } @@ -1889,7 +1889,7 @@ case sizeof(double): switch ( destDataType->sampleBytes ) { case sizeof(float complex): { // float complex -> float complex - memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(float complex) ); + memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(float complex) ); } break; @@ -1914,7 +1914,7 @@ case sizeof(NSDecimal): const float complex *lastSample = fromBytes + sampleCount; NSDecimal *toBytes = (NSDecimal *)destData.mutableBytes; while ( fromBytes < lastSample ) { - *toBytes++ = CPTDecimalFromFloat(crealf(*fromBytes++) ); + *toBytes++ = CPTDecimalFromFloat( crealf(*fromBytes++) ); } } break; @@ -2065,7 +2065,7 @@ case sizeof(float complex): case sizeof(double complex): { // double complex -> double complex - memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(double complex) ); + memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(double complex) ); } break; } @@ -2079,7 +2079,7 @@ case sizeof(NSDecimal): const double complex *lastSample = fromBytes + sampleCount; NSDecimal *toBytes = (NSDecimal *)destData.mutableBytes; while ( fromBytes < lastSample ) { - *toBytes++ = CPTDecimalFromDouble(creal(*fromBytes++) ); + *toBytes++ = CPTDecimalFromDouble( creal(*fromBytes++) ); } } break; @@ -2249,7 +2249,7 @@ case sizeof(double complex): switch ( destDataType->sampleBytes ) { case sizeof(NSDecimal): { // NSDecimal -> NSDecimal - memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(NSDecimal) ); + memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(NSDecimal) ); } break; } diff --git a/framework/Source/CPTNumericData.m b/framework/Source/CPTNumericData.m index 15577b42c..e927ad52a 100644 --- a/framework/Source/CPTNumericData.m +++ b/framework/Source/CPTNumericData.m @@ -418,7 +418,7 @@ -(nonnull instancetype)initWithArray:(nonnull CPTNumberArray *)newData -(nonnull instancetype)init { return [self initWithData:[NSData data] - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) shape:nil]; } @@ -427,7 +427,7 @@ -(void)commonInitWithData:(nonnull NSData *)newData shape:(nullable CPTNumberArray *)shapeArray dataOrder:(CPTDataOrder)order { - NSParameterAssert(CPTDataTypeIsSupported(newDataType) ); + NSParameterAssert( CPTDataTypeIsSupported(newDataType) ); self.data = newData; self.dataType = newDataType; @@ -515,13 +515,13 @@ -(void)setDataType:(CPTNumericDataType)newDataType return; } - NSParameterAssert(CPTDataTypeIsSupported(newDataType) ); + NSParameterAssert( CPTDataTypeIsSupported(newDataType) ); NSParameterAssert(newDataType.dataTypeFormat != CPTUndefinedDataType); NSParameterAssert(newDataType.byteOrder != CFByteOrderUnknown); dataType = newDataType; - if ( (oldDataType.sampleBytes == sizeof(int8_t) ) && (newDataType.sampleBytes == sizeof(int8_t) ) ) { + if ( ( oldDataType.sampleBytes == sizeof(int8_t) ) && ( newDataType.sampleBytes == sizeof(int8_t) ) ) { return; } @@ -669,11 +669,11 @@ case sizeof(double): case CPTComplexFloatingPointDataType: switch ( self.sampleBytes ) { case sizeof(float complex): - result = @(crealf(*(const float complex *)[self samplePointer:sample]) ); + result = @( crealf(*(const float complex *)[self samplePointer:sample]) ); break; case sizeof(double complex): - result = @(creal(*(const double complex *)[self samplePointer:sample]) ); + result = @( creal(*(const double complex *)[self samplePointer:sample]) ); break; } break; @@ -728,7 +728,7 @@ -(NSNumber *)sampleValueAtIndex:(NSUInteger)idx, ... -(nullable const void *)samplePointer:(NSUInteger)sample { if ( sample < self.numberOfSamples ) { - return (const void *)( (const char *)self.bytes + sample * self.sampleBytes ); + return (const void *)( (const char *)self.bytes + sample * self.sampleBytes); } else { return NULL; @@ -802,9 +802,9 @@ -(NSUInteger)sampleIndex:(NSUInteger)idx indexList:(va_list)indexList NSUInteger newIndex = 0; if ( numDims > 1 ) { - NSUInteger *dims = calloc(numDims, sizeof(NSUInteger) ); - NSUInteger *dimProducts = calloc(numDims, sizeof(NSUInteger) ); - NSUInteger *indices = calloc(numDims, sizeof(NSUInteger) ); + NSUInteger *dims = calloc( numDims, sizeof(NSUInteger) ); + NSUInteger *dimProducts = calloc( numDims, sizeof(NSUInteger) ); + NSUInteger *indices = calloc( numDims, sizeof(NSUInteger) ); NSUInteger argIndex = 0; indices[0] = idx; @@ -865,7 +865,7 @@ -(NSUInteger)sampleIndex:(NSUInteger)idx indexList:(va_list)indexList -(nonnull NSData *)dataFromArray:(nonnull CPTNumberArray *)newData dataType:(CPTNumericDataType)newDataType { - NSParameterAssert(CPTDataTypeIsSupported(newDataType) ); + NSParameterAssert( CPTDataTypeIsSupported(newDataType) ); NSParameterAssert(newDataType.dataTypeFormat != CPTUndefinedDataType); NSParameterAssert(newDataType.dataTypeFormat != CPTComplexFloatingPointDataType); @@ -1085,7 +1085,7 @@ case sizeof(NSDecimal): // End of code generated with "CPTNumericData+TypeConversions_Generation.py" // ======================================================================== - if ( (newDataType.byteOrder != CFByteOrderGetCurrent() ) && (newDataType.byteOrder != CFByteOrderUnknown) ) { + if ( ( newDataType.byteOrder != CFByteOrderGetCurrent() ) && (newDataType.byteOrder != CFByteOrderUnknown) ) { [self swapByteOrderForData:sampleData sampleSize:newDataType.sampleBytes]; } @@ -1188,7 +1188,7 @@ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)decoder newDataType = CPTDataType( (CPTDataTypeFormat)[decoder decodeIntegerForKey:@"CPTNumericData.dataType.dataTypeFormat"], (size_t)[decoder decodeInt64ForKey:@"CPTNumericData.dataType.sampleBytes"], - (CFByteOrder)[decoder decodeInt64ForKey:@"CPTNumericData.dataType.byteOrder"] ); + (CFByteOrder)[decoder decodeInt64ForKey:@"CPTNumericData.dataType.byteOrder"]); shapeArray = [decoder decodeObjectOfClasses:[NSSet setWithArray:@[[NSArray class], [NSNumber class]]] forKey:@"CPTNumericData.shape"]; diff --git a/framework/Source/CPTNumericDataTests.m b/framework/Source/CPTNumericDataTests.m index 3819fa727..61c9b983b 100644 --- a/framework/Source/CPTNumericDataTests.m +++ b/framework/Source/CPTNumericDataTests.m @@ -27,7 +27,7 @@ -(void)testNumberOfDimensionsGivesShapeCount NSMutableData *data = [NSMutableData dataWithLength:nElems * sizeof(float)]; CPTNumericData *nd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:shape]; XCTAssertEqual(nd.numberOfDimensions, nd.shape.count, @"numberOfDimensions == shape.count == 3"); @@ -63,7 +63,7 @@ -(void)testIllegalShapeRaisesException NSMutableData *data = [NSMutableData dataWithLength:nElems * sizeof(NSUInteger)]; XCTAssertThrowsSpecificNamed(testData = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType(CPTUnsignedIntegerDataType, sizeof(NSUInteger), NSHostByteOrder() ) + dataType:CPTDataType( CPTUnsignedIntegerDataType, sizeof(NSUInteger), NSHostByteOrder() ) shape:shape], NSException, CPTNumericDataException, @@ -94,7 +94,7 @@ -(void)testBytesEqualDataBytes } CPTNumericData *nd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType(CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ) + dataType:CPTDataType( CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ) shape:nil]; NSData *expected = data; @@ -113,7 +113,7 @@ -(void)testArchivingRoundTrip } CPTNumericData *nd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; CPTNumericData *nd2 = [self archiveRoundTrip:nd]; @@ -140,7 +140,7 @@ -(void)testKeyedArchivingRoundTrip } CPTNumericData *nd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; CPTNumericData *nd2 = [self archiveRoundTrip:nd]; @@ -167,7 +167,7 @@ -(void)testNumberOfSamplesCorrectForDataType } CPTNumericData *nd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; XCTAssertEqual([nd numberOfSamples], nElems, @"numberOfSamples == nElems"); @@ -180,7 +180,7 @@ -(void)testNumberOfSamplesCorrectForDataType } nd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType(CPTIntegerDataType, sizeof(char), NSHostByteOrder() ) + dataType:CPTDataType( CPTIntegerDataType, sizeof(char), NSHostByteOrder() ) shape:nil]; XCTAssertEqual([nd numberOfSamples], nElems, @"numberOfSamples == nElems"); @@ -197,7 +197,7 @@ -(void)testDataTypeAccessorsCorrectForDataType } CPTNumericData *nd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; XCTAssertEqual([nd dataTypeFormat], CPTFloatingPointDataType, @"dataTypeFormat"); @@ -216,7 +216,7 @@ -(void)testConvertTypeConvertsType } CPTNumericData *fd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; CPTNumericData *dd = [fd dataByConvertingToType:CPTFloatingPointDataType @@ -225,7 +225,7 @@ -(void)testConvertTypeConvertsType const double *doubleSamples = (const double *)dd.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - XCTAssertTrue( (double)samples[i] == doubleSamples[i], @"(float)%g != (double)%g", (double)samples[i], doubleSamples[i] ); + XCTAssertTrue( (double)samples[i] == doubleSamples[i], @"(float)%g != (double)%g", (double)samples[i], doubleSamples[i]); } } @@ -240,12 +240,12 @@ -(void)testSamplePointerCorrect } CPTNumericData *fd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; - XCTAssertEqual( ( (const float *)[fd.data bytes] ) + 4, (const float *)[fd samplePointer:4], @"%p,%p", samples + 4, (const float *)[fd samplePointer:4] ); - XCTAssertEqual( ( (const float *)[fd.data bytes] ), (const float *)[fd samplePointer:0], @"" ); - XCTAssertEqual( ( (const float *)[fd.data bytes] ) + nElems - 1, (const float *)[fd samplePointer:nElems - 1], @"" ); + XCTAssertEqual( ( (const float *)[fd.data bytes]) + 4, (const float *)[fd samplePointer:4], @"%p,%p", samples + 4, (const float *)[fd samplePointer:4]); + XCTAssertEqual( ( (const float *)[fd.data bytes]), (const float *)[fd samplePointer:0], @""); + XCTAssertEqual( ( (const float *)[fd.data bytes]) + nElems - 1, (const float *)[fd samplePointer:nElems - 1], @""); XCTAssertNil([fd samplePointer:nElems], @"too many samples"); } @@ -260,7 +260,7 @@ -(void)testSampleValueCorrect } CPTNumericData *fd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; XCTAssertEqualWithAccuracy([[fd sampleValue:0] doubleValue], sin(0), 0.01, @"sample value"); @@ -280,16 +280,16 @@ -(void)testSampleIndexRowsFirstOrder } CPTNumericData *fd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(NSUInteger), NSHostByteOrder() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(NSUInteger), NSHostByteOrder() ) shape:@[@(rows), @(cols)] dataOrder:CPTDataOrderRowsFirst]; - XCTAssertEqual( ([fd sampleIndex:rows, 0]), (NSUInteger)NSNotFound, @"row index out of range" ); - XCTAssertEqual( ([fd sampleIndex:0, cols]), (NSUInteger)NSNotFound, @"column index out of range" ); + XCTAssertEqual( ([fd sampleIndex:rows, 0]), (NSUInteger)NSNotFound, @"row index out of range"); + XCTAssertEqual( ([fd sampleIndex:0, cols]), (NSUInteger)NSNotFound, @"column index out of range"); for ( NSUInteger i = 0; i < rows; i++ ) { for ( NSUInteger j = 0; j < cols; j++ ) { - XCTAssertEqual( ([fd sampleIndex:i, j]), i * cols + j, @"(%lu, %lu)", (unsigned long)i, (unsigned long)j ); + XCTAssertEqual( ([fd sampleIndex:i, j]), i * cols + j, @"(%lu, %lu)", (unsigned long)i, (unsigned long)j); } } } @@ -307,16 +307,16 @@ -(void)testSampleIndexColumnsFirstOrder } CPTNumericData *fd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(NSUInteger), NSHostByteOrder() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(NSUInteger), NSHostByteOrder() ) shape:@[@(rows), @(cols)] dataOrder:CPTDataOrderColumnsFirst]; - XCTAssertEqual( ([fd sampleIndex:rows, 0]), (NSUInteger)NSNotFound, @"row index out of range" ); - XCTAssertEqual( ([fd sampleIndex:0, cols]), (NSUInteger)NSNotFound, @"column index out of range" ); + XCTAssertEqual( ([fd sampleIndex:rows, 0]), (NSUInteger)NSNotFound, @"row index out of range"); + XCTAssertEqual( ([fd sampleIndex:0, cols]), (NSUInteger)NSNotFound, @"column index out of range"); for ( NSUInteger i = 0; i < rows; i++ ) { for ( NSUInteger j = 0; j < cols; j++ ) { - XCTAssertEqual( ([fd sampleIndex:i, j]), i + j * rows, @"(%lu, %lu)", (unsigned long)i, (unsigned long)j ); + XCTAssertEqual( ([fd sampleIndex:i, j]), i + j * rows, @"(%lu, %lu)", (unsigned long)i, (unsigned long)j); } } } diff --git a/framework/Source/CPTNumericDataType.m b/framework/Source/CPTNumericDataType.m index e2ab630be..6ba0daa5a 100644 --- a/framework/Source/CPTNumericDataType.m +++ b/framework/Source/CPTNumericDataType.m @@ -161,14 +161,14 @@ case sizeof(double): case sizeof(float complex): case sizeof(double complex): // only the native byte order is supported - valid = (format.byteOrder == CFByteOrderGetCurrent() ); + valid = ( format.byteOrder == CFByteOrderGetCurrent() ); break; } break; case CPTDecimalDataType: // only the native byte order is supported - valid = (format.sampleBytes == sizeof(NSDecimal) ) && (format.byteOrder == CFByteOrderGetCurrent() ); + valid = ( format.sampleBytes == sizeof(NSDecimal) ) && ( format.byteOrder == CFByteOrderGetCurrent() ); break; } diff --git a/framework/Source/CPTNumericDataTypeConversionPerformanceTests.m b/framework/Source/CPTNumericDataTypeConversionPerformanceTests.m index 31f5cf21e..e30e9214a 100644 --- a/framework/Source/CPTNumericDataTypeConversionPerformanceTests.m +++ b/framework/Source/CPTNumericDataTypeConversionPerformanceTests.m @@ -17,7 +17,7 @@ -(void)testFloatToDoubleConversion } CPTNumericData *floatNumericData = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), CFByteOrderGetCurrent() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), CFByteOrderGetCurrent() ) shape:nil]; __block CPTNumericData *doubleNumericData = nil; @@ -37,7 +37,7 @@ -(void)testDoubleToFloatConversion } CPTNumericData *doubleNumericData = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) shape:nil]; __block CPTNumericData *floatNumericData = nil; @@ -57,7 +57,7 @@ -(void)testIntegerToDoubleConversion } CPTNumericData *integerNumericData = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType(CPTIntegerDataType, sizeof(NSInteger), CFByteOrderGetCurrent() ) + dataType:CPTDataType( CPTIntegerDataType, sizeof(NSInteger), CFByteOrderGetCurrent() ) shape:nil]; __block CPTNumericData *doubleNumericData = nil; @@ -77,7 +77,7 @@ -(void)testDoubleToIntegerConversion } CPTNumericData *doubleNumericData = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) shape:nil]; __block CPTNumericData *integerNumericData = nil; diff --git a/framework/Source/CPTNumericDataTypeConversionTests.m b/framework/Source/CPTNumericDataTypeConversionTests.m index 92fafbab3..e82019c15 100644 --- a/framework/Source/CPTNumericDataTypeConversionTests.m +++ b/framework/Source/CPTNumericDataTypeConversionTests.m @@ -18,7 +18,7 @@ -(void)testFloatToDoubleConversion } CPTNumericData *fd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; CPTNumericData *dd = [fd dataByConvertingToType:CPTFloatingPointDataType @@ -27,7 +27,7 @@ -(void)testFloatToDoubleConversion const double *doubleSamples = (const double *)dd.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - XCTAssertEqualWithAccuracy( (double)samples[i], doubleSamples[i], precision, @"(float)%g != (double)%g", (double)samples[i], doubleSamples[i] ); + XCTAssertEqualWithAccuracy( (double)samples[i], doubleSamples[i], precision, @"(float)%g != (double)%g", (double)samples[i], doubleSamples[i]); } } @@ -41,7 +41,7 @@ -(void)testDoubleToFloatConversion } CPTNumericData *dd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ) shape:nil]; CPTNumericData *fd = [dd dataByConvertingToType:CPTFloatingPointDataType @@ -50,7 +50,7 @@ -(void)testDoubleToFloatConversion const float *floatSamples = (const float *)fd.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - XCTAssertEqualWithAccuracy( (double)floatSamples[i], samples[i], precision, @"(float)%g != (double)%g", (double)floatSamples[i], samples[i] ); + XCTAssertEqualWithAccuracy( (double)floatSamples[i], samples[i], precision, @"(float)%g != (double)%g", (double)floatSamples[i], samples[i]); } } @@ -64,7 +64,7 @@ -(void)testFloatToIntegerConversion } CPTNumericData *fd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) shape:nil]; CPTNumericData *intData = [fd dataByConvertingToType:CPTIntegerDataType @@ -73,7 +73,7 @@ -(void)testFloatToIntegerConversion const NSInteger *intSamples = (const NSInteger *)intData.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - XCTAssertEqualWithAccuracy( (NSInteger)samples[i], intSamples[i], precision, @"(float)%g != (NSInteger)%ld", (double)samples[i], (long)intSamples[i] ); + XCTAssertEqualWithAccuracy( (NSInteger)samples[i], intSamples[i], precision, @"(float)%g != (NSInteger)%ld", (double)samples[i], (long)intSamples[i]); } } @@ -87,7 +87,7 @@ -(void)testIntegerToFloatConversion } CPTNumericData *intData = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType(CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ) + dataType:CPTDataType( CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ) shape:nil]; CPTNumericData *fd = [intData dataByConvertingToType:CPTFloatingPointDataType @@ -136,11 +136,11 @@ -(void)testDecimalToDoubleConversion NSDecimal *samples = (NSDecimal *)data.mutableBytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - samples[i] = CPTDecimalFromDouble(sin(i) ); + samples[i] = CPTDecimalFromDouble( sin(i) ); } CPTNumericData *decimalData = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType(CPTDecimalDataType, sizeof(NSDecimal), NSHostByteOrder() ) + dataType:CPTDataType( CPTDecimalDataType, sizeof(NSDecimal), NSHostByteOrder() ) shape:nil]; CPTNumericData *doubleData = [decimalData dataByConvertingToType:CPTFloatingPointDataType @@ -163,7 +163,7 @@ -(void)testDoubleToDecimalConversion } CPTNumericData *doubleData = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ) + dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ) shape:nil]; CPTNumericData *decimalData = [doubleData dataByConvertingToType:CPTDecimalDataType @@ -172,7 +172,7 @@ -(void)testDoubleToDecimalConversion const NSDecimal *decimalSamples = (const NSDecimal *)decimalData.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - XCTAssertTrue(CPTDecimalEquals(decimalSamples[i], CPTDecimalFromDouble(samples[i]) ), @"(NSDecimal)%@ != (double)%g", CPTDecimalStringValue(decimalSamples[i]), samples[i]); + XCTAssertTrue(CPTDecimalEquals( decimalSamples[i], CPTDecimalFromDouble(samples[i]) ), @"(NSDecimal)%@ != (double)%g", CPTDecimalStringValue(decimalSamples[i]), samples[i]); } } @@ -220,7 +220,7 @@ -(void)testRoundTripToDoubleArray for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { samples[i] = sin(i); } - CPTNumericDataType theDataType = CPTDataType(CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ); + CPTNumericDataType theDataType = CPTDataType( CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ); CPTNumericData *doubleData = [[CPTNumericData alloc] initWithData:data dataType:theDataType @@ -248,7 +248,7 @@ -(void)testRoundTripToIntegerArray for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { samples[i] = (NSInteger)(sin(i) * 1000.0); } - CPTNumericDataType theDataType = CPTDataType(CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ); + CPTNumericDataType theDataType = CPTDataType( CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ); CPTNumericData *intData = [[CPTNumericData alloc] initWithData:data dataType:theDataType @@ -274,9 +274,9 @@ -(void)testRoundTripToDecimalArray NSDecimal *samples = (NSDecimal *)data.mutableBytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - samples[i] = CPTDecimalFromDouble(sin(i) ); + samples[i] = CPTDecimalFromDouble( sin(i) ); } - CPTNumericDataType theDataType = CPTDataType(CPTDecimalDataType, sizeof(NSDecimal), NSHostByteOrder() ); + CPTNumericDataType theDataType = CPTDataType( CPTDecimalDataType, sizeof(NSDecimal), NSHostByteOrder() ); CPTNumericData *decimalData = [[CPTNumericData alloc] initWithData:data dataType:theDataType diff --git a/framework/Source/CPTPathExtensions.m b/framework/Source/CPTPathExtensions.m index 62ab59699..91a749b35 100644 --- a/framework/Source/CPTPathExtensions.m +++ b/framework/Source/CPTPathExtensions.m @@ -11,7 +11,7 @@ __nonnull CGPathRef CPTCreateRoundedRectPath(CGRect rect, CGFloat cornerRadius) { if ( cornerRadius > CPTFloat(0.0) ) { - cornerRadius = MIN(MIN(cornerRadius, rect.size.width * CPTFloat(0.5) ), rect.size.height * CPTFloat(0.5) ); + cornerRadius = MIN( MIN( cornerRadius, rect.size.width * CPTFloat(0.5) ), rect.size.height * CPTFloat(0.5) ); // CGPathCreateWithRoundedRect() is available in macOS 10.9 and iOS 7 but not marked in the header file #pragma clang diagnostic push diff --git a/framework/Source/CPTPieChart.m b/framework/Source/CPTPieChart.m index c21110217..304af5047 100644 --- a/framework/Source/CPTPieChart.m +++ b/framework/Source/CPTPieChart.m @@ -160,9 +160,9 @@ @implementation CPTPieChart +(nonnull CPTColor *)defaultPieSliceColorForIndex:(NSUInteger)pieSliceIndex { - return [CPTColor colorWithComponentRed:(colorLookupTable[pieSliceIndex % 10][0] + (CGFloat)(pieSliceIndex / 10) * CPTFloat(0.1) ) - green:(colorLookupTable[pieSliceIndex % 10][1] + (CGFloat)(pieSliceIndex / 10) * CPTFloat(0.1) ) - blue:(colorLookupTable[pieSliceIndex % 10][2] + (CGFloat)(pieSliceIndex / 10) * CPTFloat(0.1) ) + return [CPTColor colorWithComponentRed:( colorLookupTable[pieSliceIndex % 10][0] + (CGFloat)(pieSliceIndex / 10) * CPTFloat(0.1) ) + green:( colorLookupTable[pieSliceIndex % 10][1] + (CGFloat)(pieSliceIndex / 10) * CPTFloat(0.1) ) + blue:( colorLookupTable[pieSliceIndex % 10][2] + (CGFloat)(pieSliceIndex / 10) * CPTFloat(0.1) ) alpha:CPTFloat(1.0)]; } @@ -210,7 +210,7 @@ +(void)initialize -(nonnull instancetype)initWithFrame:(CGRect)newFrame { if ( (self = [super initWithFrame:newFrame]) ) { - pieRadius = CPTFloat(0.8) * (MIN(newFrame.size.width, newFrame.size.height) / CPTFloat(2.0) ); + pieRadius = CPTFloat(0.8) * ( MIN(newFrame.size.width, newFrame.size.height) / CPTFloat(2.0) ); pieInnerRadius = CPTFloat(0.0); startAngle = CPTFloat(M_PI_2); // pi/2 endAngle = CPTNAN; @@ -390,7 +390,7 @@ -(void)updateNormalizedData } } - CPTNumericDataType dataType = CPTDataType(CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ); + CPTNumericDataType dataType = CPTDataType( CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ); CPTMutableNumericData *normalizedSliceValues = [[CPTMutableNumericData alloc] initWithData:[NSData data] dataType:dataType shape:nil]; normalizedSliceValues.shape = @[@(sampleCount)]; @@ -427,7 +427,7 @@ -(void)updateNormalizedData } } - CPTNumericDataType dataType = CPTDataType(CPTDecimalDataType, sizeof(NSDecimal), CFByteOrderGetCurrent() ); + CPTNumericDataType dataType = CPTDataType( CPTDecimalDataType, sizeof(NSDecimal), CFByteOrderGetCurrent() ); CPTMutableNumericData *normalizedSliceValues = [[CPTMutableNumericData alloc] initWithData:[NSData data] dataType:dataType shape:nil]; normalizedSliceValues.shape = @[@(sampleCount)]; @@ -607,7 +607,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context if ( overlay && hasNonZeroOffsets ) { CGFloat radius = self.pieRadius + borderStyle.lineWidth * CPTFloat(0.5); - bounds = CPTRectMake(centerPoint.x - radius, centerPoint.y - radius, radius * CPTFloat(2.0), radius * CPTFloat(2.0) ); + bounds = CPTRectMake( centerPoint.x - radius, centerPoint.y - radius, radius * CPTFloat(2.0), radius * CPTFloat(2.0) ); } else { bounds = CGRectZero; @@ -724,7 +724,7 @@ -(CGFloat)radiansForPieSliceValue:(CGFloat)pieSliceValue angle += pieSliceValue * pieRange; break; } - return isnan(endingAngle) ? angle : fmod(angle, CPTFloat(2.0 * M_PI) ); + return isnan(endingAngle) ? angle : fmod( angle, CPTFloat(2.0 * M_PI) ); } -(void)addSliceToPath:(nonnull CGMutablePathRef)slicePath centerPoint:(CGPoint)center startingAngle:(CGFloat)startingAngle finishingAngle:(CGFloat)finishingAngle width:(CGFloat)currentWidth @@ -745,7 +745,7 @@ -(void)addSliceToPath:(nonnull CGMutablePathRef)slicePath centerPoint:(CGPoint)c } else { if ( currentWidth >= CPTFloat(1.0) ) { - CGPathAddEllipseInRect(slicePath, NULL, CGRectMake(center.x - outerRadius, center.y - outerRadius, outerRadius * CPTFloat(2.0), outerRadius * CPTFloat(2.0) ) ); + CGPathAddEllipseInRect( slicePath, NULL, CGRectMake( center.x - outerRadius, center.y - outerRadius, outerRadius * CPTFloat(2.0), outerRadius * CPTFloat(2.0) ) ); } else { CGPathMoveToPoint(slicePath, NULL, center.x, center.y); @@ -953,11 +953,11 @@ -(void)positionLabelAnnotation:(nonnull CPTPlotSpaceAnnotation *)label forIndex: } CGFloat labelAngle = [self radiansForPieSliceValue:startingWidth + currentWidth / CPTFloat(2.0)]; - label.displacement = CPTPointMake(labelRadius * cos(labelAngle), labelRadius * sin(labelAngle) ); + label.displacement = CPTPointMake( labelRadius * cos(labelAngle), labelRadius * sin(labelAngle) ); if ( self.labelRotationRelativeToRadius ) { CGFloat rotation = [self normalizedPosition:self.labelRotation + labelAngle]; - if ( (rotation > CPTFloat(0.25) ) && (rotation < CPTFloat(0.75) ) ) { + if ( ( rotation > CPTFloat(0.25) ) && ( rotation < CPTFloat(0.75) ) ) { rotation -= CPTFloat(0.5); } @@ -1044,7 +1044,7 @@ -(CGFloat)normalizedPosition:(CGFloat)rawPosition CGFloat result = rawPosition; result /= (CGFloat)(2.0 * M_PI); - result = fmod(result, CPTFloat(1.0) ); + result = fmod( result, CPTFloat(1.0) ); if ( result < CPTFloat(0.0) ) { result += CPTFloat(1.0); } @@ -1059,7 +1059,7 @@ -(BOOL)angle:(CGFloat)touchedAngle betweenStartAngle:(CGFloat)startingAngle endA if ( (touchedAngle <= startingAngle) && (touchedAngle >= endingAngle) ) { return YES; } - else if ( (endingAngle < CPTFloat(0.0) ) && (touchedAngle - CPTFloat(1.0) >= endingAngle) ) { + else if ( ( endingAngle < CPTFloat(0.0) ) && (touchedAngle - CPTFloat(1.0) >= endingAngle) ) { return YES; } break; @@ -1068,7 +1068,7 @@ -(BOOL)angle:(CGFloat)touchedAngle betweenStartAngle:(CGFloat)startingAngle endA if ( (touchedAngle >= startingAngle) && (touchedAngle <= endingAngle) ) { return YES; } - else if ( (endingAngle > CPTFloat(1.0) ) && (touchedAngle + CPTFloat(1.0) <= endingAngle) ) { + else if ( ( endingAngle > CPTFloat(1.0) ) && (touchedAngle + CPTFloat(1.0) <= endingAngle) ) { return YES; } break; @@ -1260,11 +1260,11 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point switch ( self.sliceDirection ) { case CPTPieDirectionClockwise: - if ( isnan(theEndAngle) || (CPTFloat(2.0 * M_PI) == ABS(theEndAngle - theStartAngle) ) ) { + if ( isnan(theEndAngle) || ( CPTFloat(2.0 * M_PI) == ABS(theEndAngle - theStartAngle) ) ) { widthFactor = CPTFloat(1.0); } else { - widthFactor = CPTFloat(2.0 * M_PI) / (CPTFloat(2.0 * M_PI) - ABS(theEndAngle - theStartAngle) ); + widthFactor = CPTFloat(2.0 * M_PI) / ( CPTFloat(2.0 * M_PI) - ABS(theEndAngle - theStartAngle) ); } for ( NSUInteger currentIndex = 0; currentIndex < sampleCount; currentIndex++ ) { diff --git a/framework/Source/CPTPlot.h b/framework/Source/CPTPlot.h index e0ed4c667..20158052e 100644 --- a/framework/Source/CPTPlot.h +++ b/framework/Source/CPTPlot.h @@ -332,9 +332,9 @@ typedef NSMutableArray<__kindof CPTPlot *> CPTMutablePlotArray; -(void)reloadDataInIndexRange:(NSRange)indexRange; -(void)insertDataAtIndex:(NSUInteger)idx numberOfRecords:(NSUInteger)numberOfRecords; -(void)deleteDataInIndexRange:(NSRange)indexRange; --(void) reloadPlotData NS_SWIFT_NAME(CPTPlot.reloadPlotData() ); +-(void) reloadPlotData NS_SWIFT_NAME( CPTPlot.reloadPlotData() ); --(void)reloadPlotDataInIndexRange:(NSRange) indexRange NS_SWIFT_NAME(CPTPlot.reloadPlotData(inIndexRange:) ); +-(void)reloadPlotDataInIndexRange:(NSRange) indexRange NS_SWIFT_NAME( CPTPlot.reloadPlotData(inIndexRange:) ); /// @} diff --git a/framework/Source/CPTPlot.m b/framework/Source/CPTPlot.m index c7fff7fbf..828e8f307 100644 --- a/framework/Source/CPTPlot.m +++ b/framework/Source/CPTPlot.m @@ -1189,10 +1189,10 @@ -(nonnull CPTMutableNumericData *)numericDataForNumbers:(nonnull id)numbers mutableNumbers = [[CPTMutableNumericData alloc] initWithData:numbers dataType:loadedDataType shape:nil]; } else if ( [numbers isKindOfClass:[NSArray class]] ) { - if ( ( (CPTNumberArray *)numbers ).count == 0 ) { + if ( ( (CPTNumberArray *)numbers).count == 0 ) { loadedDataType = self.doubleDataType; } - else if ( [( (NSArray *)numbers )[0] isKindOfClass:[NSDecimalNumber class]] ) { + else if ( [( (NSArray *)numbers)[0] isKindOfClass:[NSDecimalNumber class]] ) { loadedDataType = self.decimalDataType; } else { @@ -1221,7 +1221,7 @@ -(BOOL)doublePrecisionCache Class numberClass = [NSNumber class]; for ( id key in dataCache.allKeys ) { if ( [key isKindOfClass:numberClass] ) { - result = CPTDataTypeEqualToDataType( ( (CPTMutableNumericData *)dataCache[key] ).dataType, self.doubleDataType ); + result = CPTDataTypeEqualToDataType( ( (CPTMutableNumericData *)dataCache[key]).dataType, self.doubleDataType); break; } } @@ -1358,7 +1358,7 @@ -(CPTNumericDataType)doubleDataType static dispatch_once_t onceToken = 0; dispatch_once(&onceToken, ^{ - dataType = CPTDataType(CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ); + dataType = CPTDataType( CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ); }); return dataType; @@ -1370,7 +1370,7 @@ -(CPTNumericDataType)decimalDataType static dispatch_once_t onceToken = 0; dispatch_once(&onceToken, ^{ - dataType = CPTDataType(CPTDecimalDataType, sizeof(NSDecimal), CFByteOrderGetCurrent() ); + dataType = CPTDataType( CPTDecimalDataType, sizeof(NSDecimal), CFByteOrderGetCurrent() ); }); return dataType; @@ -1756,7 +1756,7 @@ -(void)updateContentAnchorForLabel:(nonnull CPTPlotSpaceAnnotation *)label newAnchorX = signbit(newAnchorX) ? CPTFloat(-1.0) : CPTFloat(1.0); } - label.contentAnchorPoint = CPTPointMake( (newAnchorX + CPTFloat(1.0) ) / CPTFloat(2.0), (newAnchorY + CPTFloat(1.0) ) / CPTFloat(2.0) ); + label.contentAnchorPoint = CPTPointMake( ( newAnchorX + CPTFloat(1.0) ) / CPTFloat(2.0), ( newAnchorY + CPTFloat(1.0) ) / CPTFloat(2.0) ); } } diff --git a/framework/Source/CPTPlotArea.m b/framework/Source/CPTPlotArea.m index ccb5daec5..dc98ebc9e 100644 --- a/framework/Source/CPTPlotArea.m +++ b/framework/Source/CPTPlotArea.m @@ -162,7 +162,7 @@ -(nonnull instancetype)initWithFrame:(CGRect)newFrame fill = nil; touchedPoint = CPTPointMake(NAN, NAN); topDownLayerOrder = nil; - bottomUpLayerOrder = calloc(kCPTNumberOfLayers, sizeof(CPTGraphLayerType) ); + bottomUpLayerOrder = calloc( kCPTNumberOfLayers, sizeof(CPTGraphLayerType) ); [self updateLayerOrder]; CPTPlotGroup *newPlotGroup = [[CPTPlotGroup alloc] initWithFrame:newFrame]; @@ -195,8 +195,8 @@ -(nonnull instancetype)initWithLayer:(nonnull id)layer fill = theLayer->fill; touchedPoint = theLayer->touchedPoint; topDownLayerOrder = theLayer->topDownLayerOrder; - bottomUpLayerOrder = calloc(kCPTNumberOfLayers, sizeof(CPTGraphLayerType) ); - memcpy(bottomUpLayerOrder, theLayer->bottomUpLayerOrder, kCPTNumberOfLayers * sizeof(CPTGraphLayerType) ); + bottomUpLayerOrder = calloc( kCPTNumberOfLayers, sizeof(CPTGraphLayerType) ); + memcpy( bottomUpLayerOrder, theLayer->bottomUpLayerOrder, kCPTNumberOfLayers * sizeof(CPTGraphLayerType) ); widthDecimal = theLayer->widthDecimal; heightDecimal = theLayer->heightDecimal; } @@ -256,7 +256,7 @@ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder topDownLayerOrder = [coder decodeObjectOfClasses:[NSSet setWithArray:@[[NSArray class], [NSNumber class]]] forKey:@"CPTPlotArea.topDownLayerOrder"]; - bottomUpLayerOrder = calloc(kCPTNumberOfLayers, sizeof(CPTGraphLayerType) ); + bottomUpLayerOrder = calloc( kCPTNumberOfLayers, sizeof(CPTGraphLayerType) ); [self updateLayerOrder]; touchedPoint = CPTPointMake(NAN, NAN); diff --git a/framework/Source/CPTPlotRange.m b/framework/Source/CPTPlotRange.m index ef2e047d1..df3932021 100644 --- a/framework/Source/CPTPlotRange.m +++ b/framework/Source/CPTPlotRange.m @@ -276,7 +276,7 @@ -(NSDecimal)minLimitDecimal NSDecimal loc = self.locationDecimal; NSDecimal len = self.lengthDecimal; - if ( CPTDecimalLessThan(len, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalLessThan( len, CPTDecimalFromInteger(0) ) ) { return CPTDecimalAdd(loc, len); } else { @@ -304,7 +304,7 @@ -(NSNumber *)midPoint -(NSDecimal)midPointDecimal { - return CPTDecimalAdd(self.locationDecimal, CPTDecimalDivide(self.lengthDecimal, CPTDecimalFromInteger(2) ) ); + return CPTDecimalAdd( self.locationDecimal, CPTDecimalDivide( self.lengthDecimal, CPTDecimalFromInteger(2) ) ); } -(double)midPointDouble @@ -322,7 +322,7 @@ -(NSDecimal)maxLimitDecimal NSDecimal loc = self.locationDecimal; NSDecimal len = self.lengthDecimal; - if ( CPTDecimalGreaterThan(len, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalGreaterThan( len, CPTDecimalFromInteger(0) ) ) { return CPTDecimalAdd(loc, len); } else { diff --git a/framework/Source/CPTPlotRangeTests.m b/framework/Source/CPTPlotRangeTests.m index bb32866c2..0701a3d48 100644 --- a/framework/Source/CPTPlotRangeTests.m +++ b/framework/Source/CPTPlotRangeTests.m @@ -423,11 +423,11 @@ -(void)checkRangeWithLocation:(double)loc length:(double)len NSDecimal newLocation = self.plotRange.locationDecimal; errMessage = [NSString stringWithFormat:@"expected location = %g, was %@", loc, NSDecimalString(&newLocation, nil)]; - XCTAssertTrue(CPTDecimalEquals(newLocation, CPTDecimalFromDouble(loc) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals( newLocation, CPTDecimalFromDouble(loc) ), @"%@", errMessage); NSDecimal newLength = self.plotRange.lengthDecimal; errMessage = [NSString stringWithFormat:@"expected location = %g, was %@", loc, NSDecimalString(&newLength, nil)]; - XCTAssertTrue(CPTDecimalEquals(newLength, CPTDecimalFromDouble(len) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals( newLength, CPTDecimalFromDouble(len) ), @"%@", errMessage); } @end diff --git a/framework/Source/CPTPlotSpace.m b/framework/Source/CPTPlotSpace.m index 628d25555..83c4d628a 100644 --- a/framework/Source/CPTPlotSpace.m +++ b/framework/Source/CPTPlotSpace.m @@ -666,7 +666,7 @@ -(void)scaleToFitPlots:(nullable CPTPlotArray *)plots forCoordinate:(CPTCoordina // Set range if ( unionRange ) { - if ( CPTDecimalEquals(unionRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalEquals( unionRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { [unionRange unionPlotRange:[self plotRangeForCoordinate:coordinate]]; } [self setPlotRange:unionRange forCoordinate:coordinate]; @@ -702,7 +702,7 @@ -(void)scaleToFitEntirePlots:(nullable CPTPlotArray *)plots forCoordinate:(CPTCo // Set range if ( unionRange ) { - if ( CPTDecimalEquals(unionRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalEquals( unionRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { [unionRange unionPlotRange:[self plotRangeForCoordinate:coordinate]]; } [self setPlotRange:unionRange forCoordinate:coordinate]; diff --git a/framework/Source/CPTPlotSpaceAnnotation.m b/framework/Source/CPTPlotSpaceAnnotation.m index 57dde697e..f3508f7b7 100644 --- a/framework/Source/CPTPlotSpaceAnnotation.m +++ b/framework/Source/CPTPlotSpaceAnnotation.m @@ -180,7 +180,7 @@ -(void)positionContentLayer content.anchorPoint = self.contentAnchorPoint; content.position = newPosition; - content.transform = CATransform3DMakeRotation(self.rotation, CPTFloat(0.0), CPTFloat(0.0), CPTFloat(1.0) ); + content.transform = CATransform3DMakeRotation( self.rotation, CPTFloat(0.0), CPTFloat(0.0), CPTFloat(1.0) ); [content pixelAlign]; } } @@ -201,7 +201,7 @@ -(void)setAnchorPlotPoint:(nullable CPTNumberArray *)newPlotPoint self.anchorCount = anchorPlotPoint.count; - NSDecimal *decimalPoint = calloc(self.anchorCount, sizeof(NSDecimal) ); + NSDecimal *decimalPoint = calloc( self.anchorCount, sizeof(NSDecimal) ); for ( NSUInteger i = 0; i < self.anchorCount; i++ ) { decimalPoint[i] = anchorPlotPoint[i].decimalValue; } diff --git a/framework/Source/CPTPlotSymbol.m b/framework/Source/CPTPlotSymbol.m index d8b603043..b37dd0359 100644 --- a/framework/Source/CPTPlotSymbol.m +++ b/framework/Source/CPTPlotSymbol.m @@ -488,7 +488,7 @@ -(void)renderInContext:(nonnull CGContextRef)context atPoint:(CGPoint)center sca CGContextRef layerContext = CGLayerGetContext(newLayer); [self renderAsVectorInContext:layerContext - atPoint:CPTPointMake(layerSize.width * CPTFloat(0.5), layerSize.height * CPTFloat(0.5) ) + atPoint:CPTPointMake( layerSize.width * CPTFloat(0.5), layerSize.height * CPTFloat(0.5) ) scale:scale]; self.cachedLayer = newLayer; @@ -507,8 +507,8 @@ -(void)renderInContext:(nonnull CGContextRef)context atPoint:(CGPoint)center sca CGSize symbolSize = self.size; - CGPoint origin = CPTPointMake(center.x - layerSize.width * CPTFloat(0.5) - symbolSize.width * (symbolAnchor.x - CPTFloat(0.5) ), - center.y - layerSize.height * CPTFloat(0.5) - symbolSize.height * (symbolAnchor.y - CPTFloat(0.5) ) ); + CGPoint origin = CPTPointMake( center.x - layerSize.width * CPTFloat(0.5) - symbolSize.width * ( symbolAnchor.x - CPTFloat(0.5) ), + center.y - layerSize.height * CPTFloat(0.5) - symbolSize.height * ( symbolAnchor.y - CPTFloat(0.5) ) ); if ( alignToPixels ) { if ( scale == CPTFloat(1.0) ) { @@ -599,12 +599,12 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context atPoint:(CGPoint)ce CPTShadow *myShadow = self.shadow; CGContextSaveGState(context); - CGContextTranslateCTM(context, center.x + (symbolAnchor.x - CPTFloat(0.5) ) * symbolSize.width, center.y + (symbolAnchor.y - CPTFloat(0.5) ) * symbolSize.height); + CGContextTranslateCTM(context, center.x + ( symbolAnchor.x - CPTFloat(0.5) ) * symbolSize.width, center.y + ( symbolAnchor.y - CPTFloat(0.5) ) * symbolSize.height); CGContextScaleCTM(context, scale, scale); [myShadow setShadowInContext:context]; // redraw only symbol rectangle - CGSize halfSize = CPTSizeMake(symbolSize.width * CPTFloat(0.5), symbolSize.height * CPTFloat(0.5) ); + CGSize halfSize = CPTSizeMake( symbolSize.width * CPTFloat(0.5), symbolSize.height * CPTFloat(0.5) ); CGRect bounds = CPTRectMake(-halfSize.width, -halfSize.height, symbolSize.width, symbolSize.height); CGRect symbolRect = bounds; @@ -612,7 +612,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context atPoint:(CGPoint)ce if ( myShadow ) { CGFloat shadowRadius = myShadow.shadowBlurRadius; CGSize shadowOffset = myShadow.shadowOffset; - symbolRect = CGRectInset(symbolRect, -(ABS(shadowOffset.width) + ABS(shadowRadius) ), -(ABS(shadowOffset.height) + ABS(shadowRadius) ) ); + symbolRect = CGRectInset( symbolRect, -( ABS(shadowOffset.width) + ABS(shadowRadius) ), -( ABS(shadowOffset.height) + ABS(shadowRadius) ) ); } if ( theLineStyle ) { CGFloat lineWidth = ABS(theLineStyle.lineWidth); @@ -666,7 +666,7 @@ -(nonnull CGPathRef)newSymbolPath { CGFloat dx, dy; CGSize symbolSize = self.size; - CGSize halfSize = CPTSizeMake(symbolSize.width * CPTFloat(0.5), symbolSize.height * CPTFloat(0.5) ); + CGSize halfSize = CPTSizeMake( symbolSize.width * CPTFloat(0.5), symbolSize.height * CPTFloat(0.5) ); CGMutablePathRef symbolPath = CGPathCreateMutable(); @@ -676,11 +676,11 @@ -(nonnull CGPathRef)newSymbolPath break; case CPTPlotSymbolTypeRectangle: - CGPathAddRect(symbolPath, NULL, CPTRectMake(-halfSize.width, -halfSize.height, symbolSize.width, symbolSize.height) ); + CGPathAddRect( symbolPath, NULL, CPTRectMake(-halfSize.width, -halfSize.height, symbolSize.width, symbolSize.height) ); break; case CPTPlotSymbolTypeEllipse: - CGPathAddEllipseInRect(symbolPath, NULL, CPTRectMake(-halfSize.width, -halfSize.height, symbolSize.width, symbolSize.height) ); + CGPathAddEllipseInRect( symbolPath, NULL, CPTRectMake(-halfSize.width, -halfSize.height, symbolSize.width, symbolSize.height) ); break; case CPTPlotSymbolTypeCross: @@ -693,38 +693,38 @@ -(nonnull CGPathRef)newSymbolPath case CPTPlotSymbolTypePlus: CGPathMoveToPoint(symbolPath, NULL, CPTFloat(0.0), halfSize.height); CGPathAddLineToPoint(symbolPath, NULL, CPTFloat(0.0), -halfSize.height); - CGPathMoveToPoint(symbolPath, NULL, -halfSize.width, CPTFloat(0.0) ); - CGPathAddLineToPoint(symbolPath, NULL, halfSize.width, CPTFloat(0.0) ); + CGPathMoveToPoint( symbolPath, NULL, -halfSize.width, CPTFloat(0.0) ); + CGPathAddLineToPoint( symbolPath, NULL, halfSize.width, CPTFloat(0.0) ); break; case CPTPlotSymbolTypePentagon: CGPathMoveToPoint(symbolPath, NULL, CPTFloat(0.0), halfSize.height); - CGPathAddLineToPoint(symbolPath, NULL, halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); - CGPathAddLineToPoint(symbolPath, NULL, halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); - CGPathAddLineToPoint(symbolPath, NULL, -halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); - CGPathAddLineToPoint(symbolPath, NULL, -halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); + CGPathAddLineToPoint( symbolPath, NULL, halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); + CGPathAddLineToPoint( symbolPath, NULL, halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); + CGPathAddLineToPoint( symbolPath, NULL, -halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); + CGPathAddLineToPoint( symbolPath, NULL, -halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); CGPathCloseSubpath(symbolPath); break; case CPTPlotSymbolTypeStar: CGPathMoveToPoint(symbolPath, NULL, CPTFloat(0.0), halfSize.height); - CGPathAddLineToPoint(symbolPath, NULL, halfSize.width * CPTFloat(0.22451398829), halfSize.height * CPTFloat(0.30901699437) ); - CGPathAddLineToPoint(symbolPath, NULL, halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); - CGPathAddLineToPoint(symbolPath, NULL, halfSize.width * CPTFloat(0.36327126400), -halfSize.height * CPTFloat(0.11803398875) ); - CGPathAddLineToPoint(symbolPath, NULL, halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); - CGPathAddLineToPoint(symbolPath, NULL, CPTFloat(0.0), -halfSize.height * CPTFloat(0.38196601125) ); - CGPathAddLineToPoint(symbolPath, NULL, -halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); - CGPathAddLineToPoint(symbolPath, NULL, -halfSize.width * CPTFloat(0.36327126400), -halfSize.height * CPTFloat(0.11803398875) ); - CGPathAddLineToPoint(symbolPath, NULL, -halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); - CGPathAddLineToPoint(symbolPath, NULL, -halfSize.width * CPTFloat(0.22451398829), halfSize.height * CPTFloat(0.30901699437) ); + CGPathAddLineToPoint( symbolPath, NULL, halfSize.width * CPTFloat(0.22451398829), halfSize.height * CPTFloat(0.30901699437) ); + CGPathAddLineToPoint( symbolPath, NULL, halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); + CGPathAddLineToPoint( symbolPath, NULL, halfSize.width * CPTFloat(0.36327126400), -halfSize.height * CPTFloat(0.11803398875) ); + CGPathAddLineToPoint( symbolPath, NULL, halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); + CGPathAddLineToPoint( symbolPath, NULL, CPTFloat(0.0), -halfSize.height * CPTFloat(0.38196601125) ); + CGPathAddLineToPoint( symbolPath, NULL, -halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); + CGPathAddLineToPoint( symbolPath, NULL, -halfSize.width * CPTFloat(0.36327126400), -halfSize.height * CPTFloat(0.11803398875) ); + CGPathAddLineToPoint( symbolPath, NULL, -halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); + CGPathAddLineToPoint( symbolPath, NULL, -halfSize.width * CPTFloat(0.22451398829), halfSize.height * CPTFloat(0.30901699437) ); CGPathCloseSubpath(symbolPath); break; case CPTPlotSymbolTypeDiamond: CGPathMoveToPoint(symbolPath, NULL, CPTFloat(0.0), halfSize.height); - CGPathAddLineToPoint(symbolPath, NULL, halfSize.width, CPTFloat(0.0) ); + CGPathAddLineToPoint( symbolPath, NULL, halfSize.width, CPTFloat(0.0) ); CGPathAddLineToPoint(symbolPath, NULL, CPTFloat(0.0), -halfSize.height); - CGPathAddLineToPoint(symbolPath, NULL, -halfSize.width, CPTFloat(0.0) ); + CGPathAddLineToPoint( symbolPath, NULL, -halfSize.width, CPTFloat(0.0) ); CGPathCloseSubpath(symbolPath); break; @@ -739,8 +739,8 @@ -(nonnull CGPathRef)newSymbolPath break; case CPTPlotSymbolTypeDash: - CGPathMoveToPoint(symbolPath, NULL, halfSize.width, CPTFloat(0.0) ); - CGPathAddLineToPoint(symbolPath, NULL, -halfSize.width, CPTFloat(0.0) ); + CGPathMoveToPoint( symbolPath, NULL, halfSize.width, CPTFloat(0.0) ); + CGPathAddLineToPoint( symbolPath, NULL, -halfSize.width, CPTFloat(0.0) ); break; case CPTPlotSymbolTypeHexagon: @@ -777,8 +777,8 @@ -(nonnull CGPathRef)newSymbolPath CGFloat dy1 = symbolSize.height / oldBounds.size.height; CGAffineTransform scaleTransform = CGAffineTransformScale(CGAffineTransformIdentity, dx1, dy1); - scaleTransform = CGAffineTransformConcat(scaleTransform, - CGAffineTransformMakeTranslation(-halfSize.width, -halfSize.height) ); + scaleTransform = CGAffineTransformConcat( scaleTransform, + CGAffineTransformMakeTranslation(-halfSize.width, -halfSize.height) ); CGPathAddPath(symbolPath, &scaleTransform, customPath); } } @@ -808,7 +808,7 @@ -(nullable id)debugQuickLookObject self.anchorPoint = CPTPointMake(0.5, 0.5); - [self renderAsVectorInContext:context atPoint:CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds) ) scale:scale]; + [self renderAsVectorInContext:context atPoint:CGPointMake( CGRectGetMidX(bounds), CGRectGetMidY(bounds) ) scale:scale]; self.anchorPoint = symbolAnchor; }); diff --git a/framework/Source/CPTRangePlot.m b/framework/Source/CPTRangePlot.m index 43ea065e8..c996e4a96 100644 --- a/framework/Source/CPTRangePlot.m +++ b/framework/Source/CPTRangePlot.m @@ -274,9 +274,9 @@ -(void)calculatePointsToDraw:(nonnull BOOL *)pointDrawFlags numberOfPoints:(NSUI } } else { - CPTPlotRangeComparisonResult *xRangeFlags = calloc(dataCount, sizeof(CPTPlotRangeComparisonResult) ); - CPTPlotRangeComparisonResult *yRangeFlags = calloc(dataCount, sizeof(CPTPlotRangeComparisonResult) ); - BOOL *nanFlags = calloc(dataCount, sizeof(BOOL) ); + CPTPlotRangeComparisonResult *xRangeFlags = calloc( dataCount, sizeof(CPTPlotRangeComparisonResult) ); + CPTPlotRangeComparisonResult *yRangeFlags = calloc( dataCount, sizeof(CPTPlotRangeComparisonResult) ); + BOOL *nanFlags = calloc( dataCount, sizeof(BOOL) ); CPTPlotRange *xRange = xyPlotSpace.xRange; CPTPlotRange *yRange = xyPlotSpace.yRange; @@ -465,17 +465,17 @@ -(void)alignViewPointsToUserSpace:(nonnull CGPointError *)viewPoints withContext if ( drawPointFlags[i] ) { CGFloat x = viewPoints[i].x; CGFloat y = viewPoints[i].y; - CGPoint pos = CPTAlignPointToUserSpace(context, CPTPointMake(viewPoints[i].x, viewPoints[i].y) ); + CGPoint pos = CPTAlignPointToUserSpace( context, CPTPointMake(viewPoints[i].x, viewPoints[i].y) ); viewPoints[i].x = pos.x; viewPoints[i].y = pos.y; - pos = CPTAlignPointToUserSpace(context, CPTPointMake(x, viewPoints[i].high) ); + pos = CPTAlignPointToUserSpace( context, CPTPointMake(x, viewPoints[i].high) ); viewPoints[i].high = pos.y; - pos = CPTAlignPointToUserSpace(context, CPTPointMake(x, viewPoints[i].low) ); + pos = CPTAlignPointToUserSpace( context, CPTPointMake(x, viewPoints[i].low) ); viewPoints[i].low = pos.y; - pos = CPTAlignPointToUserSpace(context, CPTPointMake(viewPoints[i].left, y) ); + pos = CPTAlignPointToUserSpace( context, CPTPointMake(viewPoints[i].left, y) ); viewPoints[i].left = pos.x; - pos = CPTAlignPointToUserSpace(context, CPTPointMake(viewPoints[i].right, y) ); + pos = CPTAlignPointToUserSpace( context, CPTPointMake(viewPoints[i].right, y) ); viewPoints[i].right = pos.x; } }); @@ -485,17 +485,17 @@ -(void)alignViewPointsToUserSpace:(nonnull CGPointError *)viewPoints withContext if ( drawPointFlags[i] ) { CGFloat x = viewPoints[i].x; CGFloat y = viewPoints[i].y; - CGPoint pos = CPTAlignIntegralPointToUserSpace(context, CPTPointMake(viewPoints[i].x, viewPoints[i].y) ); + CGPoint pos = CPTAlignIntegralPointToUserSpace( context, CPTPointMake(viewPoints[i].x, viewPoints[i].y) ); viewPoints[i].x = pos.x; viewPoints[i].y = pos.y; - pos = CPTAlignIntegralPointToUserSpace(context, CPTPointMake(x, viewPoints[i].high) ); + pos = CPTAlignIntegralPointToUserSpace( context, CPTPointMake(x, viewPoints[i].high) ); viewPoints[i].high = pos.y; - pos = CPTAlignIntegralPointToUserSpace(context, CPTPointMake(x, viewPoints[i].low) ); + pos = CPTAlignIntegralPointToUserSpace( context, CPTPointMake(x, viewPoints[i].low) ); viewPoints[i].low = pos.y; - pos = CPTAlignIntegralPointToUserSpace(context, CPTPointMake(viewPoints[i].left, y) ); + pos = CPTAlignIntegralPointToUserSpace( context, CPTPointMake(viewPoints[i].left, y) ); viewPoints[i].left = pos.x; - pos = CPTAlignIntegralPointToUserSpace(context, CPTPointMake(viewPoints[i].right, y) ); + pos = CPTAlignIntegralPointToUserSpace( context, CPTPointMake(viewPoints[i].right, y) ); viewPoints[i].right = pos.x; } }); @@ -651,8 +651,8 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context [super renderAsVectorInContext:context]; // Calculate view points, and align to user space - CGPointError *viewPoints = calloc(dataCount, sizeof(CGPointError) ); - BOOL *drawPointFlags = calloc(dataCount, sizeof(BOOL) ); + CGPointError *viewPoints = calloc( dataCount, sizeof(CGPointError) ); + BOOL *drawPointFlags = calloc( dataCount, sizeof(BOOL) ); CPTXYPlotSpace *thePlotSpace = (CPTXYPlotSpace *)self.plotSpace; [self calculatePointsToDraw:drawPointFlags numberOfPoints:dataCount forPlotSpace:thePlotSpace includeVisiblePointsOnly:NO]; @@ -724,7 +724,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context CGPathRelease(fillPath); } - CGSize halfGapSize = CPTSizeMake(self.gapWidth * CPTFloat(0.5), self.gapHeight * CPTFloat(0.5) ); + CGSize halfGapSize = CPTSizeMake( self.gapWidth * CPTFloat(0.5), self.gapHeight * CPTFloat(0.5) ); CGFloat halfBarWidth = self.barWidth * CPTFloat(0.5); BOOL alignPoints = self.alignsPointsToPixels; @@ -753,7 +753,7 @@ -(void)drawRangeInContext:(nonnull CGContextRef)context CPTAlignPointFunction alignmentFunction = CPTAlignPointToUserSpace; CGFloat lineWidth = lineStyle.lineWidth; - if ( (self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { + if ( ( self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { alignmentFunction = CPTAlignIntegralPointToUserSpace; } @@ -898,7 +898,7 @@ -(void)drawSwatchForLegend:(nonnull CPTLegend *)legend atIndex:(NSUInteger)idx i [self drawRangeInContext:context lineStyle:theBarLineStyle viewPoint:&viewPoint - halfGapSize:CPTSizeMake(MIN(self.gapWidth, rect.size.width / CPTFloat(2.0) ) * CPTFloat(0.5), MIN(self.gapHeight, rect.size.height / CPTFloat(2.0) ) * CPTFloat(0.5) ) + halfGapSize:CPTSizeMake( MIN( self.gapWidth, rect.size.width / CPTFloat(2.0) ) * CPTFloat(0.5), MIN( self.gapHeight, rect.size.height / CPTFloat(2.0) ) * CPTFloat(0.5) ) halfBarWidth:MIN(MIN(self.barWidth, rect.size.width), rect.size.height) * CPTFloat(0.5) alignPoints:YES]; } @@ -1023,7 +1023,7 @@ -(void)positionLabelAnnotation:(nonnull CPTPlotSpaceAnnotation *)label forIndex: BOOL positiveDirection = YES; CPTPlotRange *yRange = [self.plotSpace plotRangeForCoordinate:CPTCoordinateY]; - if ( CPTDecimalLessThan(yRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalLessThan( yRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { positiveDirection = !positiveDirection; } @@ -1048,8 +1048,8 @@ -(void)positionLabelAnnotation:(nonnull CPTPlotSpaceAnnotation *)label forIndex: -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point { NSUInteger dataCount = self.cachedDataCount; - CGPointError *viewPoints = calloc(dataCount, sizeof(CGPointError) ); - BOOL *drawPointFlags = calloc(dataCount, sizeof(BOOL) ); + CGPointError *viewPoints = calloc( dataCount, sizeof(CGPointError) ); + BOOL *drawPointFlags = calloc( dataCount, sizeof(BOOL) ); [self calculatePointsToDraw:drawPointFlags numberOfPoints:dataCount forPlotSpace:(id)self.plotSpace includeVisiblePointsOnly:YES]; [self calculateViewPoints:viewPoints withDrawPointFlags:drawPointFlags numberOfPoints:dataCount]; diff --git a/framework/Source/CPTScatterPlot.m b/framework/Source/CPTScatterPlot.m index be517abd9..29ad5128a 100644 --- a/framework/Source/CPTScatterPlot.m +++ b/framework/Source/CPTScatterPlot.m @@ -483,9 +483,9 @@ -(void)calculatePointsToDraw:(nonnull BOOL *)pointDrawFlags forPlotSpace:(nonnul } } else { - CPTPlotRangeComparisonResult *xRangeFlags = calloc(dataCount, sizeof(CPTPlotRangeComparisonResult) ); - CPTPlotRangeComparisonResult *yRangeFlags = calloc(dataCount, sizeof(CPTPlotRangeComparisonResult) ); - BOOL *nanFlags = calloc(dataCount, sizeof(BOOL) ); + CPTPlotRangeComparisonResult *xRangeFlags = calloc( dataCount, sizeof(CPTPlotRangeComparisonResult) ); + CPTPlotRangeComparisonResult *yRangeFlags = calloc( dataCount, sizeof(CPTPlotRangeComparisonResult) ); + BOOL *nanFlags = calloc( dataCount, sizeof(BOOL) ); CPTPlotRange *xRange = xyPlotSpace.xRange; CPTPlotRange *yRange = xyPlotSpace.yRange; @@ -536,7 +536,7 @@ -(void)calculatePointsToDraw:(nonnull BOOL *)pointDrawFlags forPlotSpace:(nonnul // are included. This ensures no lines are left out that shouldn't be. CPTScatterPlotInterpolation theInterpolation = self.interpolation; - memset(pointDrawFlags, NO, dataCount * sizeof(BOOL) ); + memset( pointDrawFlags, NO, dataCount * sizeof(BOOL) ); if ( dataCount > 0 ) { pointDrawFlags[0] = (xRangeFlags[0] == CPTPlotRangeComparisonResultNumberInRange && yRangeFlags[0] == CPTPlotRangeComparisonResultNumberInRange && @@ -718,8 +718,8 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point -(NSUInteger)indexOfVisiblePointClosestToPlotAreaPoint:(CGPoint)viewPoint { NSUInteger dataCount = self.cachedDataCount; - CGPoint *viewPoints = calloc(dataCount, sizeof(CGPoint) ); - BOOL *drawPointFlags = calloc(dataCount, sizeof(BOOL) ); + CGPoint *viewPoints = calloc( dataCount, sizeof(CGPoint) ); + BOOL *drawPointFlags = calloc( dataCount, sizeof(BOOL) ); [self calculatePointsToDraw:drawPointFlags forPlotSpace:(id)self.plotSpace includeVisiblePointsOnly:YES numberOfPoints:dataCount]; [self calculateViewPoints:viewPoints withDrawPointFlags:drawPointFlags numberOfPoints:dataCount]; @@ -804,8 +804,8 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context [super renderAsVectorInContext:context]; // Calculate view points, and align to user space - CGPoint *viewPoints = calloc(dataCount, sizeof(CGPoint) ); - BOOL *drawPointFlags = calloc(dataCount, sizeof(BOOL) ); + CGPoint *viewPoints = calloc( dataCount, sizeof(CGPoint) ); + BOOL *drawPointFlags = calloc( dataCount, sizeof(BOOL) ); CPTXYPlotSpace *thePlotSpace = (CPTXYPlotSpace *)self.plotSpace; [self calculatePointsToDraw:drawPointFlags forPlotSpace:thePlotSpace includeVisiblePointsOnly:NO numberOfPoints:dataCount]; @@ -848,7 +848,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context break; } if ( !NSDecimalIsNotANumber(&theAreaBaseValue) ) { - if ( theFill || ( (i == 0) && fillBands ) ) { + if ( theFill || ( (i == 0) && fillBands) ) { // clear the plot shadow if any--not needed for fills when the plot has a data line if ( theLineStyle ) { CGContextSaveGState(context); @@ -874,7 +874,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context // Draw fill bands if ( (i == 0) && fillBands ) { - CGFloat height = CPTFloat(CGBitmapContextGetHeight(context) ); + CGFloat height = CPTFloat( CGBitmapContextGetHeight(context) ); for ( CPTLimitBand *band in fillBands ) { CGContextSaveGState(context); @@ -892,7 +892,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context maxPoint = CPTAlignIntegralPointToUserSpace(context, maxPoint); } - CGContextClipToRect(context, CGRectMake(minPoint.x, 0.0, maxPoint.x - minPoint.x, height) ); + CGContextClipToRect( context, CGRectMake(minPoint.x, 0.0, maxPoint.x - minPoint.x, height) ); CGContextBeginPath(context); CGContextAddPath(context, dataLinePath); @@ -1054,8 +1054,8 @@ -(nonnull CGPathRef)newCurvedDataLinePathForViewPoints:(nonnull CGPoint *)viewPo CPTScatterPlotCurvedInterpolationOption interpolationOption = self.curvedInterpolationOption; if ( lastDrawnPointIndex > 0 ) { - CGPoint *controlPoints1 = calloc(lastDrawnPointIndex, sizeof(CGPoint) ); - CGPoint *controlPoints2 = calloc(lastDrawnPointIndex, sizeof(CGPoint) ); + CGPoint *controlPoints1 = calloc( lastDrawnPointIndex, sizeof(CGPoint) ); + CGPoint *controlPoints2 = calloc( lastDrawnPointIndex, sizeof(CGPoint) ); lastDrawnPointIndex--; @@ -1208,13 +1208,13 @@ -(nonnull CGPathRef)newCurvedDataLinePathForViewPoints:(nonnull CGPoint *)viewPo // add the control points CGPathMoveToPoint(dataLinePath, NULL, cp1.x - CPTFloat(5.0), cp1.y); CGPathAddLineToPoint(dataLinePath, NULL, cp1.x + CPTFloat(5.0), cp1.y); - CGPathMoveToPoint(dataLinePath, NULL, cp1.x, cp1.y - CPTFloat(5.0) ); - CGPathAddLineToPoint(dataLinePath, NULL, cp1.x, cp1.y + CPTFloat(5.0) ); + CGPathMoveToPoint( dataLinePath, NULL, cp1.x, cp1.y - CPTFloat(5.0) ); + CGPathAddLineToPoint( dataLinePath, NULL, cp1.x, cp1.y + CPTFloat(5.0) ); - CGPathMoveToPoint(dataLinePath, NULL, cp2.x - CPTFloat(3.5), cp2.y - CPTFloat(3.5) ); - CGPathAddLineToPoint(dataLinePath, NULL, cp2.x + CPTFloat(3.5), cp2.y + CPTFloat(3.5) ); - CGPathMoveToPoint(dataLinePath, NULL, cp2.x + CPTFloat(3.5), cp2.y - CPTFloat(3.5) ); - CGPathAddLineToPoint(dataLinePath, NULL, cp2.x - CPTFloat(3.5), cp2.y + CPTFloat(3.5) ); + CGPathMoveToPoint( dataLinePath, NULL, cp2.x - CPTFloat(3.5), cp2.y - CPTFloat(3.5) ); + CGPathAddLineToPoint( dataLinePath, NULL, cp2.x + CPTFloat(3.5), cp2.y + CPTFloat(3.5) ); + CGPathMoveToPoint( dataLinePath, NULL, cp2.x + CPTFloat(3.5), cp2.y - CPTFloat(3.5) ); + CGPathAddLineToPoint( dataLinePath, NULL, cp2.x - CPTFloat(3.5), cp2.y + CPTFloat(3.5) ); // add a line connecting the control points CGPathMoveToPoint(dataLinePath, NULL, cp1.x, cp1.y); @@ -1285,12 +1285,12 @@ -(void)computeCatmullRomControlPoints:(nonnull CGPoint *)points points2:(nonnull CGFloat d2 = hypot(p2.x - p1.x, p2.y - p1.y); CGFloat d3 = hypot(p3.x - p2.x, p3.y - p2.y); // constants - CGFloat d1_a = pow(d1, alpha); // d1^alpha - CGFloat d2_a = pow(d2, alpha); // d2^alpha - CGFloat d3_a = pow(d3, alpha); // d3^alpha - CGFloat d1_2a = pow(d1_a, CPTFloat(2.0) ); // d1^alpha^2 = d1^2*alpha - CGFloat d2_2a = pow(d2_a, CPTFloat(2.0) ); // d2^alpha^2 = d2^2*alpha - CGFloat d3_2a = pow(d3_a, CPTFloat(2.0) ); // d3^alpha^2 = d3^2*alpha + CGFloat d1_a = pow(d1, alpha); // d1^alpha + CGFloat d2_a = pow(d2, alpha); // d2^alpha + CGFloat d3_a = pow(d3, alpha); // d3^alpha + CGFloat d1_2a = pow( d1_a, CPTFloat(2.0) ); // d1^alpha^2 = d1^2*alpha + CGFloat d2_2a = pow( d2_a, CPTFloat(2.0) ); // d2^alpha^2 = d2^2*alpha + CGFloat d3_2a = pow( d3_a, CPTFloat(2.0) ); // d3^alpha^2 = d3^2*alpha // calculate the control points // see : http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf under point 3. @@ -1311,7 +1311,7 @@ -(void)computeCatmullRomControlPoints:(nonnull CGPoint *)points points2:(nonnull else { CGFloat divisor = 3 * d3_a * (d3_a + d2_a); cp2 = CPTPointMake( (d3_2a * p1.x - d2_2a * p3.x + (2 * d3_2a + 3 * d3_a * d2_a + d2_2a) * p2.x) / divisor, - (d3_2a * p1.y - d2_2a * p3.y + (2 * d3_2a + 3 * d3_a * d2_a + d2_2a) * p2.y) / divisor ); + (d3_2a * p1.y - d2_2a * p3.y + (2 * d3_2a + 3 * d3_a * d2_a + d2_2a) * p2.y) / divisor); } points[index + 1] = cp1; @@ -1484,10 +1484,10 @@ -(void)computeBezierControlPoints:(nonnull CGPoint *)cp1 points2:(nonnull CGPoin NSUInteger n = indexRange.length - 1; // rhs vector - CGPoint *a = calloc(n, sizeof(CGPoint) ); - CGPoint *b = calloc(n, sizeof(CGPoint) ); - CGPoint *c = calloc(n, sizeof(CGPoint) ); - CGPoint *r = calloc(n, sizeof(CGPoint) ); + CGPoint *a = calloc( n, sizeof(CGPoint) ); + CGPoint *b = calloc( n, sizeof(CGPoint) ); + CGPoint *c = calloc( n, sizeof(CGPoint) ); + CGPoint *r = calloc( n, sizeof(CGPoint) ); // left most segment a[0] = CGPointZero; @@ -1535,10 +1535,10 @@ -(void)computeBezierControlPoints:(nonnull CGPoint *)cp1 points2:(nonnull CGPoin r[n - 1].y / b[n - 1].y); for ( NSUInteger i = n - 2; i > 0; i-- ) { cp1[indexRange.location + i + 1] = CGPointMake( (r[i].x - c[i].x * cp1[indexRange.location + i + 2].x) / b[i].x, - (r[i].y - c[i].y * cp1[indexRange.location + i + 2].y) / b[i].y ); + (r[i].y - c[i].y * cp1[indexRange.location + i + 2].y) / b[i].y); } cp1[indexRange.location + 1] = CGPointMake( (r[0].x - c[0].x * cp1[indexRange.location + 2].x) / b[0].x, - (r[0].y - c[0].y * cp1[indexRange.location + 2].y) / b[0].y ); + (r[0].y - c[0].y * cp1[indexRange.location + 2].y) / b[0].y); // we have p1, now compute p2 NSUInteger rangeEnd = NSMaxRange(indexRange) - 1; @@ -1547,8 +1547,8 @@ -(void)computeBezierControlPoints:(nonnull CGPoint *)cp1 points2:(nonnull CGPoin CPTFloat(2.0) * viewPoints[i].y - cp1[i + 1].y); } - cp2[rangeEnd] = CGPointMake(CPTFloat(0.5) * (viewPoints[rangeEnd].x + cp1[rangeEnd].x), - CPTFloat(0.5) * (viewPoints[rangeEnd].y + cp1[rangeEnd].y) ); + cp2[rangeEnd] = CGPointMake( CPTFloat(0.5) * (viewPoints[rangeEnd].x + cp1[rangeEnd].x), + CPTFloat(0.5) * (viewPoints[rangeEnd].y + cp1[rangeEnd].y) ); // clean up free(a); @@ -1568,8 +1568,8 @@ -(void)drawSwatchForLegend:(nonnull CPTLegend *)legend atIndex:(NSUInteger)idx i if ( theLineStyle ) { [theLineStyle setLineStyleInContext:context]; - CGPoint alignedStartPoint = CPTAlignPointToUserSpace(context, CPTPointMake(CGRectGetMinX(rect), CGRectGetMidY(rect) ) ); - CGPoint alignedEndPoint = CPTAlignPointToUserSpace(context, CPTPointMake(CGRectGetMaxX(rect), CGRectGetMidY(rect) ) ); + CGPoint alignedStartPoint = CPTAlignPointToUserSpace( context, CPTPointMake( CGRectGetMinX(rect), CGRectGetMidY(rect) ) ); + CGPoint alignedEndPoint = CPTAlignPointToUserSpace( context, CPTPointMake( CGRectGetMaxX(rect), CGRectGetMidY(rect) ) ); CGContextMoveToPoint(context, alignedStartPoint.x, alignedStartPoint.y); CGContextAddLineToPoint(context, alignedEndPoint.x, alignedEndPoint.y); @@ -1580,7 +1580,7 @@ -(void)drawSwatchForLegend:(nonnull CPTLegend *)legend atIndex:(NSUInteger)idx i if ( thePlotSymbol ) { [thePlotSymbol renderInContext:context - atPoint:CPTPointMake(CGRectGetMidX(rect), CGRectGetMidY(rect) ) + atPoint:CPTPointMake( CGRectGetMidX(rect), CGRectGetMidY(rect) ) scale:self.contentsScale alignToPixels:YES]; } @@ -1609,12 +1609,12 @@ -(void)drawSwatchForLegend:(nonnull CPTLegend *)legend atIndex:(NSUInteger)idx i CGContextClip(context); if ( CPTDecimalGreaterThanOrEqualTo(self.areaBaseValue2.decimalValue, self.areaBaseValue.decimalValue) ) { - [fill1 fillRect:CPTRectMake(CGRectGetMinX(rect), CGRectGetMinY(rect), rect.size.width, rect.size.height / CPTFloat(2.0) ) inContext:context]; - [fill2 fillRect:CPTRectMake(CGRectGetMinX(rect), CGRectGetMidY(rect), rect.size.width, rect.size.height / CPTFloat(2.0) ) inContext:context]; + [fill1 fillRect:CPTRectMake( CGRectGetMinX(rect), CGRectGetMinY(rect), rect.size.width, rect.size.height / CPTFloat(2.0) ) inContext:context]; + [fill2 fillRect:CPTRectMake( CGRectGetMinX(rect), CGRectGetMidY(rect), rect.size.width, rect.size.height / CPTFloat(2.0) ) inContext:context]; } else { - [fill2 fillRect:CPTRectMake(CGRectGetMinX(rect), CGRectGetMinY(rect), rect.size.width, rect.size.height / CPTFloat(2.0) ) inContext:context]; - [fill1 fillRect:CPTRectMake(CGRectGetMinX(rect), CGRectGetMidY(rect), rect.size.width, rect.size.height / CPTFloat(2.0) ) inContext:context]; + [fill2 fillRect:CPTRectMake( CGRectGetMinX(rect), CGRectGetMinY(rect), rect.size.width, rect.size.height / CPTFloat(2.0) ) inContext:context]; + [fill1 fillRect:CPTRectMake( CGRectGetMinX(rect), CGRectGetMidY(rect), rect.size.width, rect.size.height / CPTFloat(2.0) ) inContext:context]; } CGContextRestoreGState(context); @@ -1636,8 +1636,8 @@ -(nonnull CGPathRef)newDataLinePath } // Calculate view points - CGPoint *viewPoints = calloc(dataCount, sizeof(CGPoint) ); - BOOL *drawPointFlags = calloc(dataCount, sizeof(BOOL) ); + CGPoint *viewPoints = calloc( dataCount, sizeof(CGPoint) ); + BOOL *drawPointFlags = calloc( dataCount, sizeof(BOOL) ); for ( NSUInteger i = 0; i < dataCount; i++ ) { drawPointFlags[i] = YES; @@ -1703,8 +1703,8 @@ -(nullable CPTPlotRange *)plotRangeEnclosingField:(NSUInteger)fieldEnum CGPathRelease(dataLinePath); CPTNumberArray *lowerLeft = [space plotPointForPlotAreaViewPoint:boundingBox.origin]; - CPTNumberArray *upperRight = [space plotPointForPlotAreaViewPoint:CGPointMake(CGRectGetMaxX(boundingBox), - CGRectGetMaxY(boundingBox) )]; + CPTNumberArray *upperRight = [space plotPointForPlotAreaViewPoint:CGPointMake( CGRectGetMaxX(boundingBox), + CGRectGetMaxY(boundingBox) )]; switch ( fieldEnum ) { case CPTScatterPlotFieldX: @@ -1808,7 +1808,7 @@ -(void)positionLabelAnnotation:(nonnull CPTPlotSpaceAnnotation *)label forIndex: BOOL positiveDirection = YES; CPTPlotRange *yRange = [self.plotSpace plotRangeForCoordinate:CPTCoordinateY]; - if ( CPTDecimalLessThan(yRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalLessThan( yRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { positiveDirection = !positiveDirection; } @@ -1939,7 +1939,7 @@ -(BOOL)pointingDeviceDownEvent:(nonnull CPTNativeEvent *)event atPoint:(CGPoint) CGFloat margin = self.plotSymbolMarginForHitDetection * CPTFloat(2.0); symbolRect.size.width += margin; symbolRect.size.height += margin; - symbolRect.origin = CPTPointMake(center.x - CPTFloat(0.5) * CGRectGetWidth(symbolRect), center.y - CPTFloat(0.5) * CGRectGetHeight(symbolRect) ); + symbolRect.origin = CPTPointMake( center.x - CPTFloat(0.5) * CGRectGetWidth(symbolRect), center.y - CPTFloat(0.5) * CGRectGetHeight(symbolRect) ); if ( CGRectContainsPoint(symbolRect, plotAreaPoint) ) { self.pointingDeviceDownIndex = idx; @@ -2056,7 +2056,7 @@ -(BOOL)pointingDeviceUpEvent:(nonnull CPTNativeEvent *)event atPoint:(CGPoint)in CGFloat margin = self.plotSymbolMarginForHitDetection * CPTFloat(2.0); symbolRect.size.width += margin; symbolRect.size.height += margin; - symbolRect.origin = CPTPointMake(center.x - CPTFloat(0.5) * CGRectGetWidth(symbolRect), center.y - CPTFloat(0.5) * CGRectGetHeight(symbolRect) ); + symbolRect.origin = CPTPointMake( center.x - CPTFloat(0.5) * CGRectGetWidth(symbolRect), center.y - CPTFloat(0.5) * CGRectGetHeight(symbolRect) ); if ( CGRectContainsPoint(symbolRect, plotAreaPoint) ) { self.pointingDeviceDownIndex = idx; @@ -2137,8 +2137,8 @@ -(BOOL)plotWasLineHitByInteractionPoint:(CGPoint)interactionPoint NSUInteger dataCount = self.cachedDataCount; if ( theGraph && thePlotArea && !self.hidden && dataCount ) { - CGPoint *viewPoints = calloc(dataCount, sizeof(CGPoint) ); - BOOL *drawPointFlags = calloc(dataCount, sizeof(BOOL) ); + CGPoint *viewPoints = calloc( dataCount, sizeof(CGPoint) ); + BOOL *drawPointFlags = calloc( dataCount, sizeof(BOOL) ); CPTXYPlotSpace *thePlotSpace = (CPTXYPlotSpace *)self.plotSpace; [self calculatePointsToDraw:drawPointFlags forPlotSpace:thePlotSpace includeVisiblePointsOnly:NO numberOfPoints:dataCount]; @@ -2150,12 +2150,12 @@ -(BOOL)plotWasLineHitByInteractionPoint:(CGPoint)interactionPoint NSRange viewIndexRange = NSMakeRange( (NSUInteger)firstDrawnPointIndex, (NSUInteger)(lastDrawnPointIndex - firstDrawnPointIndex + 1) ); CGPathRef dataLinePath = [self newDataLinePathForViewPoints:viewPoints indexRange:viewIndexRange baselineYValue:CPTNAN]; - CGPathRef path = CGPathCreateCopyByStrokingPath(dataLinePath, - NULL, - self.plotLineMarginForHitDetection * CPTFloat(2.0), - kCGLineCapRound, - kCGLineJoinRound, - CPTFloat(3.0) ); + CGPathRef path = CGPathCreateCopyByStrokingPath( dataLinePath, + NULL, + self.plotLineMarginForHitDetection * CPTFloat(2.0), + kCGLineCapRound, + kCGLineJoinRound, + CPTFloat(3.0) ); CGPoint plotAreaPoint = [theGraph convertPoint:interactionPoint toLayer:thePlotArea]; diff --git a/framework/Source/CPTScatterPlotTests.m b/framework/Source/CPTScatterPlotTests.m index 468bb2a08..b599bae77 100644 --- a/framework/Source/CPTScatterPlotTests.m +++ b/framework/Source/CPTScatterPlotTests.m @@ -42,7 +42,7 @@ -(void)testCalculatePointsToDrawAllInRange { CPTNumberArray *inRangeValues = @[@0.1, @0.2, @0.15, @0.6, @0.9]; - BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL) ); + BOOL *drawFlags = calloc( inRangeValues.count, sizeof(BOOL) ); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -60,7 +60,7 @@ -(void)testCalculatePointsToDrawAllInRangeVisibleOnly { CPTNumberArray *inRangeValues = @[@0.1, @0.2, @0.15, @0.6, @0.9]; - BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL) ); + BOOL *drawFlags = calloc( inRangeValues.count, sizeof(BOOL) ); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -78,7 +78,7 @@ -(void)testCalculatePointsToDrawNoneInRange { CPTNumberArray *inRangeValues = @[@(-0.1), @(-0.2), @(-0.15), @(-0.6), @(-0.9)]; - BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL) ); + BOOL *drawFlags = calloc( inRangeValues.count, sizeof(BOOL) ); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -96,7 +96,7 @@ -(void)testCalculatePointsToDrawNoneInRangeVisibleOnly { CPTNumberArray *inRangeValues = @[@(-0.1), @(-0.2), @(-0.15), @(-0.6), @(-0.9)]; - BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL) ); + BOOL *drawFlags = calloc( inRangeValues.count, sizeof(BOOL) ); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -114,7 +114,7 @@ -(void)testCalculatePointsToDrawNoneInRangeDifferentRegions { CPTNumberArray *inRangeValues = @[@(-0.1), @2, @(-0.15), @3, @(-0.9)]; - BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL) ); + BOOL *drawFlags = calloc( inRangeValues.count, sizeof(BOOL) ); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -132,7 +132,7 @@ -(void)testCalculatePointsToDrawNoneInRangeDifferentRegionsVisibleOnly { CPTNumberArray *inRangeValues = @[@(-0.1), @2, @(-0.15), @3, @(-0.9)]; - BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL) ); + BOOL *drawFlags = calloc( inRangeValues.count, sizeof(BOOL) ); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -151,7 +151,7 @@ -(void)testCalculatePointsToDrawSomeInRange CPTNumberArray *inRangeValues = @[@(-0.1), @0.1, @0.2, @1.2, @1.5]; BOOL expected[5] = { YES, YES, YES, YES, NO }; - BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL) ); + BOOL *drawFlags = calloc( inRangeValues.count, sizeof(BOOL) ); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -173,7 +173,7 @@ -(void)testCalculatePointsToDrawSomeInRangeVisibleOnly { CPTNumberArray *inRangeValues = @[@(-0.1), @0.1, @0.2, @1.2, @1.5]; - BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL) ); + BOOL *drawFlags = calloc( inRangeValues.count, sizeof(BOOL) ); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -196,8 +196,8 @@ -(void)testCalculatePointsToDrawSomeInRangeCrossing { CPTNumberArray *inRangeValues = @[@(-0.1), @1.1, @0.9, @(-0.1), @(-0.2)]; - BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL) ); - BOOL *expected = calloc(inRangeValues.count, sizeof(BOOL) ); + BOOL *drawFlags = calloc( inRangeValues.count, sizeof(BOOL) ); + BOOL *expected = calloc( inRangeValues.count, sizeof(BOOL) ); for ( NSUInteger i = 0; i < inRangeValues.count - 1; i++ ) { expected[i] = YES; @@ -226,7 +226,7 @@ -(void)testCalculatePointsToDrawSomeInRangeCrossingVisibleOnly { CPTNumberArray *inRangeValues = @[@(-0.1), @1.1, @0.9, @(-0.1), @(-0.2)]; - BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL) ); + BOOL *drawFlags = calloc( inRangeValues.count, sizeof(BOOL) ); CPTXYPlotSpace *thePlotSpace = self.plotSpace; diff --git a/framework/Source/CPTShadow.m b/framework/Source/CPTShadow.m index cf42dc2fd..bd26fc5bf 100644 --- a/framework/Source/CPTShadow.m +++ b/framework/Source/CPTShadow.m @@ -174,7 +174,7 @@ -(nonnull id)mutableCopyWithZone:(nullable NSZone *)zone -(void)setShadowBlurRadius:(CGFloat)newShadowBlurRadius { - NSParameterAssert(newShadowBlurRadius >= CPTFloat(0.0) ); + NSParameterAssert( newShadowBlurRadius >= CPTFloat(0.0) ); if ( newShadowBlurRadius != shadowBlurRadius ) { shadowBlurRadius = newShadowBlurRadius; diff --git a/framework/Source/CPTTextLayer.m b/framework/Source/CPTTextLayer.m index 50073d834..97a475e77 100644 --- a/framework/Source/CPTTextLayer.m +++ b/framework/Source/CPTTextLayer.m @@ -381,7 +381,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context #if TARGET_OS_SIMULATOR || TARGET_OS_IPHONE CGContextSaveGState(context); CGContextTranslateCTM(context, CPTFloat(0.0), self.bounds.size.height); - CGContextScaleCTM(context, CPTFloat(1.0), CPTFloat(-1.0) ); + CGContextScaleCTM( context, CPTFloat(1.0), CPTFloat(-1.0) ); #endif CGRect newBounds = CGRectInset(self.bounds, kCPTTextLayerMarginWidth, kCPTTextLayerMarginWidth); diff --git a/framework/Source/CPTTradingRangePlot.m b/framework/Source/CPTTradingRangePlot.m index 75d592a6f..b0b10c3fc 100644 --- a/framework/Source/CPTTradingRangePlot.m +++ b/framework/Source/CPTTradingRangePlot.m @@ -816,13 +816,13 @@ -(void)drawCandleStickInContext:(nonnull CGContextRef)context [theBorderLineStyle setLineStyleInContext:context]; CGFloat lineWidth = theBorderLineStyle.lineWidth; - if ( (self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { + if ( ( self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { alignmentFunction = CPTAlignIntegralPointToUserSpace; } } // high - low only - if ( hasLineStyle && !isnan(highValue) && !isnan(lowValue) && (isnan(openValue) || isnan(closeValue) ) ) { + if ( hasLineStyle && !isnan(highValue) && !isnan(lowValue) && ( isnan(openValue) || isnan(closeValue) ) ) { CGPoint alignedHighPoint = CPTPointMake(x, highValue); CGPoint alignedLowPoint = CPTPointMake(x, lowValue); if ( alignPoints ) { @@ -845,7 +845,7 @@ -(void)drawCandleStickInContext:(nonnull CGContextRef)context if ( !isnan(openValue) && !isnan(closeValue) ) { if ( currentBarFill || hasLineStyle ) { CGFloat radius = MIN(self.barCornerRadius, halfBarWidth); - radius = MIN(radius, ABS(closeValue - openValue) ); + radius = MIN( radius, ABS(closeValue - openValue) ); CGPoint alignedPoint1 = CPTPointMake(x + halfBarWidth, openValue); CGPoint alignedPoint2 = CPTPointMake(x + halfBarWidth, closeValue); @@ -901,7 +901,7 @@ -(void)drawCandleStickInContext:(nonnull CGContextRef)context if ( !isnan(lowValue) ) { if ( lowValue < MIN(openValue, closeValue) ) { - CGPoint alignedStartPoint = CPTPointMake(x, MIN(openValue, closeValue) ); + CGPoint alignedStartPoint = CPTPointMake( x, MIN(openValue, closeValue) ); CGPoint alignedLowPoint = CPTPointMake(x, lowValue); if ( alignPoints ) { alignedStartPoint = alignmentFunction(context, alignedStartPoint); @@ -914,7 +914,7 @@ -(void)drawCandleStickInContext:(nonnull CGContextRef)context } if ( !isnan(highValue) ) { if ( highValue > MAX(openValue, closeValue) ) { - CGPoint alignedStartPoint = CPTPointMake(x, MAX(openValue, closeValue) ); + CGPoint alignedStartPoint = CPTPointMake( x, MAX(openValue, closeValue) ); CGPoint alignedHighPoint = CPTPointMake(x, highValue); if ( alignPoints ) { alignedStartPoint = alignmentFunction(context, alignedStartPoint); @@ -968,7 +968,7 @@ -(void)drawOHLCInContext:(nonnull CGContextRef)context CPTAlignPointFunction alignmentFunction = CPTAlignPointToUserSpace; CGFloat lineWidth = theLineStyle.lineWidth; - if ( (self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { + if ( ( self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { alignmentFunction = CPTAlignIntegralPointToUserSpace; } @@ -1218,7 +1218,7 @@ -(void)positionLabelAnnotation:(nonnull CPTPlotSpaceAnnotation *)label forIndex: BOOL positiveDirection = YES; CPTPlotRange *yRange = [self.plotSpace plotRangeForCoordinate:CPTCoordinateY]; - if ( CPTDecimalLessThan(yRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalLessThan( yRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { positiveDirection = !positiveDirection; } @@ -1370,8 +1370,8 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point lastViewX = closePoint.x; } - lastViewMin = MIN(MIN(openPoint.y, closePoint.y), MIN(highPoint.y, lowPoint.y) ); - lastViewMax = MAX(MAX(openPoint.y, closePoint.y), MAX(highPoint.y, lowPoint.y) ); + lastViewMin = MIN( MIN(openPoint.y, closePoint.y), MIN(highPoint.y, lowPoint.y) ); + lastViewMax = MAX( MAX(openPoint.y, closePoint.y), MAX(highPoint.y, lowPoint.y) ); } } } @@ -1463,8 +1463,8 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point lastViewX = closePoint.x; } - lastViewMin = MIN(MIN(openPoint.y, closePoint.y), MIN(highPoint.y, lowPoint.y) ); - lastViewMax = MAX(MAX(openPoint.y, closePoint.y), MAX(highPoint.y, lowPoint.y) ); + lastViewMin = MIN( MIN(openPoint.y, closePoint.y), MIN(highPoint.y, lowPoint.y) ); + lastViewMax = MAX( MAX(openPoint.y, closePoint.y), MAX(highPoint.y, lowPoint.y) ); } } } @@ -1482,7 +1482,7 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point break; } - if ( (point.x < (lastViewX - offset) ) || (point.x > (lastViewX + offset) ) ) { + if ( ( point.x < (lastViewX - offset) ) || ( point.x > (lastViewX + offset) ) ) { result = NSNotFound; } if ( (point.y < lastViewMin) || (point.y > lastViewMax) ) { diff --git a/framework/Source/CPTUtilities.m b/framework/Source/CPTUtilities.m index a2ee90bad..b5d05769d 100644 --- a/framework/Source/CPTUtilities.m +++ b/framework/Source/CPTUtilities.m @@ -774,11 +774,11 @@ NSDecimal CPTDecimalMax(NSDecimal leftOperand, NSDecimal rightOperand) **/ NSDecimal CPTDecimalAbs(NSDecimal value) { - if ( CPTDecimalGreaterThanOrEqualTo(value, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalGreaterThanOrEqualTo( value, CPTDecimalFromInteger(0) ) ) { return value; } else { - return CPTDecimalMultiply(value, CPTDecimalFromInteger(-1) ); + return CPTDecimalMultiply( value, CPTDecimalFromInteger(-1) ); } } @@ -800,7 +800,7 @@ NSRange CPTExpandedRange(NSRange range, NSInteger expandBy) NSInteger lowerExpansion = (NSInteger)range.location - loc; NSInteger length = MAX(0, (NSInteger)range.length + lowerExpansion + expandBy); - return NSMakeRange( (NSUInteger)loc, (NSUInteger)length ); + return NSMakeRange( (NSUInteger)loc, (NSUInteger)length); } #pragma mark - @@ -875,7 +875,7 @@ CGPoint CPTAlignPointToUserSpace(__nonnull CGContextRef context, CGPoint point) // Ensure that coordinates are at exactly the corner // of a device pixel. - point.x = round(point.x - CPTFloat(0.5) ) + CPTFloat(0.5); + point.x = round( point.x - CPTFloat(0.5) ) + CPTFloat(0.5); point.y = ceil(point.y) - CPTFloat(0.5); // Convert the device aligned coordinate back to user space. @@ -922,11 +922,11 @@ CGRect CPTAlignRectToUserSpace(__nonnull CGContextRef context, CGRect rect) CGPoint oldOrigin = rect.origin; - rect.origin.x = round(rect.origin.x - CPTFloat(0.5) ); - rect.size.width = round(oldOrigin.x + rect.size.width - CPTFloat(0.5) ) - rect.origin.x; + rect.origin.x = round( rect.origin.x - CPTFloat(0.5) ); + rect.size.width = round( oldOrigin.x + rect.size.width - CPTFloat(0.5) ) - rect.origin.x; rect.origin.x += CPTFloat(0.5); - rect.origin.y = ceil(CGRectGetMaxY(rect) ) - CPTFloat(0.5); + rect.origin.y = ceil( CGRectGetMaxY(rect) ) - CPTFloat(0.5); rect.size.height = ceil(oldOrigin.y - CPTFloat(0.5) - rect.origin.y); return CGContextConvertRectToUserSpace(context, rect); @@ -949,7 +949,7 @@ CGPoint CPTAlignIntegralPointToUserSpace(__nonnull CGContextRef context, CGPoint point = CGContextConvertPointToDeviceSpace(context, point); point.x = round(point.x); - point.y = ceil(point.y - CPTFloat(0.5) ); + point.y = ceil( point.y - CPTFloat(0.5) ); return CGContextConvertPointToUserSpace(context, point); } @@ -973,7 +973,7 @@ CGRect CPTAlignIntegralRectToUserSpace(__nonnull CGContextRef context, CGRect re rect.origin.x = round(rect.origin.x); rect.size.width = round(oldOrigin.x + rect.size.width) - rect.origin.x; - rect.origin.y = ceil(CGRectGetMaxY(rect) - CPTFloat(0.5) ); + rect.origin.y = ceil( CGRectGetMaxY(rect) - CPTFloat(0.5) ); rect.size.height = ceil(oldOrigin.y - CPTFloat(0.5) - rect.origin.y); return CGContextConvertRectToUserSpace(context, rect); @@ -991,7 +991,7 @@ CGRect CPTAlignBorderedRectToUserSpace(__nonnull CGContextRef context, CGRect re if ( contextScale != CPTFloat(1.0) ) { CGFloat borderWidth = borderLineStyle.lineWidth; - if ( (borderWidth > CPTFloat(0.0) ) && (borderWidth == round(borderWidth) ) ) { + if ( ( borderWidth > CPTFloat(0.0) ) && ( borderWidth == round(borderWidth) ) ) { borderRect = CPTAlignIntegralRectToUserSpace(context, rect); } else { @@ -1125,7 +1125,7 @@ BOOL CPTEdgeInsetsEqualToEdgeInsets(CPTEdgeInsets insets1, CPTEdgeInsets insets2 if ( value != 0.0 ) { double sign = (signbit(value) ? -1.0 : +1.0); - return sign * (pow(10.0, fabs(value) ) - 1.0); + return sign * (pow( 10.0, fabs(value) ) - 1.0); } else { return 0.0; diff --git a/framework/Source/CPTUtilitiesTests.m b/framework/Source/CPTUtilitiesTests.m index 7d2bf28d8..a90d52b7a 100644 --- a/framework/Source/CPTUtilitiesTests.m +++ b/framework/Source/CPTUtilitiesTests.m @@ -50,7 +50,7 @@ -(void)testCPTDecimalIntegerValue XCTAssertEqual(CPTDecimalIntegerValue([d decimalValue]), (NSInteger)42, @"Result incorrect"); d = [NSDecimalNumber decimalNumberWithString:@"42.1"]; - XCTAssertEqual( (NSInteger)CPTDecimalIntegerValue([d decimalValue]), (NSInteger)42, @"Result incorrect" ); + XCTAssertEqual( (NSInteger)CPTDecimalIntegerValue([d decimalValue]), (NSInteger)42, @"Result incorrect"); } -(void)testCPTDecimalFloatValue @@ -634,11 +634,11 @@ -(void)testInverseLogModulus { XCTAssertEqual(CPTInverseLogModulus(0.0), 0.0, @"CPTInverseLogModulus(0.0)"); - XCTAssertEqualWithAccuracy(CPTInverseLogModulus(log10(11.0) ), 10.0, 1.0e-7, @"CPTInverseLogModulus(log10(11.0))"); - XCTAssertEqualWithAccuracy(CPTInverseLogModulus(-log10(11.0) ), -10.0, 1.0e-7, @"CPTInverseLogModulus(-log10(11.0))"); + XCTAssertEqualWithAccuracy(CPTInverseLogModulus( log10(11.0) ), 10.0, 1.0e-7, @"CPTInverseLogModulus(log10(11.0))"); + XCTAssertEqualWithAccuracy(CPTInverseLogModulus( -log10(11.0) ), -10.0, 1.0e-7, @"CPTInverseLogModulus(-log10(11.0))"); - XCTAssertEqualWithAccuracy(CPTInverseLogModulus(log10(101.0) ), 100.0, 1.0e-7, @"CPTInverseLogModulus(log10(101.0))"); - XCTAssertEqualWithAccuracy(CPTInverseLogModulus(-log10(101.0) ), -100.0, 1.0e-7, @"CPTInverseLogModulus(-log10(101.0))"); + XCTAssertEqualWithAccuracy(CPTInverseLogModulus( log10(101.0) ), 100.0, 1.0e-7, @"CPTInverseLogModulus(log10(101.0))"); + XCTAssertEqualWithAccuracy(CPTInverseLogModulus( -log10(101.0) ), -100.0, 1.0e-7, @"CPTInverseLogModulus(-log10(101.0))"); } /// @endcond diff --git a/framework/Source/CPTXYAxis.m b/framework/Source/CPTXYAxis.m index 42a055cfa..5a3a62492 100644 --- a/framework/Source/CPTXYAxis.m +++ b/framework/Source/CPTXYAxis.m @@ -206,7 +206,7 @@ -(CGPoint)viewPointForCoordinateValue:(nullable NSNumber *)coordinateValue } if ( isnan(point.x) || isnan(point.y) ) { - NSLog(@"[CPTXYAxis viewPointForCoordinateValue:%@] was %@", coordinateValue, CPTStringFromPoint(point) ); + NSLog( @"[CPTXYAxis viewPointForCoordinateValue:%@] was %@", coordinateValue, CPTStringFromPoint(point) ); if ( isnan(point.x) ) { point.x = CPTFloat(0.0); @@ -237,7 +237,7 @@ -(void)drawTicksInContext:(nonnull CGContextRef)context atLocations:(nullable CP CGFloat lineWidth = lineStyle.lineWidth; CPTAlignPointFunction alignmentFunction = NULL; - if ( (self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { + if ( ( self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { alignmentFunction = CPTAlignIntegralPointToUserSpace; } else { @@ -348,7 +348,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context CPTAlignPointFunction alignmentFunction = CPTAlignPointToUserSpace; if ( theLineStyle ) { CGFloat lineWidth = theLineStyle.lineWidth; - if ( (self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { + if ( ( self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { alignmentFunction = CPTAlignIntegralPointToUserSpace; } @@ -443,7 +443,7 @@ -(void)drawGridLinesInContext:(nonnull CGContextRef)context isMajor:(BOOL)major CGFloat lineWidth = lineStyle.lineWidth; CPTAlignPointFunction alignmentFunction = NULL; - if ( (self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { + if ( ( self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { alignmentFunction = CPTAlignIntegralPointToUserSpace; } else { @@ -673,10 +673,10 @@ -(void)drawBackgroundBandsInContext:(nonnull CGContextRef)context CGPoint endViewPoint = [thePlotSpace plotAreaViewPointForPlotPoint:endPlotPoint numberOfCoordinates:2]; // Fill band - CGRect fillRect = CPTRectMake(MIN(startViewPoint.x, endViewPoint.x), - MIN(startViewPoint.y, endViewPoint.y), - ABS(endViewPoint.x - startViewPoint.x), - ABS(endViewPoint.y - startViewPoint.y) ); + CGRect fillRect = CPTRectMake( MIN(startViewPoint.x, endViewPoint.x), + MIN(startViewPoint.y, endViewPoint.y), + ABS(endViewPoint.x - startViewPoint.x), + ABS(endViewPoint.y - startViewPoint.y) ); [bandFill fillRect:CPTAlignIntegralRectToUserSpace(context, fillRect) inContext:context]; } } @@ -705,10 +705,10 @@ -(void)drawBackgroundBandsInContext:(nonnull CGContextRef)context CGPoint endViewPoint = [thePlotSpace plotAreaViewPointForPlotPoint:endPlotPoint numberOfCoordinates:2]; // Fill band - CGRect fillRect = CPTRectMake(MIN(startViewPoint.x, endViewPoint.x), - MIN(startViewPoint.y, endViewPoint.y), - ABS(endViewPoint.x - startViewPoint.x), - ABS(endViewPoint.y - startViewPoint.y) ); + CGRect fillRect = CPTRectMake( MIN(startViewPoint.x, endViewPoint.x), + MIN(startViewPoint.y, endViewPoint.y), + ABS(endViewPoint.x - startViewPoint.x), + ABS(endViewPoint.y - startViewPoint.y) ); [bandFill fillRect:CPTAlignIntegralRectToUserSpace(context, fillRect) inContext:context]; } } @@ -763,10 +763,10 @@ -(void)drawBackgroundLimitsInContext:(nonnull CGContextRef)context CGPoint endViewPoint = [thePlotSpace plotAreaViewPointForPlotPoint:endPlotPoint numberOfCoordinates:2]; // Fill band - CGRect fillRect = CPTRectMake(MIN(startViewPoint.x, endViewPoint.x), - MIN(startViewPoint.y, endViewPoint.y), - ABS(endViewPoint.x - startViewPoint.x), - ABS(endViewPoint.y - startViewPoint.y) ); + CGRect fillRect = CPTRectMake( MIN(startViewPoint.x, endViewPoint.x), + MIN(startViewPoint.y, endViewPoint.y), + ABS(endViewPoint.x - startViewPoint.x), + ABS(endViewPoint.y - startViewPoint.y) ); [bandFill fillRect:CPTAlignIntegralRectToUserSpace(context, fillRect) inContext:context]; } } @@ -825,7 +825,7 @@ -(nonnull NSNumber *)defaultTitleLocation double end = axisRange.endDouble; if ( (loc > 0.0) && (end >= 0.0) ) { - location = @(pow(10.0, (log10(loc) + log10(end) ) / 2.0) ); + location = @( pow(10.0, ( log10(loc) + log10(end) ) / 2.0) ); } else { location = axisRange.midPoint; @@ -838,7 +838,7 @@ -(nonnull NSNumber *)defaultTitleLocation double loc = axisRange.locationDouble; double end = axisRange.endDouble; - location = @(CPTInverseLogModulus( (CPTLogModulus(loc) + CPTLogModulus(end) ) / 2.0 ) ); + location = @( CPTInverseLogModulus( ( CPTLogModulus(loc) + CPTLogModulus(end) ) / 2.0) ); } break; diff --git a/framework/Source/CPTXYPlotSpace.m b/framework/Source/CPTXYPlotSpace.m index c759074c0..fa4c309d9 100644 --- a/framework/Source/CPTXYPlotSpace.m +++ b/framework/Source/CPTXYPlotSpace.m @@ -418,14 +418,14 @@ -(void)setXRange:(nonnull CPTPlotRange *)range if ( xRange && constrainedRange ) { isScrolling = !CPTDecimalEquals(constrainedRange.locationDecimal, xRange.locationDecimal) && CPTDecimalEquals(constrainedRange.lengthDecimal, xRange.lengthDecimal); - if ( isScrolling && (displacement == CPTFloat(0.0) ) ) { + if ( isScrolling && ( displacement == CPTFloat(0.0) ) ) { CPTGraph *theGraph = self.graph; CPTPlotArea *plotArea = theGraph.plotAreaFrame.plotArea; if ( plotArea ) { NSDecimal rangeLength = constrainedRange.lengthDecimal; - if ( !CPTDecimalEquals(rangeLength, CPTDecimalFromInteger(0) ) ) { + if ( !CPTDecimalEquals( rangeLength, CPTDecimalFromInteger(0) ) ) { NSDecimal diff = CPTDecimalDivide(CPTDecimalSubtract(constrainedRange.locationDecimal, xRange.locationDecimal), rangeLength); displacement = plotArea.bounds.size.width * CPTDecimalCGFloatValue(diff); @@ -482,14 +482,14 @@ -(void)setYRange:(nonnull CPTPlotRange *)range if ( yRange && constrainedRange ) { isScrolling = !CPTDecimalEquals(constrainedRange.locationDecimal, yRange.locationDecimal) && CPTDecimalEquals(constrainedRange.lengthDecimal, yRange.lengthDecimal); - if ( isScrolling && (displacement == CPTFloat(0.0) ) ) { + if ( isScrolling && ( displacement == CPTFloat(0.0) ) ) { CPTGraph *theGraph = self.graph; CPTPlotArea *plotArea = theGraph.plotAreaFrame.plotArea; if ( plotArea ) { NSDecimal rangeLength = constrainedRange.lengthDecimal; - if ( !CPTDecimalEquals(rangeLength, CPTDecimalFromInteger(0) ) ) { + if ( !CPTDecimalEquals( rangeLength, CPTDecimalFromInteger(0) ) ) { NSDecimal diff = CPTDecimalDivide(CPTDecimalSubtract(constrainedRange.locationDecimal, yRange.locationDecimal), rangeLength); displacement = plotArea.bounds.size.height * CPTDecimalCGFloatValue(diff); @@ -595,8 +595,8 @@ -(void)animateRangeForCoordinate:(CPTCoordinate)coordinate shift:(NSDecimal)shif CPTPlotRange *constrainedRange = [self constrainRange:newRange toGlobalRange:globalRange]; if ( ![newRange isEqualToRange:constrainedRange] && ![globalRange containsRange:newRange] ) { - BOOL direction = (CPTDecimalGreaterThan(shift, zero) && CPTDecimalGreaterThan(oldRange.lengthDecimal, zero) ) || - (CPTDecimalLessThan(shift, zero) && CPTDecimalLessThan(oldRange.lengthDecimal, zero) ); + BOOL direction = ( CPTDecimalGreaterThan(shift, zero) && CPTDecimalGreaterThan(oldRange.lengthDecimal, zero) ) || + ( CPTDecimalLessThan(shift, zero) && CPTDecimalLessThan(oldRange.lengthDecimal, zero) ); // decelerate at the global range if ( hasShift ) { @@ -654,7 +654,7 @@ -(void)animateRangeForCoordinate:(CPTCoordinate)coordinate shift:(NSDecimal)shif while ( momentumTime > CPTFloat(0.1) ) { momentumTime *= CPTFloat(0.5); - shift = CPTDecimalDivide(shift, CPTDecimalFromInteger(2) ); + shift = CPTDecimalDivide( shift, CPTDecimalFromInteger(2) ); } newRange = [oldRange mutableCopy]; @@ -740,7 +740,7 @@ CGFloat CPTFirstPositiveRoot(CGFloat a, CGFloat b, CGFloat c) if ( root1 >= CPTFloat(0.0) ) { root = root1; } - if ( (root2 >= CPTFloat(0.0) ) && (isnan(root) || (root2 < root) ) ) { + if ( ( root2 >= CPTFloat(0.0) ) && ( isnan(root) || (root2 < root) ) ) { root = root2; } } @@ -905,7 +905,7 @@ -(CGFloat)viewCoordinateForViewLength:(CGFloat)viewLength linearPlotRange:(nonnu if ( !range || (range.lengthDouble == 0.0) ) { return CPTFloat(0.0); } - return viewLength * (CGFloat)( (plotCoord - range.locationDouble) / range.lengthDouble ); + return viewLength * (CGFloat)( (plotCoord - range.locationDouble) / range.lengthDouble); } -(NSDecimal)plotCoordinateForViewLength:(NSDecimal)viewLength linearPlotRange:(nonnull CPTPlotRange *)range boundsLength:(NSDecimal)boundsLength @@ -1418,7 +1418,7 @@ -(void)scaleBy:(CGFloat)interactionScale aboutPoint:(CGPoint)plotAreaPoint CPTGraph *theGraph = self.graph; CPTPlotArea *plotArea = theGraph.plotAreaFrame.plotArea; - if ( !plotArea || (interactionScale <= CPTFloat(1.e-6) ) ) { + if ( !plotArea || ( interactionScale <= CPTFloat(1.e-6) ) ) { return; } if ( ![plotArea containsPoint:plotAreaPoint] ) { @@ -1451,7 +1451,7 @@ -(void)scaleBy:(CGFloat)interactionScale aboutPoint:(CGPoint)plotAreaPoint // New locations NSDecimal newLocationX; - if ( CPTDecimalGreaterThanOrEqualTo(oldRangeX.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalGreaterThanOrEqualTo( oldRangeX.lengthDecimal, CPTDecimalFromInteger(0) ) ) { NSDecimal oldFirstLengthX = CPTDecimalSubtract(plotInteractionPoint[CPTCoordinateX], oldRangeX.minLimitDecimal); // x - minX NSDecimal newFirstLengthX = CPTDecimalDivide(oldFirstLengthX, decimalScale); // (x - minX) / scale newLocationX = CPTDecimalSubtract(plotInteractionPoint[CPTCoordinateX], newFirstLengthX); @@ -1463,7 +1463,7 @@ -(void)scaleBy:(CGFloat)interactionScale aboutPoint:(CGPoint)plotAreaPoint } NSDecimal newLocationY; - if ( CPTDecimalGreaterThanOrEqualTo(oldRangeY.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalGreaterThanOrEqualTo( oldRangeY.lengthDecimal, CPTDecimalFromInteger(0) ) ) { NSDecimal oldFirstLengthY = CPTDecimalSubtract(plotInteractionPoint[CPTCoordinateY], oldRangeY.minLimitDecimal); // y - minY NSDecimal newFirstLengthY = CPTDecimalDivide(oldFirstLengthY, decimalScale); // (y - minY) / scale newLocationY = CPTDecimalSubtract(plotInteractionPoint[CPTCoordinateY], newFirstLengthY); @@ -1609,7 +1609,7 @@ -(BOOL)pointingDeviceUpEvent:(nonnull CPTNativeEvent *)event atPoint:(CGPoint)in speed = sqrt(displacement.x * displacement.x + displacement.y * displacement.y) / CPTFloat(lastDeltaT); momentumTime = speed / (CPTFloat(2.0) * acceleration); CGFloat distanceTraveled = speed * momentumTime - CPTFloat(0.5) * acceleration * momentumTime * momentumTime; - distanceTraveled = MAX(distanceTraveled, CPTFloat(0.0) ); + distanceTraveled = MAX( distanceTraveled, CPTFloat(0.0) ); CGFloat theta = atan2(displacement.y, displacement.x); scaleX = cos(theta); @@ -1755,13 +1755,13 @@ -(nullable CPTPlotRange *)shiftRange:(nonnull CPTPlotRange *)oldRange by:(NSDeci // reduce the shift as we get farther outside the global range NSDecimal rangeLength = newRange.lengthDecimal; - if ( !CPTDecimalEquals(rangeLength, CPTDecimalFromInteger(0) ) ) { + if ( !CPTDecimalEquals( rangeLength, CPTDecimalFromInteger(0) ) ) { NSDecimal diff = CPTDecimalDivide(CPTDecimalSubtract(constrainedRange.locationDecimal, newRange.locationDecimal), rangeLength); - diff = CPTDecimalMax(CPTDecimalMin(CPTDecimalMultiply(diff, CPTDecimalFromDouble(2.5) ), CPTDecimalFromInteger(1) ), CPTDecimalFromInteger(-1) ); + diff = CPTDecimalMax( CPTDecimalMin( CPTDecimalMultiply( diff, CPTDecimalFromDouble(2.5) ), CPTDecimalFromInteger(1) ), CPTDecimalFromInteger(-1) ); - newRange.locationDecimal = CPTDecimalSubtract(newRange.locationDecimal, CPTDecimalMultiply(shift, CPTDecimalAbs(diff) ) ); + newRange.locationDecimal = CPTDecimalSubtract( newRange.locationDecimal, CPTDecimalMultiply( shift, CPTDecimalAbs(diff) ) ); - *displacement = *displacement * (CPTFloat(1.0) - ABS(CPTDecimalCGFloatValue(diff) ) ); + *displacement = *displacement * ( CPTFloat(1.0) - ABS( CPTDecimalCGFloatValue(diff) ) ); } } } diff --git a/framework/Source/CPTXYPlotSpaceTests.m b/framework/Source/CPTXYPlotSpaceTests.m index ec2a206d5..8b0075245 100644 --- a/framework/Source/CPTXYPlotSpaceTests.m +++ b/framework/Source/CPTXYPlotSpaceTests.m @@ -146,7 +146,7 @@ -(void)testViewPointForPlotPointArrayLog plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:@1.0 length:@9.0]; - CPTNumberArray *plotPoint = @[@(sqrt(10.0) ), @(sqrt(10.0) )]; + CPTNumberArray *plotPoint = @[@( sqrt(10.0) ), @( sqrt(10.0) )]; CGPoint viewPoint = [plotSpace plotAreaViewPointForPlotPoint:plotPoint]; @@ -177,8 +177,8 @@ -(void)testViewPointForPlotPointLog length:@9.0]; NSDecimal plotPoint[2]; - plotPoint[CPTCoordinateX] = CPTDecimalFromDouble(sqrt(10.0) ); - plotPoint[CPTCoordinateY] = CPTDecimalFromDouble(sqrt(10.0) ); + plotPoint[CPTCoordinateX] = CPTDecimalFromDouble( sqrt(10.0) ); + plotPoint[CPTCoordinateY] = CPTDecimalFromDouble( sqrt(10.0) ); CGPoint viewPoint = [plotSpace plotAreaViewPointForPlotPoint:plotPoint numberOfCoordinates:2]; @@ -315,9 +315,9 @@ -(void)testPlotPointArrayForViewPointLinear NSString *errMessage; errMessage = [NSString stringWithFormat:@"plotPoint[CPTCoordinateX] was %@", plotPoint[CPTCoordinateX]]; - XCTAssertTrue(CPTDecimalEquals([plotPoint[CPTCoordinateX] decimalValue], CPTDecimalFromDouble(5.0) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals( [plotPoint[CPTCoordinateX] decimalValue], CPTDecimalFromDouble(5.0) ), @"%@", errMessage); errMessage = [NSString stringWithFormat:@"plotPoint[CPTCoordinateY] was %@", plotPoint[CPTCoordinateY]]; - XCTAssertTrue(CPTDecimalEquals([plotPoint[CPTCoordinateY] decimalValue], CPTDecimalFromDouble(5.0) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals( [plotPoint[CPTCoordinateY] decimalValue], CPTDecimalFromDouble(5.0) ), @"%@", errMessage); } -(void)testPlotPointForViewPointLinear @@ -339,9 +339,9 @@ -(void)testPlotPointForViewPointLinear [plotSpace plotPoint:plotPoint numberOfCoordinates:2 forPlotAreaViewPoint:viewPoint]; errMessage = [NSString stringWithFormat:@"plotPoint[CPTCoordinateX] was %@", NSDecimalString(&plotPoint[CPTCoordinateX], nil)]; - XCTAssertTrue(CPTDecimalEquals(plotPoint[CPTCoordinateX], CPTDecimalFromDouble(5.0) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals( plotPoint[CPTCoordinateX], CPTDecimalFromDouble(5.0) ), @"%@", errMessage); errMessage = [NSString stringWithFormat:@"plotPoint[CPTCoordinateY] was %@", NSDecimalString(&plotPoint[CPTCoordinateY], nil)]; - XCTAssertTrue(CPTDecimalEquals(plotPoint[CPTCoordinateY], CPTDecimalFromDouble(5.0) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals( plotPoint[CPTCoordinateY], CPTDecimalFromDouble(5.0) ), @"%@", errMessage); } -(void)testDoublePrecisionPlotPointForViewPointLinear @@ -414,9 +414,9 @@ -(void)testPlotPointForViewPointLog [plotSpace plotPoint:plotPoint numberOfCoordinates:2 forPlotAreaViewPoint:viewPoint]; errMessage = [NSString stringWithFormat:@"plotPoint[CPTCoordinateX] was %@", NSDecimalString(&plotPoint[CPTCoordinateX], nil)]; - XCTAssertTrue(CPTDecimalEquals(plotPoint[CPTCoordinateX], CPTDecimalFromDouble(sqrt(10.0) ) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals( plotPoint[CPTCoordinateX], CPTDecimalFromDouble( sqrt(10.0) ) ), @"%@", errMessage); errMessage = [NSString stringWithFormat:@"plotPoint[CPTCoordinateY] was %@", NSDecimalString(&plotPoint[CPTCoordinateY], nil)]; - XCTAssertTrue(CPTDecimalEquals(plotPoint[CPTCoordinateY], CPTDecimalFromDouble(sqrt(10.0) ) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals( plotPoint[CPTCoordinateY], CPTDecimalFromDouble( sqrt(10.0) ) ), @"%@", errMessage); } -(void)testDoublePrecisionPlotPointForViewPointLog @@ -489,9 +489,9 @@ -(void)testPlotPointForViewPointLogModulus [plotSpace plotPoint:plotPoint numberOfCoordinates:2 forPlotAreaViewPoint:viewPoint]; errMessage = [NSString stringWithFormat:@"plotPoint[CPTCoordinateX] was %@", NSDecimalString(&plotPoint[CPTCoordinateX], nil)]; - XCTAssertTrue(CPTDecimalEquals(plotPoint[CPTCoordinateX], CPTDecimalFromInteger(0) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals( plotPoint[CPTCoordinateX], CPTDecimalFromInteger(0) ), @"%@", errMessage); errMessage = [NSString stringWithFormat:@"plotPoint[CPTCoordinateY] was %@", NSDecimalString(&plotPoint[CPTCoordinateY], nil)]; - XCTAssertTrue(CPTDecimalEquals(plotPoint[CPTCoordinateY], CPTDecimalFromInteger(0) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals( plotPoint[CPTCoordinateY], CPTDecimalFromInteger(0) ), @"%@", errMessage); } -(void)testDoublePrecisionPlotPointForViewPointLogModulus @@ -610,7 +610,7 @@ -(void)testScaleByAboutPoint1 CGRect myBounds = self.graph.bounds; - [plotSpace scaleBy:0.5 aboutPoint:CGPointMake(CGRectGetMidX(myBounds), CGRectGetMidY(myBounds) )]; + [plotSpace scaleBy:0.5 aboutPoint:CGPointMake( CGRectGetMidX(myBounds), CGRectGetMidY(myBounds) )]; CPTPlotRange *expectedRangeX = [CPTPlotRange plotRangeWithLocation:@(-5.0) length:@20.0]; @@ -637,7 +637,7 @@ -(void)testScaleByAboutPoint2 CGRect myBounds = self.graph.bounds; - [plotSpace scaleBy:2.0 aboutPoint:CGPointMake(CGRectGetMidX(myBounds), CGRectGetMidY(myBounds) )]; + [plotSpace scaleBy:2.0 aboutPoint:CGPointMake( CGRectGetMidX(myBounds), CGRectGetMidY(myBounds) )]; CPTPlotRange *expectedRangeX = [CPTPlotRange plotRangeWithLocation:@2.5 length:@5.0]; diff --git a/framework/Source/NSCoderExtensions.m b/framework/Source/NSCoderExtensions.m index 844089abd..631b7bf17 100644 --- a/framework/Source/NSCoderExtensions.m +++ b/framework/Source/NSCoderExtensions.m @@ -336,7 +336,7 @@ -(nullable CGColorSpaceRef)newCGColorSpaceDecodeForKey:(nonnull NSString *)key NSData *iccProfile = [self decodeObjectOfClass:[NSData class] forKey:key]; if ( iccProfile ) { - colorSpace = CGColorSpaceCreateWithICCProfile( (__bridge CFDataRef)iccProfile ); + colorSpace = CGColorSpaceCreateWithICCProfile( (__bridge CFDataRef)iccProfile); } else { NSLog(@"Color space not available for key '%@'. Using generic RGB color space.", key); @@ -447,7 +447,7 @@ -(nullable CGImageRef)newCGImageDecodeForKey:(nonnull NSString *)key newKey = [[NSString alloc] initWithFormat:@"%@.provider", key]; CGDataProviderRef provider = CGDataProviderCreateWithCFData( (__bridge CFDataRef)[self decodeObjectOfClass:[NSData class] - forKey:newKey] ); + forKey:newKey]); newKey = [[NSString alloc] initWithFormat:@"%@.numberOfComponents", key]; size_t numberOfComponents = (size_t)[self decodeInt64ForKey:newKey]; diff --git a/framework/Source/_CPTAnimationCGFloatPeriod.m b/framework/Source/_CPTAnimationCGFloatPeriod.m index bab4e9e98..3d5cde004 100644 --- a/framework/Source/_CPTAnimationCGFloatPeriod.m +++ b/framework/Source/_CPTAnimationCGFloatPeriod.m @@ -31,7 +31,7 @@ CGFloat CPTCurrentFloatValue(id __nonnull boundObject, SEL __nonnull boundGetter -(void)setStartValueFromObject:(nonnull id)boundObject propertyGetter:(nonnull SEL)boundGetter { - self.startValue = @(CPTCurrentFloatValue(boundObject, boundGetter) ); + self.startValue = @( CPTCurrentFloatValue(boundObject, boundGetter) ); } -(BOOL)canStartWithValueFromObject:(nonnull id)boundObject propertyGetter:(nonnull SEL)boundGetter diff --git a/framework/Source/_CPTAnimationNSDecimalPeriod.m b/framework/Source/_CPTAnimationNSDecimalPeriod.m index 78541abc2..e01989f5f 100644 --- a/framework/Source/_CPTAnimationNSDecimalPeriod.m +++ b/framework/Source/_CPTAnimationNSDecimalPeriod.m @@ -43,20 +43,20 @@ -(BOOL)canStartWithValueFromObject:(nonnull id)boundObject propertyGetter:(nonnu } NSDecimal current = CPTCurrentDecimalValue(boundObject, boundGetter); - NSDecimal start = ( (NSDecimalNumber *)self.startValue ).decimalValue; - NSDecimal end = ( (NSDecimalNumber *)self.endValue ).decimalValue; + NSDecimal start = ( (NSDecimalNumber *)self.startValue).decimalValue; + NSDecimal end = ( (NSDecimalNumber *)self.endValue).decimalValue; - return (CPTDecimalGreaterThanOrEqualTo(current, start) && CPTDecimalLessThanOrEqualTo(current, end) ) || - (CPTDecimalGreaterThanOrEqualTo(current, end) && CPTDecimalLessThanOrEqualTo(current, start) ); + return ( CPTDecimalGreaterThanOrEqualTo(current, start) && CPTDecimalLessThanOrEqualTo(current, end) ) || + ( CPTDecimalGreaterThanOrEqualTo(current, end) && CPTDecimalLessThanOrEqualTo(current, start) ); } -(nonnull NSValue *)tweenedValueForProgress:(CGFloat)progress { - NSDecimal start = ( (NSDecimalNumber *)self.startValue ).decimalValue; - NSDecimal end = ( (NSDecimalNumber *)self.endValue ).decimalValue; + NSDecimal start = ( (NSDecimalNumber *)self.startValue).decimalValue; + NSDecimal end = ( (NSDecimalNumber *)self.endValue).decimalValue; NSDecimal length = CPTDecimalSubtract(end, start); - NSDecimal tweenedValue = CPTDecimalAdd(start, CPTDecimalMultiply(CPTDecimalFromCGFloat(progress), length) ); + NSDecimal tweenedValue = CPTDecimalAdd( start, CPTDecimalMultiply(CPTDecimalFromCGFloat(progress), length) ); return [NSDecimalNumber decimalNumberWithDecimal:tweenedValue]; } diff --git a/framework/Source/_CPTAnimationNSNumberPeriod.m b/framework/Source/_CPTAnimationNSNumberPeriod.m index 75f437b32..362e4a309 100644 --- a/framework/Source/_CPTAnimationNSNumberPeriod.m +++ b/framework/Source/_CPTAnimationNSNumberPeriod.m @@ -32,8 +32,8 @@ -(BOOL)canStartWithValueFromObject:(id)boundObject propertyGetter:(SEL)boundGett NSDecimal startDecimal = start.decimalValue; NSDecimal endDecimal = end.decimalValue; - return (CPTDecimalGreaterThanOrEqualTo(currentDecimal, startDecimal) && CPTDecimalLessThanOrEqualTo(currentDecimal, endDecimal) ) || - (CPTDecimalGreaterThanOrEqualTo(currentDecimal, endDecimal) && CPTDecimalLessThanOrEqualTo(currentDecimal, startDecimal) ); + return ( CPTDecimalGreaterThanOrEqualTo(currentDecimal, startDecimal) && CPTDecimalLessThanOrEqualTo(currentDecimal, endDecimal) ) || + ( CPTDecimalGreaterThanOrEqualTo(currentDecimal, endDecimal) && CPTDecimalLessThanOrEqualTo(currentDecimal, startDecimal) ); } else { double currentDouble = current.doubleValue; @@ -57,7 +57,7 @@ -(NSValue *)tweenedValueForProgress:(CGFloat)progress NSDecimal endDecimal = end.decimalValue; NSDecimal length = CPTDecimalSubtract(endDecimal, startDecimal); - NSDecimal tweenedValue = CPTDecimalAdd(startDecimal, CPTDecimalMultiply(CPTDecimalFromCGFloat(progress), length) ); + NSDecimal tweenedValue = CPTDecimalAdd( startDecimal, CPTDecimalMultiply(CPTDecimalFromCGFloat(progress), length) ); return [NSDecimalNumber decimalNumberWithDecimal:tweenedValue]; } diff --git a/framework/Source/_CPTAnimationPlotRangePeriod.m b/framework/Source/_CPTAnimationPlotRangePeriod.m index 4bcf492f2..fdcabbb21 100644 --- a/framework/Source/_CPTAnimationPlotRangePeriod.m +++ b/framework/Source/_CPTAnimationPlotRangePeriod.m @@ -30,8 +30,8 @@ -(BOOL)canStartWithValueFromObject:(nonnull id)boundObject propertyGetter:(nonnu NSDecimal startLoc = start.locationDecimal; NSDecimal endLoc = end.locationDecimal; - return (CPTDecimalGreaterThanOrEqualTo(currentLoc, startLoc) && CPTDecimalLessThanOrEqualTo(currentLoc, endLoc) ) || - (CPTDecimalGreaterThanOrEqualTo(currentLoc, endLoc) && CPTDecimalLessThanOrEqualTo(currentLoc, startLoc) ); + return ( CPTDecimalGreaterThanOrEqualTo(currentLoc, startLoc) && CPTDecimalLessThanOrEqualTo(currentLoc, endLoc) ) || + ( CPTDecimalGreaterThanOrEqualTo(currentLoc, endLoc) && CPTDecimalLessThanOrEqualTo(currentLoc, startLoc) ); } -(nonnull NSValue *)tweenedValueForProgress:(CGFloat)progress @@ -42,10 +42,10 @@ -(nonnull NSValue *)tweenedValueForProgress:(CGFloat)progress NSDecimal progressDecimal = CPTDecimalFromCGFloat(progress); NSDecimal locationDiff = CPTDecimalSubtract(end.locationDecimal, start.locationDecimal); - NSDecimal tweenedLocation = CPTDecimalAdd(start.locationDecimal, CPTDecimalMultiply(progressDecimal, locationDiff) ); + NSDecimal tweenedLocation = CPTDecimalAdd( start.locationDecimal, CPTDecimalMultiply(progressDecimal, locationDiff) ); NSDecimal lengthDiff = CPTDecimalSubtract(end.lengthDecimal, start.lengthDecimal); - NSDecimal tweenedLength = CPTDecimalAdd(start.lengthDecimal, CPTDecimalMultiply(progressDecimal, lengthDiff) ); + NSDecimal tweenedLength = CPTDecimalAdd( start.lengthDecimal, CPTDecimalMultiply(progressDecimal, lengthDiff) ); return (NSValue *)[CPTPlotRange plotRangeWithLocationDecimal:tweenedLocation lengthDecimal:tweenedLength]; } diff --git a/framework/Source/_CPTAnimationTimingFunctions.m b/framework/Source/_CPTAnimationTimingFunctions.m index a01d533f0..b5043f13d 100644 --- a/framework/Source/_CPTAnimationTimingFunctions.m +++ b/framework/Source/_CPTAnimationTimingFunctions.m @@ -51,7 +51,7 @@ CGFloat CPTAnimationTimingFunctionBackIn(CGFloat elapsedTime, CGFloat duration) return CPTFloat(1.0); } - return elapsedTime * elapsedTime * ( (s + CPTFloat(1.0) ) * elapsedTime - s ); + return elapsedTime * elapsedTime * ( ( s + CPTFloat(1.0) ) * elapsedTime - s); } /** @@ -74,7 +74,7 @@ CGFloat CPTAnimationTimingFunctionBackOut(CGFloat elapsedTime, CGFloat duration) return CPTFloat(1.0); } - return elapsedTime * elapsedTime * ( (s + CPTFloat(1.0) ) * elapsedTime + s ) + CPTFloat(1.0); + return elapsedTime * elapsedTime * ( ( s + CPTFloat(1.0) ) * elapsedTime + s) + CPTFloat(1.0); } /** @@ -98,12 +98,12 @@ CGFloat CPTAnimationTimingFunctionBackInOut(CGFloat elapsedTime, CGFloat duratio } if ( elapsedTime < CPTFloat(1.0) ) { - return CPTFloat(0.5) * (elapsedTime * elapsedTime * ( (s + CPTFloat(1.0) ) * elapsedTime - s ) ); + return CPTFloat(0.5) * ( elapsedTime * elapsedTime * ( ( s + CPTFloat(1.0) ) * elapsedTime - s) ); } else { elapsedTime -= CPTFloat(2.0); - return CPTFloat(0.5) * (elapsedTime * elapsedTime * ( (s + CPTFloat(1.0) ) * elapsedTime + s ) + CPTFloat(2.0) ); + return CPTFloat(0.5) * ( elapsedTime * elapsedTime * ( ( s + CPTFloat(1.0) ) * elapsedTime + s) + CPTFloat(2.0) ); } } @@ -197,7 +197,7 @@ CGFloat CPTAnimationTimingFunctionCircularIn(CGFloat elapsedTime, CGFloat durati return CPTFloat(1.0); } - return -(sqrt(CPTFloat(1.0) - elapsedTime * elapsedTime) - CPTFloat(1.0) ); + return -( sqrt(CPTFloat(1.0) - elapsedTime * elapsedTime) - CPTFloat(1.0) ); } /** @@ -240,12 +240,12 @@ CGFloat CPTAnimationTimingFunctionCircularInOut(CGFloat elapsedTime, CGFloat dur } if ( elapsedTime < CPTFloat(1.0) ) { - return CPTFloat(-0.5) * (sqrt(CPTFloat(1.0) - elapsedTime * elapsedTime) - CPTFloat(1.0) ); + return CPTFloat(-0.5) * ( sqrt(CPTFloat(1.0) - elapsedTime * elapsedTime) - CPTFloat(1.0) ); } else { elapsedTime -= CPTFloat(2.0); - return CPTFloat(0.5) * (sqrt(CPTFloat(1.0) - elapsedTime * elapsedTime) + CPTFloat(1.0) ); + return CPTFloat(0.5) * ( sqrt(CPTFloat(1.0) - elapsedTime * elapsedTime) + CPTFloat(1.0) ); } } @@ -275,7 +275,7 @@ CGFloat CPTAnimationTimingFunctionElasticIn(CGFloat elapsedTime, CGFloat duratio elapsedTime -= CPTFloat(1.0); - return -(pow(CPTFloat(2.0), CPTFloat(10.0) * elapsedTime) * sin( (elapsedTime * duration - s) * CPTFloat(2.0 * M_PI) / period ) ); + return -( pow(CPTFloat(2.0), CPTFloat(10.0) * elapsedTime) * sin( (elapsedTime * duration - s) * CPTFloat(2.0 * M_PI) / period) ); } /** @@ -299,7 +299,7 @@ CGFloat CPTAnimationTimingFunctionElasticOut(CGFloat elapsedTime, CGFloat durati CGFloat period = duration * CPTFloat(0.3); CGFloat s = period * CPTFloat(0.25); - return pow(CPTFloat(2.0), CPTFloat(-10.0) * elapsedTime) * sin( (elapsedTime * duration - s) * CPTFloat(2.0 * M_PI) / period ) + CPTFloat(1.0); + return pow(CPTFloat(2.0), CPTFloat(-10.0) * elapsedTime) * sin( (elapsedTime * duration - s) * CPTFloat(2.0 * M_PI) / period) + CPTFloat(1.0); } /** @@ -326,10 +326,10 @@ CGFloat CPTAnimationTimingFunctionElasticInOut(CGFloat elapsedTime, CGFloat dura elapsedTime -= CPTFloat(1.0); if ( elapsedTime < CPTFloat(0.0) ) { - return CPTFloat(-0.5) * (pow(CPTFloat(2.0), CPTFloat(10.0) * elapsedTime) * sin( (elapsedTime * duration - s) * CPTFloat(2.0 * M_PI) / period ) ); + return CPTFloat(-0.5) * ( pow(CPTFloat(2.0), CPTFloat(10.0) * elapsedTime) * sin( (elapsedTime * duration - s) * CPTFloat(2.0 * M_PI) / period) ); } else { - return pow(CPTFloat(2.0), CPTFloat(-10.0) * elapsedTime) * sin( (elapsedTime * duration - s) * CPTFloat(2.0 * M_PI) / period ) * CPTFloat(0.5) + CPTFloat(1.0); + return pow(CPTFloat(2.0), CPTFloat(-10.0) * elapsedTime) * sin( (elapsedTime * duration - s) * CPTFloat(2.0 * M_PI) / period) * CPTFloat(0.5) + CPTFloat(1.0); } } @@ -354,7 +354,7 @@ CGFloat CPTAnimationTimingFunctionExponentialIn(CGFloat elapsedTime, CGFloat dur return CPTFloat(1.0); } - return pow(CPTFloat(2.0), CPTFloat(10.0) * (elapsedTime - CPTFloat(1.0) ) ); + return pow( CPTFloat(2.0), CPTFloat(10.0) * ( elapsedTime - CPTFloat(1.0) ) ); } /** @@ -401,7 +401,7 @@ CGFloat CPTAnimationTimingFunctionExponentialInOut(CGFloat elapsedTime, CGFloat return CPTFloat(0.5) * pow(CPTFloat(2.0), CPTFloat(10.0) * elapsedTime); } else { - return CPTFloat(0.5) * (-pow(CPTFloat(2.0), CPTFloat(-10.0) * elapsedTime) + CPTFloat(2.0) ); + return CPTFloat(0.5) * ( -pow(CPTFloat(2.0), CPTFloat(-10.0) * elapsedTime) + CPTFloat(2.0) ); } } @@ -426,7 +426,7 @@ CGFloat CPTAnimationTimingFunctionSinusoidalIn(CGFloat elapsedTime, CGFloat dura return CPTFloat(1.0); } - return -cos(elapsedTime * CPTFloat(M_PI_2) ) + CPTFloat(1.0); + return -cos( elapsedTime * CPTFloat(M_PI_2) ) + CPTFloat(1.0); } /** @@ -447,7 +447,7 @@ CGFloat CPTAnimationTimingFunctionSinusoidalOut(CGFloat elapsedTime, CGFloat dur return CPTFloat(1.0); } - return sin(elapsedTime * CPTFloat(M_PI_2) ); + return sin( elapsedTime * CPTFloat(M_PI_2) ); } /** @@ -468,7 +468,7 @@ CGFloat CPTAnimationTimingFunctionSinusoidalInOut(CGFloat elapsedTime, CGFloat d return CPTFloat(1.0); } - return CPTFloat(-0.5) * (cos(CPTFloat(M_PI) * elapsedTime) - CPTFloat(1.0) ); + return CPTFloat(-0.5) * ( cos(CPTFloat(M_PI) * elapsedTime) - CPTFloat(1.0) ); } #pragma mark - @@ -540,7 +540,7 @@ CGFloat CPTAnimationTimingFunctionCubicInOut(CGFloat elapsedTime, CGFloat durati else { elapsedTime -= CPTFloat(2.0); - return CPTFloat(0.5) * (elapsedTime * elapsedTime * elapsedTime + CPTFloat(2.0) ); + return CPTFloat(0.5) * ( elapsedTime * elapsedTime * elapsedTime + CPTFloat(2.0) ); } } @@ -586,7 +586,7 @@ CGFloat CPTAnimationTimingFunctionQuadraticOut(CGFloat elapsedTime, CGFloat dura return CPTFloat(1.0); } - return -elapsedTime * (elapsedTime - CPTFloat(2.0) ); + return -elapsedTime * ( elapsedTime - CPTFloat(2.0) ); } /** @@ -613,7 +613,7 @@ CGFloat CPTAnimationTimingFunctionQuadraticInOut(CGFloat elapsedTime, CGFloat du else { elapsedTime -= CPTFloat(1.0); - return CPTFloat(-0.5) * (elapsedTime * (elapsedTime - CPTFloat(2.0) ) - CPTFloat(1.0) ); + return CPTFloat(-0.5) * ( elapsedTime * ( elapsedTime - CPTFloat(2.0) ) - CPTFloat(1.0) ); } } @@ -659,7 +659,7 @@ CGFloat CPTAnimationTimingFunctionQuarticOut(CGFloat elapsedTime, CGFloat durati return CPTFloat(1.0); } - return -(elapsedTime * elapsedTime * elapsedTime * elapsedTime - CPTFloat(1.0) ); + return -( elapsedTime * elapsedTime * elapsedTime * elapsedTime - CPTFloat(1.0) ); } /** @@ -686,7 +686,7 @@ CGFloat CPTAnimationTimingFunctionQuarticInOut(CGFloat elapsedTime, CGFloat dura else { elapsedTime -= CPTFloat(2.0); - return CPTFloat(-0.5) * (elapsedTime * elapsedTime * elapsedTime * elapsedTime - CPTFloat(2.0) ); + return CPTFloat(-0.5) * ( elapsedTime * elapsedTime * elapsedTime * elapsedTime - CPTFloat(2.0) ); } } @@ -759,6 +759,6 @@ CGFloat CPTAnimationTimingFunctionQuinticInOut(CGFloat elapsedTime, CGFloat dura else { elapsedTime -= CPTFloat(2.0); - return CPTFloat(0.5) * (elapsedTime * elapsedTime * elapsedTime * elapsedTime * elapsedTime + CPTFloat(2.0) ); + return CPTFloat(0.5) * ( elapsedTime * elapsedTime * elapsedTime * elapsedTime * elapsedTime + CPTFloat(2.0) ); } } diff --git a/framework/Source/_CPTConstraintsFixed.m b/framework/Source/_CPTConstraintsFixed.m index d00c30606..328369da5 100644 --- a/framework/Source/_CPTConstraintsFixed.m +++ b/framework/Source/_CPTConstraintsFixed.m @@ -62,8 +62,8 @@ -(BOOL)isEqualToConstraint:(nullable CPTConstraints *)otherConstraint if ( [self class] != [otherConstraint class] ) { return NO; } - return (self.offset == ( (_CPTConstraintsFixed *)otherConstraint ).offset) && - (self.isFixedToLower == ( (_CPTConstraintsFixed *)otherConstraint ).isFixedToLower); + return (self.offset == ( (_CPTConstraintsFixed *)otherConstraint).offset) && + (self.isFixedToLower == ( (_CPTConstraintsFixed *)otherConstraint).isFixedToLower); } #pragma mark - diff --git a/framework/Source/_CPTConstraintsRelative.m b/framework/Source/_CPTConstraintsRelative.m index 4edf53338..ccebdc35f 100644 --- a/framework/Source/_CPTConstraintsRelative.m +++ b/framework/Source/_CPTConstraintsRelative.m @@ -50,7 +50,7 @@ -(BOOL)isEqualToConstraint:(nullable CPTConstraints *)otherConstraint if ( [self class] != [otherConstraint class] ) { return NO; } - return self.offset == ( (_CPTConstraintsRelative *)otherConstraint ).offset; + return self.offset == ( (_CPTConstraintsRelative *)otherConstraint).offset; } #pragma mark - diff --git a/framework/Source/_CPTMaskLayer.m b/framework/Source/_CPTMaskLayer.m index b712e53dc..d4cceba9f 100644 --- a/framework/Source/_CPTMaskLayer.m +++ b/framework/Source/_CPTMaskLayer.m @@ -36,7 +36,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context CPTLayer *theMaskedLayer = (CPTLayer *)self.superlayer; if ( theMaskedLayer ) { - CGContextSetRGBFillColor(context, CPTFloat(0.0), CPTFloat(0.0), CPTFloat(0.0), CPTFloat(1.0) ); + CGContextSetRGBFillColor( context, CPTFloat(0.0), CPTFloat(0.0), CPTFloat(0.0), CPTFloat(1.0) ); if ( [theMaskedLayer isKindOfClass:[CPTLayer class]] ) { CGPathRef maskingPath = theMaskedLayer.sublayerMaskingPath; diff --git a/framework/iPhoneOnly/CPTGraphHostingView.m b/framework/iPhoneOnly/CPTGraphHostingView.m index 25bf0b044..02305c3ec 100644 --- a/framework/iPhoneOnly/CPTGraphHostingView.m +++ b/framework/iPhoneOnly/CPTGraphHostingView.m @@ -79,7 +79,7 @@ -(void)commonInit self.allowPinchScaling = YES; // This undoes the normal coordinate space inversion that UIViews apply to their layers - self.layer.sublayerTransform = CATransform3DMakeScale(CPTFloat(1.0), CPTFloat(-1.0), CPTFloat(1.0) ); + self.layer.sublayerTransform = CATransform3DMakeScale( CPTFloat(1.0), CPTFloat(-1.0), CPTFloat(1.0) ); } -(nonnull instancetype)initWithFrame:(CGRect)frame @@ -354,7 +354,7 @@ -(void)graphNeedsRedraw:(nonnull NSNotification *)notification -(void)setHostedGraph:(nullable CPTGraph *)newLayer { - NSParameterAssert( (newLayer == nil) || [newLayer isKindOfClass:[CPTGraph class]] ); + NSParameterAssert( (newLayer == nil) || [newLayer isKindOfClass:[CPTGraph class]]); if ( newLayer == hostedGraph ) { return; diff --git a/framework/iPhoneOnly/CPTPlatformSpecificCategories.m b/framework/iPhoneOnly/CPTPlatformSpecificCategories.m index 7798382be..4d22e17da 100644 --- a/framework/iPhoneOnly/CPTPlatformSpecificCategories.m +++ b/framework/iPhoneOnly/CPTPlatformSpecificCategories.m @@ -30,14 +30,14 @@ -(nullable CPTNativeImage *)imageOfLayer { CGSize boundsSize = self.bounds.size; - UIGraphicsBeginImageContextWithOptions(boundsSize, self.opaque, CPTFloat(0.0) ); + UIGraphicsBeginImageContextWithOptions( boundsSize, self.opaque, CPTFloat(0.0) ); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSaveGState(context); CGContextSetAllowsAntialiasing(context, true); CGContextTranslateCTM(context, CPTFloat(0.0), boundsSize.height); - CGContextScaleCTM(context, CPTFloat(1.0), CPTFloat(-1.0) ); + CGContextScaleCTM( context, CPTFloat(1.0), CPTFloat(-1.0) ); [self layoutAndRenderInContext:context]; CPTNativeImage *layerImage = UIGraphicsGetImageFromCurrentImageContext(); diff --git a/scripts/uncrustify.cfg b/scripts/uncrustify.cfg index c03276abf..2db9327a7 100644 --- a/scripts/uncrustify.cfg +++ b/scripts/uncrustify.cfg @@ -1,4 +1,4 @@ -# Uncrustify-0.68 +# Uncrustify-0.69.0 newlines = auto input_tab_size = 4 output_tab_size = 4 @@ -56,6 +56,7 @@ sp_before_template_paren = ignore sp_template_angle = force sp_before_angle = remove sp_inside_angle = remove +sp_inside_angle_empty = remove sp_angle_colon = ignore sp_after_angle = remove sp_angle_paren = remove @@ -91,7 +92,10 @@ sp_between_mdatype_commas = remove sp_paren_comma = force sp_before_ellipsis = remove sp_type_ellipsis = remove +sp_type_question = remove sp_paren_ellipsis = remove +sp_paren_qualifier = remove +sp_paren_noexcept = remove sp_after_class_colon = force sp_before_class_colon = force sp_after_constr_colon = remove @@ -145,6 +149,7 @@ sp_throw_paren = force sp_after_throw = force sp_catch_paren = force sp_oc_catch_paren = force +sp_oc_classname_paren = force sp_version_paren = ignore sp_scope_paren = ignore sp_super_paren = remove @@ -219,6 +224,7 @@ sp_num_before_tr_emb_cmt = 1 sp_annotation_paren = ignore sp_skip_vbrace_tokens = false sp_after_noexcept = ignore +sp_vala_after_translation = ignore force_tab_after_define = false indent_columns = 4 indent_continue = 0 @@ -272,6 +278,7 @@ indent_switch_pp = true indent_case_shift = 0 indent_case_brace = 0 indent_col1_comment = false +indent_col1_multi_string_literal = false indent_label = 1 indent_access_spec = 1 indent_access_spec_body = false @@ -331,13 +338,6 @@ nl_assign_brace = remove nl_assign_square = ignore nl_tsquare_brace = ignore nl_after_square_assign = ignore -nl_func_var_def_blk = 1 -nl_typedef_blk_start = 0 -nl_typedef_blk_end = 0 -nl_typedef_blk_in = 0 -nl_var_def_blk_start = 0 -nl_var_def_blk_end = 0 -nl_var_def_blk_in = 0 nl_fcall_brace = force nl_enum_brace = remove nl_enum_class = ignore @@ -415,11 +415,13 @@ nl_func_def_end_multi_line = false nl_func_decl_empty = remove nl_func_def_empty = remove nl_func_call_empty = ignore +nl_func_call_start = ignore nl_func_call_start_multi_line = false nl_func_call_args_multi_line = false nl_func_call_end_multi_line = false nl_oc_msg_args = false nl_fdef_brace = force +nl_fdef_brace_cond = force nl_cpp_ldef_brace = ignore nl_return_expr = remove nl_after_semicolon = true @@ -450,6 +452,8 @@ nl_before_synchronized = ignore nl_after_synchronized = ignore nl_before_do = ignore nl_after_do = ignore +nl_before_return = false +nl_after_return = true nl_ds_struct_enum_cmt = false nl_ds_struct_enum_close_brace = false nl_class_colon = remove @@ -476,6 +480,13 @@ nl_class_leave_one_liner_groups = false nl_after_func_body = 2 nl_after_func_body_class = 0 nl_after_func_body_one_liner = 1 +nl_func_var_def_blk = 1 +nl_typedef_blk_start = 0 +nl_typedef_blk_end = 0 +nl_typedef_blk_in = 0 +nl_var_def_blk_start = 0 +nl_var_def_blk_end = 0 +nl_var_def_blk_in = 0 nl_before_block_comment = 2 nl_before_c_comment = 2 nl_before_cpp_comment = 1 @@ -495,8 +506,6 @@ nl_inside_namespace = 0 eat_blanks_after_open_brace = true eat_blanks_before_close_brace = true nl_remove_extra_newlines = 0 -nl_before_return = false -nl_after_return = true nl_after_annotation = ignore nl_between_annotation = ignore pos_arith = trail @@ -523,6 +532,9 @@ align_func_params = true align_func_params_span = 0 align_func_params_thresh = 0 align_func_params_gap = 0 +align_constr_value_span = 0 +align_constr_value_thresh = 0 +align_constr_value_gap = 0 align_same_func_call_params = false align_same_func_call_params_span = 0 align_same_func_call_params_thresh = 0 @@ -536,6 +548,7 @@ align_var_def_colon_gap = 0 align_var_def_attribute = true align_var_def_inline = true align_assign_span = 1 +align_assign_func_proto_span = 0 align_assign_thresh = 0 align_assign_decl_func = 0 align_enum_equ_span = 1 @@ -547,17 +560,18 @@ align_var_struct_span = 1 align_var_struct_thresh = 0 align_var_struct_gap = 1 align_struct_init_span = 2 -align_typedef_gap = 1 align_typedef_span = 2 +align_typedef_gap = 1 align_typedef_func = 0 align_typedef_star_style = 1 align_typedef_amp_style = 1 align_right_cmt_span = 2 +align_right_cmt_gap = 1 align_right_cmt_mix = false align_right_cmt_same_level = false -align_right_cmt_gap = 1 align_right_cmt_at_col = 1 align_func_proto_span = 2 +align_func_proto_thresh = 0 align_func_proto_gap = 1 align_on_operator = true align_mix_var_proto = true @@ -567,8 +581,8 @@ align_single_line_brace_gap = 1 align_oc_msg_spec_span = 0 align_nl_cont = false align_pp_define_together = false -align_pp_define_gap = 1 align_pp_define_span = 2 +align_pp_define_gap = 1 align_left_shift = true align_asm_colon = false align_oc_msg_colon_span = 16 From cb996d4693de269788a7205c643707b444162303 Mon Sep 17 00:00:00 2001 From: Fred Potter Date: Mon, 20 May 2019 11:30:49 -0700 Subject: [PATCH 081/160] Fixed bug where minor tick labels would remain after axis was removed Noticed that when removing an axis from a plot, the major tick labels of that axis would disappear but the minor tick labels would remain visible. When you remove an axis from an axis set, `-[CPTAxis setPlotArea:]` gets called with `nil`. For this case, there was already code present that would loop over all major tick axis label layers and remove them from their super layer. We need to do the same for minor tick label layers as well. --- framework/Source/CPTAxis.m | 3 +++ 1 file changed, 3 insertions(+) diff --git a/framework/Source/CPTAxis.m b/framework/Source/CPTAxis.m index dc79ee43d..10282074d 100644 --- a/framework/Source/CPTAxis.m +++ b/framework/Source/CPTAxis.m @@ -3070,6 +3070,9 @@ -(void)setPlotArea:(nullable CPTPlotArea *)newPlotArea for ( CPTAxisLabel *label in self.axisLabels ) { [label.contentLayer removeFromSuperlayer]; } + for ( CPTAxisLabel *label in self.minorTickAxisLabels ) { + [label.contentLayer removeFromSuperlayer]; + } [self.axisTitle.contentLayer removeFromSuperlayer]; } } From 92784e1a3e773de9d54a4360160ae1e881d62e71 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sat, 1 Jun 2019 10:03:54 -0400 Subject: [PATCH 082/160] Initialize the object state in -awakeFromNib in the hosting views. --- framework/MacOnly/CPTGraphHostingView.m | 46 ++++++++++++---------- framework/iPhoneOnly/CPTGraphHostingView.m | 7 ++++ 2 files changed, 32 insertions(+), 21 deletions(-) diff --git a/framework/MacOnly/CPTGraphHostingView.m b/framework/MacOnly/CPTGraphHostingView.m index 699951e74..70fbe20f5 100644 --- a/framework/MacOnly/CPTGraphHostingView.m +++ b/framework/MacOnly/CPTGraphHostingView.m @@ -61,22 +61,27 @@ @implementation CPTGraphHostingView /// @cond --(nonnull instancetype)initWithFrame:(NSRect)frame +-(void)commonInit { - if ( (self = [super initWithFrame:frame]) ) { - hostedGraph = nil; - printRect = NSZeroRect; + self.hostedGraph = nil; + self.printRect = NSZeroRect; - closedHandCursor = [NSCursor closedHandCursor]; - openHandCursor = [NSCursor openHandCursor]; - allowPinchScaling = YES; + self.closedHandCursor = [NSCursor closedHandCursor]; + self.openHandCursor = [NSCursor openHandCursor]; + self.allowPinchScaling = YES; - locationInWindow = NSZeroPoint; - scrollOffset = CGPointZero; + self.locationInWindow = NSZeroPoint; + self.scrollOffset = CGPointZero; - if ( !self.superview.wantsLayer ) { - self.layer = [self makeBackingLayer]; - } + if ( !self.superview.wantsLayer ) { + self.layer = [self makeBackingLayer]; + } +} + +-(nonnull instancetype)initWithFrame:(NSRect)frame +{ + if ( (self = [super initWithFrame:frame]) ) { + [self commonInit]; } return self; } @@ -86,6 +91,13 @@ -(nonnull CALayer *)makeBackingLayer return [[CPTLayer alloc] initWithFrame:NSRectToCGRect(self.bounds)]; } +-(void)awakeFromNib +{ + [super awakeFromNib]; + + [self commonInit]; +} + -(void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; @@ -125,10 +137,8 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { if ( (self = [super initWithCoder:coder]) ) { - CPTLayer *mainLayer = [[CPTLayer alloc] initWithFrame:NSRectToCGRect(self.frame)]; - self.layer = mainLayer; + [self commonInit]; - hostedGraph = nil; self.hostedGraph = [coder decodeObjectOfClass:[CPTGraph class] forKey:@"CPTLayerHostingView.hostedGraph"]; // setup layers self.printRect = [coder decodeRectForKey:@"CPTLayerHostingView.printRect"]; @@ -140,12 +150,6 @@ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder if ( [coder containsValueForKey:@"CPTLayerHostingView.allowPinchScaling"] ) { self.allowPinchScaling = [coder decodeBoolForKey:@"CPTLayerHostingView.allowPinchScaling"]; } - else { - self.allowPinchScaling = YES; - } - - self.locationInWindow = NSZeroPoint; - self.scrollOffset = CGPointZero; } return self; } diff --git a/framework/iPhoneOnly/CPTGraphHostingView.m b/framework/iPhoneOnly/CPTGraphHostingView.m index 02305c3ec..2b96fc27e 100644 --- a/framework/iPhoneOnly/CPTGraphHostingView.m +++ b/framework/iPhoneOnly/CPTGraphHostingView.m @@ -90,6 +90,13 @@ -(nonnull instancetype)initWithFrame:(CGRect)frame return self; } +-(void)awakeFromNib +{ + [super awakeFromNib]; + + [self commonInit]; +} + -(void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; From 18f34fb41cace4ccfca7644a3d7a132120435d19 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sat, 1 Jun 2019 10:53:26 -0400 Subject: [PATCH 083/160] Updated Uncrustify config file to turn off balanced spaces inside parentheses. This option was causing constant changes to many files due to conflicts with other options. --- scripts/uncrustify.cfg | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/uncrustify.cfg b/scripts/uncrustify.cfg index 2db9327a7..4def42781 100644 --- a/scripts/uncrustify.cfg +++ b/scripts/uncrustify.cfg @@ -33,7 +33,7 @@ sp_compare = force sp_inside_paren = remove sp_paren_paren = remove sp_cparen_oparen = remove -sp_balance_nested_parens = true +sp_balance_nested_parens = false sp_paren_brace = force sp_brace_brace = force sp_before_ptr_star = force @@ -60,7 +60,7 @@ sp_inside_angle_empty = remove sp_angle_colon = ignore sp_after_angle = remove sp_angle_paren = remove -sp_angle_paren_empty = ignore +sp_angle_paren_empty = remove sp_angle_word = force sp_angle_shift = add sp_permit_cpp11_shift = false @@ -123,9 +123,9 @@ sp_inside_braces_empty = remove sp_type_func = force sp_type_brace_init_lst = ignore sp_func_proto_paren = remove -sp_func_proto_paren_empty = ignore +sp_func_proto_paren_empty = remove sp_func_def_paren = remove -sp_func_def_paren_empty = ignore +sp_func_def_paren_empty = remove sp_inside_fparens = remove sp_inside_fparen = remove sp_inside_tparen = remove @@ -670,5 +670,5 @@ use_indent_continue_only_once = false indent_cpp_lambda_only_once = false use_options_overriding_for_qt_macros = true warn_level_tabs_found_in_verbatim_string_literals = 2 -# option(s) with 'not default' value: 312 +# option(s) with 'not default' value: 320 # From bfe0b34a0c5c99d9cc3e9585352b6be95b749614 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sat, 1 Jun 2019 10:53:47 -0400 Subject: [PATCH 084/160] Updated code formatting. --- QCPlugin/CPTScatterPlotPlugin.m | 2 +- QCPlugin/CorePlotQCPlugin.m | 20 +- examples/AAPLot/Classes/FlipsideView.m | 2 +- examples/AAPLot/Classes/MainViewController.m | 8 +- .../Classes/CPTTestApp_iPadViewController.m | 2 +- .../Source/CPTPlotSymbolTestController.m | 10 +- examples/CPTTestApp/Source/Controller.m | 8 +- examples/CPTTestApp/Source/RotationView.m | 10 +- .../Source/SelectionDemoController.m | 2 +- .../CorePlotGallery/src/ios/AppDelegate.m | 2 +- .../src/ios/DetailViewController.m | 2 +- .../src/ios/RootViewController.m | 2 +- .../src/ios/ThemeTableViewController.m | 2 +- examples/CorePlotGallery/src/ios/main.m | 2 +- .../src/mac/PlotGalleryController.m | 2 +- examples/CorePlotGallery/src/mac/PlotView.m | 2 +- examples/CorePlotGallery/src/plots/AxisDemo.m | 2 +- .../src/plots/CandlestickPlot.m | 10 +- .../src/plots/ColoredBarChart.m | 4 +- .../CorePlotGallery/src/plots/CompositePlot.m | 62 ++--- .../CorePlotGallery/src/plots/ControlChart.m | 6 +- .../src/plots/CurvedInterpolationDemo.m | 6 +- .../src/plots/CurvedScatterPlot.m | 10 +- examples/CorePlotGallery/src/plots/DatePlot.m | 4 +- .../CorePlotGallery/src/plots/DonutChart.m | 8 +- .../CorePlotGallery/src/plots/FunctionPlot.m | 4 +- .../src/plots/GradientScatterPlot.m | 2 +- .../CorePlotGallery/src/plots/ImageDemo.m | 2 +- .../src/plots/LabelingPolicyDemo.m | 2 +- .../CorePlotGallery/src/plots/LineCapDemo.m | 2 +- examples/CorePlotGallery/src/plots/OHLCPlot.m | 10 +- .../CorePlotGallery/src/plots/PlotSpaceDemo.m | 2 +- .../CorePlotGallery/src/plots/RangePlot.m | 4 +- .../CorePlotGallery/src/plots/RealTimePlot.m | 6 +- .../src/plots/SimplePieChart.m | 14 +- .../src/plots/SimpleScatterPlot.m | 2 +- .../src/plots/SteppedScatterPlot.m | 2 +- .../src/plots/VerticalBarChart.m | 10 +- .../src/shared/PiNumberFormatter.m | 6 +- .../CorePlotGallery/src/shared/PlotGallery.m | 2 +- .../CorePlotGallery/src/shared/PlotItem.m | 12 +- .../src/tvOS/DetailViewControllerTV.m | 2 +- .../src/tvOS/ThemeTableViewControllerTV.m | 2 +- examples/CorePlotGallery/src/tvOS/main.m | 2 +- examples/DropPlot/CPTPlotDocument.m | 30 +-- examples/DropPlot/NSString+ParseCSV.m | 2 +- .../StockPlot/Classes/APYahooDataPuller.m | 2 +- .../StockPlot/Classes/RootViewController.m | 2 +- framework/MacOnly/CPTGraphHostingView.m | 22 +- framework/MacOnly/CPTImagePlatformSpecific.m | 4 +- .../MacOnly/CPTPlatformSpecificCategories.m | 4 +- .../MacOnly/CPTTextStylePlatformSpecific.m | 4 +- framework/Source/CPTAnimation.h | 4 +- framework/Source/CPTAnimation.m | 10 +- framework/Source/CPTAnimationOperation.m | 2 +- framework/Source/CPTAnimationPeriod.m | 18 +- framework/Source/CPTAnnotation.m | 8 +- framework/Source/CPTAnnotationHostLayer.m | 12 +- framework/Source/CPTAxis.m | 116 ++++----- framework/Source/CPTAxisLabel.m | 24 +- framework/Source/CPTAxisLabelTests.m | 28 +-- framework/Source/CPTAxisSet.m | 6 +- framework/Source/CPTAxisTitle.m | 14 +- framework/Source/CPTBarPlot.m | 72 +++--- framework/Source/CPTBorderedLayer.m | 16 +- framework/Source/CPTCalendarFormatter.m | 4 +- framework/Source/CPTColor.m | 10 +- framework/Source/CPTColorSpace.m | 4 +- framework/Source/CPTDataSourceTestCase.m | 6 +- framework/Source/CPTDefinitions.h | 18 +- framework/Source/CPTFunctionDataSource.h | 8 +- framework/Source/CPTFunctionDataSource.m | 34 +-- framework/Source/CPTGradient.m | 76 +++--- framework/Source/CPTGraph.m | 16 +- framework/Source/CPTGridLineGroup.m | 6 +- framework/Source/CPTGridLines.m | 6 +- framework/Source/CPTImage.m | 90 +++---- framework/Source/CPTLayer.h | 4 +- framework/Source/CPTLayer.m | 92 ++++---- framework/Source/CPTLayerAnnotation.m | 6 +- framework/Source/CPTLayerTests.m | 4 +- framework/Source/CPTLegend.m | 68 +++--- framework/Source/CPTLegendEntry.m | 12 +- framework/Source/CPTLimitBand.m | 4 +- framework/Source/CPTLineCap.m | 48 ++-- framework/Source/CPTLineStyle.m | 10 +- framework/Source/CPTMutableNumericData.m | 4 +- framework/Source/CPTMutableNumericDataTests.m | 32 +-- ...CPTMutableNumericDataTypeConversionTests.m | 30 +-- framework/Source/CPTMutablePlotRange.m | 8 +- .../Source/CPTNumericData+TypeConversion.m | 36 +-- framework/Source/CPTNumericData.m | 38 +-- framework/Source/CPTNumericDataTests.m | 46 ++-- framework/Source/CPTNumericDataType.m | 4 +- ...umericDataTypeConversionPerformanceTests.m | 8 +- .../CPTNumericDataTypeConversionTests.m | 30 +-- framework/Source/CPTPathExtensions.m | 4 +- framework/Source/CPTPieChart.m | 90 +++---- framework/Source/CPTPlot.h | 4 +- framework/Source/CPTPlot.m | 60 ++--- framework/Source/CPTPlotArea.m | 34 +-- framework/Source/CPTPlotAreaFrame.m | 6 +- framework/Source/CPTPlotGroup.m | 2 +- framework/Source/CPTPlotRange.m | 16 +- framework/Source/CPTPlotRangeTests.m | 4 +- framework/Source/CPTPlotSpace.m | 8 +- framework/Source/CPTPlotSpaceAnnotation.m | 8 +- framework/Source/CPTPlotSymbol.m | 76 +++--- framework/Source/CPTRangePlot.m | 104 ++++---- framework/Source/CPTScatterPlot.m | 222 +++++++++--------- framework/Source/CPTScatterPlotTests.m | 22 +- framework/Source/CPTShadow.m | 6 +- framework/Source/CPTTextLayer.m | 18 +- framework/Source/CPTTextStyle.m | 4 +- framework/Source/CPTTheme.m | 2 +- framework/Source/CPTTimeFormatter.m | 4 +- framework/Source/CPTTradingRangePlot.m | 132 +++++------ framework/Source/CPTUtilities.m | 44 ++-- framework/Source/CPTUtilitiesTests.m | 10 +- framework/Source/CPTXYAxis.m | 64 ++--- framework/Source/CPTXYAxisSet.m | 4 +- framework/Source/CPTXYGraph.m | 6 +- framework/Source/CPTXYPlotSpace.m | 80 +++---- framework/Source/CPTXYPlotSpaceTests.m | 26 +- framework/Source/NSCoderExtensions.m | 8 +- framework/Source/_CPTAnimationCGFloatPeriod.m | 4 +- framework/Source/_CPTAnimationCGPointPeriod.m | 4 +- framework/Source/_CPTAnimationCGRectPeriod.m | 8 +- framework/Source/_CPTAnimationCGSizePeriod.m | 4 +- .../Source/_CPTAnimationNSDecimalPeriod.m | 14 +- .../Source/_CPTAnimationNSNumberPeriod.m | 10 +- .../Source/_CPTAnimationPlotRangePeriod.m | 8 +- .../Source/_CPTAnimationTimingFunctions.m | 184 +++++++-------- framework/Source/_CPTBorderLayer.m | 8 +- framework/Source/_CPTConstraintsFixed.m | 10 +- framework/Source/_CPTConstraintsRelative.m | 6 +- framework/Source/_CPTFillColor.m | 4 +- framework/Source/_CPTFillGradient.m | 4 +- framework/Source/_CPTFillImage.m | 4 +- framework/Source/_CPTMaskLayer.m | 4 +- framework/Source/_CPTXYTheme.m | 2 +- framework/iPhoneOnly/CPTGraphHostingView.m | 8 +- .../iPhoneOnly/CPTImagePlatformSpecific.m | 4 +- .../CPTPlatformSpecificCategories.m | 4 +- 144 files changed, 1401 insertions(+), 1401 deletions(-) diff --git a/QCPlugin/CPTScatterPlotPlugin.m b/QCPlugin/CPTScatterPlotPlugin.m index 6fb21dd2a..023a890db 100644 --- a/QCPlugin/CPTScatterPlotPlugin.m +++ b/QCPlugin/CPTScatterPlotPlugin.m @@ -197,7 +197,7 @@ -(BOOL)configurePlots if ( fillColor ) { plot.areaFill = [CPTFill fillWithColor:[CPTColor colorWithCGColor:fillColor]]; } - plot.areaBaseValue = @( MAX( self.inputYMin, MIN(self.inputYMax, 0.0) ) ); + plot.areaBaseValue = @(MAX(self.inputYMin, MIN(self.inputYMax, 0.0))); [plot reloadData]; } diff --git a/QCPlugin/CorePlotQCPlugin.m b/QCPlugin/CorePlotQCPlugin.m index 2c45d90f3..eee35da9a 100644 --- a/QCPlugin/CorePlotQCPlugin.m +++ b/QCPlugin/CorePlotQCPlugin.m @@ -115,7 +115,7 @@ +(QCPlugInTimeMode)timeMode -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { /* * Allocate any permanent resource required by the plug-in. */ @@ -451,11 +451,11 @@ -(BOOL)configureAxis set.xAxis.labelTextStyle = textStyle; double xrange = self.inputXMax - self.inputXMin; - set.xAxis.majorIntervalLength = @( xrange / (self.inputXMajorIntervals) ); + set.xAxis.majorIntervalLength = @(xrange / (self.inputXMajorIntervals)); set.xAxis.minorTicksPerInterval = self.inputXMinorIntervals; double yrange = self.inputYMax - self.inputYMin; - set.yAxis.majorIntervalLength = @( yrange / (self.inputYMajorIntervals) ); + set.yAxis.majorIntervalLength = @(yrange / (self.inputYMajorIntervals)); set.yAxis.minorTicksPerInterval = self.inputYMinorIntervals; set.xAxis.minorTickLength = self.inputAxisMinorTickLength; @@ -577,7 +577,7 @@ -(void)createImageResourcesWithContext:(nonnull id)context size_t rowBytes = (size_t)boundsSize.width * 4; if ( rowBytes % 16 ) { - rowBytes = ( (rowBytes / 16) + 1) * 16; + rowBytes = ((rowBytes / 16) + 1) * 16; } if ( !self.imageData ) { @@ -610,7 +610,7 @@ -(void)createImageResourcesWithContext:(nonnull id)context CGContextRelease(newContext); if ( rowBytes % 16 ) { - rowBytes = ( (rowBytes / 16) + 1) * 16; + rowBytes = ((rowBytes / 16) + 1) * 16; } // Note: I don't have a PPC to test on so this may or may not cause some color issues @@ -751,7 +751,7 @@ -(BOOL)configureGraph */ // Configure the graph area - CGRect frame = CPTRectMake( 0.0, 0.0, MAX(1, self.inputPixelsWide), MAX(1, self.inputPixelsHigh) ); + CGRect frame = CPTRectMake(0.0, 0.0, MAX(1, self.inputPixelsWide), MAX(1, self.inputPixelsHigh)); self.graph.bounds = frame; @@ -761,7 +761,7 @@ -(BOOL)configureGraph self.graph.paddingBottom = 0.0; // Perform some sanity checks. If there is a configuration error set the error flag so that a message is displayed - if ( (self.inputXMax <= self.inputXMin) || (self.inputYMax <= self.inputYMin) ) { + if ((self.inputXMax <= self.inputXMin) || (self.inputYMax <= self.inputYMin)) { return NO; } @@ -812,9 +812,9 @@ -(BOOL)execute:(nonnull id)context atTime:(NSTimeInterval)time // Draw the plot ... CGSize boundsSize = self.graph.bounds.size; CGContextRef bmContext = self.bitmapContext; - CGContextClearRect( bmContext, CPTRectMake(0.0, 0.0, boundsSize.width, boundsSize.height) ); + CGContextClearRect(bmContext, CPTRectMake(0.0, 0.0, boundsSize.width, boundsSize.height)); CGContextSetRGBFillColor(bmContext, 0.0, 0.0, 0.0, 0.0); - CGContextFillRect( bmContext, CPTRectMake(0, 0, boundsSize.width, boundsSize.height) ); + CGContextFillRect(bmContext, CPTRectMake(0, 0, boundsSize.width, boundsSize.height)); CGContextSetAllowsAntialiasing(bmContext, true); if ( configurationCheck ) { @@ -822,7 +822,7 @@ -(BOOL)execute:(nonnull id)context atTime:(NSTimeInterval)time [self.graph recursivelyRenderInContext:bmContext]; } else { - drawErrorText( bmContext, CPTRectMake(0, 0, self.inputPixelsWide, self.inputPixelsHigh) ); + drawErrorText(bmContext, CPTRectMake(0, 0, self.inputPixelsWide, self.inputPixelsHigh)); } // CGContextSetAllowsAntialiasing(bitmapContext, false); diff --git a/examples/AAPLot/Classes/FlipsideView.m b/examples/AAPLot/Classes/FlipsideView.m index 179b28f9d..556accfba 100644 --- a/examples/AAPLot/Classes/FlipsideView.m +++ b/examples/AAPLot/Classes/FlipsideView.m @@ -12,7 +12,7 @@ @implementation FlipsideView -(nonnull instancetype)initWithFrame:(CGRect)frame { - if ( (self = [super initWithFrame:frame]) ) { + if ((self = [super initWithFrame:frame])) { // Initialization code } return self; diff --git a/examples/AAPLot/Classes/MainViewController.m b/examples/AAPLot/Classes/MainViewController.m index 3f8535192..d78fa8d1b 100644 --- a/examples/AAPLot/Classes/MainViewController.m +++ b/examples/AAPLot/Classes/MainViewController.m @@ -127,7 +127,7 @@ -(void)viewDidLoad -(nonnull instancetype)initWithNibName:(nullable NSString *)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil { - if ( (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) ) { + if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { } return self; } @@ -155,7 +155,7 @@ -(nullable CPTNumericData *)dataForPlot:(nonnull CPTPlot *)plot recordIndexRange numFields = 2; } - NSMutableData *data = [[NSMutableData alloc] initWithLength:indexRange.length * numFields * ( useDoubles ? sizeof(double) : sizeof(NSDecimal) )]; + NSMutableData *data = [[NSMutableData alloc] initWithLength:indexRange.length * numFields * (useDoubles ? sizeof(double) : sizeof(NSDecimal))]; const NSUInteger maxIndex = NSMaxRange(indexRange); @@ -376,7 +376,7 @@ -(nullable CPTNumericData *)dataForPlot:(nonnull CPTPlot *)plot recordIndexRange numFields = 2; } - NSMutableData *data = [[NSMutableData alloc] initWithLength:indexRange.length * numFields * ( useDoubles ? sizeof(double) : sizeof(NSDecimal) )]; + NSMutableData *data = [[NSMutableData alloc] initWithLength:indexRange.length * numFields * (useDoubles ? sizeof(double) : sizeof(NSDecimal))]; const NSUInteger maxIndex = NSMaxRange(indexRange); @@ -652,7 +652,7 @@ -(void)dataPullerDidFinishFetch:(nonnull APYahooDataPuller *)dp animationOperation = [CPTAnimation animate:volumePlotSpace property:@"yRange" fromPlotRange:[CPTPlotRange plotRangeWithLocationDecimal:volumeLowDisplayLocation.decimalValue - lengthDecimal:CPTDecimalMultiply( volumeLengthDisplayLocation.decimalValue, CPTDecimalFromInteger(10) )] + lengthDecimal:CPTDecimalMultiply(volumeLengthDisplayLocation.decimalValue, CPTDecimalFromInteger(10))] toPlotRange:[CPTPlotRange plotRangeWithLocation:volumeLowDisplayLocation length:volumeLengthDisplayLocation] duration:2.5]; diff --git a/examples/CPTTestApp-iPad/Classes/CPTTestApp_iPadViewController.m b/examples/CPTTestApp-iPad/Classes/CPTTestApp_iPadViewController.m index 4f6ab4e8c..330f0041a 100644 --- a/examples/CPTTestApp-iPad/Classes/CPTTestApp_iPadViewController.m +++ b/examples/CPTTestApp-iPad/Classes/CPTTestApp_iPadViewController.m @@ -373,7 +373,7 @@ -(nullable id)numberForPlot:(nonnull CPTPlot *)plot field:(NSUInteger)fieldEnum num = @(NAN); } else { - num = @( (index + 1) * (index + 1) ); + num = @((index + 1) * (index + 1)); if ( [plot.identifier isEqual:@"Bar Plot 2"] ) { num = @(num.integerValue - 10); } diff --git a/examples/CPTTestApp/Source/CPTPlotSymbolTestController.m b/examples/CPTTestApp/Source/CPTPlotSymbolTestController.m index 3d949701e..472c6806d 100644 --- a/examples/CPTTestApp/Source/CPTPlotSymbolTestController.m +++ b/examples/CPTTestApp/Source/CPTPlotSymbolTestController.m @@ -82,7 +82,7 @@ -(nullable id)numberForPlot:(nonnull CPTPlot *)plot field:(NSUInteger)fieldEnum break; case CPTScatterPlotFieldY: - num = @( ( (NSString *)plot.identifier).integerValue); + num = @(((NSString *)plot.identifier).integerValue); break; default: @@ -103,7 +103,7 @@ -(nullable CPTPlotSymbol *)symbolForScatterPlot:(nonnull CPTScatterPlot *)plot r symbolShadow.shadowColor = [CPTColor blackColor]; CPTPlotSymbol *symbol = [[CPTPlotSymbol alloc] init]; - symbol.symbolType = (CPTPlotSymbolType)( (NSString *)plot.identifier).intValue; + symbol.symbolType = (CPTPlotSymbolType)((NSString *)plot.identifier).intValue; symbol.fill = [CPTFill fillWithGradient:gradientFill]; symbol.shadow = symbolShadow; @@ -116,9 +116,9 @@ -(nullable CPTPlotSymbol *)symbolForScatterPlot:(nonnull CPTScatterPlot *)plot r CGMutablePathRef path = CGPathCreateMutable(); CGPathMoveToPoint(path, NULL, 0., 0.); - CGPathAddEllipseInRect( path, NULL, CGRectMake(0., 0., 10., 10.) ); - CGPathAddEllipseInRect( path, NULL, CGRectMake(1.5, 4., 3., 3.) ); - CGPathAddEllipseInRect( path, NULL, CGRectMake(5.5, 4., 3., 3.) ); + CGPathAddEllipseInRect(path, NULL, CGRectMake(0., 0., 10., 10.)); + CGPathAddEllipseInRect(path, NULL, CGRectMake(1.5, 4., 3., 3.)); + CGPathAddEllipseInRect(path, NULL, CGRectMake(5.5, 4., 3., 3.)); CGPathMoveToPoint(path, NULL, 5., 2.); CGPathAddArc(path, NULL, 5., 3.3, 2.8, 0., M_PI, TRUE); CGPathCloseSubpath(path); diff --git a/examples/CPTTestApp/Source/Controller.m b/examples/CPTTestApp/Source/Controller.m index 911fa3a46..56c4e9371 100644 --- a/examples/CPTTestApp/Source/Controller.m +++ b/examples/CPTTestApp/Source/Controller.m @@ -64,7 +64,7 @@ -(void)awakeFromNib -(id)newObject { - NSNumber *x1 = @(1.0 + ( (NSMutableArray *)self.content).count * 0.05); + NSNumber *x1 = @(1.0 + ((NSMutableArray *)self.content).count * 0.05); NSNumber *y1 = @(1.2 * arc4random() / (double)UINT32_MAX + 1.2); return @{ @@ -414,7 +414,7 @@ -(nullable id)numberForPlot:(nonnull CPTPlot *)plot field:(NSUInteger)fieldEnum NSNumber *num; if ( [plot isKindOfClass:[CPTBarPlot class]] ) { - num = @( (index + 1) * (index + 1) ); + num = @((index + 1) * (index + 1)); if ( [plot.identifier isEqual:barPlot2] ) { num = @(num.integerValue - 10); } @@ -434,7 +434,7 @@ -(nullable CPTLayer *)dataLabelForPlot:(nonnull CPTPlot *)plot recordIndex:(NSUI if ( [(NSString *) plot.identifier isEqualToString:barPlot2] ) { return (id)[NSNull null]; // Don't show any label } - else if ( [(NSString *) plot.identifier isEqualToString:barPlot1] && (index < 4) ) { + else if ( [(NSString *) plot.identifier isEqualToString:barPlot1] && (index < 4)) { return (id)[NSNull null]; } else if ( index % 4 ) { @@ -780,7 +780,7 @@ -(void)setLabelRotation:(CGFloat)newRotation { labelRotation = newRotation; - ( (CPTXYAxisSet *)self.graph.axisSet).yAxis.labelRotation = newRotation; + ((CPTXYAxisSet *)self.graph.axisSet).yAxis.labelRotation = newRotation; [self.graph plotWithIdentifier:dataSourcePlot].labelRotation = newRotation; } diff --git a/examples/CPTTestApp/Source/RotationView.m b/examples/CPTTestApp/Source/RotationView.m index e8c0de112..99ba9673a 100644 --- a/examples/CPTTestApp/Source/RotationView.m +++ b/examples/CPTTestApp/Source/RotationView.m @@ -20,7 +20,7 @@ @implementation RotationView -(nonnull instancetype)initWithFrame:(NSRect)frame { - if ( (self = [super initWithFrame:frame]) ) { + if ((self = [super initWithFrame:frame])) { rotationTransform = CATransform3DIdentity; // Initialization code here. } @@ -50,10 +50,10 @@ -(void)mouseDragged:(nonnull NSEvent *)theEvent CGFloat totalRotation = sqrt(displacementInX * displacementInX + displacementInY * displacementInY); CATransform3D oldTransform = self.rotationTransform; - CATransform3D newTransform = CATransform3DRotate( oldTransform, totalRotation * M_PI / 180.0, - ( (displacementInX / totalRotation) * oldTransform.m12 + (displacementInY / totalRotation) * oldTransform.m11), - ( (displacementInX / totalRotation) * oldTransform.m22 + (displacementInY / totalRotation) * oldTransform.m21), - ( (displacementInX / totalRotation) * oldTransform.m32 + (displacementInY / totalRotation) * oldTransform.m31) ); + CATransform3D newTransform = CATransform3DRotate(oldTransform, totalRotation * M_PI / 180.0, + ((displacementInX / totalRotation) * oldTransform.m12 + (displacementInY / totalRotation) * oldTransform.m11), + ((displacementInX / totalRotation) * oldTransform.m22 + (displacementInY / totalRotation) * oldTransform.m21), + ((displacementInX / totalRotation) * oldTransform.m32 + (displacementInY / totalRotation) * oldTransform.m31)); id theDelegate = self.rotationDelegate; diff --git a/examples/CPTTestApp/Source/SelectionDemoController.m b/examples/CPTTestApp/Source/SelectionDemoController.m index 95616bec1..ec8b5f382 100644 --- a/examples/CPTTestApp/Source/SelectionDemoController.m +++ b/examples/CPTTestApp/Source/SelectionDemoController.m @@ -266,7 +266,7 @@ -(nullable CPTPlotSymbol *)symbolForScatterPlot:(nonnull CPTScatterPlot *)plot r CPTPlotSymbol *symbol = (id)[NSNull null]; - if ( [(NSString *) plot.identifier isEqualToString:SELECTION_PLOT] && (index == 2) ) { + if ( [(NSString *) plot.identifier isEqualToString:SELECTION_PLOT] && (index == 2)) { if ( !redDot ) { redDot = [[CPTPlotSymbol alloc] init]; redDot.symbolType = CPTPlotSymbolTypeEllipse; diff --git a/examples/CorePlotGallery/src/ios/AppDelegate.m b/examples/CorePlotGallery/src/ios/AppDelegate.m index 7356bbf8d..bfa738075 100644 --- a/examples/CorePlotGallery/src/ios/AppDelegate.m +++ b/examples/CorePlotGallery/src/ios/AppDelegate.m @@ -35,7 +35,7 @@ -(BOOL)application:(nonnull UIApplication *)application didFinishLaunchingWithOp -(BOOL)splitViewController:(UISplitViewController *)splitViewController collapseSecondaryViewController:(UIViewController *)secondaryViewController ontoPrimaryViewController:(UIViewController *)primaryViewController { - if ( [secondaryViewController isKindOfClass:[UINavigationController class]] && [( (UINavigationController *)secondaryViewController).topViewController isKindOfClass:[DetailViewController class]] && ( ( (DetailViewController *)( (UINavigationController *)secondaryViewController).topViewController).detailItem == nil) ) { + if ( [secondaryViewController isKindOfClass:[UINavigationController class]] && [((UINavigationController *)secondaryViewController).topViewController isKindOfClass:[DetailViewController class]] && (((DetailViewController *)((UINavigationController *)secondaryViewController).topViewController).detailItem == nil)) { // Return YES to indicate that we have handled the collapse by doing nothing; the secondary controller will be discarded. return YES; } diff --git a/examples/CorePlotGallery/src/ios/DetailViewController.m b/examples/CorePlotGallery/src/ios/DetailViewController.m index 6d14600b2..9d787a9fa 100644 --- a/examples/CorePlotGallery/src/ios/DetailViewController.m +++ b/examples/CorePlotGallery/src/ios/DetailViewController.m @@ -51,7 +51,7 @@ -(void)awakeFromNib -(nonnull instancetype)initWithNibName:(nullable NSString *)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil { - if ( (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) ) { + if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { [self setupView]; } diff --git a/examples/CorePlotGallery/src/ios/RootViewController.m b/examples/CorePlotGallery/src/ios/RootViewController.m index 9bfce6548..5c0624442 100644 --- a/examples/CorePlotGallery/src/ios/RootViewController.m +++ b/examples/CorePlotGallery/src/ios/RootViewController.m @@ -50,7 +50,7 @@ -(void)dealloc -(void)prepareForSegue:(nonnull UIStoryboardSegue *)segue sender:(nullable id)sender { if ( [segue.identifier isEqualToString:@"showDetail"] ) { - DetailViewController *controller = (DetailViewController *)( (UINavigationController *)segue.destinationViewController).topViewController; + DetailViewController *controller = (DetailViewController *)((UINavigationController *)segue.destinationViewController).topViewController; controller.navigationItem.leftBarButtonItem = self.splitViewController.displayModeButtonItem; controller.navigationItem.leftItemsSupplementBackButton = YES; diff --git a/examples/CorePlotGallery/src/ios/ThemeTableViewController.m b/examples/CorePlotGallery/src/ios/ThemeTableViewController.m index f9b322d99..9854a26f8 100644 --- a/examples/CorePlotGallery/src/ios/ThemeTableViewController.m +++ b/examples/CorePlotGallery/src/ios/ThemeTableViewController.m @@ -48,7 +48,7 @@ -(void)awakeFromNib -(nonnull instancetype)initWithNibName:(nullable NSString *)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil { - if ( (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) ) { + if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { [self setupThemes]; } diff --git a/examples/CorePlotGallery/src/ios/main.m b/examples/CorePlotGallery/src/ios/main.m index da456e0b4..7f96dbbda 100644 --- a/examples/CorePlotGallery/src/ios/main.m +++ b/examples/CorePlotGallery/src/ios/main.m @@ -8,6 +8,6 @@ int main(int argc, char *argv[]) { @autoreleasepool { - return UIApplicationMain( argc, argv, nil, NSStringFromClass([AppDelegate class]) ); + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } } diff --git a/examples/CorePlotGallery/src/mac/PlotGalleryController.m b/examples/CorePlotGallery/src/mac/PlotGalleryController.m index ed8ba5d93..882874e5c 100644 --- a/examples/CorePlotGallery/src/mac/PlotGalleryController.m +++ b/examples/CorePlotGallery/src/mac/PlotGalleryController.m @@ -167,7 +167,7 @@ -(void)exportTVImageWithSize:(CGSize)size toURL:(NSURL *)url showPlots:(BOOL)sho NSGraphicsContext *bitmapContext = [NSGraphicsContext graphicsContextWithBitmapImageRep:layerImage]; CGContextRef context = (CGContextRef)bitmapContext.graphicsPort; - CGContextClearRect( context, CGRectMake(0.0, 0.0, boundsSize.width, boundsSize.height) ); + CGContextClearRect(context, CGRectMake(0.0, 0.0, boundsSize.width, boundsSize.height)); CGContextSetAllowsAntialiasing(context, true); CGContextSetShouldSmoothFonts(context, false); [imageView.layer renderInContext:context]; diff --git a/examples/CorePlotGallery/src/mac/PlotView.m b/examples/CorePlotGallery/src/mac/PlotView.m index 2df73ae70..4fe50f63e 100644 --- a/examples/CorePlotGallery/src/mac/PlotView.m +++ b/examples/CorePlotGallery/src/mac/PlotView.m @@ -11,7 +11,7 @@ @implementation PlotView -(nonnull instancetype)initWithFrame:(NSRect)frame { - if ( (self = [super initWithFrame:frame]) ) { + if ((self = [super initWithFrame:frame])) { } return self; diff --git a/examples/CorePlotGallery/src/plots/AxisDemo.m b/examples/CorePlotGallery/src/plots/AxisDemo.m index 0cac6ac1a..7fb29e512 100644 --- a/examples/CorePlotGallery/src/plots/AxisDemo.m +++ b/examples/CorePlotGallery/src/plots/AxisDemo.m @@ -14,7 +14,7 @@ +(void)load -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { self.title = @"Axis Demo"; self.section = kDemoPlots; } diff --git a/examples/CorePlotGallery/src/plots/CandlestickPlot.m b/examples/CorePlotGallery/src/plots/CandlestickPlot.m index d4aa96b91..4d83cb741 100644 --- a/examples/CorePlotGallery/src/plots/CandlestickPlot.m +++ b/examples/CorePlotGallery/src/plots/CandlestickPlot.m @@ -26,7 +26,7 @@ +(void)load -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { graph = nil; plotData = @[]; @@ -46,8 +46,8 @@ -(void)generateData double rOpen = 3.0 * arc4random() / (double)UINT32_MAX + 1.0; double rClose = (arc4random() / (double)UINT32_MAX - 0.5) * 0.125 + rOpen; - double rHigh = MAX( rOpen, MAX(rClose, (arc4random() / (double)UINT32_MAX - 0.5) * 0.5 + rOpen) ); - double rLow = MIN( rOpen, MIN(rClose, (arc4random() / (double)UINT32_MAX - 0.5) * 0.5 + rOpen) ); + double rHigh = MAX(rOpen, MAX(rClose, (arc4random() / (double)UINT32_MAX - 0.5) * 0.5 + rOpen)); + double rLow = MIN(rOpen, MIN(rClose, (arc4random() / (double)UINT32_MAX - 0.5) * 0.5 + rOpen)); [newData addObject: @{ @(CPTTradingRangePlotFieldX): @(x), @@ -105,7 +105,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT CPTLineCap *lineCap = [[CPTLineCap alloc] init]; lineCap.lineStyle = xAxis.axisLineStyle; lineCap.lineCapType = CPTLineCapTypeSweptArrow; - lineCap.size = CGSizeMake( self.titleSize * CPTFloat(0.5), self.titleSize * CPTFloat(0.625) ); + lineCap.size = CGSizeMake(self.titleSize * CPTFloat(0.5), self.titleSize * CPTFloat(0.625)); CPTColor *lineColor = xAxis.axisLineStyle.lineColor; if ( lineColor ) { @@ -175,7 +175,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT newGraph.legend.swatchLayout = CPTLegendSwatchLayoutRight; newGraph.legendAnchor = CPTRectAnchorBottom; - newGraph.legendDisplacement = CGPointMake( 0.0, self.titleSize * CPTFloat(3.0) ); + newGraph.legendDisplacement = CGPointMake(0.0, self.titleSize * CPTFloat(3.0)); // Set plot ranges CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)newGraph.defaultPlotSpace; diff --git a/examples/CorePlotGallery/src/plots/ColoredBarChart.m b/examples/CorePlotGallery/src/plots/ColoredBarChart.m index 2adf8cef2..064eb7b0e 100644 --- a/examples/CorePlotGallery/src/plots/ColoredBarChart.m +++ b/examples/CorePlotGallery/src/plots/ColoredBarChart.m @@ -17,7 +17,7 @@ +(void)load -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { self.title = @"Colored Bar Chart"; self.section = kBarPlots; } @@ -133,7 +133,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT graph.legend = theLegend; graph.legendAnchor = CPTRectAnchorTop; - graph.legendDisplacement = CGPointMake( 0.0, self.titleSize * CPTFloat(-2.625) ); + graph.legendDisplacement = CGPointMake(0.0, self.titleSize * CPTFloat(-2.625)); } #pragma mark - diff --git a/examples/CorePlotGallery/src/plots/CompositePlot.m b/examples/CorePlotGallery/src/plots/CompositePlot.m index 2b5700a87..7fe8a0442 100644 --- a/examples/CorePlotGallery/src/plots/CompositePlot.m +++ b/examples/CorePlotGallery/src/plots/CompositePlot.m @@ -40,7 +40,7 @@ +(void)load -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { selectedIndex = NSNotFound; self.title = @"Composite Plot"; @@ -58,20 +58,20 @@ -(nonnull instancetype)init -(void)setFrameSize:(NSSize)newSize { - self.scatterPlotView.frame = NSMakeRect( 0.0, - 0.0, - newSize.width, - newSize.height * CPTFloat(0.5) ); + self.scatterPlotView.frame = NSMakeRect(0.0, + 0.0, + newSize.width, + newSize.height * CPTFloat(0.5)); - self.barChartView.frame = NSMakeRect( 0.0, - newSize.height * CPTFloat(0.5), - newSize.width * CPTFloat(0.5), - newSize.height * CPTFloat(0.5) ); + self.barChartView.frame = NSMakeRect(0.0, + newSize.height * CPTFloat(0.5), + newSize.width * CPTFloat(0.5), + newSize.height * CPTFloat(0.5)); - self.pieChartView.frame = NSMakeRect( newSize.width * CPTFloat(0.5), - newSize.height * CPTFloat(0.5), - newSize.width * CPTFloat(0.5), - newSize.height * CPTFloat(0.5) ); + self.pieChartView.frame = NSMakeRect(newSize.width * CPTFloat(0.5), + newSize.height * CPTFloat(0.5), + newSize.width * CPTFloat(0.5), + newSize.height * CPTFloat(0.5)); [self.scatterPlotView setNeedsDisplay:YES]; [self.barChartView setNeedsDisplay:YES]; @@ -170,20 +170,20 @@ -(void)renderInView:(nonnull PlotGalleryNativeView *)hostingView withTheme:(null #else NSRect viewRect = hostingView.bounds; - scatterView.frame = NSMakeRect( 0.0, - 0.0, - viewRect.size.width, - viewRect.size.height * CPTFloat(0.5) ); + scatterView.frame = NSMakeRect(0.0, + 0.0, + viewRect.size.width, + viewRect.size.height * CPTFloat(0.5)); - barView.frame = NSMakeRect( 0.0, - viewRect.size.height * CPTFloat(0.5), - viewRect.size.width * CPTFloat(0.5), - viewRect.size.height * CPTFloat(0.5) ); + barView.frame = NSMakeRect(0.0, + viewRect.size.height * CPTFloat(0.5), + viewRect.size.width * CPTFloat(0.5), + viewRect.size.height * CPTFloat(0.5)); - pieView.frame = NSMakeRect( viewRect.size.width * CPTFloat(0.5), - viewRect.size.height * CPTFloat(0.5), - viewRect.size.width * CPTFloat(0.5), - viewRect.size.height * CPTFloat(0.5) ); + pieView.frame = NSMakeRect(viewRect.size.width * CPTFloat(0.5), + viewRect.size.height * CPTFloat(0.5), + viewRect.size.width * CPTFloat(0.5), + viewRect.size.height * CPTFloat(0.5)); for ( NSView *view in @[scatterView, barView, pieView] ) { [view setAutoresizesSubviews:YES]; @@ -422,8 +422,8 @@ -(void)renderPieChartInHostingView:(nonnull CPTGraphHostingView *)hostingView wi // Add pie chart CPTPieChart *piePlot = [[CPTPieChart alloc] init]; piePlot.dataSource = self; - piePlot.pieRadius = MIN( CPTFloat(0.7) * (hostingView.frame.size.height - CPTFloat(2.0) * self.pieChart.paddingLeft) / CPTFloat(2.0), - CPTFloat(0.7) * (hostingView.frame.size.width - CPTFloat(2.0) * self.pieChart.paddingTop) / CPTFloat(2.0) ); + piePlot.pieRadius = MIN(CPTFloat(0.7) * (hostingView.frame.size.height - CPTFloat(2.0) * self.pieChart.paddingLeft) / CPTFloat(2.0), + CPTFloat(0.7) * (hostingView.frame.size.width - CPTFloat(2.0) * self.pieChart.paddingTop) / CPTFloat(2.0)); piePlot.identifier = @"Pie Chart 1"; piePlot.startAngle = CPTFloat(M_PI_4); piePlot.sliceDirection = CPTPieDirectionCounterClockwise; @@ -503,7 +503,7 @@ -(nullable id)numberForPlot:(nonnull CPTPlot *)plot field:(NSUInteger)fieldEnum break; case CPTBarPlotFieldBarTip: - num = @( (index + 1) * (index + 1) ); + num = @((index + 1) * (index + 1)); if ( [plot.identifier isEqual:@"Bar Plot 2"] ) { num = @(num.integerValue - 10); } @@ -575,7 +575,7 @@ -(nullable CPTPlotSymbol *)symbolForScatterPlot:(nonnull CPTScatterPlot *)plot r CPTPlotSymbol *symbol = nil; // Use the default symbol - if ( [(NSString *) plot.identifier isEqualToString:@"Blue Plot"] && ( (NSInteger)index == self.selectedIndex) ) { + if ( [(NSString *) plot.identifier isEqualToString:@"Blue Plot"] && ((NSInteger)index == self.selectedIndex)) { dispatch_once(&onceToken, ^{ redDot = [[CPTPlotSymbol alloc] init]; redDot.symbolType = CPTPlotSymbolTypeEllipse; @@ -602,10 +602,10 @@ -(void)setSelectedIndex:(NSInteger)newIndex CPTScatterPlot *thePlot = (CPTScatterPlot *)[self.scatterPlot plotWithIdentifier:@"Blue Plot"]; if ( oldIndex != NSNotFound ) { - [thePlot reloadPlotSymbolsInIndexRange:NSMakeRange( (NSUInteger)oldIndex, 1)]; + [thePlot reloadPlotSymbolsInIndexRange:NSMakeRange((NSUInteger)oldIndex, 1)]; } if ( newIndex != NSNotFound ) { - [thePlot reloadPlotSymbolsInIndexRange:NSMakeRange( (NSUInteger)newIndex, 1)]; + [thePlot reloadPlotSymbolsInIndexRange:NSMakeRange((NSUInteger)newIndex, 1)]; } } } diff --git a/examples/CorePlotGallery/src/plots/ControlChart.m b/examples/CorePlotGallery/src/plots/ControlChart.m index e86bbff2f..73e78030e 100644 --- a/examples/CorePlotGallery/src/plots/ControlChart.m +++ b/examples/CorePlotGallery/src/plots/ControlChart.m @@ -28,7 +28,7 @@ +(void)load -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { self.title = @"Control Chart"; self.section = kLinePlots; } @@ -58,7 +58,7 @@ -(void)generateData double error = value.doubleValue - self.meanValue; sum += error * error; } - double stdDev = sqrt( ( 1.0 / (numberOfPoints - 1) ) * sum); + double stdDev = sqrt((1.0 / (numberOfPoints - 1)) * sum); self.standardError = stdDev / sqrt(numberOfPoints); } } @@ -207,7 +207,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT graph.legend.cornerRadius = 5.0; graph.legend.numberOfRows = 1; graph.legendAnchor = CPTRectAnchorBottom; - graph.legendDisplacement = CGPointMake( 0.0, self.titleSize * CPTFloat(4.0) ); + graph.legendDisplacement = CGPointMake(0.0, self.titleSize * CPTFloat(4.0)); } #pragma mark - diff --git a/examples/CorePlotGallery/src/plots/CurvedInterpolationDemo.m b/examples/CorePlotGallery/src/plots/CurvedInterpolationDemo.m index b699f581c..782d61fcf 100644 --- a/examples/CorePlotGallery/src/plots/CurvedInterpolationDemo.m +++ b/examples/CorePlotGallery/src/plots/CurvedInterpolationDemo.m @@ -37,7 +37,7 @@ +(void)load -(instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { self.title = @"Curved Interpolation Options Demo"; self.section = kLinePlots; } @@ -106,7 +106,7 @@ -(void)renderInGraphHostingView:(CPTGraphHostingView *)hostingView withTheme:(CP redLineStyle.lineColor = [[CPTColor redColor] colorWithAlphaComponent:0.5]; CPTLineCap *lineCap = [CPTLineCap sweptArrowPlotLineCap]; - lineCap.size = CGSizeMake( self.titleSize * CPTFloat(0.625), self.titleSize * CPTFloat(0.625) ); + lineCap.size = CGSizeMake(self.titleSize * CPTFloat(0.625), self.titleSize * CPTFloat(0.625)); // Axes // Label x axis with a fixed interval policy @@ -243,7 +243,7 @@ -(void)renderInGraphHostingView:(CPTGraphHostingView *)hostingView withTheme:(CP graph.legend.borderLineStyle = x.axisLineStyle; graph.legend.cornerRadius = 5.0; graph.legendAnchor = CPTRectAnchorBottom; - graph.legendDisplacement = CGPointMake( 0.0, self.titleSize * CPTFloat(2.0) ); + graph.legendDisplacement = CGPointMake(0.0, self.titleSize * CPTFloat(2.0)); } #pragma mark - diff --git a/examples/CorePlotGallery/src/plots/CurvedScatterPlot.m b/examples/CorePlotGallery/src/plots/CurvedScatterPlot.m index 1daa64d28..826a68dd1 100644 --- a/examples/CorePlotGallery/src/plots/CurvedScatterPlot.m +++ b/examples/CorePlotGallery/src/plots/CurvedScatterPlot.m @@ -34,7 +34,7 @@ +(void)load -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { self.title = @"Curved Scatter Plot"; self.section = kLinePlots; } @@ -94,7 +94,7 @@ -(void)generateData [contentArray addObject: @{ @"x": @(xLoc), - @"y": @( (dy / dx) / 20.0) } + @"y": @((dy / dx) / 20.0) } ]; } @@ -121,7 +121,7 @@ -(void)generateData [contentArray addObject: @{ @"x": @(xLoc), - @"y": @( (dy / dx) / 20.0) } + @"y": @((dy / dx) / 20.0) } ]; } @@ -169,7 +169,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT redLineStyle.lineColor = [[CPTColor redColor] colorWithAlphaComponent:0.5]; CPTLineCap *lineCap = [CPTLineCap sweptArrowPlotLineCap]; - lineCap.size = CGSizeMake( self.titleSize * CPTFloat(0.625), self.titleSize * CPTFloat(0.625) ); + lineCap.size = CGSizeMake(self.titleSize * CPTFloat(0.625), self.titleSize * CPTFloat(0.625)); // Axes // Label x axis with a fixed interval policy @@ -291,7 +291,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT graph.legend.borderLineStyle = x.axisLineStyle; graph.legend.cornerRadius = 5.0; graph.legendAnchor = CPTRectAnchorBottom; - graph.legendDisplacement = CGPointMake( 0.0, self.titleSize * CPTFloat(2.0) ); + graph.legendDisplacement = CGPointMake(0.0, self.titleSize * CPTFloat(2.0)); } #pragma mark - diff --git a/examples/CorePlotGallery/src/plots/DatePlot.m b/examples/CorePlotGallery/src/plots/DatePlot.m index 7179dadb6..8e22b5a25 100644 --- a/examples/CorePlotGallery/src/plots/DatePlot.m +++ b/examples/CorePlotGallery/src/plots/DatePlot.m @@ -34,7 +34,7 @@ +(void)load -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { self.title = @"Date Plot"; self.section = kLinePlots; } @@ -100,7 +100,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace; NSTimeInterval xLow = 0.0; - plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:@(xLow) length:@( oneDay * (kNumPoints - 1) )]; + plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:@(xLow) length:@(oneDay * (kNumPoints - 1))]; plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:@1.0 length:@2.0]; plotSpace.allowsUserInteraction = YES; diff --git a/examples/CorePlotGallery/src/plots/DonutChart.m b/examples/CorePlotGallery/src/plots/DonutChart.m index 32233f90d..82eb54fa6 100644 --- a/examples/CorePlotGallery/src/plots/DonutChart.m +++ b/examples/CorePlotGallery/src/plots/DonutChart.m @@ -20,7 +20,7 @@ +(void)load -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { self.title = @"Donut Chart"; self.section = kPieCharts; } @@ -59,8 +59,8 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT whiteShadow.shadowColor = [[CPTColor whiteColor] colorWithAlphaComponent:0.25]; // Add pie chart - const CGFloat outerRadius = MIN( CPTFloat(0.7) * (hostingView.frame.size.height - CPTFloat(2.0) * graph.paddingLeft) / CPTFloat(2.0), - CPTFloat(0.7) * (hostingView.frame.size.width - CPTFloat(2.0) * graph.paddingTop) / CPTFloat(2.0) ); + const CGFloat outerRadius = MIN(CPTFloat(0.7) * (hostingView.frame.size.height - CPTFloat(2.0) * graph.paddingLeft) / CPTFloat(2.0), + CPTFloat(0.7) * (hostingView.frame.size.width - CPTFloat(2.0) * graph.paddingTop) / CPTFloat(2.0)); const CGFloat innerRadius = outerRadius / CPTFloat(2.0); CPTPieChart *piePlot = [[CPTPieChart alloc] init]; @@ -92,7 +92,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT // Add another pie chart piePlot = [[CPTPieChart alloc] init]; piePlot.dataSource = self; - piePlot.pieRadius = ( animated ? CPTFloat(0.0) : ( innerRadius - CPTFloat(5.0) ) ); + piePlot.pieRadius = (animated ? CPTFloat(0.0) : (innerRadius - CPTFloat(5.0))); piePlot.identifier = innerChartName; piePlot.borderLineStyle = whiteLineStyle; piePlot.startAngle = CPTFloat(M_PI_4); diff --git a/examples/CorePlotGallery/src/plots/FunctionPlot.m b/examples/CorePlotGallery/src/plots/FunctionPlot.m index a52e81d02..73cffc8c7 100644 --- a/examples/CorePlotGallery/src/plots/FunctionPlot.m +++ b/examples/CorePlotGallery/src/plots/FunctionPlot.m @@ -33,7 +33,7 @@ +(void)load -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { dataSources = [[NSMutableSet alloc] init]; self.title = @"Math Function Plot"; @@ -201,7 +201,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT graph.legend.numberOfRows = 1; graph.legend.delegate = self; graph.legendAnchor = CPTRectAnchorBottom; - graph.legendDisplacement = CGPointMake( 0.0, self.titleSize * CPTFloat(1.25) ); + graph.legendDisplacement = CGPointMake(0.0, self.titleSize * CPTFloat(1.25)); } #if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE diff --git a/examples/CorePlotGallery/src/plots/GradientScatterPlot.m b/examples/CorePlotGallery/src/plots/GradientScatterPlot.m index c16ee9215..4079575f8 100644 --- a/examples/CorePlotGallery/src/plots/GradientScatterPlot.m +++ b/examples/CorePlotGallery/src/plots/GradientScatterPlot.m @@ -24,7 +24,7 @@ +(void)load -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { self.title = @"Gradient Scatter Plot"; self.section = kLinePlots; } diff --git a/examples/CorePlotGallery/src/plots/ImageDemo.m b/examples/CorePlotGallery/src/plots/ImageDemo.m index 5606d3120..8af09fdb1 100644 --- a/examples/CorePlotGallery/src/plots/ImageDemo.m +++ b/examples/CorePlotGallery/src/plots/ImageDemo.m @@ -14,7 +14,7 @@ +(void)load -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { self.title = @"Image Demo"; self.section = kDemoPlots; } diff --git a/examples/CorePlotGallery/src/plots/LabelingPolicyDemo.m b/examples/CorePlotGallery/src/plots/LabelingPolicyDemo.m index b6c088c00..9a6d196f4 100644 --- a/examples/CorePlotGallery/src/plots/LabelingPolicyDemo.m +++ b/examples/CorePlotGallery/src/plots/LabelingPolicyDemo.m @@ -14,7 +14,7 @@ +(void)load -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { self.title = @"Axis Labeling Policies"; self.section = kDemoPlots; } diff --git a/examples/CorePlotGallery/src/plots/LineCapDemo.m b/examples/CorePlotGallery/src/plots/LineCapDemo.m index c3f9d256a..de339da6d 100644 --- a/examples/CorePlotGallery/src/plots/LineCapDemo.m +++ b/examples/CorePlotGallery/src/plots/LineCapDemo.m @@ -14,7 +14,7 @@ +(void)load -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { self.title = @"Line Caps"; self.section = kDemoPlots; } diff --git a/examples/CorePlotGallery/src/plots/OHLCPlot.m b/examples/CorePlotGallery/src/plots/OHLCPlot.m index a2ce2ac9a..b4f7e1163 100644 --- a/examples/CorePlotGallery/src/plots/OHLCPlot.m +++ b/examples/CorePlotGallery/src/plots/OHLCPlot.m @@ -26,7 +26,7 @@ +(void)load -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { graph = nil; plotData = @[]; @@ -46,8 +46,8 @@ -(void)generateData double rOpen = 3.0 * arc4random() / (double)UINT32_MAX + 1.0; double rClose = (arc4random() / (double)UINT32_MAX - 0.5) * 0.125 + rOpen; - double rHigh = MAX( rOpen, MAX(rClose, (arc4random() / (double)UINT32_MAX - 0.5) * 0.5 + rOpen) ); - double rLow = MIN( rOpen, MIN(rClose, (arc4random() / (double)UINT32_MAX - 0.5) * 0.5 + rOpen) ); + double rHigh = MAX(rOpen, MAX(rClose, (arc4random() / (double)UINT32_MAX - 0.5) * 0.5 + rOpen)); + double rLow = MIN(rOpen, MIN(rClose, (arc4random() / (double)UINT32_MAX - 0.5) * 0.5 + rOpen)); [newData addObject: @{ @(CPTTradingRangePlotFieldX): @(x), @@ -105,7 +105,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT CPTLineCap *lineCap = [[CPTLineCap alloc] init]; lineCap.lineStyle = xAxis.axisLineStyle; lineCap.lineCapType = CPTLineCapTypeOpenArrow; - lineCap.size = CGSizeMake( self.titleSize * CPTFloat(0.5), self.titleSize * CPTFloat(0.5) ); + lineCap.size = CGSizeMake(self.titleSize * CPTFloat(0.5), self.titleSize * CPTFloat(0.5)); xAxis.axisLineCapMax = lineCap; CPTXYAxis *yAxis = xyAxisSet.yAxis; @@ -170,7 +170,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT newGraph.legend.cornerRadius = 5.0; newGraph.legend.swatchCornerRadius = 5.0; newGraph.legendAnchor = CPTRectAnchorBottom; - newGraph.legendDisplacement = CGPointMake( 0.0, self.titleSize * CPTFloat(3.0) ); + newGraph.legendDisplacement = CGPointMake(0.0, self.titleSize * CPTFloat(3.0)); // Set plot ranges CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)newGraph.defaultPlotSpace; diff --git a/examples/CorePlotGallery/src/plots/PlotSpaceDemo.m b/examples/CorePlotGallery/src/plots/PlotSpaceDemo.m index 05a0c4482..90dae3e42 100644 --- a/examples/CorePlotGallery/src/plots/PlotSpaceDemo.m +++ b/examples/CorePlotGallery/src/plots/PlotSpaceDemo.m @@ -14,7 +14,7 @@ +(void)load -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { self.title = @"Plot Space Demo"; self.section = kDemoPlots; } diff --git a/examples/CorePlotGallery/src/plots/RangePlot.m b/examples/CorePlotGallery/src/plots/RangePlot.m index 5fa05060e..8ad6f5568 100644 --- a/examples/CorePlotGallery/src/plots/RangePlot.m +++ b/examples/CorePlotGallery/src/plots/RangePlot.m @@ -30,7 +30,7 @@ +(void)load -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { graph = nil; plotData = @[]; @@ -171,7 +171,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT newGraph.legend.cornerRadius = 5.0; newGraph.legend.swatchCornerRadius = 3.0; newGraph.legendAnchor = CPTRectAnchorTop; - newGraph.legendDisplacement = CGPointMake( 0.0, self.titleSize * CPTFloat(-2.0) - CPTFloat(12.0) ); + newGraph.legendDisplacement = CGPointMake(0.0, self.titleSize * CPTFloat(-2.0) - CPTFloat(12.0)); } #pragma mark - diff --git a/examples/CorePlotGallery/src/plots/RealTimePlot.m b/examples/CorePlotGallery/src/plots/RealTimePlot.m index a7ac2cec4..86e9112ea 100644 --- a/examples/CorePlotGallery/src/plots/RealTimePlot.m +++ b/examples/CorePlotGallery/src/plots/RealTimePlot.m @@ -32,7 +32,7 @@ +(void)load -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { plotData = [[NSMutableArray alloc] initWithCapacity:kMaxDataPoints]; dataTimer = nil; @@ -172,7 +172,7 @@ -(void)newData:(nonnull NSTimer *)theTimer CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)theGraph.defaultPlotSpace; NSUInteger location = (self.currentIndex >= kMaxDataPoints ? self.currentIndex - kMaxDataPoints + 2 : 0); - CPTPlotRange *oldRange = [CPTPlotRange plotRangeWithLocation:@( (location > 0) ? (location - 1) : 0) + CPTPlotRange *oldRange = [CPTPlotRange plotRangeWithLocation:@((location > 0) ? (location - 1) : 0) length:@(kMaxDataPoints - 2)]; CPTPlotRange *newRange = [CPTPlotRange plotRangeWithLocation:@(location) length:@(kMaxDataPoints - 2)]; @@ -184,7 +184,7 @@ -(void)newData:(nonnull NSTimer *)theTimer duration:CPTFloat(1.0 / kFrameRate)]; self.currentIndex++; - [self.plotData addObject:@( (1.0 - kAlpha) * self.plotData.lastObject.doubleValue + kAlpha * arc4random() / (double)UINT32_MAX)]; + [self.plotData addObject:@((1.0 - kAlpha) * self.plotData.lastObject.doubleValue + kAlpha * arc4random() / (double)UINT32_MAX)]; [thePlot insertDataAtIndex:self.plotData.count - 1 numberOfRecords:1]; } } diff --git a/examples/CorePlotGallery/src/plots/SimplePieChart.m b/examples/CorePlotGallery/src/plots/SimplePieChart.m index a4bec7036..1e1cd8579 100644 --- a/examples/CorePlotGallery/src/plots/SimplePieChart.m +++ b/examples/CorePlotGallery/src/plots/SimplePieChart.m @@ -26,7 +26,7 @@ +(void)load -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { self.title = @"Simple Pie Chart"; self.section = kPieCharts; @@ -68,8 +68,8 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT // Add pie chart CPTPieChart *piePlot = [[CPTPieChart alloc] init]; piePlot.dataSource = self; - piePlot.pieRadius = MIN( CPTFloat(0.7) * (hostingView.frame.size.height - CPTFloat(2.0) * graph.paddingLeft) / CPTFloat(2.0), - CPTFloat(0.7) * (hostingView.frame.size.width - CPTFloat(2.0) * graph.paddingTop) / CPTFloat(2.0) ); + piePlot.pieRadius = MIN(CPTFloat(0.7) * (hostingView.frame.size.height - CPTFloat(2.0) * graph.paddingLeft) / CPTFloat(2.0), + CPTFloat(0.7) * (hostingView.frame.size.width - CPTFloat(2.0) * graph.paddingTop) / CPTFloat(2.0)); piePlot.identifier = self.title; piePlot.startAngle = CPTFloat(M_PI_4); piePlot.sliceDirection = CPTPieDirectionCounterClockwise; @@ -136,7 +136,7 @@ -(void)pieChart:(nonnull CPTPieChart *)plot sliceWasSelectedAtRecordIndex:(NSUIn self.offsetIndex = NSNotFound; CPTMutableNumberArray *newData = [[NSMutableArray alloc] init]; - NSUInteger dataCount = (NSUInteger)lrint( ceil(10.0 * arc4random() / (double)UINT32_MAX) ) + 1; + NSUInteger dataCount = (NSUInteger)lrint(ceil(10.0 * arc4random() / (double)UINT32_MAX)) + 1; for ( NSUInteger i = 1; i < dataCount; i++ ) { [newData addObject:@(100.0 * arc4random() / (double)UINT32_MAX)]; } @@ -156,8 +156,8 @@ -(void)legend:(nonnull CPTLegend *)legend legendEntryForPlot:(nonnull CPTPlot *) [CPTAnimation animate:self property:@"sliceOffset" - from:( idx == self.offsetIndex ? CPTNAN : CPTFloat(0.0) ) - to:( idx == self.offsetIndex ? CPTFloat(0.0) : CPTFloat(35.0) ) + from:(idx == self.offsetIndex ? CPTNAN : CPTFloat(0.0)) + to:(idx == self.offsetIndex ? CPTFloat(0.0) : CPTFloat(35.0)) duration:0.5 animationCurve:CPTAnimationCurveCubicOut delegate:nil]; @@ -224,7 +224,7 @@ -(void)setSliceOffset:(CGFloat)newOffset [self.graphs[0] reloadData]; - if ( newOffset == CPTFloat(0.0) ) { + if ( newOffset == CPTFloat(0.0)) { self.offsetIndex = NSNotFound; } } diff --git a/examples/CorePlotGallery/src/plots/SimpleScatterPlot.m b/examples/CorePlotGallery/src/plots/SimpleScatterPlot.m index cb2d4999c..cb603ccf0 100644 --- a/examples/CorePlotGallery/src/plots/SimpleScatterPlot.m +++ b/examples/CorePlotGallery/src/plots/SimpleScatterPlot.m @@ -26,7 +26,7 @@ +(void)load -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { self.title = @"Simple Scatter Plot"; self.section = kLinePlots; diff --git a/examples/CorePlotGallery/src/plots/SteppedScatterPlot.m b/examples/CorePlotGallery/src/plots/SteppedScatterPlot.m index fe26395d3..b6f9e8008 100644 --- a/examples/CorePlotGallery/src/plots/SteppedScatterPlot.m +++ b/examples/CorePlotGallery/src/plots/SteppedScatterPlot.m @@ -22,7 +22,7 @@ +(void)load -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { self.title = @"Stepped Scatter Plot"; self.section = kLinePlots; } diff --git a/examples/CorePlotGallery/src/plots/VerticalBarChart.m b/examples/CorePlotGallery/src/plots/VerticalBarChart.m index 175748319..1d725736e 100644 --- a/examples/CorePlotGallery/src/plots/VerticalBarChart.m +++ b/examples/CorePlotGallery/src/plots/VerticalBarChart.m @@ -23,7 +23,7 @@ +(void)load -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { self.title = @"Vertical Bar Chart"; self.section = kBarPlots; } @@ -130,7 +130,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT { y.majorIntervalLength = (kUseHorizontalBars ? @1.0 : @10.0); y.minorTicksPerInterval = (kUseHorizontalBars ? 0 : 9); - y.orthogonalPosition = ( kUseHorizontalBars ? @0.0 : @(-0.5) ); + y.orthogonalPosition = (kUseHorizontalBars ? @0.0 : @(-0.5)); y.preferredNumberOfMajorTicks = 8; y.majorGridLineStyle = majorGridLineStyle; @@ -211,7 +211,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT theLegend.fill = [CPTFill fillWithColor:[CPTColor colorWithGenericGray:CPTFloat(0.15)]]; theLegend.borderLineStyle = barLineStyle; theLegend.cornerRadius = textSize * CPTFloat(0.25); - theLegend.swatchSize = CGSizeMake( textSize * CPTFloat(0.75), textSize * CPTFloat(0.75) ); + theLegend.swatchSize = CGSizeMake(textSize * CPTFloat(0.75), textSize * CPTFloat(0.75)); whiteTextStyle.fontSize = textSize * CPTFloat(0.5); theLegend.textStyle = whiteTextStyle; theLegend.rowMargin = textSize * CPTFloat(0.25); @@ -226,7 +226,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT CPTPlotSpaceAnnotation *legendAnnotation = [[CPTPlotSpaceAnnotation alloc] initWithPlotSpace:barPlotSpace anchorPlotPoint:plotPoint]; legendAnnotation.contentLayer = theLegend; - legendAnnotation.contentAnchorPoint = ( kUseHorizontalBars ? CGPointMake(1.0, 0.0) : CGPointMake(0.0, 1.0) ); + legendAnnotation.contentAnchorPoint = (kUseHorizontalBars ? CGPointMake(1.0, 0.0) : CGPointMake(0.0, 1.0)); [graph.plotAreaFrame.plotArea addAnnotation:legendAnnotation]; } @@ -306,7 +306,7 @@ -(nullable id)numberForPlot:(nonnull CPTPlot *)plot field:(NSUInteger)fieldEnum num = @(index); } else { - num = @( (index + 1) * (index + 1) ); + num = @((index + 1) * (index + 1)); } } else { diff --git a/examples/CorePlotGallery/src/shared/PiNumberFormatter.m b/examples/CorePlotGallery/src/shared/PiNumberFormatter.m index baf917936..6e10d62a3 100644 --- a/examples/CorePlotGallery/src/shared/PiNumberFormatter.m +++ b/examples/CorePlotGallery/src/shared/PiNumberFormatter.m @@ -22,7 +22,7 @@ -(nullable NSString *)stringForObjectValue:(nullable id)coordinateValue NSString *string = nil; if ( [coordinateValue respondsToSelector:@selector(doubleValue)] ) { - double value = ( (NSNumber *)coordinateValue).doubleValue / M_PI; + double value = ((NSNumber *)coordinateValue).doubleValue / M_PI; double factor = round(self.multiplier.doubleValue); if ( factor == 0.0 ) { @@ -32,7 +32,7 @@ -(nullable NSString *)stringForObjectValue:(nullable id)coordinateValue double numerator = round(value * factor); double denominator = factor; double fraction = numerator / denominator; - double divisor = ABS( gcd(numerator, denominator) ); + double divisor = ABS(gcd(numerator, denominator)); if ( fraction == 0.0 ) { string = @"0"; @@ -70,7 +70,7 @@ -(nullable NSString *)stringForObjectValue:(nullable id)coordinateValue while ( a != 0.0 ) { c = a; - a = round( fmod(b, a) ); + a = round(fmod(b, a)); b = c; } diff --git a/examples/CorePlotGallery/src/shared/PlotGallery.m b/examples/CorePlotGallery/src/shared/PlotGallery.m index 9350057ca..f0de1f59a 100644 --- a/examples/CorePlotGallery/src/shared/PlotGallery.m +++ b/examples/CorePlotGallery/src/shared/PlotGallery.m @@ -45,7 +45,7 @@ -(nonnull instancetype)init @synchronized ( thisClass ) { if ( sharedPlotGallery == nil ) { - if ( (self = [super init]) ) { + if ((self = [super init])) { sharedPlotGallery = self; plotItems = [[NSMutableArray alloc] init]; plotSections = [[NSCountedSet alloc] init]; diff --git a/examples/CorePlotGallery/src/shared/PlotItem.m b/examples/CorePlotGallery/src/shared/PlotItem.m index b3abb4d42..7b5be9d9f 100644 --- a/examples/CorePlotGallery/src/shared/PlotItem.m +++ b/examples/CorePlotGallery/src/shared/PlotItem.m @@ -53,7 +53,7 @@ +(void)registerPlotItem:(nonnull id)item -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { defaultLayerHostingView = nil; graphs = [[NSMutableArray alloc] init]; @@ -124,7 +124,7 @@ -(CGFloat)titleSize #if TARGET_OS_TV size = 36.0; #elif TARGET_OS_SIMULATOR || TARGET_OS_IPHONE - switch ( UI_USER_INTERFACE_IDIOM() ) { + switch ( UI_USER_INTERFACE_IDIOM()) { case UIUserInterfaceIdiomPad: size = 24.0; break; @@ -150,7 +150,7 @@ -(void)setPaddingDefaultsForGraph:(nonnull CPTGraph *)graph graph.paddingLeft = boundsPadding; - if ( graph.titleDisplacement.y > CPTFloat(0.0) ) { + if ( graph.titleDisplacement.y > CPTFloat(0.0)) { graph.paddingTop = graph.titleTextStyle.fontSize * CPTFloat(2.0); } else { @@ -174,7 +174,7 @@ -(void)formatAllGraphs graph.title = (self.graphs.count == 1 ? self.title : nil); graph.titleTextStyle = textStyle; - graph.titleDisplacement = CPTPointMake( 0.0, textStyle.fontSize * CPTFloat(1.5) ); + graph.titleDisplacement = CPTPointMake(0.0, textStyle.fontSize * CPTFloat(1.5)); graph.titlePlotAreaFrameAnchor = CPTRectAnchorTop; // Padding @@ -228,7 +228,7 @@ -(void)formatAllGraphs textStyle.fontSize = labelSize; theLegend.textStyle = textStyle; - theLegend.swatchSize = CGSizeMake( labelSize * CPTFloat(1.5), labelSize * CPTFloat(1.5) ); + theLegend.swatchSize = CGSizeMake(labelSize * CPTFloat(1.5), labelSize * CPTFloat(1.5)); theLegend.rowMargin = labelSize * CPTFloat(0.75); theLegend.columnMargin = labelSize * CPTFloat(0.75); @@ -314,7 +314,7 @@ -(nonnull NSImage *)image NSGraphicsContext *bitmapContext = [NSGraphicsContext graphicsContextWithBitmapImageRep:layerImage]; CGContextRef context = (CGContextRef)bitmapContext.graphicsPort; - CGContextClearRect( context, CGRectMake(0.0, 0.0, boundsSize.width, boundsSize.height) ); + CGContextClearRect(context, CGRectMake(0.0, 0.0, boundsSize.width, boundsSize.height)); CGContextSetAllowsAntialiasing(context, true); CGContextSetShouldSmoothFonts(context, false); [imageView.layer renderInContext:context]; diff --git a/examples/CorePlotGallery/src/tvOS/DetailViewControllerTV.m b/examples/CorePlotGallery/src/tvOS/DetailViewControllerTV.m index 87f3aafa0..7cc1f5d52 100644 --- a/examples/CorePlotGallery/src/tvOS/DetailViewControllerTV.m +++ b/examples/CorePlotGallery/src/tvOS/DetailViewControllerTV.m @@ -47,7 +47,7 @@ -(void)awakeFromNib -(instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { - if ( (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) ) { + if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { [self setupView]; } diff --git a/examples/CorePlotGallery/src/tvOS/ThemeTableViewControllerTV.m b/examples/CorePlotGallery/src/tvOS/ThemeTableViewControllerTV.m index 79e582247..faa3122b4 100644 --- a/examples/CorePlotGallery/src/tvOS/ThemeTableViewControllerTV.m +++ b/examples/CorePlotGallery/src/tvOS/ThemeTableViewControllerTV.m @@ -48,7 +48,7 @@ -(void)awakeFromNib -(instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { - if ( (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) ) { + if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { [self setupThemes]; } diff --git a/examples/CorePlotGallery/src/tvOS/main.m b/examples/CorePlotGallery/src/tvOS/main.m index cee796cdf..3bc32fa82 100644 --- a/examples/CorePlotGallery/src/tvOS/main.m +++ b/examples/CorePlotGallery/src/tvOS/main.m @@ -4,6 +4,6 @@ int main(int argc, char *argv[]) { @autoreleasepool { - return UIApplicationMain( argc, argv, nil, NSStringFromClass([AppDelegateTV class]) ); + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegateTV class])); } } diff --git a/examples/DropPlot/CPTPlotDocument.m b/examples/DropPlot/CPTPlotDocument.m index e5b14117b..d2bc0046e 100644 --- a/examples/DropPlot/CPTPlotDocument.m +++ b/examples/DropPlot/CPTPlotDocument.m @@ -90,9 +90,9 @@ -(void)windowControllerDidLoadNib:(nonnull NSWindowController *)windowController // Setup plot space CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)newGraph.defaultPlotSpace; plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:@(self.minimumValueForXAxis) - length:@(ceil( (self.maximumValueForXAxis - self.minimumValueForXAxis) / self.majorIntervalLengthForX) * self.majorIntervalLengthForX)]; + length:@(ceil((self.maximumValueForXAxis - self.minimumValueForXAxis) / self.majorIntervalLengthForX) * self.majorIntervalLengthForX)]; plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:@(self.minimumValueForYAxis) - length:@(ceil( (self.maximumValueForYAxis - self.minimumValueForYAxis) / self.majorIntervalLengthForY) * self.majorIntervalLengthForY)]; + length:@(ceil((self.maximumValueForYAxis - self.minimumValueForYAxis) / self.majorIntervalLengthForY) * self.majorIntervalLengthForY)]; // this allows the plot to respond to mouse events plotSpace.delegate = self; @@ -201,13 +201,13 @@ -(BOOL)readFromData:(nonnull NSData *)data ofType:(NSString *)typeName error:(NS double intervalX = (maxX - minX) / 5.0; if ( intervalX > 0.0 ) { - intervalX = pow( 10.0, ceil( log10(intervalX) ) ); + intervalX = pow(10.0, ceil(log10(intervalX))); } self.majorIntervalLengthForX = intervalX; double intervalY = (maxY - minY) / 10.0; if ( intervalY > 0.0 ) { - intervalY = pow( 10.0, ceil( log10(intervalY) ) ); + intervalY = pow(10.0, ceil(log10(intervalY))); } self.majorIntervalLengthForY = intervalY; @@ -297,9 +297,9 @@ -(IBAction)zoomOut CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)self.graph.defaultPlotSpace; plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:@(minX) - length:@(ceil( (maxX - minX) / intervalX) * intervalX)]; + length:@(ceil((maxX - minX) / intervalX) * intervalX)]; plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:@(minY) - length:@(ceil( (maxY - minY) / intervalY) * intervalY)]; + length:@(ceil((maxY - minY) / intervalY) * intervalY)]; CPTXYAxisSet *axisSet = (CPTXYAxisSet *)self.graph.axisSet; axisSet.xAxis.labelingPolicy = CPTAxisLabelingPolicyFixedInterval; axisSet.yAxis.labelingPolicy = CPTAxisLabelingPolicyFixedInterval; @@ -374,11 +374,11 @@ -(BOOL)plotSpace:(nonnull CPTPlotSpace *)space shouldHandlePointingDeviceDragged CGPoint dragEndInPlotArea = [self.graph convertPoint:interactionPoint toLayer:plotArea]; // create the dragrect from dragStart to the current location - CGFloat endX = MAX( MIN( dragEndInPlotArea.x, CGRectGetMaxX(plotBounds) ), CGRectGetMinX(plotBounds) ); - CGFloat endY = MAX( MIN( dragEndInPlotArea.y, CGRectGetMaxY(plotBounds) ), CGRectGetMinY(plotBounds) ); - CGRect borderRect = CGRectMake( dragStartInPlotArea.x, dragStartInPlotArea.y, - (endX - dragStartInPlotArea.x), - (endY - dragStartInPlotArea.y) ); + CGFloat endX = MAX(MIN(dragEndInPlotArea.x, CGRectGetMaxX(plotBounds)), CGRectGetMinX(plotBounds)); + CGFloat endY = MAX(MIN(dragEndInPlotArea.y, CGRectGetMaxY(plotBounds)), CGRectGetMinY(plotBounds)); + CGRect borderRect = CGRectMake(dragStartInPlotArea.x, dragStartInPlotArea.y, + (endX - dragStartInPlotArea.x), + (endY - dragStartInPlotArea.y)); annotation.contentAnchorPoint = CGPointMake(dragEndInPlotArea.x >= dragStartInPlotArea.x ? 0.0 : 1.0, dragEndInPlotArea.y >= dragStartInPlotArea.y ? 0.0 : 1.0); @@ -396,7 +396,7 @@ -(BOOL)plotSpace:(nonnull CPTPlotSpace *)space shouldHandlePointingDeviceDownEve CPTPlotArea *plotArea = self.graph.plotAreaFrame.plotArea; CGPoint dragStartInPlotArea = [self.graph convertPoint:self.dragStart toLayer:plotArea]; - if ( CGRectContainsPoint(plotArea.bounds, dragStartInPlotArea) ) { + if ( CGRectContainsPoint(plotArea.bounds, dragStartInPlotArea)) { // create the zoom rectangle // first a bordered layer to draw the zoomrect CPTBorderedLayer *zoomRectangleLayer = [[CPTBorderedLayer alloc] initWithFrame:CGRectNull]; @@ -437,15 +437,15 @@ -(BOOL)plotSpace:(nonnull CPTPlotSpace *)space shouldHandlePointingDeviceUpEvent self.dragEnd = interactionPoint; // double-click to completely zoom out - if ( (event.type != NSEventTypeScrollWheel) && (event.clickCount == 2) ) { + if ((event.type != NSEventTypeScrollWheel) && (event.clickCount == 2)) { CPTPlotArea *plotArea = self.graph.plotAreaFrame.plotArea; CGPoint dragEndInPlotArea = [self.graph convertPoint:interactionPoint toLayer:plotArea]; - if ( CGRectContainsPoint(plotArea.bounds, dragEndInPlotArea) ) { + if ( CGRectContainsPoint(plotArea.bounds, dragEndInPlotArea)) { [self zoomOut]; } } - else if ( !CGPointEqualToPoint(self.dragStart, self.dragEnd) ) { + else if ( !CGPointEqualToPoint(self.dragStart, self.dragEnd)) { // no accidental drag, so zoom in [self zoomIn]; } diff --git a/examples/DropPlot/NSString+ParseCSV.m b/examples/DropPlot/NSString+ParseCSV.m index 73839c25f..7a9bbde09 100644 --- a/examples/DropPlot/NSString+ParseCSV.m +++ b/examples/DropPlot/NSString+ParseCSV.m @@ -17,7 +17,7 @@ -(CPTStringArray *)arrayByParsingCSVLine NSString *theField = theFields[i]; switch ( inField ) { case NO: - if ( ([theField hasPrefix:@"\""] == YES) && ([theField hasSuffix:@"\""] == NO) ) { + if (([theField hasPrefix:@"\""] == YES) && ([theField hasSuffix:@"\""] == NO)) { inField = YES; [theConcatenatedField appendString:theField]; [theConcatenatedField appendString:@","]; diff --git a/examples/StockPlot/Classes/APYahooDataPuller.m b/examples/StockPlot/Classes/APYahooDataPuller.m index 4c71585c3..8925e9b75 100644 --- a/examples/StockPlot/Classes/APYahooDataPuller.m +++ b/examples/StockPlot/Classes/APYahooDataPuller.m @@ -65,7 +65,7 @@ -(nonnull CPTDictionary *)sanitizedFinancialLine:(nonnull CPTDictionary *)theFin for ( id key in aFinancialLine.allKeys ) { id something = aFinancialLine[key]; if ( [something respondsToSelector:@selector(decimalValue)] ) { - something = [NSDecimalNumber decimalNumberWithDecimal:( (NSNumber *)something).decimalValue]; + something = [NSDecimalNumber decimalNumberWithDecimal:((NSNumber *)something).decimalValue]; aFinancialLine[key] = something; } } diff --git a/examples/StockPlot/Classes/RootViewController.m b/examples/StockPlot/Classes/RootViewController.m index f36fd6fc4..f4c3024c9 100644 --- a/examples/StockPlot/Classes/RootViewController.m +++ b/examples/StockPlot/Classes/RootViewController.m @@ -60,7 +60,7 @@ -(void)inspectStock:(nonnull APYahooDataPuller *)aStock NSDecimalNumber *high = aStock.overallHigh; NSDecimalNumber *low = aStock.overallLow; - if ( [high isEqualToNumber:[NSDecimalNumber notANumber]] || [low isEqualToNumber:[NSDecimalNumber notANumber]] || (aStock.financialData.count <= 0) ) { + if ( [high isEqualToNumber:[NSDecimalNumber notANumber]] || [low isEqualToNumber:[NSDecimalNumber notANumber]] || (aStock.financialData.count <= 0)) { NSString *message = [NSString stringWithFormat:@"No information available for %@", aStock.symbol]; UIAlertView *av = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Alert", @"Alert title") message:message delegate:nil cancelButtonTitle:@"Okay" otherButtonTitles:nil]; [av show]; diff --git a/framework/MacOnly/CPTGraphHostingView.m b/framework/MacOnly/CPTGraphHostingView.m index 70fbe20f5..54a92ae1d 100644 --- a/framework/MacOnly/CPTGraphHostingView.m +++ b/framework/MacOnly/CPTGraphHostingView.m @@ -80,7 +80,7 @@ -(void)commonInit -(nonnull instancetype)initWithFrame:(NSRect)frame { - if ( (self = [super initWithFrame:frame]) ) { + if ((self = [super initWithFrame:frame])) { [self commonInit]; } return self; @@ -136,7 +136,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super initWithCoder:coder]) ) { + if ((self = [super initWithCoder:coder])) { [self commonInit]; self.hostedGraph = [coder decodeObjectOfClass:[CPTGraph class] @@ -185,19 +185,19 @@ -(void)drawRect:(NSRect)dirtyRect CGRect sourceRect = NSRectToCGRect(self.frame); CGRect destinationRect = NSRectToCGRect(self.printRect); - if ( CGRectEqualToRect(destinationRect, CGRectZero) ) { + if ( CGRectEqualToRect(destinationRect, CGRectZero)) { destinationRect = sourceRect; } // scale the view isotropically so that it fits on the printed page - CGFloat widthScale = ( sourceRect.size.width != CPTFloat(0.0) ) ? destinationRect.size.width / sourceRect.size.width : CPTFloat(1.0); - CGFloat heightScale = ( sourceRect.size.height != CPTFloat(0.0) ) ? destinationRect.size.height / sourceRect.size.height : CPTFloat(1.0); + CGFloat widthScale = (sourceRect.size.width != CPTFloat(0.0)) ? destinationRect.size.width / sourceRect.size.width : CPTFloat(1.0); + CGFloat heightScale = (sourceRect.size.height != CPTFloat(0.0)) ? destinationRect.size.height / sourceRect.size.height : CPTFloat(1.0); CGFloat scale = MIN(widthScale, heightScale); // position the view so that its centered on the printed page CGPoint offset = destinationRect.origin; - offset.x += ( ( destinationRect.size.width - (sourceRect.size.width * scale) ) / CPTFloat(2.0) ); - offset.y += ( ( destinationRect.size.height - (sourceRect.size.height * scale) ) / CPTFloat(2.0) ); + offset.x += ((destinationRect.size.width - (sourceRect.size.width * scale)) / CPTFloat(2.0)); + offset.y += ((destinationRect.size.height - (sourceRect.size.height * scale)) / CPTFloat(2.0)); NSAffineTransform *transform = [NSAffineTransform transform]; [transform translateXBy:offset.x yBy:offset.y]; @@ -446,7 +446,7 @@ -(void)resetCursorRects NSCursor *closedCursor = self.closedHandCursor; NSCursor *openCursor = self.openHandCursor; - if ( plotArea && (closedCursor || openCursor) ) { + if ( plotArea && (closedCursor || openCursor)) { BOOL allowsInteraction = NO; BOOL isDragging = NO; @@ -545,7 +545,7 @@ -(void)observeValueForKeyPath:(nullable NSString *)keyPath ofObject:(nullable id if ( [keyPath isEqualToString:@"isDragging"] && [object isKindOfClass:[CPTPlotSpace class]] ) { [self.window invalidateCursorRectsForView:self]; } - else if ( [keyPath isEqualToString:@"plotAreaFrame"] && (object == theGraph) ) { + else if ( [keyPath isEqualToString:@"plotAreaFrame"] && (object == theGraph)) { CPTPlotAreaFrame *oldPlotAreaFrame = change[NSKeyValueChangeOldKey]; CPTPlotAreaFrame *newPlotAreaFrame = change[NSKeyValueChangeNewKey]; @@ -560,7 +560,7 @@ -(void)observeValueForKeyPath:(nullable NSString *)keyPath ofObject:(nullable id context:CPTGraphHostingViewKVOContext]; } } - else if ( [keyPath isEqualToString:@"plotArea"] && (object == theGraph.plotAreaFrame) ) { + else if ( [keyPath isEqualToString:@"plotArea"] && (object == theGraph.plotAreaFrame)) { CPTPlotArea *oldPlotArea = change[NSKeyValueChangeOldKey]; CPTPlotArea *newPlotArea = change[NSKeyValueChangeNewKey]; @@ -592,7 +592,7 @@ -(void)observeValueForKeyPath:(nullable NSString *)keyPath ofObject:(nullable id -(void)setHostedGraph:(nullable CPTGraph *)newGraph { - NSParameterAssert( (newGraph == nil) || [newGraph isKindOfClass:[CPTGraph class]]); + NSParameterAssert((newGraph == nil) || [newGraph isKindOfClass:[CPTGraph class]]); if ( newGraph != hostedGraph ) { self.wantsLayer = YES; diff --git a/framework/MacOnly/CPTImagePlatformSpecific.m b/framework/MacOnly/CPTImagePlatformSpecific.m index 21b1a9ba8..4b845f2ba 100644 --- a/framework/MacOnly/CPTImagePlatformSpecific.m +++ b/framework/MacOnly/CPTImagePlatformSpecific.m @@ -12,7 +12,7 @@ @implementation CPTImage(CPTPlatformSpecificImageExtensions) **/ -(nonnull instancetype)initWithNativeImage:(nullable CPTNativeImage *)anImage { - if ( (self = [self init]) ) { + if ((self = [self init])) { self.nativeImage = anImage; } @@ -40,7 +40,7 @@ -(nonnull instancetype)initForPNGFile:(nonnull NSString *)path imageScale = MAX(imageScale, screen.backingScaleFactor); } - while ( imageScale > CPTFloat(1.0) ) { + while ( imageScale > CPTFloat(1.0)) { NSMutableString *hiDpiPath = [path mutableCopy]; NSUInteger replaceCount = [hiDpiPath replaceOccurrencesOfString:@".png" withString:[NSString stringWithFormat:@"@%dx.png", (int)imageScale] diff --git a/framework/MacOnly/CPTPlatformSpecificCategories.m b/framework/MacOnly/CPTPlatformSpecificCategories.m index 8365e489b..71ddd9ce1 100644 --- a/framework/MacOnly/CPTPlatformSpecificCategories.m +++ b/framework/MacOnly/CPTPlatformSpecificCategories.m @@ -19,7 +19,7 @@ -(nonnull CPTNativeImage *)imageOfLayer CGFloat scale = 0.0; if ( [self respondsToSelector:@selector(hostingView)] ) { - scale = ( (CPTGraph *)self).hostingView.window.backingScaleFactor; + scale = ((CPTGraph *)self).hostingView.window.backingScaleFactor; } else { NSWindow *myWindow = self.graph.hostingView.window; @@ -52,7 +52,7 @@ -(nonnull CPTNativeImage *)imageOfLayer NSGraphicsContext *bitmapContext = [NSGraphicsContext graphicsContextWithBitmapImageRep:layerImage]; CGContextRef context = (CGContextRef)bitmapContext.graphicsPort; - CGContextClearRect( context, CPTRectMake(0.0, 0.0, boundsSize.width, boundsSize.height) ); + CGContextClearRect(context, CPTRectMake(0.0, 0.0, boundsSize.width, boundsSize.height)); CGContextSetAllowsAntialiasing(context, true); CGContextSetShouldSmoothFonts(context, false); [self layoutAndRenderInContext:context]; diff --git a/framework/MacOnly/CPTTextStylePlatformSpecific.m b/framework/MacOnly/CPTTextStylePlatformSpecific.m index ffae248c4..6f59bce78 100644 --- a/framework/MacOnly/CPTTextStylePlatformSpecific.m +++ b/framework/MacOnly/CPTTextStylePlatformSpecific.m @@ -54,7 +54,7 @@ +(nonnull instancetype)textStyleWithAttributes:(nullable CPTDictionary *)attribu else { const NSInteger numberOfComponents = styleColor.numberOfComponents; - CGFloat *components = calloc( (size_t)numberOfComponents, sizeof(CGFloat) ); + CGFloat *components = calloc((size_t)numberOfComponents, sizeof(CGFloat)); [styleColor getComponents:components]; CGColorSpaceRef colorSpace = styleColor.colorSpace.CGColorSpace; @@ -160,7 +160,7 @@ +(nonnull instancetype)textStyleWithAttributes:(nullable CPTDictionary *)attribu else { const NSInteger numberOfComponents = styleColor.numberOfComponents; - CGFloat *components = calloc( (size_t)numberOfComponents, sizeof(CGFloat) ); + CGFloat *components = calloc((size_t)numberOfComponents, sizeof(CGFloat)); [styleColor getComponents:components]; CGColorSpaceRef colorSpace = styleColor.colorSpace.CGColorSpace; diff --git a/framework/Source/CPTAnimation.h b/framework/Source/CPTAnimation.h index 19798f351..93f0e48ba 100644 --- a/framework/Source/CPTAnimation.h +++ b/framework/Source/CPTAnimation.h @@ -46,8 +46,8 @@ typedef NS_ENUM (NSInteger, CPTAnimationCurve) { /** * @brief Animation delegate. **/ -#if ( (TARGET_OS_SIMULATOR || TARGET_OS_IPHONE || TARGET_OS_TV ) && ( __IPHONE_OS_VERSION_MAX_ALLOWED >= 100000) ) \ - || (TARGET_OS_MAC && ( MAC_OS_X_VERSION_MAX_ALLOWED >= 101200) ) +#if ((TARGET_OS_SIMULATOR || TARGET_OS_IPHONE || TARGET_OS_TV) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= 100000)) \ + || (TARGET_OS_MAC && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101200)) // CAAnimationDelegate is defined by Core Animation in iOS 10.0+, macOS 10.12+, and tvOS 10.0+ @protocol CPTAnimationDelegate #else diff --git a/framework/Source/CPTAnimation.m b/framework/Source/CPTAnimation.m index d937288c6..4ef62d18f 100644 --- a/framework/Source/CPTAnimation.m +++ b/framework/Source/CPTAnimation.m @@ -100,7 +100,7 @@ @implementation CPTAnimation **/ -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { animationOperations = [[NSMutableArray alloc] init]; runningAnimationOperations = [[NSMutableArray alloc] init]; timer = NULL; @@ -200,7 +200,7 @@ -(CPTAnimationOperation *)addAnimationOperation:(nonnull CPTAnimationOperation * id boundObject = animationOperation.boundObject; CPTAnimationPeriod *period = animationOperation.period; - if ( animationOperation.delegate || (boundObject && period && ![period.startValue isEqual:period.endValue]) ) { + if ( animationOperation.delegate || (boundObject && period && ![period.startValue isEqual:period.endValue])) { dispatch_async(self.animationQueue, ^{ [self.animationOperations addObject:animationOperation]; @@ -277,7 +277,7 @@ -(void)update CGFloat duration = period.duration; CGFloat startTime = period.startOffset; CGFloat delay = period.delay; - if ( isnan(delay) ) { + if ( isnan(delay)) { if ( [period canStartWithValueFromObject:animationOperation.boundObject propertyGetter:animationOperation.boundGetter] ) { period.delay = currentTime - startTime; startTime = currentTime; @@ -315,7 +315,7 @@ -(void)update for ( CPTAnimationOperation *operation in runningOperations ) { if ( operation.boundObject == boundObject ) { - if ( (operation.boundGetter == boundGetter) && (operation.boundSetter == boundSetter) ) { + if ((operation.boundGetter == boundGetter) && (operation.boundSetter == boundSetter)) { operation.canceled = YES; } } @@ -401,7 +401,7 @@ -(void)updateOnMainThreadWithParameters:(nonnull CPTDictionary *)parameters id tweenedValue = parameters[CPTAnimationValueKey]; if ( [tweenedValue isKindOfClass:[NSDecimalNumber class]] ) { - NSDecimal buffer = ( (NSDecimalNumber *)tweenedValue).decimalValue; + NSDecimal buffer = ((NSDecimalNumber *)tweenedValue).decimalValue; typedef void (*SetterType)(id, SEL, NSDecimal); SetterType setterMethod = (SetterType)[boundObject methodForSelector:boundSetter]; diff --git a/framework/Source/CPTAnimationOperation.m b/framework/Source/CPTAnimationOperation.m index f807cca63..e7047abc5 100644 --- a/framework/Source/CPTAnimationOperation.m +++ b/framework/Source/CPTAnimationOperation.m @@ -77,7 +77,7 @@ @implementation CPTAnimationOperation **/ -(nonnull instancetype)initWithAnimationPeriod:(nonnull CPTAnimationPeriod *)animationPeriod animationCurve:(CPTAnimationCurve)curve object:(nonnull id)object getter:(nonnull SEL)getter setter:(nonnull SEL)setter { - if ( (self = [super init]) ) { + if ((self = [super init])) { period = animationPeriod; animationCurve = curve; boundObject = object; diff --git a/framework/Source/CPTAnimationPeriod.m b/framework/Source/CPTAnimationPeriod.m index 30c947dbf..f8e658bb6 100644 --- a/framework/Source/CPTAnimationPeriod.m +++ b/framework/Source/CPTAnimationPeriod.m @@ -125,7 +125,7 @@ +(nonnull instancetype)periodWithStartPoint:(CGPoint)aStartPoint endPoint:(CGPoi { NSValue *start = nil; - if ( !isnan(aStartPoint.x) && !isnan(aStartPoint.y) ) { + if ( !isnan(aStartPoint.x) && !isnan(aStartPoint.y)) { start = [NSValue valueWithBytes:&aStartPoint objCType:@encode(CGPoint)]; } @@ -148,7 +148,7 @@ +(nonnull instancetype)periodWithStartSize:(CGSize)aStartSize endSize:(CGSize)an { NSValue *start = nil; - if ( !isnan(aStartSize.width) && !isnan(aStartSize.height) ) { + if ( !isnan(aStartSize.width) && !isnan(aStartSize.height)) { start = [NSValue valueWithBytes:&aStartSize objCType:@encode(CGSize)]; } @@ -171,7 +171,7 @@ +(nonnull instancetype)periodWithStartRect:(CGRect)aStartRect endRect:(CGRect)an { NSValue *start = nil; - if ( !CGRectEqualToRect(aStartRect, CGRectNull) && !isnan(aStartRect.origin.x) && !isnan(aStartRect.origin.y) && !isnan(aStartRect.size.width) && !isnan(aStartRect.size.height) ) { + if ( !CGRectEqualToRect(aStartRect, CGRectNull) && !isnan(aStartRect.origin.x) && !isnan(aStartRect.origin.y) && !isnan(aStartRect.size.width) && !isnan(aStartRect.size.height)) { start = [NSValue valueWithBytes:&aStartRect objCType:@encode(CGRect)]; } @@ -230,7 +230,7 @@ +(nonnull instancetype)periodWithStartPlotRange:(nonnull CPTPlotRange *)aStartPl { CPTPlotRange *startRange = aStartPlotRange; - if ( isnan(aStartPlotRange.locationDouble) || isnan(aStartPlotRange.lengthDouble) ) { + if ( isnan(aStartPlotRange.locationDouble) || isnan(aStartPlotRange.lengthDouble)) { startRange = nil; } @@ -263,7 +263,7 @@ +(nonnull instancetype)periodWithStartPlotRange:(nonnull CPTPlotRange *)aStartPl **/ -(instancetype)initWithStartValue:(NSValue *)aStartValue endValue:(NSValue *)anEndValue ofClass:(Class)class duration:(CGFloat)aDuration withDelay:(CGFloat)aDelay { - if ( (self = [super init]) ) { + if ((self = [super init])) { startValue = [aStartValue copy]; endValue = [anEndValue copy]; valueClass = class; @@ -310,7 +310,7 @@ -(nonnull instancetype)initWithStartPoint:(CGPoint)aStartPoint endPoint:(CGPoint { NSValue *start = nil; - if ( !isnan(aStartPoint.x) && !isnan(aStartPoint.y) ) { + if ( !isnan(aStartPoint.x) && !isnan(aStartPoint.y)) { start = [NSValue valueWithBytes:&aStartPoint objCType:@encode(CGPoint)]; } @@ -335,7 +335,7 @@ -(nonnull instancetype)initWithStartSize:(CGSize)aStartSize endSize:(CGSize)anEn { NSValue *start = nil; - if ( !isnan(aStartSize.width) && !isnan(aStartSize.height) ) { + if ( !isnan(aStartSize.width) && !isnan(aStartSize.height)) { start = [NSValue valueWithBytes:&aStartSize objCType:@encode(CGSize)]; } @@ -360,7 +360,7 @@ -(nonnull instancetype)initWithStartRect:(CGRect)aStartRect endRect:(CGRect)anEn { NSValue *start = nil; - if ( !CGRectEqualToRect(aStartRect, CGRectNull) && !isnan(aStartRect.origin.x) && !isnan(aStartRect.origin.y) && !isnan(aStartRect.size.width) && !isnan(aStartRect.size.height) ) { + if ( !CGRectEqualToRect(aStartRect, CGRectNull) && !isnan(aStartRect.origin.x) && !isnan(aStartRect.origin.y) && !isnan(aStartRect.size.width) && !isnan(aStartRect.size.height)) { start = [NSValue valueWithBytes:&aStartRect objCType:@encode(CGRect)]; } @@ -425,7 +425,7 @@ -(nonnull instancetype)initWithStartPlotRange:(nonnull CPTPlotRange *)aStartPlot { CPTPlotRange *startRange = aStartPlotRange; - if ( isnan(aStartPlotRange.locationDouble) || isnan(aStartPlotRange.lengthDouble) ) { + if ( isnan(aStartPlotRange.locationDouble) || isnan(aStartPlotRange.lengthDouble)) { startRange = nil; } diff --git a/framework/Source/CPTAnnotation.m b/framework/Source/CPTAnnotation.m index 5021c4eaf..18483ec57 100644 --- a/framework/Source/CPTAnnotation.m +++ b/framework/Source/CPTAnnotation.m @@ -55,7 +55,7 @@ @implementation CPTAnnotation **/ -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { annotationHostLayer = nil; contentLayer = nil; displacement = CGPointZero; @@ -83,7 +83,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super init]) ) { + if ((self = [super init])) { annotationHostLayer = [coder decodeObjectOfClass:[CPTAnnotationHostLayer class] forKey:@"CPTAnnotation.annotationHostLayer"]; contentLayer = [coder decodeObjectOfClass:[CPTLayer class] @@ -155,7 +155,7 @@ -(void)setAnnotationHostLayer:(nullable CPTAnnotationHostLayer *)newLayer -(void)setDisplacement:(CGPoint)newDisplacement { - if ( !CGPointEqualToPoint(newDisplacement, displacement) ) { + if ( !CGPointEqualToPoint(newDisplacement, displacement)) { displacement = newDisplacement; [self.contentLayer.superlayer setNeedsLayout]; } @@ -163,7 +163,7 @@ -(void)setDisplacement:(CGPoint)newDisplacement -(void)setContentAnchorPoint:(CGPoint)newAnchorPoint { - if ( !CGPointEqualToPoint(newAnchorPoint, contentAnchorPoint) ) { + if ( !CGPointEqualToPoint(newAnchorPoint, contentAnchorPoint)) { contentAnchorPoint = newAnchorPoint; [self.contentLayer.superlayer setNeedsLayout]; } diff --git a/framework/Source/CPTAnnotationHostLayer.m b/framework/Source/CPTAnnotationHostLayer.m index 701b8b859..6fa9af69b 100644 --- a/framework/Source/CPTAnnotationHostLayer.m +++ b/framework/Source/CPTAnnotationHostLayer.m @@ -43,7 +43,7 @@ @implementation CPTAnnotationHostLayer **/ -(nonnull instancetype)initWithFrame:(CGRect)newFrame { - if ( (self = [super initWithFrame:newFrame]) ) { + if ((self = [super initWithFrame:newFrame])) { mutableAnnotations = [[NSMutableArray alloc] init]; } return self; @@ -55,7 +55,7 @@ -(nonnull instancetype)initWithFrame:(CGRect)newFrame -(nonnull instancetype)initWithLayer:(nonnull id)layer { - if ( (self = [super initWithLayer:layer]) ) { + if ((self = [super initWithLayer:layer])) { CPTAnnotationHostLayer *theLayer = (CPTAnnotationHostLayer *)layer; mutableAnnotations = theLayer->mutableAnnotations; @@ -79,7 +79,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super initWithCoder:coder]) ) { + if ((self = [super initWithCoder:coder])) { CPTAnnotationArray *annotations = [coder decodeObjectOfClasses:[NSSet setWithArray:@[[NSArray class], [CPTAnnotation class]]] forKey:@"CPTAnnotationHostLayer.mutableAnnotations"]; if ( annotations ) { @@ -230,7 +230,7 @@ -(BOOL)pointingDeviceDownEvent:(nonnull CPTNativeEvent *)event atPoint:(CGPoint) for ( CPTAnnotation *annotation in self.annotations ) { CPTLayer *content = annotation.contentLayer; if ( content ) { - if ( CGRectContainsPoint(content.frame, interactionPoint) ) { + if ( CGRectContainsPoint(content.frame, interactionPoint)) { BOOL handled = [content pointingDeviceDownEvent:event atPoint:interactionPoint]; if ( handled ) { return YES; @@ -261,7 +261,7 @@ -(BOOL)pointingDeviceUpEvent:(nonnull CPTNativeEvent *)event atPoint:(CGPoint)in for ( CPTAnnotation *annotation in self.annotations ) { CPTLayer *content = annotation.contentLayer; if ( content ) { - if ( CGRectContainsPoint(content.frame, interactionPoint) ) { + if ( CGRectContainsPoint(content.frame, interactionPoint)) { BOOL handled = [content pointingDeviceUpEvent:event atPoint:interactionPoint]; if ( handled ) { return YES; @@ -292,7 +292,7 @@ -(BOOL)pointingDeviceDraggedEvent:(nonnull CPTNativeEvent *)event atPoint:(CGPoi for ( CPTAnnotation *annotation in self.annotations ) { CPTLayer *content = annotation.contentLayer; if ( content ) { - if ( CGRectContainsPoint(content.frame, interactionPoint) ) { + if ( CGRectContainsPoint(content.frame, interactionPoint)) { BOOL handled = [content pointingDeviceDraggedEvent:event atPoint:interactionPoint]; if ( handled ) { return YES; diff --git a/framework/Source/CPTAxis.m b/framework/Source/CPTAxis.m index dc79ee43d..742b32496 100644 --- a/framework/Source/CPTAxis.m +++ b/framework/Source/CPTAxis.m @@ -540,7 +540,7 @@ @implementation CPTAxis **/ -(nonnull instancetype)initWithFrame:(CGRect)newFrame { - if ( (self = [super initWithFrame:newFrame]) ) { + if ((self = [super initWithFrame:newFrame])) { plotSpace = nil; majorTickLocations = [NSSet set]; minorTickLocations = [NSSet set]; @@ -619,7 +619,7 @@ -(nonnull instancetype)initWithFrame:(CGRect)newFrame -(nonnull instancetype)initWithLayer:(nonnull id)layer { - if ( (self = [super initWithLayer:layer]) ) { + if ((self = [super initWithLayer:layer])) { CPTAxis *theLayer = (CPTAxis *)layer; plotSpace = theLayer->plotSpace; @@ -774,7 +774,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super initWithCoder:coder]) ) { + if ((self = [super initWithCoder:coder])) { coordinate = (CPTCoordinate)[coder decodeIntegerForKey:@"CPTAxis.coordinate"]; plotSpace = [coder decodeObjectOfClass:[CPTPlotSpace class] forKey:@"CPTAxis.plotSpace"]; @@ -940,7 +940,7 @@ -(void)generateFixedIntervalMajorTickLocations:(CPTNumberSet *__autoreleasing *) NSDecimal zero = CPTDecimalFromInteger(0); NSDecimal majorInterval = self.majorIntervalLength.decimalValue; - if ( CPTDecimalGreaterThan(majorInterval, zero) ) { + if ( CPTDecimalGreaterThan(majorInterval, zero)) { CPTMutablePlotRange *range = [[self.plotSpace plotRangeForCoordinate:self.coordinate] mutableCopy]; if ( range ) { CPTPlotRange *theVisibleRange = self.visibleRange; @@ -954,7 +954,7 @@ -(void)generateFixedIntervalMajorTickLocations:(CPTNumberSet *__autoreleasing *) NSDecimal minorInterval; NSUInteger minorTickCount = self.minorTicksPerInterval; if ( minorTickCount > 0 ) { - minorInterval = CPTDecimalDivide( majorInterval, CPTDecimalFromUnsignedInteger(minorTickCount + 1) ); + minorInterval = CPTDecimalDivide(majorInterval, CPTDecimalFromUnsignedInteger(minorTickCount + 1)); } else { minorInterval = zero; @@ -971,7 +971,7 @@ -(void)generateFixedIntervalMajorTickLocations:(CPTNumberSet *__autoreleasing *) NSDecimal minorCoord = CPTDecimalSubtract(coord, minorInterval); for ( NSUInteger minorTickIndex = 0; minorTickIndex < minorTickCount; minorTickIndex++ ) { - if ( CPTDecimalLessThan(minorCoord, rangeMin) ) { + if ( CPTDecimalLessThan(minorCoord, rangeMin)) { break; } [minorLocations addObject:[NSDecimalNumber decimalNumberWithDecimal:minorCoord]]; @@ -980,7 +980,7 @@ -(void)generateFixedIntervalMajorTickLocations:(CPTNumberSet *__autoreleasing *) } // Set tick locations - while ( CPTDecimalLessThanOrEqualTo(coord, rangeMax) ) { + while ( CPTDecimalLessThanOrEqualTo(coord, rangeMax)) { // Major tick [majorLocations addObject:[NSDecimalNumber decimalNumberWithDecimal:coord]]; @@ -989,7 +989,7 @@ -(void)generateFixedIntervalMajorTickLocations:(CPTNumberSet *__autoreleasing *) NSDecimal minorCoord = CPTDecimalAdd(coord, minorInterval); for ( NSUInteger minorTickIndex = 0; minorTickIndex < minorTickCount; minorTickIndex++ ) { - if ( CPTDecimalGreaterThan(minorCoord, rangeMax) ) { + if ( CPTDecimalGreaterThan(minorCoord, rangeMax)) { break; } [minorLocations addObject:[NSDecimalNumber decimalNumberWithDecimal:minorCoord]]; @@ -1037,7 +1037,7 @@ -(void)autoGenerateMajorTickLocations:(CPTNumberSet *__autoreleasing *)newMajorL case CPTScaleTypeLog: // supported scale type--check range - if ( (range.minLimitDouble <= 0.0) || (range.maxLimitDouble <= 0.0) ) { + if ((range.minLimitDouble <= 0.0) || (range.maxLimitDouble <= 0.0)) { valid = NO; } break; @@ -1091,16 +1091,16 @@ -(void)autoGenerateMajorTickLocations:(CPTNumberSet *__autoreleasing *)newMajorL majorInterval = CPTNiceLength(range.lengthDecimal); } else { - majorInterval = CPTDecimalDivide( range.lengthDecimal, CPTDecimalFromUnsignedInteger(numTicks - 1) ); + majorInterval = CPTDecimalDivide(range.lengthDecimal, CPTDecimalFromUnsignedInteger(numTicks - 1)); majorInterval = CPTNiceNum(majorInterval); } - if ( CPTDecimalLessThan(majorInterval, zero) ) { - majorInterval = CPTDecimalMultiply( majorInterval, CPTDecimalFromInteger(-1) ); + if ( CPTDecimalLessThan(majorInterval, zero)) { + majorInterval = CPTDecimalMultiply(majorInterval, CPTDecimalFromInteger(-1)); } NSDecimal minorInterval; if ( minorTicks > 1 ) { - minorInterval = CPTDecimalDivide( majorInterval, CPTDecimalFromUnsignedInteger(minorTicks) ); + minorInterval = CPTDecimalDivide(majorInterval, CPTDecimalFromUnsignedInteger(minorTicks)); } else { minorInterval = zero; @@ -1118,26 +1118,26 @@ -(void)autoGenerateMajorTickLocations:(CPTNumberSet *__autoreleasing *)newMajorL NSDecimalRound(&finalIndex, &finalIndex, 0, NSRoundUp); // Iterate through the indexes with visible ticks and build the locations sets - for ( NSDecimal i = initialIndex; CPTDecimalLessThanOrEqualTo(i, finalIndex); i = CPTDecimalAdd(i, one) ) { + for ( NSDecimal i = initialIndex; CPTDecimalLessThanOrEqualTo(i, finalIndex); i = CPTDecimalAdd(i, one)) { NSDecimal pointLocation = CPTDecimalMultiply(majorInterval, i); NSDecimal minorPointLocation = pointLocation; for ( NSUInteger j = 1; j < minorTicks; j++ ) { minorPointLocation = CPTDecimalAdd(minorPointLocation, minorInterval); - if ( CPTDecimalLessThan(minorPointLocation, minLimit) ) { + if ( CPTDecimalLessThan(minorPointLocation, minLimit)) { continue; } - if ( CPTDecimalGreaterThan(minorPointLocation, maxLimit) ) { + if ( CPTDecimalGreaterThan(minorPointLocation, maxLimit)) { continue; } [minorLocations addObject:[NSDecimalNumber decimalNumberWithDecimal:minorPointLocation]]; } - if ( CPTDecimalLessThan(pointLocation, minLimit) ) { + if ( CPTDecimalLessThan(pointLocation, minLimit)) { continue; } - if ( CPTDecimalGreaterThan(pointLocation, maxLimit) ) { + if ( CPTDecimalGreaterThan(pointLocation, maxLimit)) { continue; } [majorLocations addObject:[NSDecimalNumber decimalNumberWithDecimal:pointLocation]]; @@ -1150,19 +1150,19 @@ -(void)autoGenerateMajorTickLocations:(CPTNumberSet *__autoreleasing *)newMajorL double minLimit = range.minLimitDouble; double maxLimit = range.maxLimitDouble; - if ( (minLimit > 0.0) && (maxLimit > 0.0) ) { + if ((minLimit > 0.0) && (maxLimit > 0.0)) { // Determine interval value length = log10(maxLimit / minLimit); double interval = signbit(length) ? -1.0 : 1.0; - double intervalStep = pow( 10.0, fabs(interval) ); + double intervalStep = pow(10.0, fabs(interval)); // Determine minor interval - double minorInterval = intervalStep * 0.9 * pow( 10.0, floor( log10(minLimit) ) ) / minorTicks; + double minorInterval = intervalStep * 0.9 * pow(10.0, floor(log10(minLimit))) / minorTicks; // Determine the initial and final major indexes for the actual visible range - NSInteger initialIndex = (NSInteger)lrint( floor( log10( minLimit / fabs(interval) ) ) ); // can be negative - NSInteger finalIndex = (NSInteger)lrint( ceil( log10( maxLimit / fabs(interval) ) ) ); // can be negative + NSInteger initialIndex = (NSInteger)lrint(floor(log10(minLimit / fabs(interval)))); // can be negative + NSInteger finalIndex = (NSInteger)lrint(ceil(log10(maxLimit / fabs(interval)))); // can be negative // Iterate through the indexes with visible ticks and build the locations sets for ( NSInteger i = initialIndex; i <= finalIndex; i++ ) { @@ -1200,14 +1200,14 @@ -(void)autoGenerateMajorTickLocations:(CPTNumberSet *__autoreleasing *)newMajorL double modMinLimit = CPTLogModulus(minLimit); double modMaxLimit = CPTLogModulus(maxLimit); - double multiplier = pow( 10.0, floor( log10(length) ) ); + double multiplier = pow(10.0, floor(log10(length))); multiplier = (multiplier < 1.0) ? multiplier : 1.0; double intervalStep = 10.0; // Determine the initial and final major indexes for the actual visible range - NSInteger initialIndex = (NSInteger)lrint( floor(modMinLimit / multiplier) ); // can be negative - NSInteger finalIndex = (NSInteger)lrint( ceil(modMaxLimit / multiplier) ); // can be negative + NSInteger initialIndex = (NSInteger)lrint(floor(modMinLimit / multiplier)); // can be negative + NSInteger finalIndex = (NSInteger)lrint(ceil(modMaxLimit / multiplier)); // can be negative if ( initialIndex < 0 ) { // Determine minor interval @@ -1218,10 +1218,10 @@ -(void)autoGenerateMajorTickLocations:(CPTNumberSet *__autoreleasing *)newMajorL double sign = -multiplier; if ( multiplier < 1.0 ) { - pointLocation = sign * pow(10.0, fabs( (double)i) - 1.0); + pointLocation = sign * pow(10.0, fabs((double)i) - 1.0); } else { - pointLocation = sign * pow( 10.0, fabs( (double)i) ); + pointLocation = sign * pow(10.0, fabs((double)i)); } for ( NSUInteger j = 1; j < minorTicks; j++ ) { @@ -1258,10 +1258,10 @@ -(void)autoGenerateMajorTickLocations:(CPTNumberSet *__autoreleasing *)newMajorL double sign = multiplier; if ( multiplier < 1.0 ) { - pointLocation = sign * pow(10.0, fabs( (double)i) - 1.0); + pointLocation = sign * pow(10.0, fabs((double)i) - 1.0); } else { - pointLocation = sign * pow( 10.0, fabs( (double)i) ); + pointLocation = sign * pow(10.0, fabs((double)i)); } for ( NSUInteger j = 1; j < minorTicks; j++ ) { @@ -1330,15 +1330,15 @@ -(void)generateEqualMajorTickLocations:(CPTNumberSet *__autoreleasing *)newMajor if ( majorTickCount < 2 ) { majorTickCount = 2; } - NSDecimal majorInterval = CPTDecimalDivide( range.lengthDecimal, CPTDecimalFromUnsignedInteger(majorTickCount - 1) ); - if ( CPTDecimalLessThan(majorInterval, zero) ) { - majorInterval = CPTDecimalMultiply( majorInterval, CPTDecimalFromInteger(-1) ); + NSDecimal majorInterval = CPTDecimalDivide(range.lengthDecimal, CPTDecimalFromUnsignedInteger(majorTickCount - 1)); + if ( CPTDecimalLessThan(majorInterval, zero)) { + majorInterval = CPTDecimalMultiply(majorInterval, CPTDecimalFromInteger(-1)); } NSDecimal minorInterval; NSUInteger minorTickCount = self.minorTicksPerInterval; if ( minorTickCount > 0 ) { - minorInterval = CPTDecimalDivide( majorInterval, CPTDecimalFromUnsignedInteger(minorTickCount + 1) ); + minorInterval = CPTDecimalDivide(majorInterval, CPTDecimalFromUnsignedInteger(minorTickCount + 1)); } else { minorInterval = zero; @@ -1347,7 +1347,7 @@ -(void)generateEqualMajorTickLocations:(CPTNumberSet *__autoreleasing *)newMajor NSDecimal coord = rangeMin; // Set tick locations - while ( CPTDecimalLessThanOrEqualTo(coord, rangeMax) ) { + while ( CPTDecimalLessThanOrEqualTo(coord, rangeMax)) { // Major tick [majorLocations addObject:[NSDecimalNumber decimalNumberWithDecimal:coord]]; @@ -1356,7 +1356,7 @@ -(void)generateEqualMajorTickLocations:(CPTNumberSet *__autoreleasing *)newMajor NSDecimal minorCoord = CPTDecimalAdd(coord, minorInterval); for ( NSUInteger minorTickIndex = 0; minorTickIndex < minorTickCount; minorTickIndex++ ) { - if ( CPTDecimalGreaterThan(minorCoord, rangeMax) ) { + if ( CPTDecimalGreaterThan(minorCoord, rangeMax)) { break; } [minorLocations addObject:[NSDecimalNumber decimalNumberWithDecimal:minorCoord]]; @@ -1382,7 +1382,7 @@ NSDecimal CPTNiceNum(NSDecimal x) { NSDecimal zero = CPTDecimalFromInteger(0); - if ( CPTDecimalEquals(x, zero) ) { + if ( CPTDecimalEquals(x, zero)) { return zero; } @@ -1393,20 +1393,20 @@ NSDecimal CPTNiceNum(NSDecimal x) x = CPTDecimalMultiply(x, minusOne); } - short exponent = (short)lrint( floor( log10( CPTDecimalDoubleValue(x) ) ) ); + short exponent = (short)lrint(floor(log10(CPTDecimalDoubleValue(x)))); NSDecimal fractionPart; NSDecimalMultiplyByPowerOf10(&fractionPart, &x, -exponent, NSRoundPlain); NSDecimal roundedFraction; - if ( CPTDecimalLessThan( fractionPart, CPTDecimalFromDouble(1.5) ) ) { + if ( CPTDecimalLessThan(fractionPart, CPTDecimalFromDouble(1.5))) { roundedFraction = CPTDecimalFromInteger(1); } - else if ( CPTDecimalLessThan( fractionPart, CPTDecimalFromInteger(3) ) ) { + else if ( CPTDecimalLessThan(fractionPart, CPTDecimalFromInteger(3))) { roundedFraction = CPTDecimalFromInteger(2); } - else if ( CPTDecimalLessThan( fractionPart, CPTDecimalFromInteger(7) ) ) { + else if ( CPTDecimalLessThan(fractionPart, CPTDecimalFromInteger(7))) { roundedFraction = CPTDecimalFromInteger(5); } else { @@ -1432,7 +1432,7 @@ NSDecimal CPTNiceLength(NSDecimal length) { NSDecimal zero = CPTDecimalFromInteger(0); - if ( CPTDecimalEquals(length, zero) ) { + if ( CPTDecimalEquals(length, zero)) { return zero; } @@ -1445,11 +1445,11 @@ NSDecimal CPTNiceLength(NSDecimal length) NSDecimal roundedNumber; - if ( CPTDecimalGreaterThan( length, CPTDecimalFromInteger(10) ) ) { + if ( CPTDecimalGreaterThan(length, CPTDecimalFromInteger(10))) { NSDecimalRound(&roundedNumber, &length, 0, NSRoundDown); } else { - short exponent = (short)lrint( floor( log10( CPTDecimalDoubleValue(length) ) ) ) - 1; + short exponent = (short)lrint(floor(log10(CPTDecimalDoubleValue(length)))) - 1; NSDecimalRound(&roundedNumber, &length, -exponent, NSRoundDown); } @@ -1589,7 +1589,7 @@ -(void)updateAxisLabelsAtLocations:(nullable CPTNumberSet *)locations inRange:(n theShadow = self.minorTickLabelShadow; } - if ( (locations.count == 0) || !theLabelTextStyle || !theLabelFormatter ) { + if ((locations.count == 0) || !theLabelTextStyle || !theLabelFormatter ) { if ( useMajorAxisLabels ) { self.axisLabels = nil; } @@ -1613,7 +1613,7 @@ -(void)updateAxisLabelsAtLocations:(nullable CPTNumberSet *)locations inRange:(n theLabelDirection = direction; } - if ( (direction == CPTSignNone) || (theLabelDirection == direction) ) { + if ((direction == CPTSignNone) || (theLabelDirection == direction)) { theLabelOffset += self.tickOffset; } @@ -1875,7 +1875,7 @@ -(void)updateMajorTickLabelOffsets CGFloat majorOffset = self.labelOffset; - if ( (direction == CPTSignNone) || (labelDirection == direction) ) { + if ((direction == CPTSignNone) || (labelDirection == direction)) { majorOffset += self.tickOffset; } @@ -1895,7 +1895,7 @@ -(void)updateMinorTickLabelOffsets CGFloat minorOffset = self.minorTickLabelOffset; - if ( (direction == CPTSignNone) || (labelDirection == direction) ) { + if ((direction == CPTSignNone) || (labelDirection == direction)) { minorOffset += self.tickOffset; } @@ -2089,7 +2089,7 @@ -(BOOL)pointingDeviceDownEvent:(nonnull CPTNativeEvent *)event atPoint:(CGPoint) if ( contentLayer && !contentLayer.hidden ) { CGPoint labelPoint = [theGraph convertPoint:interactionPoint toLayer:contentLayer]; - if ( CGRectContainsPoint(contentLayer.bounds, labelPoint) ) { + if ( CGRectContainsPoint(contentLayer.bounds, labelPoint)) { self.pointingDeviceDownLabel = label; BOOL handled = NO; @@ -2121,7 +2121,7 @@ -(BOOL)pointingDeviceDownEvent:(nonnull CPTNativeEvent *)event atPoint:(CGPoint) if ( contentLayer && !contentLayer.hidden ) { CGPoint labelPoint = [theGraph convertPoint:interactionPoint toLayer:contentLayer]; - if ( CGRectContainsPoint(contentLayer.bounds, labelPoint) ) { + if ( CGRectContainsPoint(contentLayer.bounds, labelPoint)) { self.pointingDeviceDownTickLabel = label; BOOL handled = NO; @@ -2200,7 +2200,7 @@ -(BOOL)pointingDeviceUpEvent:(nonnull CPTNativeEvent *)event atPoint:(CGPoint)in if ( contentLayer && !contentLayer.hidden ) { CGPoint labelPoint = [theGraph convertPoint:interactionPoint toLayer:contentLayer]; - if ( CGRectContainsPoint(contentLayer.bounds, labelPoint) ) { + if ( CGRectContainsPoint(contentLayer.bounds, labelPoint)) { BOOL handled = NO; if ( [theDelegate respondsToSelector:@selector(axis:labelTouchUp:)] ) { @@ -2243,7 +2243,7 @@ -(BOOL)pointingDeviceUpEvent:(nonnull CPTNativeEvent *)event atPoint:(CGPoint)in if ( contentLayer && !contentLayer.hidden ) { CGPoint labelPoint = [theGraph convertPoint:interactionPoint toLayer:contentLayer]; - if ( CGRectContainsPoint(contentLayer.bounds, labelPoint) ) { + if ( CGRectContainsPoint(contentLayer.bounds, labelPoint)) { BOOL handled = NO; if ( [theDelegate respondsToSelector:@selector(axis:minorTickTouchUp:)] ) { @@ -2385,7 +2385,7 @@ -(void)setLabelTextStyle:(nullable CPTTextStyle *)newStyle for ( CPTAxisLabel *axisLabel in self.axisLabels ) { CPTLayer *contentLayer = axisLabel.contentLayer; if ( [contentLayer isKindOfClass:textLayerClass] ) { - ( (CPTTextLayer *)contentLayer).textStyle = labelTextStyle; + ((CPTTextLayer *)contentLayer).textStyle = labelTextStyle; } } @@ -2402,7 +2402,7 @@ -(void)setMinorTickLabelTextStyle:(nullable CPTTextStyle *)newStyle for ( CPTAxisLabel *axisLabel in self.minorTickAxisLabels ) { CPTLayer *contentLayer = axisLabel.contentLayer; if ( [contentLayer isKindOfClass:textLayerClass] ) { - ( (CPTTextLayer *)contentLayer).textStyle = minorTickLabelTextStyle; + ((CPTTextLayer *)contentLayer).textStyle = minorTickLabelTextStyle; } } @@ -2463,7 +2463,7 @@ -(void)setTitleTextStyle:(nullable CPTTextStyle *)newStyle CPTLayer *contentLayer = self.axisTitle.contentLayer; if ( [contentLayer isKindOfClass:[CPTTextLayer class]] ) { - ( (CPTTextLayer *)contentLayer).textStyle = titleTextStyle; + ((CPTTextLayer *)contentLayer).textStyle = titleTextStyle; [self updateAxisTitle]; } } @@ -2512,7 +2512,7 @@ -(void)setTitle:(nullable NSString *)newTitle if ( title ) { CPTLayer *contentLayer = self.axisTitle.contentLayer; if ( [contentLayer isKindOfClass:[CPTTextLayer class]] ) { - ( (CPTTextLayer *)contentLayer).text = title; + ((CPTTextLayer *)contentLayer).text = title; [self updateAxisTitle]; } } @@ -2538,7 +2538,7 @@ -(void)setAttributedTitle:(nullable NSAttributedString *)newTitle CPTLayer *contentLayer = self.axisTitle.contentLayer; if ( [contentLayer isKindOfClass:[CPTTextLayer class]] ) { - ( (CPTTextLayer *)contentLayer).attributedText = attributedTitle; + ((CPTTextLayer *)contentLayer).attributedText = attributedTitle; [self updateAxisTitle]; } } @@ -2571,7 +2571,7 @@ -(void)setTitleLocation:(nullable NSNumber *)newLocation -(nullable NSNumber *)titleLocation { - if ( isnan(titleLocation.doubleValue) ) { + if ( isnan(titleLocation.doubleValue)) { return self.defaultTitleLocation; } else { diff --git a/framework/Source/CPTAxisLabel.m b/framework/Source/CPTAxisLabel.m index 96955e4b9..2f9f23f5e 100644 --- a/framework/Source/CPTAxisLabel.m +++ b/framework/Source/CPTAxisLabel.m @@ -63,7 +63,7 @@ -(nonnull instancetype)initWithText:(nullable NSString *)newText textStyle:(null **/ -(nonnull instancetype)initWithContentLayer:(nonnull CPTLayer *)layer { - if ( (self = [super init]) ) { + if ((self = [super init])) { contentLayer = layer; offset = CPTFloat(20.0); rotation = CPTFloat(0.0); @@ -105,7 +105,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder */ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super init]) ) { + if ((self = [super init])) { contentLayer = [coder decodeObjectOfClass:[CPTLayer class] forKey:@"CPTAxisLabel.contentLayer"]; offset = [coder decodeCGFloatForKey:@"CPTAxisLabel.offset"]; @@ -151,14 +151,14 @@ -(void)positionRelativeToViewPoint:(CGPoint)point forCoordinate:(CPTCoordinate)c } CGPoint newPosition = point; - CGFloat *value = ( coordinate == CPTCoordinateX ? &(newPosition.x) : &(newPosition.y) ); + CGFloat *value = (coordinate == CPTCoordinateX ? &(newPosition.x) : &(newPosition.y)); CGFloat angle = CPTFloat(0.0); CGFloat labelRotation = self.rotation; - if ( isnan(labelRotation) ) { - labelRotation = ( coordinate == CPTCoordinateX ? CPTFloat(M_PI_2) : CPTFloat(0.0) ); + if ( isnan(labelRotation)) { + labelRotation = (coordinate == CPTCoordinateX ? CPTFloat(M_PI_2) : CPTFloat(0.0)); } - content.transform = CATransform3DMakeRotation( labelRotation, CPTFloat(0.0), CPTFloat(0.0), CPTFloat(1.0) ); + content.transform = CATransform3DMakeRotation(labelRotation, CPTFloat(0.0), CPTFloat(0.0), CPTFloat(1.0)); CGRect contentFrame = content.frame; // Position the anchor point along the closest edge. @@ -272,7 +272,7 @@ -(void)positionRelativeToViewPoint:(CGPoint)point forCoordinate:(CPTCoordinate)c CGFloat newAnchorX = cos(angle); CGFloat newAnchorY = sin(angle); - if ( ABS(newAnchorX) <= ABS(newAnchorY) ) { + if ( ABS(newAnchorX) <= ABS(newAnchorY)) { newAnchorX /= ABS(newAnchorY); newAnchorY = signbit(newAnchorY) ? CPTFloat(-1.0) : CPTFloat(1.0); } @@ -280,7 +280,7 @@ -(void)positionRelativeToViewPoint:(CGPoint)point forCoordinate:(CPTCoordinate)c newAnchorY /= ABS(newAnchorX); newAnchorX = signbit(newAnchorX) ? CPTFloat(-1.0) : CPTFloat(1.0); } - CGPoint anchor = CPTPointMake( ( newAnchorX + CPTFloat(1.0) ) / CPTFloat(2.0), ( newAnchorY + CPTFloat(1.0) ) / CPTFloat(2.0) ); + CGPoint anchor = CPTPointMake((newAnchorX + CPTFloat(1.0)) / CPTFloat(2.0), (newAnchorY + CPTFloat(1.0)) / CPTFloat(2.0)); content.anchorPoint = anchor; content.position = newPosition; @@ -295,7 +295,7 @@ -(void)positionRelativeToViewPoint:(CGPoint)point forCoordinate:(CPTCoordinate)c **/ -(void)positionBetweenViewPoint:(CGPoint)firstPoint andViewPoint:(CGPoint)secondPoint forCoordinate:(CPTCoordinate)coordinate inDirection:(CPTSign)direction { - [self positionRelativeToViewPoint:CPTPointMake( (firstPoint.x + secondPoint.x) / CPTFloat(2.0), (firstPoint.y + secondPoint.y) / CPTFloat(2.0) ) + [self positionRelativeToViewPoint:CPTPointMake((firstPoint.x + secondPoint.x) / CPTFloat(2.0), (firstPoint.y + secondPoint.y) / CPTFloat(2.0)) forCoordinate:coordinate inDirection:direction]; } @@ -329,7 +329,7 @@ -(BOOL)isEqual:(nullable id)object return YES; } else if ( [object isKindOfClass:[self class]] ) { - NSNumber *location = ( (CPTAxisLabel *)object).tickLocation; + NSNumber *location = ((CPTAxisLabel *)object).tickLocation; if ( location ) { return [self.tickLocation isEqualToNumber:location]; @@ -354,8 +354,8 @@ -(NSUInteger)hash // Equal objects must hash the same. double tickLocationAsDouble = self.tickLocation.doubleValue; - if ( !isnan(tickLocationAsDouble) ) { - hashValue = (NSUInteger)lrint( fmod(ABS(tickLocationAsDouble), (double)NSUIntegerMax) ); + if ( !isnan(tickLocationAsDouble)) { + hashValue = (NSUInteger)lrint(fmod(ABS(tickLocationAsDouble), (double)NSUIntegerMax)); } return hashValue; diff --git a/framework/Source/CPTAxisLabelTests.m b/framework/Source/CPTAxisLabelTests.m index eee894a7f..9bb03a537 100644 --- a/framework/Source/CPTAxisLabelTests.m +++ b/framework/Source/CPTAxisLabelTests.m @@ -19,8 +19,8 @@ static CGPoint roundPoint(CGPoint position, CGSize contentSize, CGPoint anchor) CGPoint newAnchor = CGPointMake(contentSize.width * anchor.x, contentSize.height * anchor.y); - newPosition.x = ceil( position.x - newAnchor.x - CPTFloat(0.5) ) + newAnchor.x; - newPosition.y = ceil( position.y - newAnchor.y - CPTFloat(0.5) ) + newAnchor.y; + newPosition.x = ceil(position.x - newAnchor.x - CPTFloat(0.5)) + newAnchor.x; + newPosition.y = ceil(position.y - newAnchor.y - CPTFloat(0.5)) + newAnchor.y; return newPosition; } @@ -60,8 +60,8 @@ -(void)testPositionRelativeToViewPointPositionsForXCoordinate CGPoint newPosition = roundPoint(CGPointMake(start - label.offset, start), contentSize, contentLayer.anchorPoint); - XCTAssertEqualWithAccuracy( contentLayer.position.x, newPosition.x, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); - XCTAssertEqualWithAccuracy( contentLayer.position.y, newPosition.y, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy(contentLayer.position.x, newPosition.x, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition)); + XCTAssertEqualWithAccuracy(contentLayer.position.y, newPosition.y, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition)); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.x, CPTFloat(1.0), precision, @"Should anchor at (1.0, 0.5)"); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.y, CPTFloat(0.5), precision, @"Should anchor at (1.0, 0.5)"); @@ -73,8 +73,8 @@ -(void)testPositionRelativeToViewPointPositionsForXCoordinate newPosition = roundPoint(CGPointMake(start - label.offset, start), contentSize, contentLayer.anchorPoint); - XCTAssertEqualWithAccuracy( contentLayer.position.x, newPosition.x, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); - XCTAssertEqualWithAccuracy( contentLayer.position.y, newPosition.y, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy(contentLayer.position.x, newPosition.x, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition)); + XCTAssertEqualWithAccuracy(contentLayer.position.y, newPosition.y, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition)); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.x, CPTFloat(1.0), precision, @"Should anchor at (1.0, 0.5)"); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.y, CPTFloat(0.5), precision, @"Should anchor at (1.0, 0.5)"); @@ -86,8 +86,8 @@ -(void)testPositionRelativeToViewPointPositionsForXCoordinate newPosition = roundPoint(CGPointMake(start + label.offset, start), contentSize, contentLayer.anchorPoint); - XCTAssertEqualWithAccuracy( contentLayer.position.x, newPosition.x, precision, @"Should add positive offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); - XCTAssertEqualWithAccuracy( contentLayer.position.y, newPosition.y, precision, @"Should add positive offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy(contentLayer.position.x, newPosition.x, precision, @"Should add positive offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition)); + XCTAssertEqualWithAccuracy(contentLayer.position.y, newPosition.y, precision, @"Should add positive offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition)); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.x, CPTFloat(0.0), precision, @"Should anchor at (0.0, 0.5)"); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.y, CPTFloat(0.5), precision, @"Should anchor at (0.0, 0.5)"); } @@ -117,8 +117,8 @@ -(void)testPositionRelativeToViewPointPositionsForYCoordinate CGPoint newPosition = roundPoint(CGPointMake(start, start - label.offset), contentSize, contentLayer.anchorPoint); - XCTAssertEqualWithAccuracy( contentLayer.position.x, newPosition.x, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); - XCTAssertEqualWithAccuracy( contentLayer.position.y, newPosition.y, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy(contentLayer.position.x, newPosition.x, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition)); + XCTAssertEqualWithAccuracy(contentLayer.position.y, newPosition.y, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition)); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.x, CPTFloat(0.5), precision, @"Should anchor at (0.5, 1.0)"); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.y, CPTFloat(1.0), precision, @"Should anchor at (0.5, 1.0)"); @@ -130,8 +130,8 @@ -(void)testPositionRelativeToViewPointPositionsForYCoordinate newPosition = roundPoint(CGPointMake(start, start - label.offset), contentSize, contentLayer.anchorPoint); - XCTAssertEqualWithAccuracy( contentLayer.position.x, newPosition.x, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); - XCTAssertEqualWithAccuracy( contentLayer.position.y, newPosition.y, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy(contentLayer.position.x, newPosition.x, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition)); + XCTAssertEqualWithAccuracy(contentLayer.position.y, newPosition.y, precision, @"Should add negative offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition)); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.x, CPTFloat(0.5), precision, @"Should anchor at (0.5, 1.0)"); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.y, CPTFloat(1.0), precision, @"Should anchor at (0.5, 1.0)"); @@ -143,8 +143,8 @@ -(void)testPositionRelativeToViewPointPositionsForYCoordinate newPosition = roundPoint(CGPointMake(start, start + label.offset), contentSize, contentLayer.anchorPoint); - XCTAssertEqualWithAccuracy( contentLayer.position.x, newPosition.x, precision, @"Should add positive offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); - XCTAssertEqualWithAccuracy( contentLayer.position.y, newPosition.y, precision, @"Should add positive offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition) ); + XCTAssertEqualWithAccuracy(contentLayer.position.x, newPosition.x, precision, @"Should add positive offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition)); + XCTAssertEqualWithAccuracy(contentLayer.position.y, newPosition.y, precision, @"Should add positive offset, %@ != %@", CPTStringFromPoint(contentLayer.position), CPTStringFromPoint(newPosition)); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.x, CPTFloat(0.5), precision, @"Should anchor at (0.5, 0.0)"); XCTAssertEqualWithAccuracy(contentLayer.anchorPoint.y, CPTFloat(0.0), precision, @"Should anchor at (0.5, 0.0)"); } diff --git a/framework/Source/CPTAxisSet.m b/framework/Source/CPTAxisSet.m index c5678d149..0f37e6cb5 100644 --- a/framework/Source/CPTAxisSet.m +++ b/framework/Source/CPTAxisSet.m @@ -38,7 +38,7 @@ @implementation CPTAxisSet **/ -(nonnull instancetype)initWithFrame:(CGRect)newFrame { - if ( (self = [super initWithFrame:newFrame]) ) { + if ((self = [super initWithFrame:newFrame])) { axes = @[]; borderLineStyle = nil; @@ -53,7 +53,7 @@ -(nonnull instancetype)initWithFrame:(CGRect)newFrame -(nonnull instancetype)initWithLayer:(nonnull id)layer { - if ( (self = [super initWithLayer:layer]) ) { + if ((self = [super initWithLayer:layer])) { CPTAxisSet *theLayer = (CPTAxisSet *)layer; axes = theLayer->axes; @@ -79,7 +79,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super initWithCoder:coder]) ) { + if ((self = [super initWithCoder:coder])) { axes = [[coder decodeObjectOfClasses:[NSSet setWithArray:@[[NSArray class], [CPTAxis class]]] forKey:@"CPTAxisSet.axes"] copy]; borderLineStyle = [[coder decodeObjectOfClass:[CPTLineStyle class] diff --git a/framework/Source/CPTAxisTitle.m b/framework/Source/CPTAxisTitle.m index d40080766..99b26a321 100644 --- a/framework/Source/CPTAxisTitle.m +++ b/framework/Source/CPTAxisTitle.m @@ -18,7 +18,7 @@ @implementation CPTAxisTitle -(nonnull instancetype)initWithContentLayer:(nonnull CPTLayer *)layer { if ( layer ) { - if ( (self = [super initWithContentLayer:layer]) ) { + if ((self = [super initWithContentLayer:layer])) { self.rotation = CPTNAN; } } @@ -49,14 +49,14 @@ -(BOOL)isEqual:(nullable id)object else if ( [object isKindOfClass:[self class]] ) { CPTAxisTitle *otherTitle = object; - if ( (self.rotation != otherTitle.rotation) || (self.offset != otherTitle.offset) ) { + if ((self.rotation != otherTitle.rotation) || (self.offset != otherTitle.offset)) { return NO; } if ( ![self.contentLayer isEqual:otherTitle] ) { return NO; } - NSNumber *location = ( (CPTAxisLabel *)object).tickLocation; + NSNumber *location = ((CPTAxisLabel *)object).tickLocation; if ( location ) { return [self.tickLocation isEqualToNumber:location]; @@ -81,11 +81,11 @@ -(NSUInteger)hash // Equal objects must hash the same. double tickLocationAsDouble = self.tickLocation.doubleValue; - if ( !isnan(tickLocationAsDouble) ) { - hashValue = (NSUInteger)lrint( fmod(ABS(tickLocationAsDouble), (double)NSUIntegerMax) ); + if ( !isnan(tickLocationAsDouble)) { + hashValue = (NSUInteger)lrint(fmod(ABS(tickLocationAsDouble), (double)NSUIntegerMax)); } - hashValue += (NSUInteger)lrint( fmod(ABS(self.rotation), (double)NSUIntegerMax) ); - hashValue += (NSUInteger)lrint( fmod(ABS(self.offset), (double)NSUIntegerMax) ); + hashValue += (NSUInteger)lrint(fmod(ABS(self.rotation), (double)NSUIntegerMax)); + hashValue += (NSUInteger)lrint(fmod(ABS(self.offset), (double)NSUIntegerMax)); return hashValue; } diff --git a/framework/Source/CPTBarPlot.m b/framework/Source/CPTBarPlot.m index 037f78d02..7a977ab3f 100644 --- a/framework/Source/CPTBarPlot.m +++ b/framework/Source/CPTBarPlot.m @@ -237,7 +237,7 @@ +(void)initialize **/ -(nonnull instancetype)initWithFrame:(CGRect)newFrame { - if ( (self = [super initWithFrame:newFrame]) ) { + if ((self = [super initWithFrame:newFrame])) { lineStyle = [[CPTLineStyle alloc] init]; fill = [CPTFill fillWithColor:[CPTColor blackColor]]; barWidth = @0.5; @@ -263,7 +263,7 @@ -(nonnull instancetype)initWithFrame:(CGRect)newFrame -(nonnull instancetype)initWithLayer:(nonnull id)layer { - if ( (self = [super initWithLayer:layer]) ) { + if ((self = [super initWithLayer:layer])) { CPTBarPlot *theLayer = (CPTBarPlot *)layer; lineStyle = theLayer->lineStyle; @@ -311,7 +311,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super initWithCoder:coder]) ) { + if ((self = [super initWithCoder:coder])) { NSNumber *num; lineStyle = [[coder decodeObjectOfClass:[CPTLineStyle class] @@ -406,7 +406,7 @@ -(void)reloadPlotDataInIndexRange:(NSRange)indexRange CPTMutableNumericData *locationData = nil; if ( self.doublePrecisionCache ) { locationData = [[CPTMutableNumericData alloc] initWithData:[NSData data] - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent()) shape:nil]; locationData.shape = @[@(indexRange.length)]; @@ -425,13 +425,13 @@ -(void)reloadPlotDataInIndexRange:(NSRange)indexRange } else { locationData = [[CPTMutableNumericData alloc] initWithData:[NSData data] - dataType:CPTDataType( CPTDecimalDataType, sizeof(NSDecimal), CFByteOrderGetCurrent() ) + dataType:CPTDataType(CPTDecimalDataType, sizeof(NSDecimal), CFByteOrderGetCurrent()) shape:nil]; locationData.shape = @[@(indexRange.length)]; NSDecimal delta = CPTDecimalFromInteger(1); if ( indexRange.length > 1 ) { - delta = CPTDecimalDivide( self.plotRange.lengthDecimal, CPTDecimalFromUnsignedInteger(indexRange.length - 1) ); + delta = CPTDecimalDivide(self.plotRange.lengthDecimal, CPTDecimalFromUnsignedInteger(indexRange.length - 1)); } NSDecimal locationDecimal = self.plotRange.locationDecimal; @@ -454,7 +454,7 @@ -(void)reloadPlotDataInIndexRange:(NSRange)indexRange CPTMutableNumericData *locationData = nil; if ( self.doublePrecisionCache ) { locationData = [[CPTMutableNumericData alloc] initWithData:[NSData data] - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent()) shape:nil]; locationData.shape = @[@(indexRange.length)]; @@ -468,7 +468,7 @@ -(void)reloadPlotDataInIndexRange:(NSRange)indexRange } else { locationData = [[CPTMutableNumericData alloc] initWithData:[NSData data] - dataType:CPTDataType( CPTDecimalDataType, sizeof(NSDecimal), CFByteOrderGetCurrent() ) + dataType:CPTDataType(CPTDecimalDataType, sizeof(NSDecimal), CFByteOrderGetCurrent()) shape:nil]; locationData.shape = @[@(indexRange.length)]; @@ -789,12 +789,12 @@ -(nullable CPTPlotRange *)plotRangeEnclosingBars NSDecimal barOffsetLength = [self lengthInPlotCoordinates:self.barOffset.decimalValue]; NSDecimal barWidthLength = [self lengthInPlotCoordinates:self.barWidth.decimalValue]; - NSDecimal halfBarWidth = CPTDecimalDivide( barWidthLength, CPTDecimalFromInteger(2) ); + NSDecimal halfBarWidth = CPTDecimalDivide(barWidthLength, CPTDecimalFromInteger(2)); NSDecimal rangeLocation = range.locationDecimal; NSDecimal rangeLength = range.lengthDecimal; - if ( CPTDecimalGreaterThanOrEqualTo( rangeLength, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalGreaterThanOrEqualTo(rangeLength, CPTDecimalFromInteger(0))) { rangeLocation = CPTDecimalSubtract(rangeLocation, halfBarWidth); range.locationDecimal = CPTDecimalAdd(rangeLocation, barOffsetLength); @@ -823,13 +823,13 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context CPTMutableNumericData *cachedLocations = [self cachedNumbersForField:CPTBarPlotFieldBarLocation]; CPTMutableNumericData *cachedLengths = [self cachedNumbersForField:CPTBarPlotFieldBarTip]; - if ( (cachedLocations == nil) || (cachedLengths == nil) ) { + if ((cachedLocations == nil) || (cachedLengths == nil)) { return; } BOOL basesVary = self.barBasesVary; CPTMutableNumericData *cachedBases = [self cachedNumbersForField:CPTBarPlotFieldBarBase]; - if ( basesVary && (cachedBases == nil) ) { + if ( basesVary && (cachedBases == nil)) { return; } @@ -842,7 +842,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context [NSException raise:CPTException format:@"Number of bar locations and lengths do not match"]; } - if ( basesVary && (cachedLengths.numberOfSamples != cachedBases.numberOfSamples) ) { + if ( basesVary && (cachedLengths.numberOfSamples != cachedBases.numberOfSamples)) { [NSException raise:CPTException format:@"Number of bar lengths and bases do not match"]; } @@ -869,13 +869,13 @@ -(BOOL)barAtRecordIndex:(NSUInteger)idx basePoint:(nonnull CGPoint *)basePoint t if ( self.doublePrecisionCache ) { double plotPoint[2]; plotPoint[independentCoord] = [self cachedDoubleForField:CPTBarPlotFieldBarLocation recordIndex:idx]; - if ( isnan(plotPoint[independentCoord]) ) { + if ( isnan(plotPoint[independentCoord])) { return NO; } // Tip point plotPoint[dependentCoord] = [self cachedDoubleForField:CPTBarPlotFieldBarTip recordIndex:idx]; - if ( isnan(plotPoint[dependentCoord]) ) { + if ( isnan(plotPoint[dependentCoord])) { return NO; } *tipPoint = [thePlotSpace plotAreaViewPointForDoublePrecisionPlotPoint:plotPoint numberOfCoordinates:2]; @@ -887,7 +887,7 @@ -(BOOL)barAtRecordIndex:(NSUInteger)idx basePoint:(nonnull CGPoint *)basePoint t else { plotPoint[dependentCoord] = [self cachedDoubleForField:CPTBarPlotFieldBarBase recordIndex:idx]; } - if ( isnan(plotPoint[dependentCoord]) ) { + if ( isnan(plotPoint[dependentCoord])) { return NO; } *basePoint = [thePlotSpace plotAreaViewPointForDoublePrecisionPlotPoint:plotPoint numberOfCoordinates:2]; @@ -895,13 +895,13 @@ -(BOOL)barAtRecordIndex:(NSUInteger)idx basePoint:(nonnull CGPoint *)basePoint t else { NSDecimal plotPoint[2]; plotPoint[independentCoord] = [self cachedDecimalForField:CPTBarPlotFieldBarLocation recordIndex:idx]; - if ( NSDecimalIsNotANumber(&plotPoint[independentCoord]) ) { + if ( NSDecimalIsNotANumber(&plotPoint[independentCoord])) { return NO; } // Tip point plotPoint[dependentCoord] = [self cachedDecimalForField:CPTBarPlotFieldBarTip recordIndex:idx]; - if ( NSDecimalIsNotANumber(&plotPoint[dependentCoord]) ) { + if ( NSDecimalIsNotANumber(&plotPoint[dependentCoord])) { return NO; } *tipPoint = [thePlotSpace plotAreaViewPointForPlotPoint:plotPoint numberOfCoordinates:2]; @@ -913,7 +913,7 @@ -(BOOL)barAtRecordIndex:(NSUInteger)idx basePoint:(nonnull CGPoint *)basePoint t else { plotPoint[dependentCoord] = [self cachedDecimalForField:CPTBarPlotFieldBarBase recordIndex:idx]; } - if ( NSDecimalIsNotANumber(&plotPoint[dependentCoord]) ) { + if ( NSDecimalIsNotANumber(&plotPoint[dependentCoord])) { return NO; } *basePoint = [thePlotSpace plotAreaViewPointForPlotPoint:plotPoint numberOfCoordinates:2]; @@ -985,7 +985,7 @@ -(nonnull CGMutablePathRef)newBarPathWithContext:(nullable CGContextRef)context CGContextRef theContext = context; - if ( self.lineStyle.lineWidth > CPTFloat(0.0) ) { + if ( self.lineStyle.lineWidth > CPTFloat(0.0)) { barRect = CPTAlignRectToUserSpace(theContext, barRect); } else { @@ -993,21 +993,21 @@ -(nonnull CGMutablePathRef)newBarPathWithContext:(nullable CGContextRef)context } } - CGFloat radius = MIN( MIN( self.barCornerRadius, ABS(barRect.size.width) * CPTFloat(0.5) ), ABS(barRect.size.height) * CPTFloat(0.5) ); - CGFloat baseRadius = MIN( MIN( self.barBaseCornerRadius, ABS(barRect.size.width) * CPTFloat(0.5) ), ABS(barRect.size.height) * CPTFloat(0.5) ); + CGFloat radius = MIN(MIN(self.barCornerRadius, ABS(barRect.size.width) * CPTFloat(0.5)), ABS(barRect.size.height) * CPTFloat(0.5)); + CGFloat baseRadius = MIN(MIN(self.barBaseCornerRadius, ABS(barRect.size.width) * CPTFloat(0.5)), ABS(barRect.size.height) * CPTFloat(0.5)); - if ( widthNegative && ( barRect.size.width > CPTFloat(0.0) ) ) { + if ( widthNegative && (barRect.size.width > CPTFloat(0.0))) { barRect.origin.x += barRect.size.width; barRect.size.width = -barRect.size.width; } - if ( heightNegative && ( barRect.size.height > CPTFloat(0.0) ) ) { + if ( heightNegative && (barRect.size.height > CPTFloat(0.0))) { barRect.origin.y += barRect.size.height; barRect.size.height = -barRect.size.height; } CGMutablePathRef path = CGPathCreateMutable(); - if ( radius == CPTFloat(0.0) ) { - if ( baseRadius == CPTFloat(0.0) ) { + if ( radius == CPTFloat(0.0)) { + if ( baseRadius == CPTFloat(0.0)) { // square corners CGPathAddRect(path, NULL, barRect); } @@ -1035,7 +1035,7 @@ -(nonnull CGMutablePathRef)newBarPathWithContext:(nullable CGContextRef)context CGFloat tipX = barRect.origin.x + barRect.size.width; CGFloat tipY = barRect.origin.y + barRect.size.height; - if ( baseRadius == CPTFloat(0.0) ) { + if ( baseRadius == CPTFloat(0.0)) { // rounded at tip end only CGPathMoveToPoint(path, NULL, barRect.origin.x, barRect.origin.y); if ( horizontalBars ) { @@ -1053,14 +1053,14 @@ -(nonnull CGMutablePathRef)newBarPathWithContext:(nullable CGContextRef)context else { // rounded at both ends if ( horizontalBars ) { - CGPathMoveToPoint( path, NULL, barRect.origin.x, CGRectGetMidY(barRect) ); + CGPathMoveToPoint(path, NULL, barRect.origin.x, CGRectGetMidY(barRect)); CGPathAddArcToPoint(path, NULL, barRect.origin.x, tipY, CGRectGetMidX(barRect), tipY, baseRadius); CGPathAddArcToPoint(path, NULL, tipX, tipY, tipX, CGRectGetMidY(barRect), radius); CGPathAddArcToPoint(path, NULL, tipX, barRect.origin.y, CGRectGetMidX(barRect), barRect.origin.y, radius); CGPathAddArcToPoint(path, NULL, barRect.origin.x, barRect.origin.y, barRect.origin.x, CGRectGetMidY(barRect), baseRadius); } else { - CGPathMoveToPoint( path, NULL, barRect.origin.x, CGRectGetMidY(barRect) ); + CGPathMoveToPoint(path, NULL, barRect.origin.x, CGRectGetMidY(barRect)); CGPathAddArcToPoint(path, NULL, barRect.origin.x, tipY, CGRectGetMidX(barRect), tipY, radius); CGPathAddArcToPoint(path, NULL, tipX, tipY, tipX, CGRectGetMidY(barRect), radius); CGPathAddArcToPoint(path, NULL, tipX, barRect.origin.y, CGRectGetMidX(barRect), barRect.origin.y, baseRadius); @@ -1081,8 +1081,8 @@ -(BOOL)barIsVisibleWithBasePoint:(CGPoint)basePoint CPTPlotArea *thePlotArea = self.plotArea; - CGFloat lowerBound = ( horizontalBars ? CGRectGetMinY(thePlotArea.bounds) : CGRectGetMinX(thePlotArea.bounds) ); - CGFloat upperBound = ( horizontalBars ? CGRectGetMaxY(thePlotArea.bounds) : CGRectGetMaxX(thePlotArea.bounds) ); + CGFloat lowerBound = (horizontalBars ? CGRectGetMinY(thePlotArea.bounds) : CGRectGetMinX(thePlotArea.bounds)); + CGFloat upperBound = (horizontalBars ? CGRectGetMaxY(thePlotArea.bounds) : CGRectGetMaxX(thePlotArea.bounds)); CGFloat base = (horizontalBars ? basePoint.y : basePoint.x); return (base + halfBarWidth >= lowerBound) && (base - halfBarWidth <= upperBound); @@ -1092,7 +1092,7 @@ -(nullable CPTFill *)barFillForIndex:(NSUInteger)idx { CPTFill *theBarFill = [self cachedValueForKey:CPTBarPlotBindingBarFills recordIndex:idx]; - if ( (theBarFill == nil) || (theBarFill == [CPTPlot nilData]) ) { + if ((theBarFill == nil) || (theBarFill == [CPTPlot nilData])) { theBarFill = self.fill; } @@ -1103,7 +1103,7 @@ -(nullable CPTLineStyle *)barLineStyleForIndex:(NSUInteger)idx { CPTLineStyle *theBarLineStyle = [self cachedValueForKey:CPTBarPlotBindingBarLineStyles recordIndex:idx]; - if ( (theBarLineStyle == nil) || (theBarLineStyle == [CPTPlot nilData]) ) { + if ((theBarLineStyle == nil) || (theBarLineStyle == [CPTPlot nilData])) { theBarLineStyle = self.lineStyle; } @@ -1231,7 +1231,7 @@ -(void)positionLabelAnnotation:(nonnull CPTPlotSpaceAnnotation *)label forIndex: BOOL horizontalBars = self.barsAreHorizontal; CPTCoordinate coordinate = (horizontalBars ? CPTCoordinateX : CPTCoordinateY); CPTPlotRange *lengthRange = [self.plotSpace plotRangeForCoordinate:coordinate]; - if ( CPTDecimalLessThan( lengthRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalLessThan(lengthRange.lengthDecimal, CPTDecimalFromInteger(0))) { positiveDirection = !positiveDirection; } @@ -1351,10 +1351,10 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point NSUInteger barCount = self.cachedDataCount; NSUInteger ii = 0; - while ( (ii < barCount) && (idx == NSNotFound) ) { + while ((ii < barCount) && (idx == NSNotFound)) { CGMutablePathRef path = [self newBarPathWithContext:NULL recordIndex:ii]; - if ( CGPathContainsPoint(path, NULL, point, false) ) { + if ( CGPathContainsPoint(path, NULL, point, false)) { idx = ii; } diff --git a/framework/Source/CPTBorderedLayer.m b/framework/Source/CPTBorderedLayer.m index 6c89fa02f..7a6126c00 100644 --- a/framework/Source/CPTBorderedLayer.m +++ b/framework/Source/CPTBorderedLayer.m @@ -68,7 +68,7 @@ @implementation CPTBorderedLayer **/ -(nonnull instancetype)initWithFrame:(CGRect)newFrame { - if ( (self = [super initWithFrame:newFrame]) ) { + if ((self = [super initWithFrame:newFrame])) { borderLineStyle = nil; fill = nil; inLayout = NO; @@ -84,7 +84,7 @@ -(nonnull instancetype)initWithFrame:(CGRect)newFrame -(nonnull instancetype)initWithLayer:(nonnull id)layer { - if ( (self = [super initWithLayer:layer]) ) { + if ((self = [super initWithLayer:layer])) { CPTBorderedLayer *theLayer = (CPTBorderedLayer *)layer; borderLineStyle = theLayer->borderLineStyle; @@ -114,7 +114,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super initWithCoder:coder]) ) { + if ((self = [super initWithCoder:coder])) { borderLineStyle = [[coder decodeObjectOfClass:[CPTLineStyle class] forKey:@"CPTBorderedLayer.borderLineStyle"] copy]; fill = [[coder decodeObjectOfClass:[CPTFill class] @@ -183,7 +183,7 @@ -(void)renderBorderedLayerAsVectorInContext:(nonnull CGContextRef)context CGFloat radius = self.cornerRadius; - if ( radius > CPTFloat(0.0) ) { + if ( radius > CPTFloat(0.0)) { CGContextBeginPath(context); CPTAddRoundedRectPath(context, layerBounds, radius); [theLineStyle strokePathInContext:context]; @@ -212,7 +212,7 @@ -(void)sublayerMarginLeft:(nonnull CGFloat *)left top:(nonnull CGFloat *)top rig CGFloat inset = self.borderLineStyle.lineWidth * CPTFloat(0.5); - if ( inset > CPTFloat(0.0) ) { + if ( inset > CPTFloat(0.0)) { *left += inset; *top += inset; *right += inset; @@ -271,7 +271,7 @@ -(nullable CGPathRef)sublayerMaskingPath CGFloat lineWidth = self.borderLineStyle.lineWidth; CGRect selfBounds = CGRectInset(self.bounds, lineWidth, lineWidth); - path = CPTCreateRoundedRectPath( selfBounds, self.cornerRadius - lineWidth * CPTFloat(0.5) ); + path = CPTCreateRoundedRectPath(selfBounds, self.cornerRadius - lineWidth * CPTFloat(0.5)); self.innerBorderPath = path; CGPathRelease(path); @@ -306,7 +306,7 @@ -(void)removeFromSuperlayer -(void)updateOpacity { - BOOL opaqueLayer = ( self.cornerRadius <= CPTFloat(0.0) ); + BOOL opaqueLayer = (self.cornerRadius <= CPTFloat(0.0)); CPTFill *theFill = self.fill; @@ -353,7 +353,7 @@ -(void)setFill:(nullable CPTFill *)newFill fill = [newFill copy]; CPTLayer *border = self.borderLayer; - if ( self.cornerRadius != CPTFloat(0.0) ) { + if ( self.cornerRadius != CPTFloat(0.0)) { border.backgroundColor = NULL; } else { diff --git a/framework/Source/CPTCalendarFormatter.m b/framework/Source/CPTCalendarFormatter.m index a197159ac..928263b4e 100644 --- a/framework/Source/CPTCalendarFormatter.m +++ b/framework/Source/CPTCalendarFormatter.m @@ -67,7 +67,7 @@ -(nonnull instancetype)init **/ -(nonnull instancetype)initWithDateFormatter:(nullable NSDateFormatter *)aDateFormatter { - if ( (self = [super init]) ) { + if ((self = [super init])) { dateFormatter = aDateFormatter; referenceDate = nil; referenceCalendar = nil; @@ -99,7 +99,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder */ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super init]) ) { + if ((self = [super init])) { dateFormatter = [coder decodeObjectForKey:@"CPTCalendarFormatter.dateFormatter"]; referenceDate = [[coder decodeObjectForKey:@"CPTCalendarFormatter.referenceDate"] copy]; referenceCalendar = [[coder decodeObjectForKey:@"CPTCalendarFormatter.referenceCalendar"] copy]; diff --git a/framework/Source/CPTColor.m b/framework/Source/CPTColor.m index 3cb817042..d0ba919ea 100644 --- a/framework/Source/CPTColor.m +++ b/framework/Source/CPTColor.m @@ -395,7 +395,7 @@ +(nonnull instancetype)colorWithNSColor:(nonnull NSColor *)newNSColor **/ -(nonnull instancetype)initWithCGColor:(nonnull CGColorRef)newCGColor { - if ( (self = [super init]) ) { + if ((self = [super init])) { CGColorRetain(newCGColor); cgColor = newCGColor; } @@ -435,7 +435,7 @@ -(nonnull instancetype)initWithComponentRed:(CGFloat)red green:(CGFloat)green bl **/ -(nonnull instancetype)initWithNSColor:(nonnull NSColor *)newNSColor { - if ( (self = [super init]) ) { + if ((self = [super init])) { nsColorCache = newNSColor; } return self; @@ -527,7 +527,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder */ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super init]) ) { + if ((self = [super init])) { #if TARGET_OS_OSX NSColor *decodedNSColor = [coder decodeObjectOfClass:[NSColor class] forKey:@"CPTColor.nsColorCache"]; @@ -539,7 +539,7 @@ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder size_t numberOfComponents = (size_t)[coder decodeInt64ForKey:@"CPTColor.numberOfComponents"]; - CGFloat *colorComponents = calloc( numberOfComponents, sizeof(CGFloat) ); + CGFloat *colorComponents = calloc(numberOfComponents, sizeof(CGFloat)); for ( size_t i = 0; i < numberOfComponents; i++ ) { NSString *newKey = [[NSString alloc] initWithFormat:@"CPTColor.component[%zu]", i]; @@ -615,7 +615,7 @@ -(BOOL)isEqual:(nullable id)object return YES; } else if ( [object isKindOfClass:[self class]] ) { - return CGColorEqualToColor(self.cgColor, ( (CPTColor *)object).cgColor); + return CGColorEqualToColor(self.cgColor, ((CPTColor *)object).cgColor); } else { return NO; diff --git a/framework/Source/CPTColorSpace.m b/framework/Source/CPTColorSpace.m index de9e3522b..6086f09ef 100644 --- a/framework/Source/CPTColorSpace.m +++ b/framework/Source/CPTColorSpace.m @@ -55,7 +55,7 @@ +(nonnull instancetype)genericRGBSpace **/ -(nonnull instancetype)initWithCGColorSpace:(nonnull CGColorSpaceRef)colorSpace { - if ( (self = [super init]) ) { + if ((self = [super init])) { CGColorSpaceRetain(colorSpace); cgColorSpace = colorSpace; } @@ -106,7 +106,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder */ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super init]) ) { + if ((self = [super init])) { CGColorSpaceRef colorSpace = [coder newCGColorSpaceDecodeForKey:@"CPTColorSpace.cgColorSpace"]; if ( colorSpace ) { diff --git a/framework/Source/CPTDataSourceTestCase.m b/framework/Source/CPTDataSourceTestCase.m index 333df3157..8c601b1bf 100644 --- a/framework/Source/CPTDataSourceTestCase.m +++ b/framework/Source/CPTDataSourceTestCase.m @@ -51,7 +51,7 @@ -(void)buildData arr = [NSMutableArray arrayWithCapacity:recordCount]; for ( NSUInteger i = 0; i < recordCount; i++ ) { - [arr insertObject:@( sin(2 * M_PI * (double)i / (double)recordCount) ) atIndex:i]; + [arr insertObject:@(sin(2 * M_PI * (double)i / (double)recordCount)) atIndex:i]; } self.yData = arr; } @@ -81,7 +81,7 @@ -(nonnull CPTPlotRange *)yRange CPTMutablePlotRange *range = [self plotRangeForData:data]; if ( self.plots.count > 1 ) { - range.lengthDecimal = CPTDecimalAdd( range.lengthDecimal, CPTDecimalFromUnsignedInteger(self.plots.count) ); + range.lengthDecimal = CPTDecimalAdd(range.lengthDecimal, CPTDecimalFromUnsignedInteger(self.plots.count)); } return range; @@ -122,7 +122,7 @@ -(nullable CPTNumberArray *)numbersForPlot:(nonnull CPTPlot *)plot XCTAssertTrue([[self plots] containsObject:plot], @"Plot missing"); CPTMutableNumberArray *shiftedResult = [NSMutableArray arrayWithCapacity:result.count]; for ( NSDecimalNumber *d in result ) { - [shiftedResult addObject:[d decimalNumberByAdding:[NSDecimalNumber decimalNumberWithDecimal:CPTDecimalFromCGFloat( CPTDataSourceTestCasePlotOffset * ([self.plots indexOfObject:plot] + 1) )]]]; + [shiftedResult addObject:[d decimalNumberByAdding:[NSDecimalNumber decimalNumberWithDecimal:CPTDecimalFromCGFloat(CPTDataSourceTestCasePlotOffset * ([self.plots indexOfObject:plot] + 1))]]]; } result = shiftedResult; diff --git a/framework/Source/CPTDefinitions.h b/framework/Source/CPTDefinitions.h index 963f29fb2..26d4bd5de 100644 --- a/framework/Source/CPTDefinitions.h +++ b/framework/Source/CPTDefinitions.h @@ -40,7 +40,7 @@ * @brief Marks a method declaration as deprecated. **/ -#define cpt_deprecated __attribute__( (deprecated) ) +#define cpt_deprecated __attribute__((deprecated)) // Swift wrappers @@ -49,14 +49,14 @@ * @hideinitializer * @brief Marks a type definition to be imported into Swift as an enumeration. **/ -#define cpt_swift_enum __attribute__( ( swift_wrapper(enum) ) ) +#define cpt_swift_enum __attribute__((swift_wrapper(enum))) /** * @def cpt_swift_struct * @hideinitializer * @brief Marks a type definition to be imported into Swift as a structure. **/ -#define cpt_swift_struct __attribute__( ( swift_wrapper(struct) ) ) +#define cpt_swift_struct __attribute__((swift_wrapper(struct))) // Type safety defines @@ -66,7 +66,7 @@ * @param x The number to cast. * @brief Casts a number to @ref CGFloat. **/ -#define CPTFloat(x) ( (CGFloat)(x) ) +#define CPTFloat(x) ((CGFloat)(x)) /** * @def CPTPointMake @@ -75,7 +75,7 @@ * @param y The y-coordinate of the point. * @brief A replacement for @ref CGPointMake(), casting each parameter to @ref CGFloat. **/ -#define CPTPointMake(x, y) CGPointMake( (CGFloat)(x), (CGFloat)(y) ) +#define CPTPointMake(x, y) CGPointMake((CGFloat)(x), (CGFloat)(y)) /** * @def CPTSizeMake @@ -84,7 +84,7 @@ * @param h The height of the size. * @brief A replacement for @ref CGSizeMake(), casting each parameter to @ref CGFloat. **/ -#define CPTSizeMake(w, h) CGSizeMake( (CGFloat)(w), (CGFloat)(h) ) +#define CPTSizeMake(w, h) CGSizeMake((CGFloat)(w), (CGFloat)(h)) /** * @def CPTRectMake @@ -95,7 +95,7 @@ * @param h The height of the rectangle. * @brief A replacement for @ref CGRectMake(), casting each parameter to @ref CGFloat. **/ -#define CPTRectMake(x, y, w, h) CGRectMake( (CGFloat)(x), (CGFloat)(y), (CGFloat)(w), (CGFloat)(h) ) +#define CPTRectMake(x, y, w, h) CGRectMake((CGFloat)(x), (CGFloat)(y), (CGFloat)(w), (CGFloat)(h)) /** * @def CPTRectInset @@ -105,14 +105,14 @@ * @param dy The y-offset. * @brief A replacement for @ref CGRectInset(), casting each offset parameter to @ref CGFloat. **/ -#define CPTRectInset(rect, dx, dy) CGRectInset( rect, (CGFloat)(dx), (CGFloat)(dy) ) +#define CPTRectInset(rect, dx, dy) CGRectInset(rect, (CGFloat)(dx), (CGFloat)(dy)) /** * @def CPTNAN * @hideinitializer * @brief The not-a-number constant (@NAN), cast to @ref CGFloat. **/ -#define CPTNAN ( (CGFloat)NAN) +#define CPTNAN ((CGFloat)NAN) /** * @brief Enumeration of numeric types diff --git a/framework/Source/CPTFunctionDataSource.h b/framework/Source/CPTFunctionDataSource.h index 877c074c4..251919c40 100644 --- a/framework/Source/CPTFunctionDataSource.h +++ b/framework/Source/CPTFunctionDataSource.h @@ -25,17 +25,17 @@ typedef double (^CPTDataSourceBlock)(double); /// @name Factory Methods /// @{ -+(nonnull instancetype)dataSourceForPlot:(nonnull CPTPlot *)plot withFunction:(nonnull CPTDataSourceFunction) function NS_SWIFT_NAME( init(for:withFunction:) ); ++(nonnull instancetype)dataSourceForPlot:(nonnull CPTPlot *)plot withFunction:(nonnull CPTDataSourceFunction) function NS_SWIFT_NAME(init(for:withFunction:)); -+(nonnull instancetype)dataSourceForPlot:(nonnull CPTPlot *)plot withBlock:(nonnull CPTDataSourceBlock) block NS_SWIFT_NAME( init(for:withBlock:) ); ++(nonnull instancetype)dataSourceForPlot:(nonnull CPTPlot *)plot withBlock:(nonnull CPTDataSourceBlock) block NS_SWIFT_NAME(init(for:withBlock:)); /// @} /// @name Initialization /// @{ --(nonnull instancetype)initForPlot:(nonnull CPTPlot *)plot withFunction:(nonnull CPTDataSourceFunction) function NS_SWIFT_NAME( init(forPlot:withFunction:) ); +-(nonnull instancetype)initForPlot:(nonnull CPTPlot *)plot withFunction:(nonnull CPTDataSourceFunction) function NS_SWIFT_NAME(init(forPlot:withFunction:)); --(nonnull instancetype)initForPlot:(nonnull CPTPlot *)plot withBlock:(nonnull CPTDataSourceBlock) block NS_SWIFT_NAME( init(forPlot:withBlock:) ); +-(nonnull instancetype)initForPlot:(nonnull CPTPlot *)plot withBlock:(nonnull CPTDataSourceBlock) block NS_SWIFT_NAME(init(forPlot:withBlock:)); /// @} diff --git a/framework/Source/CPTFunctionDataSource.m b/framework/Source/CPTFunctionDataSource.m index 5ac2041c6..9b6fc7307 100644 --- a/framework/Source/CPTFunctionDataSource.m +++ b/framework/Source/CPTFunctionDataSource.m @@ -97,7 +97,7 @@ -(nonnull instancetype)initForPlot:(nonnull CPTPlot *)plot withFunction:(nonnull { NSParameterAssert(function); - if ( (self = [self initForPlot:plot]) ) { + if ((self = [self initForPlot:plot])) { dataSourceFunction = function; plot.dataSource = self; @@ -114,7 +114,7 @@ -(nonnull instancetype)initForPlot:(nonnull CPTPlot *)plot withBlock:(nonnull CP { NSParameterAssert(block); - if ( (self = [self initForPlot:plot]) ) { + if ((self = [self initForPlot:plot])) { dataSourceBlock = block; plot.dataSource = self; @@ -128,7 +128,7 @@ -(nonnull instancetype)initForPlot:(nonnull CPTPlot *)plot { NSParameterAssert([plot isKindOfClass:[CPTScatterPlot class]]); - if ( (self = [super init]) ) { + if ((self = [super init])) { dataPlot = plot; dataSourceFunction = NULL; dataSourceBlock = nil; @@ -176,7 +176,7 @@ -(void)dealloc -(void)setResolution:(CGFloat)newResolution { - NSParameterAssert( newResolution > CPTFloat(0.0) ); + NSParameterAssert(newResolution > CPTFloat(0.0)); if ( newResolution != resolution ) { resolution = newResolution; @@ -221,8 +221,8 @@ -(void)plotBoundsChanged if ( plotSpace ) { CGFloat width = plot.bounds.size.width; - if ( width > CPTFloat(0.0) ) { - NSUInteger count = (NSUInteger)lrint( ceil(width / self.resolution) ) + 1; + if ( width > CPTFloat(0.0)) { + NSUInteger count = (NSUInteger)lrint(ceil(width / self.resolution)) + 1; if ( count > self.cachedCount ) { self.dataCount = count; @@ -261,7 +261,7 @@ -(void)plotSpaceChanged if ( [cachedRange containsRange:plotRange] ) { // no new data needed } - else if ( ![cachedRange intersectsRange:plotRange] || (step == 0.0) ) { + else if ( ![cachedRange intersectsRange:plotRange] || (step == 0.0)) { self.cachedCount = 0; self.cachedPlotRange = plotRange; @@ -271,7 +271,7 @@ -(void)plotSpaceChanged if ( step > 0.0 ) { double minLimit = plotRange.minLimitDouble; if ( ![cachedRange containsDouble:minLimit] ) { - NSUInteger numPoints = (NSUInteger)lrint( ( ceil( (cachedRange.minLimitDouble - minLimit) / step) ) ); + NSUInteger numPoints = (NSUInteger)lrint((ceil((cachedRange.minLimitDouble - minLimit) / step))); NSDecimal offset = CPTDecimalFromDouble(step * numPoints); cachedRange.locationDecimal = CPTDecimalSubtract(cachedRange.locationDecimal, offset); @@ -284,7 +284,7 @@ -(void)plotSpaceChanged double maxLimit = plotRange.maxLimitDouble; if ( ![cachedRange containsDouble:maxLimit] ) { - NSUInteger numPoints = (NSUInteger)lrint( ceil( (maxLimit - cachedRange.maxLimitDouble) / step) ); + NSUInteger numPoints = (NSUInteger)lrint(ceil((maxLimit - cachedRange.maxLimitDouble) / step)); NSDecimal offset = CPTDecimalFromDouble(step * numPoints); cachedRange.lengthDecimal = CPTDecimalAdd(cachedRange.lengthDecimal, offset); @@ -297,7 +297,7 @@ -(void)plotSpaceChanged else { double maxLimit = plotRange.maxLimitDouble; if ( ![cachedRange containsDouble:maxLimit] ) { - NSUInteger numPoints = (NSUInteger)lrint( ceil( (cachedRange.maxLimitDouble - maxLimit) / step) ); + NSUInteger numPoints = (NSUInteger)lrint(ceil((cachedRange.maxLimitDouble - maxLimit) / step)); NSDecimal offset = CPTDecimalFromDouble(step * numPoints); cachedRange.locationDecimal = CPTDecimalSubtract(cachedRange.locationDecimal, offset); @@ -310,7 +310,7 @@ -(void)plotSpaceChanged double minLimit = plotRange.minLimitDouble; if ( ![cachedRange containsDouble:minLimit] ) { - NSUInteger numPoints = (NSUInteger)lrint( ceil( (minLimit - cachedRange.minLimitDouble) / step) ); + NSUInteger numPoints = (NSUInteger)lrint(ceil((minLimit - cachedRange.minLimitDouble) / step)); NSDecimal offset = CPTDecimalFromDouble(step * numPoints); cachedRange.lengthDecimal = CPTDecimalAdd(cachedRange.lengthDecimal, offset); @@ -332,7 +332,7 @@ -(void)plotSpaceChanged -(void)observeValueForKeyPath:(nullable NSString *)keyPath ofObject:(nullable id)object change:(NSDictionary *)change context:(nullable void *)context { - if ( (context == CPTFunctionDataSourceKVOContext) && [keyPath isEqualToString:@"plotSpace"] && [object isEqual:self.dataPlot] ) { + if ((context == CPTFunctionDataSourceKVOContext) && [keyPath isEqualToString:@"plotSpace"] && [object isEqual:self.dataPlot] ) { CPTPlotSpace *oldSpace = change[NSKeyValueChangeOldKey]; CPTPlotSpace *newSpace = change[NSKeyValueChangeNewKey]; @@ -392,11 +392,11 @@ -(nullable CPTNumericData *)dataForPlot:(nonnull CPTPlot *)plot recordIndexRange NSMutableData *data = [[NSMutableData alloc] initWithLength:indexRange.length * 2 * sizeof(double)]; double *xBytes = data.mutableBytes; - double *yBytes = data.mutableBytes + ( indexRange.length * sizeof(double) ); + double *yBytes = data.mutableBytes + (indexRange.length * sizeof(double)); double location = xRange.locationDouble; double length = xRange.lengthDouble; - double denom = (double)( count - ( (count > 1) ? 1 : 0) ); + double denom = (double)(count - ((count > 1) ? 1 : 0)); NSUInteger lastIndex = NSMaxRange(indexRange); @@ -404,7 +404,7 @@ -(nullable CPTNumericData *)dataForPlot:(nonnull CPTPlot *)plot recordIndexRange if ( function ) { for ( NSUInteger i = indexRange.location; i < lastIndex; i++ ) { - double x = location + ( (double)i / denom) * length; + double x = location + ((double)i / denom) * length; *xBytes++ = x; *yBytes++ = function(x); @@ -415,7 +415,7 @@ -(nullable CPTNumericData *)dataForPlot:(nonnull CPTPlot *)plot recordIndexRange if ( functionBlock ) { for ( NSUInteger i = indexRange.location; i < lastIndex; i++ ) { - double x = location + ( (double)i / denom) * length; + double x = location + ((double)i / denom) * length; *xBytes++ = x; *yBytes++ = functionBlock(x); @@ -424,7 +424,7 @@ -(nullable CPTNumericData *)dataForPlot:(nonnull CPTPlot *)plot recordIndexRange } numericData = [CPTNumericData numericDataWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent()) shape:@[@(indexRange.length), @2] dataOrder:CPTDataOrderColumnsFirst]; } diff --git a/framework/Source/CPTGradient.m b/framework/Source/CPTGradient.m index 6ac0e0b5c..85d833e82 100644 --- a/framework/Source/CPTGradient.m +++ b/framework/Source/CPTGradient.m @@ -117,7 +117,7 @@ @implementation CPTGradient **/ -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { [self commonInit]; self.blendingMode = CPTLinearBlendingMode; @@ -207,7 +207,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super init]) ) { + if ((self = [super init])) { [self commonInit]; gradientType = (CPTGradientType)[coder decodeIntegerForKey:@"CPTGradient.type"]; @@ -739,7 +739,7 @@ -(CPTGradient *)removeColorStopAtPosition:(CGFloat)position CPTGradient *newGradient = [self copy]; CPTGradientElement removedElement = [newGradient removeElementAtPosition:position]; - if ( isnan(removedElement.position) ) { + if ( isnan(removedElement.position)) { [NSException raise:NSRangeException format:@"-[%@ removeColorStopAtPosition:]: no such colorStop at position (%g)", [self class], (double)position]; } @@ -755,7 +755,7 @@ -(CPTGradient *)removeColorStopAtIndex:(NSUInteger)idx CPTGradient *newGradient = [self copy]; CPTGradientElement removedElement = [newGradient removeElementAtIndex:idx]; - if ( isnan(removedElement.position) ) { + if ( isnan(removedElement.position)) { [NSException raise:NSRangeException format:@"-[%@ removeColorStopAtIndex:]: index (%lu) beyond bounds", [self class], (unsigned long)idx]; } @@ -798,15 +798,15 @@ -(CGColorRef)newColorAtPosition:(CGFloat)position switch ( self.blendingMode ) { case CPTLinearBlendingMode: - CPTLinearEvaluation( (__bridge void *)(self), &position, components); + CPTLinearEvaluation((__bridge void *)(self), &position, components); break; case CPTChromaticBlendingMode: - CPTChromaticEvaluation( (__bridge void *)(self), &position, components); + CPTChromaticEvaluation((__bridge void *)(self), &position, components); break; case CPTInverseChromaticBlendingMode: - CPTInverseChromaticEvaluation( (__bridge void *)(self), &position, components); + CPTInverseChromaticEvaluation((__bridge void *)(self), &position, components); break; } @@ -865,7 +865,7 @@ -(void)fillRect:(CGRect)rect inContext:(nonnull CGContextRef)context **/ -(void)fillPathInContext:(nonnull CGContextRef)context { - if ( !CGContextIsPathEmpty(context) ) { + if ( !CGContextIsPathEmpty(context)) { CGShadingRef myCGShading = NULL; CGContextSaveGState(context); @@ -901,8 +901,8 @@ -(BOOL)isOpaque CPTGradientElement *list = self.elementList; - while ( opaqueGradient && (list != NULL) ) { - opaqueGradient = opaqueGradient && ( list->color.alpha >= CPTFloat(1.0) ); + while ( opaqueGradient && (list != NULL)) { + opaqueGradient = opaqueGradient && (list->color.alpha >= CPTFloat(1.0)); list = list->nextElement; } @@ -1033,13 +1033,13 @@ -(nonnull CGShadingRef)newAxialGradientInRect:(CGRect)rect // First Calculate where the beginning and ending points should be CGPoint startPoint, endPoint; - if ( self.angle == CPTFloat(0.0) ) { - startPoint = CPTPointMake( CGRectGetMinX(rect), CGRectGetMinY(rect) ); // right of rect - endPoint = CPTPointMake( CGRectGetMaxX(rect), CGRectGetMinY(rect) ); // left of rect + if ( self.angle == CPTFloat(0.0)) { + startPoint = CPTPointMake(CGRectGetMinX(rect), CGRectGetMinY(rect)); // right of rect + endPoint = CPTPointMake(CGRectGetMaxX(rect), CGRectGetMinY(rect)); // left of rect } - else if ( self.angle == CPTFloat(90.0) ) { - startPoint = CPTPointMake( CGRectGetMinX(rect), CGRectGetMinY(rect) ); // bottom of rect - endPoint = CPTPointMake( CGRectGetMinX(rect), CGRectGetMaxY(rect) ); // top of rect + else if ( self.angle == CPTFloat(90.0)) { + startPoint = CPTPointMake(CGRectGetMinX(rect), CGRectGetMinY(rect)); // bottom of rect + endPoint = CPTPointMake(CGRectGetMinX(rect), CGRectGetMaxY(rect)); // top of rect } else { // ok, we'll do the calculations now CGFloat x, y; @@ -1050,7 +1050,7 @@ -(nonnull CGShadingRef)newAxialGradientInRect:(CGRect)rect CGFloat rAngle = self.angle * CPTFloat(M_PI / 180.0); // convert the angle to radians - if ( fabs( tan(rAngle) ) <= CPTFloat(1.0) ) { // for range [-45,45], [135,225] + if ( fabs(tan(rAngle)) <= CPTFloat(1.0)) { // for range [-45,45], [135,225] x = CGRectGetWidth(rect); y = CGRectGetHeight(rect); @@ -1058,7 +1058,7 @@ -(nonnull CGShadingRef)newAxialGradientInRect:(CGRect)rect cosA = cos(rAngle); tanA = tan(rAngle); - length = x / fabs(cosA) + ( y - x * fabs(tanA) ) * fabs(sinA); + length = x / fabs(cosA) + (y - x * fabs(tanA)) * fabs(sinA); deltaX = length * cosA / CPTFloat(2.0); deltaY = length * sinA / CPTFloat(2.0); @@ -1073,7 +1073,7 @@ -(nonnull CGShadingRef)newAxialGradientInRect:(CGRect)rect cosA = cos(rAngle); tanA = tan(rAngle); - length = x / fabs(cosA) + ( y - x * fabs(tanA) ) * fabs(sinA); + length = x / fabs(cosA) + (y - x * fabs(tanA)) * fabs(sinA); deltaX = -length * sinA / CPTFloat(2.0); deltaY = length * cosA / CPTFloat(2.0); @@ -1096,15 +1096,15 @@ -(nonnull CGShadingRef)newRadialGradientInRect:(CGRect)rect context:(nonnull CGC CGPoint theStartAnchor = self.startAnchor; - startPoint = CPTPointMake( fma( CGRectGetWidth(rect), theStartAnchor.x, CGRectGetMinX(rect) ), - fma( CGRectGetHeight(rect), theStartAnchor.y, CGRectGetMinY(rect) ) ); + startPoint = CPTPointMake(fma(CGRectGetWidth(rect), theStartAnchor.x, CGRectGetMinX(rect)), + fma(CGRectGetHeight(rect), theStartAnchor.y, CGRectGetMinY(rect))); CGPoint theEndAnchor = self.endAnchor; - endPoint = CPTPointMake( fma( CGRectGetWidth(rect), theEndAnchor.x, CGRectGetMinX(rect) ), - fma( CGRectGetHeight(rect), theEndAnchor.y, CGRectGetMinY(rect) ) ); + endPoint = CPTPointMake(fma(CGRectGetWidth(rect), theEndAnchor.x, CGRectGetMinX(rect)), + fma(CGRectGetHeight(rect), theEndAnchor.y, CGRectGetMinY(rect))); startRadius = CPTFloat(-1.0); - if ( CGRectGetHeight(rect) > CGRectGetWidth(rect) ) { + if ( CGRectGetHeight(rect) > CGRectGetWidth(rect)) { scaleX = CGRectGetWidth(rect) / CGRectGetHeight(rect); startPoint.x /= scaleX; endPoint.x /= scaleX; @@ -1151,10 +1151,10 @@ -(void)setBlendingMode:(CPTGradientBlendingMode)mode static const CGFloat input_value_range[2] = { 0, 1 }; // range for the evaluator input static const CGFloat output_value_ranges[8] = { 0, 1, 0, 1, 0, 1, 0, 1 }; // ranges for the evaluator output (4 returned values) - CGFunctionRef cgFunction = CGFunctionCreate( (__bridge void *)(self), // the two transition colors - 1, input_value_range, // number of inputs (just fraction of progression) - 4, output_value_ranges, // number of outputs (4 - RGBa) - &evaluationCallbackInfo); // info for using the evaluator function + CGFunctionRef cgFunction = CGFunctionCreate((__bridge void *)(self), // the two transition colors + 1, input_value_range, // number of inputs (just fraction of progression) + 4, output_value_ranges, // number of outputs (4 - RGBa) + &evaluationCallbackInfo); // info for using the evaluator function if ( cgFunction ) { self.gradientFunction = cgFunction; @@ -1165,9 +1165,9 @@ -(void)addElement:(nonnull CPTGradientElement *)newElement { CPTGradientElement *curElement = self.elementList; - if ( (curElement == NULL) || (newElement->position < curElement->position) ) { + if ((curElement == NULL) || (newElement->position < curElement->position)) { CPTGradientElement *tmpNext = curElement; - CPTGradientElement *newElementList = calloc( 1, sizeof(CPTGradientElement) ); + CPTGradientElement *newElementList = calloc(1, sizeof(CPTGradientElement)); if ( newElementList ) { *newElementList = *newElement; newElementList->nextElement = tmpNext; @@ -1176,13 +1176,13 @@ -(void)addElement:(nonnull CPTGradientElement *)newElement } else { while ( curElement->nextElement != NULL && - !( (curElement->position <= newElement->position) && - (newElement->position < curElement->nextElement->position) ) ) { + !((curElement->position <= newElement->position) && + (newElement->position < curElement->nextElement->position))) { curElement = curElement->nextElement; } CPTGradientElement *tmpNext = curElement->nextElement; - curElement->nextElement = calloc( 1, sizeof(CPTGradientElement) ); + curElement->nextElement = calloc(1, sizeof(CPTGradientElement)); *(curElement->nextElement) = *newElement; curElement->nextElement->nextElement = tmpNext; } @@ -1573,11 +1573,11 @@ void CPTTransformRGB_HSV(CGFloat *__nonnull components) // H,S,B -> R,G,B void CPTTransformHSV_RGB(CGFloat *__nonnull components) // H,S,B -> R,G,B { CGFloat R = CPTFloat(0.0), G = CPTFloat(0.0), B = CPTFloat(0.0); - CGFloat H = fmod( components[0], CPTFloat(360.0) ); // map to [0,360) + CGFloat H = fmod(components[0], CPTFloat(360.0)); // map to [0,360) CGFloat S = components[1]; CGFloat V = components[2]; - int Hi = (int)lrint( floor( H / CPTFloat(60.0) ) ) % 6; + int Hi = (int)lrint(floor(H / CPTFloat(60.0))) % 6; CGFloat f = H / CPTFloat(60.0) - Hi; CGFloat p = V * (CPTFloat(1.0) - S); CGFloat q = V * (CPTFloat(1.0) - f * S); @@ -1631,13 +1631,13 @@ void CPTTransformHSV_RGB(CGFloat *__nonnull components) // H,S,B -> R,G,B void CPTResolveHSV(CGFloat *__nonnull color1, CGFloat *__nonnull color2) // H value may be undefined (i.e. grayscale color) { // we want to fill it with a sensible value - if ( isnan(color1[0]) && isnan(color2[0]) ) { + if ( isnan(color1[0]) && isnan(color2[0])) { color1[0] = color2[0] = 0; } - else if ( isnan(color1[0]) ) { + else if ( isnan(color1[0])) { color1[0] = color2[0]; } - else if ( isnan(color2[0]) ) { + else if ( isnan(color2[0])) { color2[0] = color1[0]; } } diff --git a/framework/Source/CPTGraph.m b/framework/Source/CPTGraph.m index 5bdc68543..bc4b7c6a9 100644 --- a/framework/Source/CPTGraph.m +++ b/framework/Source/CPTGraph.m @@ -200,7 +200,7 @@ @implementation CPTGraph **/ -(nonnull instancetype)initWithFrame:(CGRect)newFrame { - if ( (self = [super initWithFrame:newFrame]) ) { + if ((self = [super initWithFrame:newFrame])) { hostingView = nil; plots = [[NSMutableArray alloc] init]; @@ -250,7 +250,7 @@ -(nonnull instancetype)initWithFrame:(CGRect)newFrame -(nonnull instancetype)initWithLayer:(nonnull id)layer { - if ( (self = [super initWithLayer:layer]) ) { + if ((self = [super initWithLayer:layer])) { CPTGraph *theLayer = (CPTGraph *)layer; hostingView = theLayer->hostingView; @@ -309,7 +309,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super initWithCoder:coder]) ) { + if ((self = [super initWithCoder:coder])) { hostingView = [coder decodeObjectOfClass:[CPTGraphHostingView class] forKey:@"CPTGraph.hostingView"]; plotAreaFrame = [coder decodeObjectOfClass:[CPTPlotAreaFrame class] @@ -800,7 +800,7 @@ -(void)setLegendAnchor:(CPTRectAnchor)newLegendAnchor -(void)setLegendDisplacement:(CGPoint)newLegendDisplacement { - if ( !CGPointEqualToPoint(newLegendDisplacement, legendDisplacement) ) { + if ( !CGPointEqualToPoint(newLegendDisplacement, legendDisplacement)) { legendDisplacement = newLegendDisplacement; self.legendAnnotation.displacement = newLegendDisplacement; } @@ -914,7 +914,7 @@ -(void)setTitle:(nullable NSString *)newTitle if ( title ) { if ( theTitleAnnotation ) { - ( (CPTTextLayer *)theTitleAnnotation.contentLayer).text = title; + ((CPTTextLayer *)theTitleAnnotation.contentLayer).text = title; } else { CPTPlotAreaFrame *frameLayer = self.plotAreaFrame; @@ -956,7 +956,7 @@ -(void)setAttributedTitle:(nullable NSAttributedString *)newTitle self.title = [attributedTitle.string copy]; if ( theTitleAnnotation ) { - ( (CPTTextLayer *)theTitleAnnotation.contentLayer).attributedText = attributedTitle; + ((CPTTextLayer *)theTitleAnnotation.contentLayer).attributedText = attributedTitle; } else { CPTPlotAreaFrame *frameLayer = self.plotAreaFrame; @@ -1007,7 +1007,7 @@ -(void)setTitleTextStyle:(nullable CPTTextStyle *)newStyle -(void)setTitleDisplacement:(CGPoint)newDisplace { - if ( !CGPointEqualToPoint(newDisplace, titleDisplacement) ) { + if ( !CGPointEqualToPoint(newDisplace, titleDisplacement)) { titleDisplacement = newDisplace; self.titleAnnotation.displacement = newDisplace; @@ -1147,7 +1147,7 @@ -(BOOL)pointingDeviceUpEvent:(nonnull CPTNativeEvent *)event atPoint:(CGPoint)in // Plot spaces do not block events, because several spaces may need to receive // the same event sequence (e.g., dragging coordinate translation) for ( CPTPlotSpace *space in self.plotSpaces ) { - if ( !handledEvent || (handledEvent && space.isDragging) ) { + if ( !handledEvent || (handledEvent && space.isDragging)) { BOOL handled = [space pointingDeviceUpEvent:event atPoint:interactionPoint]; handledEvent |= handled; } diff --git a/framework/Source/CPTGridLineGroup.m b/framework/Source/CPTGridLineGroup.m index 431264fab..d68f67fc4 100644 --- a/framework/Source/CPTGridLineGroup.m +++ b/framework/Source/CPTGridLineGroup.m @@ -40,7 +40,7 @@ @implementation CPTGridLineGroup **/ -(nonnull instancetype)initWithFrame:(CGRect)newFrame { - if ( (self = [super initWithFrame:newFrame]) ) { + if ((self = [super initWithFrame:newFrame])) { plotArea = nil; major = NO; @@ -55,7 +55,7 @@ -(nonnull instancetype)initWithFrame:(CGRect)newFrame -(nonnull instancetype)initWithLayer:(nonnull id)layer { - if ( (self = [super initWithLayer:layer]) ) { + if ((self = [super initWithLayer:layer])) { CPTGridLineGroup *theLayer = (CPTGridLineGroup *)layer; plotArea = theLayer->plotArea; @@ -81,7 +81,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super initWithCoder:coder]) ) { + if ((self = [super initWithCoder:coder])) { plotArea = [coder decodeObjectOfClass:[CPTPlotArea class] forKey:@"CPTGridLineGroup.plotArea"]; major = [coder decodeBoolForKey:@"CPTGridLineGroup.major"]; diff --git a/framework/Source/CPTGridLines.m b/framework/Source/CPTGridLines.m index c9f39dbdc..6c0992e6b 100644 --- a/framework/Source/CPTGridLines.m +++ b/framework/Source/CPTGridLines.m @@ -35,7 +35,7 @@ @implementation CPTGridLines **/ -(nonnull instancetype)initWithFrame:(CGRect)newFrame { - if ( (self = [super initWithFrame:newFrame]) ) { + if ((self = [super initWithFrame:newFrame])) { axis = nil; major = NO; @@ -50,7 +50,7 @@ -(nonnull instancetype)initWithFrame:(CGRect)newFrame -(nonnull instancetype)initWithLayer:(nonnull id)layer { - if ( (self = [super initWithLayer:layer]) ) { + if ((self = [super initWithLayer:layer])) { CPTGridLines *theLayer = (CPTGridLines *)layer; axis = theLayer->axis; @@ -76,7 +76,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super initWithCoder:coder]) ) { + if ((self = [super initWithCoder:coder])) { axis = [coder decodeObjectOfClass:[CPTAxis class] forKey:@"CPTGridLines.axis"]; major = [coder decodeBoolForKey:@"CPTGridLines.major"]; diff --git a/framework/Source/CPTImage.m b/framework/Source/CPTImage.m index b35e35d7b..14d1df084 100644 --- a/framework/Source/CPTImage.m +++ b/framework/Source/CPTImage.m @@ -134,9 +134,9 @@ -(nonnull instancetype)initWithContentsOfFile:(nonnull NSString *)path **/ -(nonnull instancetype)initWithCGImage:(nullable CGImageRef)anImage scale:(CGFloat)newScale { - NSParameterAssert( newScale > CPTFloat(0.0) ); + NSParameterAssert(newScale > CPTFloat(0.0)); - if ( (self = [super init]) ) { + if ((self = [super init])) { CGImageRetain(anImage); nativeImage = nil; image = anImage; @@ -215,7 +215,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder */ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super init]) ) { + if ((self = [super init])) { nativeImage = [[coder decodeObjectOfClass:[CPTNativeImage class] forKey:@"CPTImage.nativeImage"] copy]; image = [coder newCGImageDecodeForKey:@"CPTImage.image"]; @@ -371,35 +371,35 @@ -(BOOL)isEqual:(nullable id)object CGColorSpaceRef otherColorSpace = CGImageGetColorSpace(otherCGImage); if ( equalImages ) { - equalImages = ( CGImageGetWidth(selfCGImage) == CGImageGetWidth(otherCGImage) ); + equalImages = (CGImageGetWidth(selfCGImage) == CGImageGetWidth(otherCGImage)); } if ( equalImages ) { - equalImages = ( CGImageGetHeight(selfCGImage) == CGImageGetHeight(otherCGImage) ); + equalImages = (CGImageGetHeight(selfCGImage) == CGImageGetHeight(otherCGImage)); } if ( equalImages ) { - equalImages = ( CGImageGetBitsPerComponent(selfCGImage) == CGImageGetBitsPerComponent(otherCGImage) ); + equalImages = (CGImageGetBitsPerComponent(selfCGImage) == CGImageGetBitsPerComponent(otherCGImage)); } if ( equalImages ) { - equalImages = ( CGImageGetBitsPerPixel(selfCGImage) == CGImageGetBitsPerPixel(otherCGImage) ); + equalImages = (CGImageGetBitsPerPixel(selfCGImage) == CGImageGetBitsPerPixel(otherCGImage)); } if ( equalImages ) { - equalImages = ( CGImageGetBytesPerRow(selfCGImage) == CGImageGetBytesPerRow(otherCGImage) ); + equalImages = (CGImageGetBytesPerRow(selfCGImage) == CGImageGetBytesPerRow(otherCGImage)); } if ( equalImages ) { - equalImages = ( CGImageGetBitmapInfo(selfCGImage) == CGImageGetBitmapInfo(otherCGImage) ); + equalImages = (CGImageGetBitmapInfo(selfCGImage) == CGImageGetBitmapInfo(otherCGImage)); } if ( equalImages ) { - equalImages = ( CGImageGetShouldInterpolate(selfCGImage) == CGImageGetShouldInterpolate(otherCGImage) ); + equalImages = (CGImageGetShouldInterpolate(selfCGImage) == CGImageGetShouldInterpolate(otherCGImage)); } if ( equalImages ) { - equalImages = ( CGImageGetRenderingIntent(selfCGImage) == CGImageGetRenderingIntent(otherCGImage) ); + equalImages = (CGImageGetRenderingIntent(selfCGImage) == CGImageGetRenderingIntent(otherCGImage)); } // decode array @@ -423,15 +423,15 @@ -(BOOL)isEqual:(nullable id)object equalImages = NO; } } - else if ( (selfDecodeArray && !otherDecodeArray) || (!selfDecodeArray && otherDecodeArray) ) { + else if ((selfDecodeArray && !otherDecodeArray) || (!selfDecodeArray && otherDecodeArray)) { equalImages = NO; } } // color space if ( equalImages ) { - equalImages = ( CGColorSpaceGetModel(selfColorSpace) == CGColorSpaceGetModel(otherColorSpace) ) && - ( CGColorSpaceGetNumberOfComponents(selfColorSpace) == CGColorSpaceGetNumberOfComponents(otherColorSpace) ); + equalImages = (CGColorSpaceGetModel(selfColorSpace) == CGColorSpaceGetModel(otherColorSpace)) && + (CGColorSpaceGetNumberOfComponents(selfColorSpace) == CGColorSpaceGetNumberOfComponents(otherColorSpace)); } // data provider @@ -472,7 +472,7 @@ -(NSUInteger)hash // Equal objects must hash the same. CGImageRef selfCGImage = self.image; - return ( CGImageGetWidth(selfCGImage) * CGImageGetHeight(selfCGImage) ) + + return (CGImageGetWidth(selfCGImage) * CGImageGetHeight(selfCGImage)) + CGImageGetBitsPerComponent(selfCGImage) + CGImageGetBitsPerPixel(selfCGImage) + CGImageGetBytesPerRow(selfCGImage) + @@ -526,7 +526,7 @@ -(nullable CPTNativeImage *)nativeImage #if TARGET_OS_SIMULATOR || TARGET_OS_IPHONE CGFloat theScale = self.scale; - if ( imageRef && ( theScale > CPTFloat(0.0) ) ) { + if ( imageRef && (theScale > CPTFloat(0.0))) { nativeImage = [UIImage imageWithCGImage:imageRef scale:theScale orientation:UIImageOrientationUp]; @@ -536,7 +536,7 @@ -(nullable CPTNativeImage *)nativeImage nativeImage = [[NSImage alloc] initWithCGImage:imageRef size:NSZeroSize]; } else { - CGSize imageSize = CGSizeMake( CGImageGetWidth(imageRef), CGImageGetHeight(imageRef) ); + CGSize imageSize = CGSizeMake(CGImageGetWidth(imageRef), CGImageGetHeight(imageRef)); NSBitmapImageRep *imageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:(NSInteger)imageSize.width @@ -565,7 +565,7 @@ -(nullable CPTNativeImage *)nativeImage -(void)setScale:(CGFloat)newScale { - NSParameterAssert( newScale > CPTFloat(0.0) ); + NSParameterAssert(newScale > CPTFloat(0.0)); if ( newScale != scale ) { scale = newScale; @@ -574,7 +574,7 @@ -(void)setScale:(CGFloat)newScale -(void)setEdgeInsets:(CPTEdgeInsets)newEdgeInsets { - if ( !CPTEdgeInsetsEqualToEdgeInsets(edgeInsets, newEdgeInsets) ) { + if ( !CPTEdgeInsetsEqualToEdgeInsets(edgeInsets, newEdgeInsets)) { edgeInsets = newEdgeInsets; CPTImageSlices imageSlices = {}; @@ -631,55 +631,55 @@ -(void)makeImageSlices } // top row - if ( capTop > CPTFloat(0.0) ) { - if ( capLeft > CPTFloat(0.0) ) { - CGImageRef sliceImage = CGImageCreateWithImageInRect( theImage, CPTRectMake(0.0, 0.0, capLeft, capTop) ); + if ( capTop > CPTFloat(0.0)) { + if ( capLeft > CPTFloat(0.0)) { + CGImageRef sliceImage = CGImageCreateWithImageInRect(theImage, CPTRectMake(0.0, 0.0, capLeft, capTop)); imageSlices.slice[CPTSliceTopLeft] = sliceImage; } - if ( centerSize.width > CPTFloat(0.0) ) { - CGImageRef sliceImage = CGImageCreateWithImageInRect( theImage, CPTRectMake(capLeft, 0.0, centerSize.width, capTop) ); + if ( centerSize.width > CPTFloat(0.0)) { + CGImageRef sliceImage = CGImageCreateWithImageInRect(theImage, CPTRectMake(capLeft, 0.0, centerSize.width, capTop)); imageSlices.slice[CPTSliceTop] = sliceImage; } - if ( capRight > CPTFloat(0.0) ) { - CGImageRef sliceImage = CGImageCreateWithImageInRect( theImage, CPTRectMake(width - capRight, 0.0, capRight, capTop) ); + if ( capRight > CPTFloat(0.0)) { + CGImageRef sliceImage = CGImageCreateWithImageInRect(theImage, CPTRectMake(width - capRight, 0.0, capRight, capTop)); imageSlices.slice[CPTSliceTopRight] = sliceImage; } } // middle row - if ( centerSize.height > CPTFloat(0.0) ) { - if ( capLeft > CPTFloat(0.0) ) { - CGImageRef sliceImage = CGImageCreateWithImageInRect( theImage, CPTRectMake(0.0, capTop, capLeft, centerSize.height) ); + if ( centerSize.height > CPTFloat(0.0)) { + if ( capLeft > CPTFloat(0.0)) { + CGImageRef sliceImage = CGImageCreateWithImageInRect(theImage, CPTRectMake(0.0, capTop, capLeft, centerSize.height)); imageSlices.slice[CPTSliceLeft] = sliceImage; } - if ( centerSize.width > CPTFloat(0.0) ) { - CGImageRef sliceImage = CGImageCreateWithImageInRect( theImage, CPTRectMake(capLeft, capTop, centerSize.width, centerSize.height) ); + if ( centerSize.width > CPTFloat(0.0)) { + CGImageRef sliceImage = CGImageCreateWithImageInRect(theImage, CPTRectMake(capLeft, capTop, centerSize.width, centerSize.height)); imageSlices.slice[CPTSliceMiddle] = sliceImage; } - if ( capRight > CPTFloat(0.0) ) { - CGImageRef sliceImage = CGImageCreateWithImageInRect( theImage, CPTRectMake(width - capRight, capTop, capRight, centerSize.height) ); + if ( capRight > CPTFloat(0.0)) { + CGImageRef sliceImage = CGImageCreateWithImageInRect(theImage, CPTRectMake(width - capRight, capTop, capRight, centerSize.height)); imageSlices.slice[CPTSliceRight] = sliceImage; } } // bottom row - if ( capBottom > CPTFloat(0.0) ) { - if ( capLeft > CPTFloat(0.0) ) { - CGImageRef sliceImage = CGImageCreateWithImageInRect( theImage, CPTRectMake(0.0, height - capBottom, capLeft, capBottom) ); + if ( capBottom > CPTFloat(0.0)) { + if ( capLeft > CPTFloat(0.0)) { + CGImageRef sliceImage = CGImageCreateWithImageInRect(theImage, CPTRectMake(0.0, height - capBottom, capLeft, capBottom)); imageSlices.slice[CPTSliceBottomLeft] = sliceImage; } - if ( centerSize.width > CPTFloat(0.0) ) { - CGImageRef sliceImage = CGImageCreateWithImageInRect( theImage, CPTRectMake(capLeft, height - capBottom, centerSize.width, capBottom) ); + if ( centerSize.width > CPTFloat(0.0)) { + CGImageRef sliceImage = CGImageCreateWithImageInRect(theImage, CPTRectMake(capLeft, height - capBottom, centerSize.width, capBottom)); imageSlices.slice[CPTSliceBottom] = sliceImage; } - if ( capRight > CPTFloat(0.0) ) { - CGImageRef sliceImage = CGImageCreateWithImageInRect( theImage, CPTRectMake(width - capRight, height - capBottom, capRight, capBottom) ); + if ( capRight > CPTFloat(0.0)) { + CGImageRef sliceImage = CGImageCreateWithImageInRect(theImage, CPTRectMake(width - capRight, height - capBottom, capRight, capBottom)); imageSlices.slice[CPTSliceBottomRight] = sliceImage; } } @@ -692,7 +692,7 @@ -(void)makeImageSlices -(void)drawImage:(nonnull CGImageRef)theImage inContext:(nonnull CGContextRef)context rect:(CGRect)rect scaleRatio:(CGFloat)scaleRatio { - if ( theImage && ( rect.size.width > CPTFloat(0.0) ) && ( rect.size.height > CPTFloat(0.0) ) ) { + if ( theImage && (rect.size.width > CPTFloat(0.0)) && (rect.size.height > CPTFloat(0.0))) { CGFloat imageScale = self.scale; CGContextSaveGState(context); @@ -735,13 +735,13 @@ -(void)drawInRect:(CGRect)rect inContext:(nonnull CGContextRef)context CGFloat lastScale = self.lastDrawnScale; CGFloat contextScale = CPTFloat(1.0); - if ( rect.size.height != CPTFloat(0.0) ) { + if ( rect.size.height != CPTFloat(0.0)) { CGRect deviceRect = CGContextConvertRectToDeviceSpace(context, rect); contextScale = deviceRect.size.height / rect.size.height; } // generate a Core Graphics image if needed - if ( !theImage || (contextScale != lastScale) ) { + if ( !theImage || (contextScale != lastScale)) { CPTNativeImage *theNativeImage = self.nativeImage; if ( theNativeImage ) { @@ -771,7 +771,7 @@ -(void)drawInRect:(CGRect)rect inContext:(nonnull CGContextRef)context CPTEdgeInsets insets = self.edgeInsets; - if ( CPTEdgeInsetsEqualToEdgeInsets(insets, CPTEdgeInsetsZero) ) { + if ( CPTEdgeInsetsEqualToEdgeInsets(insets, CPTEdgeInsetsZero)) { [self drawImage:theImage inContext:context rect:rect scaleRatio:scaleRatio]; } else { @@ -786,7 +786,7 @@ -(void)drawInRect:(CGRect)rect inContext:(nonnull CGContextRef)context } // create new slices if needed - if ( !hasSlices || (contextScale != lastScale) ) { + if ( !hasSlices || (contextScale != lastScale)) { [self makeImageSlices]; imageSlices = self.slices; } diff --git a/framework/Source/CPTLayer.h b/framework/Source/CPTLayer.h index 92fc3391e..18cf5b9c3 100644 --- a/framework/Source/CPTLayer.h +++ b/framework/Source/CPTLayer.h @@ -68,8 +68,8 @@ typedef NSMutableSet CPTMutableSublayerSet; /** * @brief Layer delegate. **/ -#if ( (TARGET_OS_SIMULATOR || TARGET_OS_IPHONE || TARGET_OS_TV ) && ( __IPHONE_OS_VERSION_MAX_ALLOWED >= 100000) ) \ - || (TARGET_OS_MAC && ( MAC_OS_X_VERSION_MAX_ALLOWED >= 101200) ) +#if ((TARGET_OS_SIMULATOR || TARGET_OS_IPHONE || TARGET_OS_TV) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= 100000)) \ + || (TARGET_OS_MAC && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101200)) // CALayerDelegate is defined by Core Animation in iOS 10.0+, macOS 10.12+, and tvOS 10.0+ @protocol CPTLayerDelegate #else diff --git a/framework/Source/CPTLayer.m b/framework/Source/CPTLayer.m index 3e93c7964..02f38f6f8 100644 --- a/framework/Source/CPTLayer.m +++ b/framework/Source/CPTLayer.m @@ -166,7 +166,7 @@ @implementation CPTLayer **/ -(nonnull instancetype)initWithFrame:(CGRect)newFrame { - if ( (self = [super init]) ) { + if ((self = [super init])) { paddingLeft = CPTFloat(0.0); paddingTop = CPTFloat(0.0); paddingRight = CPTFloat(0.0); @@ -207,7 +207,7 @@ -(nonnull instancetype)init */ -(nonnull instancetype)initWithLayer:(nonnull id)layer { - if ( (self = [super initWithLayer:layer]) ) { + if ((self = [super initWithLayer:layer])) { CPTLayer *theLayer = (CPTLayer *)layer; paddingLeft = theLayer->paddingLeft; @@ -268,7 +268,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder */ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super initWithCoder:coder]) ) { + if ((self = [super initWithCoder:coder])) { paddingLeft = [coder decodeCGFloatForKey:@"CPTLayer.paddingLeft"]; paddingTop = [coder decodeCGFloatForKey:@"CPTLayer.paddingTop"]; paddingRight = [coder decodeCGFloatForKey:@"CPTLayer.paddingRight"]; @@ -330,7 +330,7 @@ -(void)display if ( [NSView instancesRespondToSelector:@selector(effectiveAppearance)] ) { NSAppearance *oldAppearance = NSAppearance.currentAppearance; - NSAppearance.currentAppearance = ( (NSView *)self.graph.hostingView).effectiveAppearance; + NSAppearance.currentAppearance = ((NSView *)self.graph.hostingView).effectiveAppearance; [super display]; NSAppearance.currentAppearance = oldAppearance; } @@ -429,15 +429,15 @@ -(void)recursivelyRenderInContext:(nonnull CGContextRef)context -(void)applyTransform:(CATransform3D)transform3D toContext:(nonnull CGContextRef)context { - if ( !CATransform3DIsIdentity(transform3D) ) { - if ( CATransform3DIsAffine(transform3D) ) { + if ( !CATransform3DIsIdentity(transform3D)) { + if ( CATransform3DIsAffine(transform3D)) { CGRect selfBounds = self.bounds; CGPoint anchorPoint = self.anchorPoint; CGPoint anchorOffset = CPTPointMake(anchorOffset.x = selfBounds.origin.x + anchorPoint.x * selfBounds.size.width, anchorOffset.y = selfBounds.origin.y + anchorPoint.y * selfBounds.size.height); CGAffineTransform affineTransform = CGAffineTransformMakeTranslation(-anchorOffset.x, -anchorOffset.y); - affineTransform = CGAffineTransformConcat( affineTransform, CATransform3DGetAffineTransform(transform3D) ); + affineTransform = CGAffineTransformConcat(affineTransform, CATransform3DGetAffineTransform(transform3D)); affineTransform = CGAffineTransformTranslate(affineTransform, anchorOffset.x, anchorOffset.y); CGRect transformedBounds = CGRectApplyAffineTransform(selfBounds, affineTransform); @@ -465,7 +465,7 @@ -(void)layoutAndRenderInContext:(nonnull CGContextRef)context -(nonnull NSData *)dataForPDFRepresentationOfLayer { NSMutableData *pdfData = [[NSMutableData alloc] init]; - CGDataConsumerRef dataConsumer = CGDataConsumerCreateWithCFData( (__bridge CFMutableDataRef)pdfData); + CGDataConsumerRef dataConsumer = CGDataConsumerCreateWithCFData((__bridge CFMutableDataRef)pdfData); const CGRect mediaBox = CPTRectMake(0.0, 0.0, self.bounds.size.width, self.bounds.size.height); CGContextRef pdfContext = CGPDFContextCreate(dataConsumer, &mediaBox, NULL); @@ -538,38 +538,38 @@ -(void)pixelAlign CGPoint newPosition; - if ( CGSizeEqualToSize(boundsSize, frameSize) ) { // rotated 0° or 180° + if ( CGSizeEqualToSize(boundsSize, frameSize)) { // rotated 0° or 180° CGPoint anchor = self.anchorPoint; CGPoint newAnchor = CGPointMake(boundsSize.width * anchor.x, boundsSize.height * anchor.y); - if ( scale == CPTFloat(1.0) ) { - newPosition.x = ceil( currentPosition.x - newAnchor.x - CPTFloat(0.5) ) + newAnchor.x; - newPosition.y = ceil( currentPosition.y - newAnchor.y - CPTFloat(0.5) ) + newAnchor.y; + if ( scale == CPTFloat(1.0)) { + newPosition.x = ceil(currentPosition.x - newAnchor.x - CPTFloat(0.5)) + newAnchor.x; + newPosition.y = ceil(currentPosition.y - newAnchor.y - CPTFloat(0.5)) + newAnchor.y; } else { - newPosition.x = ceil( (currentPosition.x - newAnchor.x) * scale - CPTFloat(0.5) ) / scale + newAnchor.x; - newPosition.y = ceil( (currentPosition.y - newAnchor.y) * scale - CPTFloat(0.5) ) / scale + newAnchor.y; + newPosition.x = ceil((currentPosition.x - newAnchor.x) * scale - CPTFloat(0.5)) / scale + newAnchor.x; + newPosition.y = ceil((currentPosition.y - newAnchor.y) * scale - CPTFloat(0.5)) / scale + newAnchor.y; } } - else if ( (boundsSize.width == frameSize.height) && (boundsSize.height == frameSize.width) ) { // rotated 90° or 270° + else if ((boundsSize.width == frameSize.height) && (boundsSize.height == frameSize.width)) { // rotated 90° or 270° CGPoint anchor = self.anchorPoint; CGPoint newAnchor = CGPointMake(boundsSize.height * anchor.y, boundsSize.width * anchor.x); - if ( scale == CPTFloat(1.0) ) { - newPosition.x = ceil( currentPosition.x - newAnchor.x - CPTFloat(0.5) ) + newAnchor.x; - newPosition.y = ceil( currentPosition.y - newAnchor.y - CPTFloat(0.5) ) + newAnchor.y; + if ( scale == CPTFloat(1.0)) { + newPosition.x = ceil(currentPosition.x - newAnchor.x - CPTFloat(0.5)) + newAnchor.x; + newPosition.y = ceil(currentPosition.y - newAnchor.y - CPTFloat(0.5)) + newAnchor.y; } else { - newPosition.x = ceil( (currentPosition.x - newAnchor.x) * scale - CPTFloat(0.5) ) / scale + newAnchor.x; - newPosition.y = ceil( (currentPosition.y - newAnchor.y) * scale - CPTFloat(0.5) ) / scale + newAnchor.y; + newPosition.x = ceil((currentPosition.x - newAnchor.x) * scale - CPTFloat(0.5)) / scale + newAnchor.x; + newPosition.y = ceil((currentPosition.y - newAnchor.y) * scale - CPTFloat(0.5)) / scale + newAnchor.y; } } else { - if ( scale == CPTFloat(1.0) ) { + if ( scale == CPTFloat(1.0)) { newPosition.x = round(currentPosition.x); newPosition.y = round(currentPosition.y); } @@ -626,7 +626,7 @@ -(CGSize)shadowMargin CGSize shadowOffset = myShadow.shadowOffset; CGFloat shadowRadius = myShadow.shadowBlurRadius; - margin = CGSizeMake( ceil( ABS(shadowOffset.width) + ABS(shadowRadius) ), ceil( ABS(shadowOffset.height) + ABS(shadowRadius) ) ); + margin = CGSizeMake(ceil(ABS(shadowOffset.width) + ABS(shadowRadius)), ceil(ABS(shadowOffset.height) + ABS(shadowRadius))); } return margin; @@ -656,14 +656,14 @@ -(void)layoutSublayers CGSize subLayerSize = selfBounds.size; subLayerSize.width -= leftPadding + rightPadding; - subLayerSize.width = MAX( subLayerSize.width, CPTFloat(0.0) ); + subLayerSize.width = MAX(subLayerSize.width, CPTFloat(0.0)); subLayerSize.width = round(subLayerSize.width); subLayerSize.height -= topPadding + bottomPadding; - subLayerSize.height = MAX( subLayerSize.height, CPTFloat(0.0) ); + subLayerSize.height = MAX(subLayerSize.height, CPTFloat(0.0)); subLayerSize.height = round(subLayerSize.height); CGRect subLayerFrame; - subLayerFrame.origin = CGPointMake( round(leftPadding), round(bottomPadding) ); + subLayerFrame.origin = CGPointMake(round(leftPadding), round(bottomPadding)); subLayerFrame.size = subLayerSize; CPTSublayerSet *excludedSublayers = self.sublayersExcludedFromAutomaticLayout; @@ -714,7 +714,7 @@ -(void)setSublayers:(nullable CPTSublayerArray *)sublayers CGFloat scale = self.contentsScale; for ( CALayer *layer in sublayers ) { if ( [layer isKindOfClass:layerClass] ) { - ( (CPTLayer *)layer).contentsScale = scale; + ((CPTLayer *)layer).contentsScale = scale; } } } @@ -724,7 +724,7 @@ -(void)addSublayer:(nonnull CALayer *)layer [super addSublayer:layer]; if ( [layer isKindOfClass:[CPTLayer class]] ) { - ( (CPTLayer *)layer).contentsScale = self.contentsScale; + ((CPTLayer *)layer).contentsScale = self.contentsScale; } } @@ -733,7 +733,7 @@ -(void)insertSublayer:(nonnull CALayer *)layer atIndex:(unsigned)idx [super insertSublayer:layer atIndex:idx]; if ( [layer isKindOfClass:[CPTLayer class]] ) { - ( (CPTLayer *)layer).contentsScale = self.contentsScale; + ((CPTLayer *)layer).contentsScale = self.contentsScale; } } @@ -742,7 +742,7 @@ -(void)insertSublayer:(nonnull CALayer *)layer below:(nullable CALayer *)sibling [super insertSublayer:layer below:sibling]; if ( [layer isKindOfClass:[CPTLayer class]] ) { - ( (CPTLayer *)layer).contentsScale = self.contentsScale; + ((CPTLayer *)layer).contentsScale = self.contentsScale; } } @@ -751,7 +751,7 @@ -(void)insertSublayer:(nonnull CALayer *)layer above:(nullable CALayer *)sibling [super insertSublayer:layer above:sibling]; if ( [layer isKindOfClass:[CPTLayer class]] ) { - ( (CPTLayer *)layer).contentsScale = self.contentsScale; + ((CPTLayer *)layer).contentsScale = self.contentsScale; } } @@ -760,7 +760,7 @@ -(void)replaceSublayer:(nonnull CALayer *)layer with:(nonnull CALayer *)layer2 [super replaceSublayer:layer with:layer2]; if ( [layer2 isKindOfClass:[CPTLayer class]] ) { - ( (CPTLayer *)layer2).contentsScale = self.contentsScale; + ((CPTLayer *)layer2).contentsScale = self.contentsScale; } } @@ -819,7 +819,7 @@ -(void)applySublayerMaskToContext:(nonnull CGContextRef)context forSublayer:(non } CGAffineTransform sublayerTransform = CATransform3DGetAffineTransform(sublayer.transform); - CGContextConcatCTM( context, CGAffineTransformInvert(sublayerTransform) ); + CGContextConcatCTM(context, CGAffineTransformInvert(sublayerTransform)); CALayer *superlayer = self.superlayer; if ( [superlayer isKindOfClass:[CPTLayer class]] ) { @@ -907,7 +907,7 @@ -(void)setHidden:(BOOL)newHidden -(void)setContentsScale:(CGFloat)newContentsScale { - NSParameterAssert( newContentsScale > CPTFloat(0.0) ); + NSParameterAssert(newContentsScale > CPTFloat(0.0)); if ( self.contentsScale != newContentsScale ) { if ( [CALayer instancesRespondToSelector:@selector(setContentsScale:)] ) { @@ -979,7 +979,7 @@ -(CGRect)bounds -(void)setBounds:(CGRect)newBounds { - if ( !CGRectEqualToRect(self.bounds, newBounds) ) { + if ( !CGRectEqualToRect(self.bounds, newBounds)) { if ( self.shadow ) { CGSize sizeOffset = self.shadowMargin; @@ -1006,14 +1006,14 @@ -(CGPoint)anchorPoint if ( self.shadow ) { CGSize sizeOffset = self.shadowMargin; CGRect selfBounds = self.bounds; - CGSize adjustedSize = CGSizeMake( selfBounds.size.width + sizeOffset.width * CPTFloat(2.0), - selfBounds.size.height + sizeOffset.height * CPTFloat(2.0) ); + CGSize adjustedSize = CGSizeMake(selfBounds.size.width + sizeOffset.width * CPTFloat(2.0), + selfBounds.size.height + sizeOffset.height * CPTFloat(2.0)); - if ( selfBounds.size.width > CPTFloat(0.0) ) { - adjustedAnchor.x = ( adjustedAnchor.x - CPTFloat(0.5) ) * (adjustedSize.width / selfBounds.size.width) + CPTFloat(0.5); + if ( selfBounds.size.width > CPTFloat(0.0)) { + adjustedAnchor.x = (adjustedAnchor.x - CPTFloat(0.5)) * (adjustedSize.width / selfBounds.size.width) + CPTFloat(0.5); } - if ( selfBounds.size.height > CPTFloat(0.0) ) { - adjustedAnchor.y = ( adjustedAnchor.y - CPTFloat(0.5) ) * (adjustedSize.height / selfBounds.size.height) + CPTFloat(0.5); + if ( selfBounds.size.height > CPTFloat(0.0)) { + adjustedAnchor.y = (adjustedAnchor.y - CPTFloat(0.5)) * (adjustedSize.height / selfBounds.size.height) + CPTFloat(0.5); } } @@ -1025,14 +1025,14 @@ -(void)setAnchorPoint:(CGPoint)newAnchorPoint if ( self.shadow ) { CGSize sizeOffset = self.shadowMargin; CGRect selfBounds = self.bounds; - CGSize adjustedSize = CGSizeMake( selfBounds.size.width + sizeOffset.width * CPTFloat(2.0), - selfBounds.size.height + sizeOffset.height * CPTFloat(2.0) ); + CGSize adjustedSize = CGSizeMake(selfBounds.size.width + sizeOffset.width * CPTFloat(2.0), + selfBounds.size.height + sizeOffset.height * CPTFloat(2.0)); - if ( adjustedSize.width > CPTFloat(0.0) ) { - newAnchorPoint.x = ( newAnchorPoint.x - CPTFloat(0.5) ) * (selfBounds.size.width / adjustedSize.width) + CPTFloat(0.5); + if ( adjustedSize.width > CPTFloat(0.0)) { + newAnchorPoint.x = (newAnchorPoint.x - CPTFloat(0.5)) * (selfBounds.size.width / adjustedSize.width) + CPTFloat(0.5); } - if ( adjustedSize.height > CPTFloat(0.0) ) { - newAnchorPoint.y = ( newAnchorPoint.y - CPTFloat(0.5) ) * (selfBounds.size.height / adjustedSize.height) + CPTFloat(0.5); + if ( adjustedSize.height > CPTFloat(0.0)) { + newAnchorPoint.y = (newAnchorPoint.y - CPTFloat(0.5)) * (selfBounds.size.height / adjustedSize.height) + CPTFloat(0.5); } } diff --git a/framework/Source/CPTLayerAnnotation.m b/framework/Source/CPTLayerAnnotation.m index 2def0a17a..69c68d6da 100644 --- a/framework/Source/CPTLayerAnnotation.m +++ b/framework/Source/CPTLayerAnnotation.m @@ -61,7 +61,7 @@ -(nonnull instancetype)initWithAnchorLayer:(nonnull CPTLayer *)newAnchorLayer { NSParameterAssert(newAnchorLayer); - if ( (self = [super init]) ) { + if ((self = [super init])) { anchorLayer = newAnchorLayer; rectAnchor = CPTRectAnchorTop; xConstraints = nil; @@ -118,7 +118,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder */ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super initWithCoder:coder]) ) { + if ((self = [super initWithCoder:coder])) { CPTLayer *anchor = [coder decodeObjectOfClass:[CPTLayer class] forKey:@"CPTLayerAnnotation.anchorLayer"]; xConstraints = [coder decodeObjectOfClass:[CPTConstraints class] @@ -168,7 +168,7 @@ -(void)positionContentLayer content.anchorPoint = self.contentAnchorPoint; content.position = newPosition; - content.transform = CATransform3DMakeRotation( self.rotation, CPTFloat(0.0), CPTFloat(0.0), CPTFloat(1.0) ); + content.transform = CATransform3DMakeRotation(self.rotation, CPTFloat(0.0), CPTFloat(0.0), CPTFloat(1.0)); [content pixelAlign]; } } diff --git a/framework/Source/CPTLayerTests.m b/framework/Source/CPTLayerTests.m index 20276d78e..d94be1dc5 100644 --- a/framework/Source/CPTLayerTests.m +++ b/framework/Source/CPTLayerTests.m @@ -142,14 +142,14 @@ -(void)testPositionsWithScale:(CGFloat)scale anchorPoint:(CGPoint)anchor expecte self.layer.anchorPoint = anchor; for ( NSUInteger i = 0; i < positionCount; i++ ) { - CGFloat position = ( (NSNumber *)( (self.positions)[i]) ).cgFloatValue; + CGFloat position = ((NSNumber *)((self.positions)[i])).cgFloatValue; CGPoint layerPosition = CGPointMake(position, position); self.layer.position = layerPosition; [self.layer pixelAlign]; CGPoint alignedPoint = self.layer.position; - CGFloat expected = ( (NSNumber *)(expectedValues[i]) ).cgFloatValue; + CGFloat expected = ((NSNumber *)(expectedValues[i])).cgFloatValue; NSString *errMessage; errMessage = [NSString stringWithFormat:@"pixelAlign at x = %g with scale %g and anchor %@", (double)position, (double)scale, CPTStringFromPoint(anchor)]; diff --git a/framework/Source/CPTLegend.m b/framework/Source/CPTLegend.m index 60df99453..aac0422b7 100644 --- a/framework/Source/CPTLegend.m +++ b/framework/Source/CPTLegend.m @@ -301,7 +301,7 @@ +(nonnull instancetype)legendWithGraph:(nullable __kindof CPTGraph *)graph **/ -(nonnull instancetype)initWithFrame:(CGRect)newFrame { - if ( (self = [super initWithFrame:newFrame]) ) { + if ((self = [super initWithFrame:newFrame])) { plots = [[NSMutableArray alloc] init]; legendEntries = [[NSMutableArray alloc] init]; layoutChanged = YES; @@ -350,7 +350,7 @@ -(nonnull instancetype)initWithFrame:(CGRect)newFrame **/ -(nonnull instancetype)initWithPlots:(nullable CPTPlotArray *)newPlots { - if ( (self = [self initWithFrame:CGRectZero]) ) { + if ((self = [self initWithFrame:CGRectZero])) { for ( CPTPlot *plot in newPlots ) { [self addPlot:plot]; } @@ -364,7 +364,7 @@ -(nonnull instancetype)initWithPlots:(nullable CPTPlotArray *)newPlots **/ -(nonnull instancetype)initWithGraph:(nullable __kindof CPTGraph *)graph { - if ( (self = [self initWithFrame:CGRectZero]) ) { + if ((self = [self initWithFrame:CGRectZero])) { for ( CPTPlot *plot in [graph allPlots] ) { [self addPlot:plot]; } @@ -376,7 +376,7 @@ -(nonnull instancetype)initWithGraph:(nullable __kindof CPTGraph *)graph -(nonnull instancetype)initWithLayer:(nonnull id)layer { - if ( (self = [super initWithLayer:layer]) ) { + if ((self = [super initWithLayer:layer])) { CPTLegend *theLayer = (CPTLegend *)layer; plots = theLayer->plots; @@ -462,7 +462,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super initWithCoder:coder]) ) { + if ((self = [super initWithCoder:coder])) { NSArray *plotArray = [coder decodeObjectOfClasses:[NSSet setWithArray:@[[NSArray class], [CPTPlot class]]] forKey:@"CPTLegend.plots"]; if ( plotArray ) { @@ -555,8 +555,8 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context // calculate column positions CPTNumberArray *computedColumnWidths = self.columnWidthsThatFit; NSUInteger columnCount = computedColumnWidths.count; - CGFloat *actualColumnWidths = calloc( columnCount, sizeof(CGFloat) ); - CGFloat *columnPositions = calloc( columnCount, sizeof(CGFloat) ); + CGFloat *actualColumnWidths = calloc(columnCount, sizeof(CGFloat)); + CGFloat *columnPositions = calloc(columnCount, sizeof(CGFloat)); columnPositions[0] = self.paddingLeft; CGFloat theOffset = self.titleOffset; CGSize theSwatchSize = self.swatchSize; @@ -579,8 +579,8 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context // calculate row positions CPTNumberArray *computedRowHeights = self.rowHeightsThatFit; NSUInteger rowCount = computedRowHeights.count; - CGFloat *actualRowHeights = calloc( rowCount, sizeof(CGFloat) ); - CGFloat *rowPositions = calloc( rowCount, sizeof(CGFloat) ); + CGFloat *actualRowHeights = calloc(rowCount, sizeof(CGFloat)); + CGFloat *rowPositions = calloc(rowCount, sizeof(CGFloat)); rowPositions[rowCount - 1] = self.paddingBottom; CGFloat theRowMargin = self.rowMargin; CGFloat lastRowHeight = 0.0; @@ -613,8 +613,8 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context NSUInteger row = legendEntry.row; NSUInteger col = legendEntry.column; - if ( ( (desiredRowCount == 0) || (row < desiredRowCount) ) && - ( (desiredColumnCount == 0) || (col < desiredColumnCount) ) ) { + if (((desiredRowCount == 0) || (row < desiredRowCount)) && + ((desiredColumnCount == 0) || (col < desiredColumnCount))) { NSUInteger entryIndex = legendEntry.index; CPTPlot *entryPlot = legendEntry.plot; @@ -691,7 +691,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context } // draw title - [legendEntry drawTitleInRect:CPTAlignRectToUserSpace( context, CPTRectMake(titleLeft, rowPosition + padBottom, actualColumnWidths[col] + CPTFloat(1.0), actualRowHeights[row]) ) + [legendEntry drawTitleInRect:CPTAlignRectToUserSpace(context, CPTRectMake(titleLeft, rowPosition + padBottom, actualColumnWidths[col] + CPTFloat(1.0), actualRowHeights[row])) inContext:context scale:self.contentsScale]; } @@ -762,8 +762,8 @@ -(void)recalculateLayout NSUInteger desiredColumnCount = columnCount; NSUInteger legendEntryCount = self.legendEntries.count; - if ( (rowCount == 0) && (columnCount == 0) ) { - rowCount = (NSUInteger)lrint( sqrt( (double)legendEntryCount) ); + if ((rowCount == 0) && (columnCount == 0)) { + rowCount = (NSUInteger)lrint(sqrt((double)legendEntryCount)); columnCount = rowCount; if ( rowCount * columnCount < legendEntryCount ) { columnCount++; @@ -772,13 +772,13 @@ -(void)recalculateLayout rowCount++; } } - else if ( (rowCount == 0) && (columnCount > 0) ) { + else if ((rowCount == 0) && (columnCount > 0)) { rowCount = legendEntryCount / columnCount; if ( legendEntryCount % columnCount ) { rowCount++; } } - else if ( (rowCount > 0) && (columnCount == 0) ) { + else if ((rowCount > 0) && (columnCount == 0)) { columnCount = legendEntryCount / rowCount; if ( legendEntryCount % rowCount ) { columnCount++; @@ -788,8 +788,8 @@ -(void)recalculateLayout // compute row heights and column widths NSUInteger row = 0; NSUInteger col = 0; - CGFloat *maxTitleHeight = calloc( rowCount, sizeof(CGFloat) ); - CGFloat *maxTitleWidth = calloc( columnCount, sizeof(CGFloat) ); + CGFloat *maxTitleHeight = calloc(rowCount, sizeof(CGFloat)); + CGFloat *maxTitleWidth = calloc(columnCount, sizeof(CGFloat)); CGSize theSwatchSize = self.swatchSize; CPTNumberArray *desiredRowHeights = self.rowHeights; CPTNumberArray *desiredColumnWidths = self.columnWidths; @@ -800,7 +800,7 @@ -(void)recalculateLayout legendEntry.column = col; CGSize titleSize = legendEntry.titleSize; - if ( (desiredRowCount == 0) || (row < desiredRowCount) ) { + if ((desiredRowCount == 0) || (row < desiredRowCount)) { maxTitleHeight[row] = MAX(MAX(maxTitleHeight[row], titleSize.height), theSwatchSize.height); if ( row < desiredRowHeights.count ) { @@ -811,7 +811,7 @@ -(void)recalculateLayout } } - if ( (desiredColumnCount == 0) || (col < desiredColumnCount) ) { + if ((desiredColumnCount == 0) || (col < desiredColumnCount)) { maxTitleWidth[col] = MAX(MAX(maxTitleWidth[col], titleSize.width), theSwatchSize.width); if ( col < desiredColumnWidths.count ) { @@ -865,7 +865,7 @@ -(void)recalculateLayout } } if ( columnCount > 0 ) { - legendSize.width += ( (theSwatchSize.width + self.titleOffset + self.entryPaddingLeft + self.entryPaddingRight) * columnCount) + ( self.columnMargin * (columnCount - 1) ); + legendSize.width += ((theSwatchSize.width + self.titleOffset + self.entryPaddingLeft + self.entryPaddingRight) * columnCount) + (self.columnMargin * (columnCount - 1)); } NSUInteger rows = row; @@ -876,10 +876,10 @@ -(void)recalculateLayout legendSize.height += [height cgFloatValue]; } if ( rows > 0 ) { - legendSize.height += ( (self.entryPaddingBottom + self.entryPaddingTop) * rowCount) + ( self.rowMargin * (rows - 1) ); + legendSize.height += ((self.entryPaddingBottom + self.entryPaddingTop) * rowCount) + (self.rowMargin * (rows - 1)); } - self.bounds = CPTRectMake( 0.0, 0.0, ceil(legendSize.width), ceil(legendSize.height) ); + self.bounds = CPTRectMake(0.0, 0.0, ceil(legendSize.width), ceil(legendSize.height)); [self pixelAlign]; self.layoutChanged = NO; @@ -1152,7 +1152,7 @@ -(void)legendEntryForInteractionPoint:(CGPoint)interactionPoint row:(nonnull NSU for ( NSNumber *height in self.rowHeightsThatFit ) { CGFloat rowHeight = height.cgFloatValue + padVertical; - if ( (interactionPoint.y <= position) && (interactionPoint.y >= position - rowHeight) ) { + if ((interactionPoint.y <= position) && (interactionPoint.y >= position - rowHeight)) { *row = i; break; } @@ -1168,7 +1168,7 @@ -(void)legendEntryForInteractionPoint:(CGPoint)interactionPoint row:(nonnull NSU for ( NSNumber *width in self.columnWidthsThatFit ) { CGFloat colWidth = width.cgFloatValue + swatchWidth + padHorizontal; - if ( (interactionPoint.x >= position) && (interactionPoint.x <= position + colWidth) ) { + if ((interactionPoint.x >= position) && (interactionPoint.x <= position + colWidth)) { *col = i; break; } @@ -1202,7 +1202,7 @@ -(void)legendEntryForInteractionPoint:(CGPoint)interactionPoint row:(nonnull NSU **/ -(BOOL)pointingDeviceDownEvent:(nonnull CPTNativeEvent *)event atPoint:(CGPoint)interactionPoint { - if ( self.hidden || (self.plots.count == 0) ) { + if ( self.hidden || (self.plots.count == 0)) { return NO; } @@ -1216,9 +1216,9 @@ -(BOOL)pointingDeviceDownEvent:(nonnull CPTNativeEvent *)event atPoint:(CGPoint) [self legendEntryForInteractionPoint:interactionPoint row:&row col:&col]; // Notify the delegate if we found a hit - if ( (row != NSNotFound) && (col != NSNotFound) ) { + if ((row != NSNotFound) && (col != NSNotFound)) { for ( CPTLegendEntry *legendEntry in self.legendEntries ) { - if ( (legendEntry.row == row) && (legendEntry.column == col) ) { + if ((legendEntry.row == row) && (legendEntry.column == col)) { self.pointingDeviceDownEntry = legendEntry; CPTPlot *legendPlot = legendEntry.plot; @@ -1273,7 +1273,7 @@ -(BOOL)pointingDeviceUpEvent:(nonnull CPTNativeEvent *)event atPoint:(CGPoint)in self.pointingDeviceDownEntry = nil; - if ( self.hidden || (self.plots.count == 0) ) { + if ( self.hidden || (self.plots.count == 0)) { return NO; } @@ -1287,9 +1287,9 @@ -(BOOL)pointingDeviceUpEvent:(nonnull CPTNativeEvent *)event atPoint:(CGPoint)in [self legendEntryForInteractionPoint:interactionPoint row:&row col:&col]; // Notify the delegate if we found a hit - if ( (row != NSNotFound) && (col != NSNotFound) ) { + if ((row != NSNotFound) && (col != NSNotFound)) { for ( CPTLegendEntry *legendEntry in self.legendEntries ) { - if ( (legendEntry.row == row) && (legendEntry.column == col) ) { + if ((legendEntry.row == row) && (legendEntry.column == col)) { BOOL handled = NO; CPTPlot *entryPlot = legendEntry.plot; @@ -1356,7 +1356,7 @@ -(void)setTextStyle:(nullable CPTTextStyle *)newTextStyle -(void)setSwatchSize:(CGSize)newSwatchSize { - if ( !CGSizeEqualToSize(newSwatchSize, swatchSize) ) { + if ( !CGSizeEqualToSize(newSwatchSize, swatchSize)) { swatchSize = newSwatchSize; self.layoutChanged = YES; } @@ -1366,10 +1366,10 @@ -(CGSize)swatchSize { CGSize theSwatchSize = swatchSize; - if ( CGSizeEqualToSize(theSwatchSize, CGSizeZero) ) { + if ( CGSizeEqualToSize(theSwatchSize, CGSizeZero)) { CPTTextStyle *theTextStyle = self.textStyle; CGFloat fontSize = theTextStyle.fontSize; - if ( fontSize > CPTFloat(0.0) ) { + if ( fontSize > CPTFloat(0.0)) { fontSize *= CPTFloat(1.5); fontSize = round(fontSize); theSwatchSize = CPTSizeMake(fontSize, fontSize); diff --git a/framework/Source/CPTLegendEntry.m b/framework/Source/CPTLegendEntry.m index 475f7f9fb..02f5bc365 100644 --- a/framework/Source/CPTLegendEntry.m +++ b/framework/Source/CPTLegendEntry.m @@ -86,7 +86,7 @@ @implementation CPTLegendEntry **/ -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { plot = nil; index = 0; row = 0; @@ -114,7 +114,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super init]) ) { + if ((self = [super init])) { plot = [coder decodeObjectOfClass:[CPTPlot class] forKey:@"CPTLegendEntry.plot"]; index = (NSUInteger)[coder decodeIntegerForKey:@"CPTLegendEntry.index"]; @@ -153,15 +153,15 @@ -(void)drawTitleInRect:(CGRect)rect inContext:(nonnull CGContextRef)context scal #if TARGET_OS_SIMULATOR || TARGET_OS_IPHONE CGContextSaveGState(context); CGContextTranslateCTM(context, CPTFloat(0.0), rect.origin.y); - CGContextScaleCTM( context, CPTFloat(1.0), CPTFloat(-1.0) ); - CGContextTranslateCTM( context, CPTFloat(0.0), -CGRectGetMaxY(rect) ); + CGContextScaleCTM(context, CPTFloat(1.0), CPTFloat(-1.0)); + CGContextTranslateCTM(context, CPTFloat(0.0), -CGRectGetMaxY(rect)); #endif // center the title vertically CGRect textRect = rect; CGSize theTitleSize = self.titleSize; if ( theTitleSize.height < textRect.size.height ) { CGFloat offset = (textRect.size.height - theTitleSize.height) / CPTFloat(2.0); - if ( scale == CPTFloat(1.0) ) { + if ( scale == CPTFloat(1.0)) { offset = round(offset); } else { @@ -173,7 +173,7 @@ -(void)drawTitleInRect:(CGRect)rect inContext:(nonnull CGContextRef)context scal NSAttributedString *styledTitle = self.attributedTitle; - if ( (styledTitle.length > 0) && [styledTitle respondsToSelector:@selector(drawInRect:)] ) { + if ((styledTitle.length > 0) && [styledTitle respondsToSelector:@selector(drawInRect:)] ) { [styledTitle drawInRect:textRect inContext:context]; } diff --git a/framework/Source/CPTLimitBand.m b/framework/Source/CPTLimitBand.m index 67541c01d..2f75847c5 100644 --- a/framework/Source/CPTLimitBand.m +++ b/framework/Source/CPTLimitBand.m @@ -38,7 +38,7 @@ +(nonnull instancetype)limitBandWithRange:(nullable CPTPlotRange *)newRange fill **/ -(nonnull instancetype)initWithRange:(nullable CPTPlotRange *)newRange fill:(nullable CPTFill *)newFill { - if ( (self = [super init]) ) { + if ((self = [super init])) { range = newRange; fill = newFill; } @@ -91,7 +91,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)encoder */ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)decoder { - if ( (self = [super init]) ) { + if ((self = [super init])) { range = [decoder decodeObjectOfClass:[CPTPlotRange class] forKey:@"CPTLimitBand.range"]; fill = [decoder decodeObjectOfClass:[CPTFill class] diff --git a/framework/Source/CPTLineCap.m b/framework/Source/CPTLineCap.m index 1e8130b1b..e86e063ca 100644 --- a/framework/Source/CPTLineCap.m +++ b/framework/Source/CPTLineCap.m @@ -80,7 +80,7 @@ @implementation CPTLineCap **/ -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { size = CPTSizeMake(5.0, 5.0); lineCapType = CPTLineCapTypeNone; lineStyle = [[CPTLineStyle alloc] init]; @@ -124,7 +124,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super init]) ) { + if ((self = [super init])) { size = [coder decodeCPTSizeForKey:@"CPTLineCap.size"]; lineCapType = (CPTLineCapType)[coder decodeIntegerForKey:@"CPTLineCap.lineCapType"]; lineStyle = [coder decodeObjectOfClass:[CPTLineStyle class] @@ -160,7 +160,7 @@ +(BOOL)supportsSecureCoding -(void)setSize:(CGSize)newSize { - if ( !CGSizeEqualToSize(newSize, size) ) { + if ( !CGSizeEqualToSize(newSize, size)) { size = newSize; self.cachedLineCapPath = NULL; } @@ -431,16 +431,16 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context atPoint:(CGPoint)ce if ( theLineStyle || theFill ) { CGContextSaveGState(context); CGContextTranslateCTM(context, center.x, center.y); - CGContextRotateCTM( context, atan2(direction.y, direction.x) - CPTFloat(M_PI_2) ); // standard symbol points up + CGContextRotateCTM(context, atan2(direction.y, direction.x) - CPTFloat(M_PI_2)); // standard symbol points up if ( theFill ) { // use fillRect instead of fillPath so that images and gradients are properly centered in the symbol CGSize symbolSize = self.size; - CGSize halfSize = CPTSizeMake( symbolSize.width / CPTFloat(2.0), symbolSize.height / CPTFloat(2.0) ); + CGSize halfSize = CPTSizeMake(symbolSize.width / CPTFloat(2.0), symbolSize.height / CPTFloat(2.0)); CGRect bounds = CPTRectMake(-halfSize.width, -halfSize.height, symbolSize.width, symbolSize.height); CGContextSaveGState(context); - if ( !CGPathIsEmpty(theLineCapPath) ) { + if ( !CGPathIsEmpty(theLineCapPath)) { CGContextBeginPath(context); CGContextAddPath(context, theLineCapPath); if ( self.usesEvenOddClipRule ) { @@ -480,7 +480,7 @@ -(nonnull CGPathRef)newLineCapPath { CGFloat dx, dy; CGSize lineCapSize = self.size; - CGSize halfSize = CPTSizeMake( lineCapSize.width / CPTFloat(2.0), lineCapSize.height / CPTFloat(2.0) ); + CGSize halfSize = CPTSizeMake(lineCapSize.width / CPTFloat(2.0), lineCapSize.height / CPTFloat(2.0)); CGMutablePathRef lineCapPath = CGPathCreateMutable(); @@ -491,47 +491,47 @@ -(nonnull CGPathRef)newLineCapPath case CPTLineCapTypeOpenArrow: CGPathMoveToPoint(lineCapPath, NULL, -halfSize.width, -halfSize.height); - CGPathAddLineToPoint( lineCapPath, NULL, CPTFloat(0.0), CPTFloat(0.0) ); + CGPathAddLineToPoint(lineCapPath, NULL, CPTFloat(0.0), CPTFloat(0.0)); CGPathAddLineToPoint(lineCapPath, NULL, halfSize.width, -halfSize.height); break; case CPTLineCapTypeSolidArrow: CGPathMoveToPoint(lineCapPath, NULL, -halfSize.width, -halfSize.height); - CGPathAddLineToPoint( lineCapPath, NULL, CPTFloat(0.0), CPTFloat(0.0) ); + CGPathAddLineToPoint(lineCapPath, NULL, CPTFloat(0.0), CPTFloat(0.0)); CGPathAddLineToPoint(lineCapPath, NULL, halfSize.width, -halfSize.height); CGPathCloseSubpath(lineCapPath); break; case CPTLineCapTypeSweptArrow: CGPathMoveToPoint(lineCapPath, NULL, -halfSize.width, -halfSize.height); - CGPathAddLineToPoint( lineCapPath, NULL, CPTFloat(0.0), CPTFloat(0.0) ); + CGPathAddLineToPoint(lineCapPath, NULL, CPTFloat(0.0), CPTFloat(0.0)); CGPathAddLineToPoint(lineCapPath, NULL, halfSize.width, -halfSize.height); - CGPathAddLineToPoint( lineCapPath, NULL, CPTFloat(0.0), -lineCapSize.height * CPTFloat(0.375) ); + CGPathAddLineToPoint(lineCapPath, NULL, CPTFloat(0.0), -lineCapSize.height * CPTFloat(0.375)); CGPathCloseSubpath(lineCapPath); break; case CPTLineCapTypeRectangle: - CGPathAddRect( lineCapPath, NULL, CPTRectMake( -halfSize.width, -halfSize.height, halfSize.width * CPTFloat(2.0), halfSize.height * CPTFloat(2.0) ) ); + CGPathAddRect(lineCapPath, NULL, CPTRectMake(-halfSize.width, -halfSize.height, halfSize.width * CPTFloat(2.0), halfSize.height * CPTFloat(2.0))); break; case CPTLineCapTypeEllipse: - CGPathAddEllipseInRect( lineCapPath, NULL, CPTRectMake( -halfSize.width, -halfSize.height, halfSize.width * CPTFloat(2.0), halfSize.height * CPTFloat(2.0) ) ); + CGPathAddEllipseInRect(lineCapPath, NULL, CPTRectMake(-halfSize.width, -halfSize.height, halfSize.width * CPTFloat(2.0), halfSize.height * CPTFloat(2.0))); break; case CPTLineCapTypeDiamond: CGPathMoveToPoint(lineCapPath, NULL, CPTFloat(0.0), halfSize.height); - CGPathAddLineToPoint( lineCapPath, NULL, halfSize.width, CPTFloat(0.0) ); + CGPathAddLineToPoint(lineCapPath, NULL, halfSize.width, CPTFloat(0.0)); CGPathAddLineToPoint(lineCapPath, NULL, CPTFloat(0.0), -halfSize.height); - CGPathAddLineToPoint( lineCapPath, NULL, -halfSize.width, CPTFloat(0.0) ); + CGPathAddLineToPoint(lineCapPath, NULL, -halfSize.width, CPTFloat(0.0)); CGPathCloseSubpath(lineCapPath); break; case CPTLineCapTypePentagon: CGPathMoveToPoint(lineCapPath, NULL, CPTFloat(0.0), halfSize.height); - CGPathAddLineToPoint( lineCapPath, NULL, halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); - CGPathAddLineToPoint( lineCapPath, NULL, halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); - CGPathAddLineToPoint( lineCapPath, NULL, -halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); - CGPathAddLineToPoint( lineCapPath, NULL, -halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); + CGPathAddLineToPoint(lineCapPath, NULL, halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437)); + CGPathAddLineToPoint(lineCapPath, NULL, halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437)); + CGPathAddLineToPoint(lineCapPath, NULL, -halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437)); + CGPathAddLineToPoint(lineCapPath, NULL, -halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437)); CGPathCloseSubpath(lineCapPath); break; @@ -549,8 +549,8 @@ -(nonnull CGPathRef)newLineCapPath break; case CPTLineCapTypeBar: - CGPathMoveToPoint( lineCapPath, NULL, halfSize.width, CPTFloat(0.0) ); - CGPathAddLineToPoint( lineCapPath, NULL, -halfSize.width, CPTFloat(0.0) ); + CGPathMoveToPoint(lineCapPath, NULL, halfSize.width, CPTFloat(0.0)); + CGPathAddLineToPoint(lineCapPath, NULL, -halfSize.width, CPTFloat(0.0)); break; case CPTLineCapTypeCross: @@ -581,8 +581,8 @@ -(nonnull CGPathRef)newLineCapPath CGFloat dy1 = lineCapSize.height / oldBounds.size.height; CGAffineTransform scaleTransform = CGAffineTransformScale(CGAffineTransformIdentity, dx1, dy1); - scaleTransform = CGAffineTransformConcat( scaleTransform, - CGAffineTransformMakeTranslation(-halfSize.width, -halfSize.height) ); + scaleTransform = CGAffineTransformConcat(scaleTransform, + CGAffineTransformMakeTranslation(-halfSize.width, -halfSize.height)); CGPathAddPath(lineCapPath, &scaleTransform, customPath); } } @@ -601,7 +601,7 @@ -(nonnull CGPathRef)newLineCapPath -(nullable id)debugQuickLookObject { const CGSize symbolSize = self.size; - const CGSize halfSize = CPTSizeMake( symbolSize.width * CPTFloat(0.5), symbolSize.height * CPTFloat(0.5) ); + const CGSize halfSize = CPTSizeMake(symbolSize.width * CPTFloat(0.5), symbolSize.height * CPTFloat(0.5)); const CGRect rect = CGRectMake(-halfSize.width, -halfSize.height, symbolSize.width, symbolSize.height); const CGPoint centerPoint = CGPointMake(halfSize.width, halfSize.height); diff --git a/framework/Source/CPTLineStyle.m b/framework/Source/CPTLineStyle.m index 27a8e6671..7916ffa8f 100644 --- a/framework/Source/CPTLineStyle.m +++ b/framework/Source/CPTLineStyle.m @@ -154,7 +154,7 @@ +(nonnull instancetype)lineStyleWithStyle:(nullable CPTLineStyle *)lineStyle **/ -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { lineCap = kCGLineCapButt; lineJoin = kCGLineJoinMiter; miterLimit = CPTFloat(10.0); @@ -190,7 +190,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super init]) ) { + if ((self = [super init])) { lineCap = (CGLineCap)[coder decodeIntForKey:@"CPTLineStyle.lineCap"]; lineJoin = (CGLineJoin)[coder decodeIntForKey:@"CPTLineStyle.lineJoin"]; miterLimit = [coder decodeCGFloatForKey:@"CPTLineStyle.miterLimit"]; @@ -239,7 +239,7 @@ -(void)setLineStyleInContext:(nonnull CGContextRef)context NSUInteger dashCount = myDashPattern.count; if ( dashCount > 0 ) { - CGFloat *dashLengths = (CGFloat *)calloc( dashCount, sizeof(CGFloat) ); + CGFloat *dashLengths = (CGFloat *)calloc(dashCount, sizeof(CGFloat)); NSUInteger dashCounter = 0; for ( NSNumber *currentDashLength in myDashPattern ) { @@ -309,7 +309,7 @@ -(void)strokeRect:(CGRect)rect inContext:(nonnull CGContextRef)context -(void)strokePathWithGradient:(nonnull CPTGradient *)gradient inContext:(nonnull CGContextRef)context { if ( gradient ) { - CGRect deviceRect = CGContextConvertRectToDeviceSpace( context, CPTRectMake(0.0, 0.0, 1.0, 1.0) ); + CGRect deviceRect = CGContextConvertRectToDeviceSpace(context, CPTRectMake(0.0, 0.0, 1.0, 1.0)); CGFloat step = CPTFloat(2.0) / deviceRect.size.height; @@ -319,7 +319,7 @@ -(void)strokePathWithGradient:(nonnull CPTGradient *)gradient inContext:(nonnull CGContextBeginPath(context); CGFloat width = startWidth; - while ( width > CPTFloat(0.0) ) { + while ( width > CPTFloat(0.0)) { CGContextSetLineWidth(context, width); CGColorRef gradientColor = [gradient newColorAtPosition:CPTFloat(1.0) - width / startWidth]; diff --git a/framework/Source/CPTMutableNumericData.m b/framework/Source/CPTMutableNumericData.m index 71325f27e..631d70704 100644 --- a/framework/Source/CPTMutableNumericData.m +++ b/framework/Source/CPTMutableNumericData.m @@ -49,7 +49,7 @@ @implementation CPTMutableNumericData -(nullable void *)mutableSamplePointer:(NSUInteger)sample { if ( sample < self.numberOfSamples ) { - return (void *)( (char *)self.mutableBytes + sample * self.sampleBytes); + return (void *)((char *)self.mutableBytes + sample * self.sampleBytes); } else { return NULL; @@ -87,7 +87,7 @@ -(nullable void *)mutableSamplePointerAtIndex:(NSUInteger)idx, ... -(nonnull void *)mutableBytes { - return ( (NSMutableData *)self.data).mutableBytes; + return ((NSMutableData *)self.data).mutableBytes; } /// @endcond diff --git a/framework/Source/CPTMutableNumericDataTests.m b/framework/Source/CPTMutableNumericDataTests.m index b9183aa1c..d5cc0870a 100644 --- a/framework/Source/CPTMutableNumericDataTests.m +++ b/framework/Source/CPTMutableNumericDataTests.m @@ -28,7 +28,7 @@ -(void)testNumberOfDimensionsGivesShapeCount NSMutableData *data = [NSMutableData dataWithLength:nElems * sizeof(float)]; CPTMutableNumericData *nd = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder()) shape:shape]; XCTAssertEqual(nd.numberOfDimensions, nd.shape.count, @"numberOfDimensions == shape.count == 3"); @@ -64,7 +64,7 @@ -(void)testIllegalShapeRaisesException NSMutableData *data = [NSMutableData dataWithLength:nElems * sizeof(NSUInteger)]; XCTAssertThrowsSpecificNamed(testData = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTUnsignedIntegerDataType, sizeof(NSUInteger), NSHostByteOrder() ) + dataType:CPTDataType(CPTUnsignedIntegerDataType, sizeof(NSUInteger), NSHostByteOrder()) shape:shape], NSException, CPTNumericDataException, @@ -95,7 +95,7 @@ -(void)testBytesEqualDataBytes } CPTMutableNumericData *nd = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ) + dataType:CPTDataType(CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder()) shape:nil]; NSMutableData *expected = data; @@ -113,7 +113,7 @@ -(void)testArchivingRoundTrip } CPTMutableNumericData *nd = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder()) shape:nil]; CPTMutableNumericData *nd2 = [self archiveRoundTrip:nd]; @@ -140,7 +140,7 @@ -(void)testNumberOfSamplesCorrectForDataType } CPTMutableNumericData *nd = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder()) shape:nil]; XCTAssertEqual([nd numberOfSamples], nElems, @"numberOfSamples == nElems"); @@ -153,7 +153,7 @@ -(void)testNumberOfSamplesCorrectForDataType } nd = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTIntegerDataType, sizeof(char), NSHostByteOrder() ) + dataType:CPTDataType(CPTIntegerDataType, sizeof(char), NSHostByteOrder()) shape:nil]; XCTAssertEqual([nd numberOfSamples], nElems, @"numberOfSamples == nElems"); @@ -170,7 +170,7 @@ -(void)testDataTypeAccessorsCorrectForDataType } CPTMutableNumericData *nd = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder()) shape:nil]; XCTAssertEqual([nd dataTypeFormat], CPTFloatingPointDataType, @"dataTypeFormat"); @@ -189,7 +189,7 @@ -(void)testConvertTypeConvertsType } CPTMutableNumericData *fd = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder()) shape:nil]; CPTNumericData *dd = [fd dataByConvertingToType:CPTFloatingPointDataType @@ -198,7 +198,7 @@ -(void)testConvertTypeConvertsType const double *doubleSamples = (const double *)dd.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - XCTAssertTrue( (double)samples[i] == doubleSamples[i], @"(float)%g != (double)%g", (double)samples[i], doubleSamples[i]); + XCTAssertTrue((double)samples[i] == doubleSamples[i], @"(float)%g != (double)%g", (double)samples[i], doubleSamples[i]); } } @@ -213,12 +213,12 @@ -(void)testSamplePointerCorrect } CPTMutableNumericData *fd = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder()) shape:nil]; - XCTAssertEqual( ( (float *)[fd mutableBytes]) + 4, (float *)[fd mutableSamplePointer:4], @"%p,%p", samples + 4, (float *)[fd mutableSamplePointer:4]); - XCTAssertEqual( ( (float *)[fd mutableBytes]), (float *)[fd mutableSamplePointer:0], @""); - XCTAssertEqual( ( (float *)[fd mutableBytes]) + nElems - 1, (float *)[fd mutableSamplePointer:nElems - 1], @""); + XCTAssertEqual(((float *)[fd mutableBytes]) + 4, (float *)[fd mutableSamplePointer:4], @"%p,%p", samples + 4, (float *)[fd mutableSamplePointer:4]); + XCTAssertEqual(((float *)[fd mutableBytes]), (float *)[fd mutableSamplePointer:0], @""); + XCTAssertEqual(((float *)[fd mutableBytes]) + nElems - 1, (float *)[fd mutableSamplePointer:nElems - 1], @""); XCTAssertNil([fd samplePointer:nElems], @"too many samples"); } @@ -233,7 +233,7 @@ -(void)testSampleValueCorrect } CPTMutableNumericData *fd = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder()) shape:nil]; XCTAssertEqualWithAccuracy([[fd sampleValue:0] doubleValue], sin(0), 0.01, @"sample value"); @@ -245,13 +245,13 @@ -(void)testMutableCopy const NSUInteger nElems = 10; NSMutableData *data = [NSMutableData dataWithLength:nElems * sizeof(float)]; CPTNumericData *nd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder()) shape:nil]; CPTMutableNumericData *ndCopy = [nd mutableCopy]; // should be mutable--if not, this will error - ndCopy.dataType = CPTDataType( CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ); + ndCopy.dataType = CPTDataType(CPTFloatingPointDataType, sizeof(double), NSHostByteOrder()); } @end diff --git a/framework/Source/CPTMutableNumericDataTypeConversionTests.m b/framework/Source/CPTMutableNumericDataTypeConversionTests.m index 51c52d03f..2c01ecfe5 100644 --- a/framework/Source/CPTMutableNumericDataTypeConversionTests.m +++ b/framework/Source/CPTMutableNumericDataTypeConversionTests.m @@ -18,14 +18,14 @@ -(void)testFloatToDoubleInPlaceConversion } CPTMutableNumericData *numericData = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder()) shape:nil]; numericData.sampleBytes = sizeof(double); const double *doubleSamples = (const double *)numericData.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - XCTAssertEqualWithAccuracy( (double)samples[i], doubleSamples[i], precision, @"(float)%g != (double)%g", (double)samples[i], doubleSamples[i]); + XCTAssertEqualWithAccuracy((double)samples[i], doubleSamples[i], precision, @"(float)%g != (double)%g", (double)samples[i], doubleSamples[i]); } } @@ -39,14 +39,14 @@ -(void)testDoubleToFloatInPlaceConversion } CPTMutableNumericData *numericData = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), NSHostByteOrder()) shape:nil]; numericData.sampleBytes = sizeof(float); const float *floatSamples = (const float *)numericData.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - XCTAssertEqualWithAccuracy( (double)floatSamples[i], samples[i], precision, @"(float)%g != (double)%g", (double)floatSamples[i], samples[i]); + XCTAssertEqualWithAccuracy((double)floatSamples[i], samples[i], precision, @"(float)%g != (double)%g", (double)floatSamples[i], samples[i]); } } @@ -60,14 +60,14 @@ -(void)testFloatToIntegerInPlaceConversion } CPTMutableNumericData *numericData = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder()) shape:nil]; - numericData.dataType = CPTDataType( CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ); + numericData.dataType = CPTDataType(CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder()); const NSInteger *intSamples = (const NSInteger *)numericData.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - XCTAssertEqualWithAccuracy( (NSInteger)samples[i], intSamples[i], precision, @"(float)%g != (NSInteger)%ld", (double)samples[i], (long)intSamples[i]); + XCTAssertEqualWithAccuracy((NSInteger)samples[i], intSamples[i], precision, @"(float)%g != (NSInteger)%ld", (double)samples[i], (long)intSamples[i]); } } @@ -81,10 +81,10 @@ -(void)testIntegerToFloatInPlaceConversion } CPTMutableNumericData *numericData = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ) + dataType:CPTDataType(CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder()) shape:nil]; - numericData.dataType = CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ); + numericData.dataType = CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder()); const float *floatSamples = (const float *)numericData.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { @@ -98,14 +98,14 @@ -(void)testDecimalToDoubleInPlaceConversion NSDecimal *samples = (NSDecimal *)data.mutableBytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - samples[i] = CPTDecimalFromDouble( sin(i) ); + samples[i] = CPTDecimalFromDouble(sin(i)); } CPTMutableNumericData *numericData = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTDecimalDataType, sizeof(NSDecimal), NSHostByteOrder() ) + dataType:CPTDataType(CPTDecimalDataType, sizeof(NSDecimal), NSHostByteOrder()) shape:nil]; - numericData.dataType = CPTDataType( CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ); + numericData.dataType = CPTDataType(CPTFloatingPointDataType, sizeof(double), NSHostByteOrder()); const double *doubleSamples = (const double *)numericData.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { @@ -123,14 +123,14 @@ -(void)testDoubleToDecimalInPlaceConversion } CPTMutableNumericData *numericData = [[CPTMutableNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), NSHostByteOrder()) shape:nil]; - numericData.dataType = CPTDataType( CPTDecimalDataType, sizeof(NSDecimal), NSHostByteOrder() ); + numericData.dataType = CPTDataType(CPTDecimalDataType, sizeof(NSDecimal), NSHostByteOrder()); const NSDecimal *decimalSamples = (const NSDecimal *)numericData.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - XCTAssertTrue(CPTDecimalEquals( decimalSamples[i], CPTDecimalFromDouble(samples[i]) ), @"(NSDecimal)%@ != (double)%g", CPTDecimalStringValue(decimalSamples[i]), samples[i]); + XCTAssertTrue(CPTDecimalEquals(decimalSamples[i], CPTDecimalFromDouble(samples[i])), @"(NSDecimal)%@ != (double)%g", CPTDecimalStringValue(decimalSamples[i]), samples[i]); } } diff --git a/framework/Source/CPTMutablePlotRange.m b/framework/Source/CPTMutablePlotRange.m index 4f17749f1..e4ac89993 100644 --- a/framework/Source/CPTMutablePlotRange.m +++ b/framework/Source/CPTMutablePlotRange.m @@ -80,7 +80,7 @@ -(void)unionPlotRange:(nullable CPTPlotRange *)other NSDecimal maximum = CPTDecimalGreaterThan(max1, max2) ? max1 : max2; NSDecimal newLocation, newLength; - if ( CPTDecimalGreaterThanOrEqualTo( self.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalGreaterThanOrEqualTo(self.lengthDecimal, CPTDecimalFromInteger(0))) { newLocation = minimum; newLength = CPTDecimalSubtract(maximum, minimum); } @@ -110,9 +110,9 @@ -(void)intersectionPlotRange:(nullable CPTPlotRange *)other NSDecimal max2 = other.maxLimitDecimal; NSDecimal maximum = CPTDecimalLessThan(max1, max2) ? max1 : max2; - if ( CPTDecimalGreaterThanOrEqualTo(maximum, minimum) ) { + if ( CPTDecimalGreaterThanOrEqualTo(maximum, minimum)) { NSDecimal newLocation, newLength; - if ( CPTDecimalGreaterThanOrEqualTo( self.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalGreaterThanOrEqualTo(self.lengthDecimal, CPTDecimalFromInteger(0))) { newLocation = minimum; newLength = CPTDecimalSubtract(maximum, minimum); } @@ -140,7 +140,7 @@ -(void)expandRangeByFactor:(nonnull NSNumber *)factor { NSDecimal oldLength = self.lengthDecimal; NSDecimal newLength = CPTDecimalMultiply(oldLength, factor.decimalValue); - NSDecimal locationOffset = CPTDecimalDivide( CPTDecimalSubtract(oldLength, newLength), CPTDecimalFromInteger(2) ); + NSDecimal locationOffset = CPTDecimalDivide(CPTDecimalSubtract(oldLength, newLength), CPTDecimalFromInteger(2)); NSDecimal newLocation = CPTDecimalAdd(self.locationDecimal, locationOffset); self.locationDecimal = newLocation; diff --git a/framework/Source/CPTNumericData+TypeConversion.m b/framework/Source/CPTNumericData+TypeConversion.m index 5c192bc99..2ebfd19a1 100644 --- a/framework/Source/CPTNumericData+TypeConversion.m +++ b/framework/Source/CPTNumericData+TypeConversion.m @@ -29,17 +29,17 @@ -(nonnull CPTNumericData *)dataByConvertingToDataType:(CPTNumericDataType)newDat NSParameterAssert(myDataType.dataTypeFormat != CPTUndefinedDataType); NSParameterAssert(myDataType.byteOrder != CFByteOrderUnknown); - NSParameterAssert( CPTDataTypeIsSupported(newDataType) ); + NSParameterAssert(CPTDataTypeIsSupported(newDataType)); NSParameterAssert(newDataType.dataTypeFormat != CPTUndefinedDataType); NSParameterAssert(newDataType.byteOrder != CFByteOrderUnknown); NSData *newData = nil; CFByteOrder hostByteOrder = CFByteOrderGetCurrent(); - if ( CPTDataTypeEqualToDataType(myDataType, newDataType) ) { + if ( CPTDataTypeEqualToDataType(myDataType, newDataType)) { newData = self.data; } - else if ( ( myDataType.sampleBytes == sizeof(int8_t) ) && ( newDataType.sampleBytes == sizeof(int8_t) ) ) { + else if ((myDataType.sampleBytes == sizeof(int8_t)) && (newDataType.sampleBytes == sizeof(int8_t))) { newData = self.data; } else { @@ -105,7 +105,7 @@ case sizeof(int8_t): switch ( destDataType->sampleBytes ) { case sizeof(int8_t): { // int8_t -> int8_t - memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(int8_t) ); + memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(int8_t)); } break; @@ -281,7 +281,7 @@ case sizeof(int8_t): case sizeof(int16_t): { // int16_t -> int16_t - memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(int16_t) ); + memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(int16_t)); } break; @@ -457,7 +457,7 @@ case sizeof(int16_t): case sizeof(int32_t): { // int32_t -> int32_t - memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(int32_t) ); + memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(int32_t)); } break; @@ -633,7 +633,7 @@ case sizeof(int32_t): case sizeof(int64_t): { // int64_t -> int64_t - memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(int64_t) ); + memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(int64_t)); } break; } @@ -817,7 +817,7 @@ case sizeof(int64_t): switch ( destDataType->sampleBytes ) { case sizeof(uint8_t): { // uint8_t -> uint8_t - memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(uint8_t) ); + memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(uint8_t)); } break; @@ -993,7 +993,7 @@ case sizeof(uint8_t): case sizeof(uint16_t): { // uint16_t -> uint16_t - memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(uint16_t) ); + memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(uint16_t)); } break; @@ -1169,7 +1169,7 @@ case sizeof(uint16_t): case sizeof(uint32_t): { // uint32_t -> uint32_t - memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(uint32_t) ); + memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(uint32_t)); } break; @@ -1345,7 +1345,7 @@ case sizeof(uint32_t): case sizeof(uint64_t): { // uint64_t -> uint64_t - memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(uint64_t) ); + memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(uint64_t)); } break; } @@ -1529,7 +1529,7 @@ case sizeof(uint64_t): switch ( destDataType->sampleBytes ) { case sizeof(float): { // float -> float - memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(float) ); + memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(float)); } break; @@ -1705,7 +1705,7 @@ case sizeof(float): case sizeof(double): { // double -> double - memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(double) ); + memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(double)); } break; } @@ -1889,7 +1889,7 @@ case sizeof(double): switch ( destDataType->sampleBytes ) { case sizeof(float complex): { // float complex -> float complex - memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(float complex) ); + memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(float complex)); } break; @@ -1914,7 +1914,7 @@ case sizeof(NSDecimal): const float complex *lastSample = fromBytes + sampleCount; NSDecimal *toBytes = (NSDecimal *)destData.mutableBytes; while ( fromBytes < lastSample ) { - *toBytes++ = CPTDecimalFromFloat( crealf(*fromBytes++) ); + *toBytes++ = CPTDecimalFromFloat(crealf(*fromBytes++)); } } break; @@ -2065,7 +2065,7 @@ case sizeof(float complex): case sizeof(double complex): { // double complex -> double complex - memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(double complex) ); + memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(double complex)); } break; } @@ -2079,7 +2079,7 @@ case sizeof(NSDecimal): const double complex *lastSample = fromBytes + sampleCount; NSDecimal *toBytes = (NSDecimal *)destData.mutableBytes; while ( fromBytes < lastSample ) { - *toBytes++ = CPTDecimalFromDouble( creal(*fromBytes++) ); + *toBytes++ = CPTDecimalFromDouble(creal(*fromBytes++)); } } break; @@ -2249,7 +2249,7 @@ case sizeof(double complex): switch ( destDataType->sampleBytes ) { case sizeof(NSDecimal): { // NSDecimal -> NSDecimal - memcpy( destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(NSDecimal) ); + memcpy(destData.mutableBytes, sourceData.bytes, sampleCount * sizeof(NSDecimal)); } break; } diff --git a/framework/Source/CPTNumericData.m b/framework/Source/CPTNumericData.m index e927ad52a..b8c5d1243 100644 --- a/framework/Source/CPTNumericData.m +++ b/framework/Source/CPTNumericData.m @@ -341,7 +341,7 @@ -(nonnull instancetype)initWithData:(nonnull NSData *)newData shape:(nullable CPTNumberArray *)shapeArray dataOrder:(CPTDataOrder)order { - if ( (self = [super init]) ) { + if ((self = [super init])) { [self commonInitWithData:newData dataType:newDataType shape:shapeArray @@ -418,7 +418,7 @@ -(nonnull instancetype)initWithArray:(nonnull CPTNumberArray *)newData -(nonnull instancetype)init { return [self initWithData:[NSData data] - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent()) shape:nil]; } @@ -427,7 +427,7 @@ -(void)commonInitWithData:(nonnull NSData *)newData shape:(nullable CPTNumberArray *)shapeArray dataOrder:(CPTDataOrder)order { - NSParameterAssert( CPTDataTypeIsSupported(newDataType) ); + NSParameterAssert(CPTDataTypeIsSupported(newDataType)); self.data = newData; self.dataType = newDataType; @@ -511,21 +511,21 @@ -(void)setDataType:(CPTNumericDataType)newDataType { CPTNumericDataType oldDataType = dataType; - if ( CPTDataTypeEqualToDataType(oldDataType, newDataType) ) { + if ( CPTDataTypeEqualToDataType(oldDataType, newDataType)) { return; } - NSParameterAssert( CPTDataTypeIsSupported(newDataType) ); + NSParameterAssert(CPTDataTypeIsSupported(newDataType)); NSParameterAssert(newDataType.dataTypeFormat != CPTUndefinedDataType); NSParameterAssert(newDataType.byteOrder != CFByteOrderUnknown); dataType = newDataType; - if ( ( oldDataType.sampleBytes == sizeof(int8_t) ) && ( newDataType.sampleBytes == sizeof(int8_t) ) ) { + if ((oldDataType.sampleBytes == sizeof(int8_t)) && (newDataType.sampleBytes == sizeof(int8_t))) { return; } - if ( (oldDataType.dataTypeFormat != CPTUndefinedDataType) && (oldDataType.byteOrder != CFByteOrderUnknown) ) { + if ((oldDataType.dataTypeFormat != CPTUndefinedDataType) && (oldDataType.byteOrder != CFByteOrderUnknown)) { NSMutableData *myData = (NSMutableData *)self.data; CFByteOrder hostByteOrder = CFByteOrderGetCurrent(); @@ -669,11 +669,11 @@ case sizeof(double): case CPTComplexFloatingPointDataType: switch ( self.sampleBytes ) { case sizeof(float complex): - result = @( crealf(*(const float complex *)[self samplePointer:sample]) ); + result = @(crealf(*(const float complex *)[self samplePointer:sample])); break; case sizeof(double complex): - result = @( creal(*(const double complex *)[self samplePointer:sample]) ); + result = @(creal(*(const double complex *)[self samplePointer:sample])); break; } break; @@ -728,7 +728,7 @@ -(NSNumber *)sampleValueAtIndex:(NSUInteger)idx, ... -(nullable const void *)samplePointer:(NSUInteger)sample { if ( sample < self.numberOfSamples ) { - return (const void *)( (const char *)self.bytes + sample * self.sampleBytes); + return (const void *)((const char *)self.bytes + sample * self.sampleBytes); } else { return NULL; @@ -802,9 +802,9 @@ -(NSUInteger)sampleIndex:(NSUInteger)idx indexList:(va_list)indexList NSUInteger newIndex = 0; if ( numDims > 1 ) { - NSUInteger *dims = calloc( numDims, sizeof(NSUInteger) ); - NSUInteger *dimProducts = calloc( numDims, sizeof(NSUInteger) ); - NSUInteger *indices = calloc( numDims, sizeof(NSUInteger) ); + NSUInteger *dims = calloc(numDims, sizeof(NSUInteger)); + NSUInteger *dimProducts = calloc(numDims, sizeof(NSUInteger)); + NSUInteger *indices = calloc(numDims, sizeof(NSUInteger)); NSUInteger argIndex = 0; indices[0] = idx; @@ -865,7 +865,7 @@ -(NSUInteger)sampleIndex:(NSUInteger)idx indexList:(va_list)indexList -(nonnull NSData *)dataFromArray:(nonnull CPTNumberArray *)newData dataType:(CPTNumericDataType)newDataType { - NSParameterAssert( CPTDataTypeIsSupported(newDataType) ); + NSParameterAssert(CPTDataTypeIsSupported(newDataType)); NSParameterAssert(newDataType.dataTypeFormat != CPTUndefinedDataType); NSParameterAssert(newDataType.dataTypeFormat != CPTComplexFloatingPointDataType); @@ -1085,7 +1085,7 @@ case sizeof(NSDecimal): // End of code generated with "CPTNumericData+TypeConversions_Generation.py" // ======================================================================== - if ( ( newDataType.byteOrder != CFByteOrderGetCurrent() ) && (newDataType.byteOrder != CFByteOrderUnknown) ) { + if ((newDataType.byteOrder != CFByteOrderGetCurrent()) && (newDataType.byteOrder != CFByteOrderUnknown)) { [self swapByteOrderForData:sampleData sampleSize:newDataType.sampleBytes]; } @@ -1177,7 +1177,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)encoder */ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)decoder { - if ( (self = [super init]) ) { + if ((self = [super init])) { NSData *newData; CPTNumericDataType newDataType; CPTNumberArray *shapeArray; @@ -1186,9 +1186,9 @@ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)decoder newData = [decoder decodeObjectOfClass:[NSData class] forKey:@"CPTNumericData.data"]; - newDataType = CPTDataType( (CPTDataTypeFormat)[decoder decodeIntegerForKey:@"CPTNumericData.dataType.dataTypeFormat"], - (size_t)[decoder decodeInt64ForKey:@"CPTNumericData.dataType.sampleBytes"], - (CFByteOrder)[decoder decodeInt64ForKey:@"CPTNumericData.dataType.byteOrder"]); + newDataType = CPTDataType((CPTDataTypeFormat)[decoder decodeIntegerForKey:@"CPTNumericData.dataType.dataTypeFormat"], + (size_t)[decoder decodeInt64ForKey:@"CPTNumericData.dataType.sampleBytes"], + (CFByteOrder)[decoder decodeInt64ForKey:@"CPTNumericData.dataType.byteOrder"]); shapeArray = [decoder decodeObjectOfClasses:[NSSet setWithArray:@[[NSArray class], [NSNumber class]]] forKey:@"CPTNumericData.shape"]; diff --git a/framework/Source/CPTNumericDataTests.m b/framework/Source/CPTNumericDataTests.m index 61c9b983b..26e0ca4c6 100644 --- a/framework/Source/CPTNumericDataTests.m +++ b/framework/Source/CPTNumericDataTests.m @@ -27,7 +27,7 @@ -(void)testNumberOfDimensionsGivesShapeCount NSMutableData *data = [NSMutableData dataWithLength:nElems * sizeof(float)]; CPTNumericData *nd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder()) shape:shape]; XCTAssertEqual(nd.numberOfDimensions, nd.shape.count, @"numberOfDimensions == shape.count == 3"); @@ -63,7 +63,7 @@ -(void)testIllegalShapeRaisesException NSMutableData *data = [NSMutableData dataWithLength:nElems * sizeof(NSUInteger)]; XCTAssertThrowsSpecificNamed(testData = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTUnsignedIntegerDataType, sizeof(NSUInteger), NSHostByteOrder() ) + dataType:CPTDataType(CPTUnsignedIntegerDataType, sizeof(NSUInteger), NSHostByteOrder()) shape:shape], NSException, CPTNumericDataException, @@ -94,7 +94,7 @@ -(void)testBytesEqualDataBytes } CPTNumericData *nd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ) + dataType:CPTDataType(CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder()) shape:nil]; NSData *expected = data; @@ -113,7 +113,7 @@ -(void)testArchivingRoundTrip } CPTNumericData *nd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder()) shape:nil]; CPTNumericData *nd2 = [self archiveRoundTrip:nd]; @@ -140,7 +140,7 @@ -(void)testKeyedArchivingRoundTrip } CPTNumericData *nd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder()) shape:nil]; CPTNumericData *nd2 = [self archiveRoundTrip:nd]; @@ -167,7 +167,7 @@ -(void)testNumberOfSamplesCorrectForDataType } CPTNumericData *nd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder()) shape:nil]; XCTAssertEqual([nd numberOfSamples], nElems, @"numberOfSamples == nElems"); @@ -180,7 +180,7 @@ -(void)testNumberOfSamplesCorrectForDataType } nd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTIntegerDataType, sizeof(char), NSHostByteOrder() ) + dataType:CPTDataType(CPTIntegerDataType, sizeof(char), NSHostByteOrder()) shape:nil]; XCTAssertEqual([nd numberOfSamples], nElems, @"numberOfSamples == nElems"); @@ -197,7 +197,7 @@ -(void)testDataTypeAccessorsCorrectForDataType } CPTNumericData *nd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder()) shape:nil]; XCTAssertEqual([nd dataTypeFormat], CPTFloatingPointDataType, @"dataTypeFormat"); @@ -216,7 +216,7 @@ -(void)testConvertTypeConvertsType } CPTNumericData *fd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder()) shape:nil]; CPTNumericData *dd = [fd dataByConvertingToType:CPTFloatingPointDataType @@ -225,7 +225,7 @@ -(void)testConvertTypeConvertsType const double *doubleSamples = (const double *)dd.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - XCTAssertTrue( (double)samples[i] == doubleSamples[i], @"(float)%g != (double)%g", (double)samples[i], doubleSamples[i]); + XCTAssertTrue((double)samples[i] == doubleSamples[i], @"(float)%g != (double)%g", (double)samples[i], doubleSamples[i]); } } @@ -240,12 +240,12 @@ -(void)testSamplePointerCorrect } CPTNumericData *fd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder()) shape:nil]; - XCTAssertEqual( ( (const float *)[fd.data bytes]) + 4, (const float *)[fd samplePointer:4], @"%p,%p", samples + 4, (const float *)[fd samplePointer:4]); - XCTAssertEqual( ( (const float *)[fd.data bytes]), (const float *)[fd samplePointer:0], @""); - XCTAssertEqual( ( (const float *)[fd.data bytes]) + nElems - 1, (const float *)[fd samplePointer:nElems - 1], @""); + XCTAssertEqual(((const float *)[fd.data bytes]) + 4, (const float *)[fd samplePointer:4], @"%p,%p", samples + 4, (const float *)[fd samplePointer:4]); + XCTAssertEqual(((const float *)[fd.data bytes]), (const float *)[fd samplePointer:0], @""); + XCTAssertEqual(((const float *)[fd.data bytes]) + nElems - 1, (const float *)[fd samplePointer:nElems - 1], @""); XCTAssertNil([fd samplePointer:nElems], @"too many samples"); } @@ -260,7 +260,7 @@ -(void)testSampleValueCorrect } CPTNumericData *fd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder()) shape:nil]; XCTAssertEqualWithAccuracy([[fd sampleValue:0] doubleValue], sin(0), 0.01, @"sample value"); @@ -280,16 +280,16 @@ -(void)testSampleIndexRowsFirstOrder } CPTNumericData *fd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(NSUInteger), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(NSUInteger), NSHostByteOrder()) shape:@[@(rows), @(cols)] dataOrder:CPTDataOrderRowsFirst]; - XCTAssertEqual( ([fd sampleIndex:rows, 0]), (NSUInteger)NSNotFound, @"row index out of range"); - XCTAssertEqual( ([fd sampleIndex:0, cols]), (NSUInteger)NSNotFound, @"column index out of range"); + XCTAssertEqual(([fd sampleIndex:rows, 0]), (NSUInteger)NSNotFound, @"row index out of range"); + XCTAssertEqual(([fd sampleIndex:0, cols]), (NSUInteger)NSNotFound, @"column index out of range"); for ( NSUInteger i = 0; i < rows; i++ ) { for ( NSUInteger j = 0; j < cols; j++ ) { - XCTAssertEqual( ([fd sampleIndex:i, j]), i * cols + j, @"(%lu, %lu)", (unsigned long)i, (unsigned long)j); + XCTAssertEqual(([fd sampleIndex:i, j]), i * cols + j, @"(%lu, %lu)", (unsigned long)i, (unsigned long)j); } } } @@ -307,16 +307,16 @@ -(void)testSampleIndexColumnsFirstOrder } CPTNumericData *fd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(NSUInteger), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(NSUInteger), NSHostByteOrder()) shape:@[@(rows), @(cols)] dataOrder:CPTDataOrderColumnsFirst]; - XCTAssertEqual( ([fd sampleIndex:rows, 0]), (NSUInteger)NSNotFound, @"row index out of range"); - XCTAssertEqual( ([fd sampleIndex:0, cols]), (NSUInteger)NSNotFound, @"column index out of range"); + XCTAssertEqual(([fd sampleIndex:rows, 0]), (NSUInteger)NSNotFound, @"row index out of range"); + XCTAssertEqual(([fd sampleIndex:0, cols]), (NSUInteger)NSNotFound, @"column index out of range"); for ( NSUInteger i = 0; i < rows; i++ ) { for ( NSUInteger j = 0; j < cols; j++ ) { - XCTAssertEqual( ([fd sampleIndex:i, j]), i + j * rows, @"(%lu, %lu)", (unsigned long)i, (unsigned long)j); + XCTAssertEqual(([fd sampleIndex:i, j]), i + j * rows, @"(%lu, %lu)", (unsigned long)i, (unsigned long)j); } } } diff --git a/framework/Source/CPTNumericDataType.m b/framework/Source/CPTNumericDataType.m index 6ba0daa5a..af098066e 100644 --- a/framework/Source/CPTNumericDataType.m +++ b/framework/Source/CPTNumericDataType.m @@ -161,14 +161,14 @@ case sizeof(double): case sizeof(float complex): case sizeof(double complex): // only the native byte order is supported - valid = ( format.byteOrder == CFByteOrderGetCurrent() ); + valid = (format.byteOrder == CFByteOrderGetCurrent()); break; } break; case CPTDecimalDataType: // only the native byte order is supported - valid = ( format.sampleBytes == sizeof(NSDecimal) ) && ( format.byteOrder == CFByteOrderGetCurrent() ); + valid = (format.sampleBytes == sizeof(NSDecimal)) && (format.byteOrder == CFByteOrderGetCurrent()); break; } diff --git a/framework/Source/CPTNumericDataTypeConversionPerformanceTests.m b/framework/Source/CPTNumericDataTypeConversionPerformanceTests.m index e30e9214a..431999fcf 100644 --- a/framework/Source/CPTNumericDataTypeConversionPerformanceTests.m +++ b/framework/Source/CPTNumericDataTypeConversionPerformanceTests.m @@ -17,7 +17,7 @@ -(void)testFloatToDoubleConversion } CPTNumericData *floatNumericData = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), CFByteOrderGetCurrent() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), CFByteOrderGetCurrent()) shape:nil]; __block CPTNumericData *doubleNumericData = nil; @@ -37,7 +37,7 @@ -(void)testDoubleToFloatConversion } CPTNumericData *doubleNumericData = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent()) shape:nil]; __block CPTNumericData *floatNumericData = nil; @@ -57,7 +57,7 @@ -(void)testIntegerToDoubleConversion } CPTNumericData *integerNumericData = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTIntegerDataType, sizeof(NSInteger), CFByteOrderGetCurrent() ) + dataType:CPTDataType(CPTIntegerDataType, sizeof(NSInteger), CFByteOrderGetCurrent()) shape:nil]; __block CPTNumericData *doubleNumericData = nil; @@ -77,7 +77,7 @@ -(void)testDoubleToIntegerConversion } CPTNumericData *doubleNumericData = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent()) shape:nil]; __block CPTNumericData *integerNumericData = nil; diff --git a/framework/Source/CPTNumericDataTypeConversionTests.m b/framework/Source/CPTNumericDataTypeConversionTests.m index e82019c15..8fc215339 100644 --- a/framework/Source/CPTNumericDataTypeConversionTests.m +++ b/framework/Source/CPTNumericDataTypeConversionTests.m @@ -18,7 +18,7 @@ -(void)testFloatToDoubleConversion } CPTNumericData *fd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder()) shape:nil]; CPTNumericData *dd = [fd dataByConvertingToType:CPTFloatingPointDataType @@ -27,7 +27,7 @@ -(void)testFloatToDoubleConversion const double *doubleSamples = (const double *)dd.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - XCTAssertEqualWithAccuracy( (double)samples[i], doubleSamples[i], precision, @"(float)%g != (double)%g", (double)samples[i], doubleSamples[i]); + XCTAssertEqualWithAccuracy((double)samples[i], doubleSamples[i], precision, @"(float)%g != (double)%g", (double)samples[i], doubleSamples[i]); } } @@ -41,7 +41,7 @@ -(void)testDoubleToFloatConversion } CPTNumericData *dd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), NSHostByteOrder()) shape:nil]; CPTNumericData *fd = [dd dataByConvertingToType:CPTFloatingPointDataType @@ -50,7 +50,7 @@ -(void)testDoubleToFloatConversion const float *floatSamples = (const float *)fd.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - XCTAssertEqualWithAccuracy( (double)floatSamples[i], samples[i], precision, @"(float)%g != (double)%g", (double)floatSamples[i], samples[i]); + XCTAssertEqualWithAccuracy((double)floatSamples[i], samples[i], precision, @"(float)%g != (double)%g", (double)floatSamples[i], samples[i]); } } @@ -64,7 +64,7 @@ -(void)testFloatToIntegerConversion } CPTNumericData *fd = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(float), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(float), NSHostByteOrder()) shape:nil]; CPTNumericData *intData = [fd dataByConvertingToType:CPTIntegerDataType @@ -73,7 +73,7 @@ -(void)testFloatToIntegerConversion const NSInteger *intSamples = (const NSInteger *)intData.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - XCTAssertEqualWithAccuracy( (NSInteger)samples[i], intSamples[i], precision, @"(float)%g != (NSInteger)%ld", (double)samples[i], (long)intSamples[i]); + XCTAssertEqualWithAccuracy((NSInteger)samples[i], intSamples[i], precision, @"(float)%g != (NSInteger)%ld", (double)samples[i], (long)intSamples[i]); } } @@ -87,7 +87,7 @@ -(void)testIntegerToFloatConversion } CPTNumericData *intData = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ) + dataType:CPTDataType(CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder()) shape:nil]; CPTNumericData *fd = [intData dataByConvertingToType:CPTFloatingPointDataType @@ -136,11 +136,11 @@ -(void)testDecimalToDoubleConversion NSDecimal *samples = (NSDecimal *)data.mutableBytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - samples[i] = CPTDecimalFromDouble( sin(i) ); + samples[i] = CPTDecimalFromDouble(sin(i)); } CPTNumericData *decimalData = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTDecimalDataType, sizeof(NSDecimal), NSHostByteOrder() ) + dataType:CPTDataType(CPTDecimalDataType, sizeof(NSDecimal), NSHostByteOrder()) shape:nil]; CPTNumericData *doubleData = [decimalData dataByConvertingToType:CPTFloatingPointDataType @@ -163,7 +163,7 @@ -(void)testDoubleToDecimalConversion } CPTNumericData *doubleData = [[CPTNumericData alloc] initWithData:data - dataType:CPTDataType( CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ) + dataType:CPTDataType(CPTFloatingPointDataType, sizeof(double), NSHostByteOrder()) shape:nil]; CPTNumericData *decimalData = [doubleData dataByConvertingToType:CPTDecimalDataType @@ -172,7 +172,7 @@ -(void)testDoubleToDecimalConversion const NSDecimal *decimalSamples = (const NSDecimal *)decimalData.data.bytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - XCTAssertTrue(CPTDecimalEquals( decimalSamples[i], CPTDecimalFromDouble(samples[i]) ), @"(NSDecimal)%@ != (double)%g", CPTDecimalStringValue(decimalSamples[i]), samples[i]); + XCTAssertTrue(CPTDecimalEquals(decimalSamples[i], CPTDecimalFromDouble(samples[i])), @"(NSDecimal)%@ != (double)%g", CPTDecimalStringValue(decimalSamples[i]), samples[i]); } } @@ -220,7 +220,7 @@ -(void)testRoundTripToDoubleArray for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { samples[i] = sin(i); } - CPTNumericDataType theDataType = CPTDataType( CPTFloatingPointDataType, sizeof(double), NSHostByteOrder() ); + CPTNumericDataType theDataType = CPTDataType(CPTFloatingPointDataType, sizeof(double), NSHostByteOrder()); CPTNumericData *doubleData = [[CPTNumericData alloc] initWithData:data dataType:theDataType @@ -248,7 +248,7 @@ -(void)testRoundTripToIntegerArray for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { samples[i] = (NSInteger)(sin(i) * 1000.0); } - CPTNumericDataType theDataType = CPTDataType( CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder() ); + CPTNumericDataType theDataType = CPTDataType(CPTIntegerDataType, sizeof(NSInteger), NSHostByteOrder()); CPTNumericData *intData = [[CPTNumericData alloc] initWithData:data dataType:theDataType @@ -274,9 +274,9 @@ -(void)testRoundTripToDecimalArray NSDecimal *samples = (NSDecimal *)data.mutableBytes; for ( NSUInteger i = 0; i < numberOfSamples; i++ ) { - samples[i] = CPTDecimalFromDouble( sin(i) ); + samples[i] = CPTDecimalFromDouble(sin(i)); } - CPTNumericDataType theDataType = CPTDataType( CPTDecimalDataType, sizeof(NSDecimal), NSHostByteOrder() ); + CPTNumericDataType theDataType = CPTDataType(CPTDecimalDataType, sizeof(NSDecimal), NSHostByteOrder()); CPTNumericData *decimalData = [[CPTNumericData alloc] initWithData:data dataType:theDataType diff --git a/framework/Source/CPTPathExtensions.m b/framework/Source/CPTPathExtensions.m index 91a749b35..fbd20d904 100644 --- a/framework/Source/CPTPathExtensions.m +++ b/framework/Source/CPTPathExtensions.m @@ -10,8 +10,8 @@ **/ __nonnull CGPathRef CPTCreateRoundedRectPath(CGRect rect, CGFloat cornerRadius) { - if ( cornerRadius > CPTFloat(0.0) ) { - cornerRadius = MIN( MIN( cornerRadius, rect.size.width * CPTFloat(0.5) ), rect.size.height * CPTFloat(0.5) ); + if ( cornerRadius > CPTFloat(0.0)) { + cornerRadius = MIN(MIN(cornerRadius, rect.size.width * CPTFloat(0.5)), rect.size.height * CPTFloat(0.5)); // CGPathCreateWithRoundedRect() is available in macOS 10.9 and iOS 7 but not marked in the header file #pragma clang diagnostic push diff --git a/framework/Source/CPTPieChart.m b/framework/Source/CPTPieChart.m index 304af5047..83bbda7c8 100644 --- a/framework/Source/CPTPieChart.m +++ b/framework/Source/CPTPieChart.m @@ -160,9 +160,9 @@ @implementation CPTPieChart +(nonnull CPTColor *)defaultPieSliceColorForIndex:(NSUInteger)pieSliceIndex { - return [CPTColor colorWithComponentRed:( colorLookupTable[pieSliceIndex % 10][0] + (CGFloat)(pieSliceIndex / 10) * CPTFloat(0.1) ) - green:( colorLookupTable[pieSliceIndex % 10][1] + (CGFloat)(pieSliceIndex / 10) * CPTFloat(0.1) ) - blue:( colorLookupTable[pieSliceIndex % 10][2] + (CGFloat)(pieSliceIndex / 10) * CPTFloat(0.1) ) + return [CPTColor colorWithComponentRed:(colorLookupTable[pieSliceIndex % 10][0] + (CGFloat)(pieSliceIndex / 10) * CPTFloat(0.1)) + green:(colorLookupTable[pieSliceIndex % 10][1] + (CGFloat)(pieSliceIndex / 10) * CPTFloat(0.1)) + blue:(colorLookupTable[pieSliceIndex % 10][2] + (CGFloat)(pieSliceIndex / 10) * CPTFloat(0.1)) alpha:CPTFloat(1.0)]; } @@ -209,8 +209,8 @@ +(void)initialize **/ -(nonnull instancetype)initWithFrame:(CGRect)newFrame { - if ( (self = [super initWithFrame:newFrame]) ) { - pieRadius = CPTFloat(0.8) * ( MIN(newFrame.size.width, newFrame.size.height) / CPTFloat(2.0) ); + if ((self = [super initWithFrame:newFrame])) { + pieRadius = CPTFloat(0.8) * (MIN(newFrame.size.width, newFrame.size.height) / CPTFloat(2.0)); pieInnerRadius = CPTFloat(0.0); startAngle = CPTFloat(M_PI_2); // pi/2 endAngle = CPTNAN; @@ -233,7 +233,7 @@ -(nonnull instancetype)initWithFrame:(CGRect)newFrame -(nonnull instancetype)initWithLayer:(nonnull id)layer { - if ( (self = [super initWithLayer:layer]) ) { + if ((self = [super initWithLayer:layer])) { CPTPieChart *theLayer = (CPTPieChart *)layer; pieRadius = theLayer->pieRadius; @@ -277,7 +277,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super initWithCoder:coder]) ) { + if ((self = [super initWithCoder:coder])) { pieRadius = [coder decodeCGFloatForKey:@"CPTPieChart.pieRadius"]; pieInnerRadius = [coder decodeCGFloatForKey:@"CPTPieChart.pieInnerRadius"]; startAngle = [coder decodeCGFloatForKey:@"CPTPieChart.startAngle"]; @@ -385,12 +385,12 @@ -(void)updateNormalizedData const double *dataEnd = dataBytes + sampleCount; while ( dataBytes < dataEnd ) { double currentWidth = *dataBytes++; - if ( !isnan(currentWidth) ) { + if ( !isnan(currentWidth)) { valueSum += currentWidth; } } - CPTNumericDataType dataType = CPTDataType( CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ); + CPTNumericDataType dataType = CPTDataType(CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent()); CPTMutableNumericData *normalizedSliceValues = [[CPTMutableNumericData alloc] initWithData:[NSData data] dataType:dataType shape:nil]; normalizedSliceValues.shape = @[@(sampleCount)]; @@ -404,7 +404,7 @@ -(void)updateNormalizedData double *cumulativeBytes = cumulativeSliceValues.mutableBytes; while ( dataBytes < dataEnd ) { double currentWidth = *dataBytes++; - if ( isnan(currentWidth) ) { + if ( isnan(currentWidth)) { *normalizedBytes++ = (double)NAN; } else { @@ -422,12 +422,12 @@ -(void)updateNormalizedData const NSDecimal *dataEnd = dataBytes + sampleCount; while ( dataBytes < dataEnd ) { NSDecimal currentWidth = *dataBytes++; - if ( !NSDecimalIsNotANumber(¤tWidth) ) { + if ( !NSDecimalIsNotANumber(¤tWidth)) { valueSum = CPTDecimalAdd(valueSum, currentWidth); } } - CPTNumericDataType dataType = CPTDataType( CPTDecimalDataType, sizeof(NSDecimal), CFByteOrderGetCurrent() ); + CPTNumericDataType dataType = CPTDataType(CPTDecimalDataType, sizeof(NSDecimal), CFByteOrderGetCurrent()); CPTMutableNumericData *normalizedSliceValues = [[CPTMutableNumericData alloc] initWithData:[NSData data] dataType:dataType shape:nil]; normalizedSliceValues.shape = @[@(sampleCount)]; @@ -442,7 +442,7 @@ -(void)updateNormalizedData NSDecimal *cumulativeBytes = cumulativeSliceValues.mutableBytes; while ( dataBytes < dataEnd ) { NSDecimal currentWidth = *dataBytes++; - if ( NSDecimalIsNotANumber(¤tWidth) ) { + if ( NSDecimalIsNotANumber(¤tWidth)) { *normalizedBytes++ = decimalNAN; } else { @@ -597,7 +597,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context BOOL hasNonZeroOffsets = NO; CPTNumberArray *offsetArray = [self cachedArrayForKey:CPTPieChartBindingPieSliceRadialOffsets]; for ( NSNumber *offset in offsetArray ) { - if ( [offset cgFloatValue] != CPTFloat(0.0) ) { + if ( [offset cgFloatValue] != CPTFloat(0.0)) { hasNonZeroOffsets = YES; break; } @@ -607,7 +607,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context if ( overlay && hasNonZeroOffsets ) { CGFloat radius = self.pieRadius + borderStyle.lineWidth * CPTFloat(0.5); - bounds = CPTRectMake( centerPoint.x - radius, centerPoint.y - radius, radius * CPTFloat(2.0), radius * CPTFloat(2.0) ); + bounds = CPTRectMake(centerPoint.x - radius, centerPoint.y - radius, radius * CPTFloat(2.0), radius * CPTFloat(2.0)); } else { bounds = CGRectZero; @@ -619,7 +619,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context while ( currentIndex < sampleCount ) { CGFloat currentWidth = (CGFloat)[self cachedDoubleForField:CPTPieChartFieldSliceWidthNormalized recordIndex:currentIndex]; - if ( !isnan(currentWidth) ) { + if ( !isnan(currentWidth)) { CGFloat radialOffset = [(NSNumber *) offsetArray[currentIndex] cgFloatValue]; // draw slice @@ -631,7 +631,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context CGFloat xOffset = CPTFloat(0.0); CGFloat yOffset = CPTFloat(0.0); CGPoint center = centerPoint; - if ( radialOffset != CPTFloat(0.0) ) { + if ( radialOffset != CPTFloat(0.0)) { CGFloat medianAngle = CPTFloat(0.5) * (startingAngle + finishingAngle); xOffset = cos(medianAngle) * radialOffset; yOffset = sin(medianAngle) * radialOffset; @@ -689,7 +689,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context CGMutablePathRef fillPath = CGPathCreateMutable(); CGFloat innerRadius = self.pieInnerRadius; - if ( innerRadius > CPTFloat(0.0) ) { + if ( innerRadius > CPTFloat(0.0)) { CGPathAddArc(fillPath, NULL, centerPoint.x, centerPoint.y, self.pieRadius, CPTFloat(0.0), CPTFloat(2.0 * M_PI), false); CGPathAddArc(fillPath, NULL, centerPoint.x, centerPoint.y, innerRadius, CPTFloat(2.0 * M_PI), CPTFloat(0.0), true); } @@ -724,7 +724,7 @@ -(CGFloat)radiansForPieSliceValue:(CGFloat)pieSliceValue angle += pieSliceValue * pieRange; break; } - return isnan(endingAngle) ? angle : fmod( angle, CPTFloat(2.0 * M_PI) ); + return isnan(endingAngle) ? angle : fmod(angle, CPTFloat(2.0 * M_PI)); } -(void)addSliceToPath:(nonnull CGMutablePathRef)slicePath centerPoint:(CGPoint)center startingAngle:(CGFloat)startingAngle finishingAngle:(CGFloat)finishingAngle width:(CGFloat)currentWidth @@ -733,8 +733,8 @@ -(void)addSliceToPath:(nonnull CGMutablePathRef)slicePath centerPoint:(CGPoint)c CGFloat outerRadius = self.pieRadius; CGFloat innerRadius = self.pieInnerRadius; - if ( innerRadius > CPTFloat(0.0) ) { - if ( currentWidth >= CPTFloat(1.0) ) { + if ( innerRadius > CPTFloat(0.0)) { + if ( currentWidth >= CPTFloat(1.0)) { CGPathAddArc(slicePath, NULL, center.x, center.y, outerRadius, startingAngle, startingAngle + CPTFloat(2.0 * M_PI), direction); CGPathAddArc(slicePath, NULL, center.x, center.y, innerRadius, startingAngle + CPTFloat(2.0 * M_PI), startingAngle, !direction); } @@ -744,8 +744,8 @@ -(void)addSliceToPath:(nonnull CGMutablePathRef)slicePath centerPoint:(CGPoint)c } } else { - if ( currentWidth >= CPTFloat(1.0) ) { - CGPathAddEllipseInRect( slicePath, NULL, CGRectMake( center.x - outerRadius, center.y - outerRadius, outerRadius * CPTFloat(2.0), outerRadius * CPTFloat(2.0) ) ); + if ( currentWidth >= CPTFloat(1.0)) { + CGPathAddEllipseInRect(slicePath, NULL, CGRectMake(center.x - outerRadius, center.y - outerRadius, outerRadius * CPTFloat(2.0), outerRadius * CPTFloat(2.0))); } else { CGPathMoveToPoint(slicePath, NULL, center.x, center.y); @@ -759,7 +759,7 @@ -(nullable CPTFill *)sliceFillForIndex:(NSUInteger)idx { CPTFill *currentFill = [self cachedValueForKey:CPTPieChartBindingPieSliceFills recordIndex:idx]; - if ( (currentFill == nil) || (currentFill == [CPTPlot nilData]) ) { + if ((currentFill == nil) || (currentFill == [CPTPlot nilData])) { currentFill = [CPTFill fillWithColor:[CPTPieChart defaultPieSliceColorForIndex:idx]]; } @@ -813,7 +813,7 @@ -(NSUInteger)pieSliceIndexAtAngle:(CGFloat)angle // of that pie slice. for ( NSUInteger currentIndex = 0; currentIndex < self.cachedDataCount; currentIndex++ ) { CGFloat width = CPTFloat([self cachedDoubleForField:CPTPieChartFieldSliceWidthNormalized recordIndex:currentIndex]); - if ( isnan(width) ) { + if ( isnan(width)) { continue; } CGFloat endingAngle = startingAngle; @@ -858,7 +858,7 @@ -(CGFloat)medianAngleForPieSliceIndex:(NSUInteger)idx CGFloat currentWidth = CPTFloat([self cachedDoubleForField:CPTPieChartFieldSliceWidthNormalized recordIndex:currentIndex]); // If the slice index is a match... - if ( !isnan(currentWidth) && (idx == currentIndex) ) { + if ( !isnan(currentWidth) && (idx == currentIndex)) { // Compute and return the angle that is halfway between the slice's starting and ending angles CGFloat startingAngle = [self radiansForPieSliceValue:startingWidth]; CGFloat finishingAngle = [self radiansForPieSliceValue:startingWidth + currentWidth]; @@ -940,7 +940,7 @@ -(void)positionLabelAnnotation:(nonnull CPTPlotSpaceAnnotation *)label forIndex: label.anchorPlotPoint = @[xValue, yValue]; CGFloat currentWidth = (CGFloat)[self cachedDoubleForField:CPTPieChartFieldSliceWidthNormalized recordIndex:idx]; - if ( self.hidden || isnan(currentWidth) ) { + if ( self.hidden || isnan(currentWidth)) { contentLayer.hidden = YES; } else { @@ -953,11 +953,11 @@ -(void)positionLabelAnnotation:(nonnull CPTPlotSpaceAnnotation *)label forIndex: } CGFloat labelAngle = [self radiansForPieSliceValue:startingWidth + currentWidth / CPTFloat(2.0)]; - label.displacement = CPTPointMake( labelRadius * cos(labelAngle), labelRadius * sin(labelAngle) ); + label.displacement = CPTPointMake(labelRadius * cos(labelAngle), labelRadius * sin(labelAngle)); if ( self.labelRotationRelativeToRadius ) { CGFloat rotation = [self normalizedPosition:self.labelRotation + labelAngle]; - if ( ( rotation > CPTFloat(0.25) ) && ( rotation < CPTFloat(0.75) ) ) { + if ((rotation > CPTFloat(0.25)) && (rotation < CPTFloat(0.75))) { rotation -= CPTFloat(0.5); } @@ -1044,8 +1044,8 @@ -(CGFloat)normalizedPosition:(CGFloat)rawPosition CGFloat result = rawPosition; result /= (CGFloat)(2.0 * M_PI); - result = fmod( result, CPTFloat(1.0) ); - if ( result < CPTFloat(0.0) ) { + result = fmod(result, CPTFloat(1.0)); + if ( result < CPTFloat(0.0)) { result += CPTFloat(1.0); } @@ -1056,19 +1056,19 @@ -(BOOL)angle:(CGFloat)touchedAngle betweenStartAngle:(CGFloat)startingAngle endA { switch ( self.sliceDirection ) { case CPTPieDirectionClockwise: - if ( (touchedAngle <= startingAngle) && (touchedAngle >= endingAngle) ) { + if ((touchedAngle <= startingAngle) && (touchedAngle >= endingAngle)) { return YES; } - else if ( ( endingAngle < CPTFloat(0.0) ) && (touchedAngle - CPTFloat(1.0) >= endingAngle) ) { + else if ((endingAngle < CPTFloat(0.0)) && (touchedAngle - CPTFloat(1.0) >= endingAngle)) { return YES; } break; case CPTPieDirectionCounterClockwise: - if ( (touchedAngle >= startingAngle) && (touchedAngle <= endingAngle) ) { + if ((touchedAngle >= startingAngle) && (touchedAngle <= endingAngle)) { return YES; } - else if ( ( endingAngle > CPTFloat(1.0) ) && (touchedAngle + CPTFloat(1.0) <= endingAngle) ) { + else if ((endingAngle > CPTFloat(1.0)) && (touchedAngle + CPTFloat(1.0) <= endingAngle)) { return YES; } break; @@ -1260,17 +1260,17 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point switch ( self.sliceDirection ) { case CPTPieDirectionClockwise: - if ( isnan(theEndAngle) || ( CPTFloat(2.0 * M_PI) == ABS(theEndAngle - theStartAngle) ) ) { + if ( isnan(theEndAngle) || (CPTFloat(2.0 * M_PI) == ABS(theEndAngle - theStartAngle))) { widthFactor = CPTFloat(1.0); } else { - widthFactor = CPTFloat(2.0 * M_PI) / ( CPTFloat(2.0 * M_PI) - ABS(theEndAngle - theStartAngle) ); + widthFactor = CPTFloat(2.0 * M_PI) / (CPTFloat(2.0 * M_PI) - ABS(theEndAngle - theStartAngle)); } for ( NSUInteger currentIndex = 0; currentIndex < sampleCount; currentIndex++ ) { // calculate angles for this slice CGFloat width = (CGFloat)[self cachedDoubleForField:CPTPieChartFieldSliceWidthNormalized recordIndex:currentIndex]; - if ( isnan(width) ) { + if ( isnan(width)) { continue; } @@ -1282,7 +1282,7 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point CGFloat offsetTouchedAngle = touchedAngle; CGFloat offsetDistanceSquared = distanceSquared; CGFloat radialOffset = [(NSNumber *)[self cachedValueForKey:CPTPieChartBindingPieSliceRadialOffsets recordIndex:currentIndex] cgFloatValue]; - if ( radialOffset != CPTFloat(0.0) ) { + if ( radialOffset != CPTFloat(0.0)) { CGPoint offsetCenter; CGFloat medianAngle = CPTFloat(M_PI) * (startingAngle + endingAngle); offsetCenter = CPTPointMake(centerPoint.x + cos(medianAngle) * radialOffset, @@ -1307,7 +1307,7 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point } // check distance - if ( angleInSlice && (offsetDistanceSquared >= chartInnerRadiusSquared) && (offsetDistanceSquared <= chartRadiusSquared) ) { + if ( angleInSlice && (offsetDistanceSquared >= chartInnerRadiusSquared) && (offsetDistanceSquared <= chartRadiusSquared)) { return currentIndex; } @@ -1317,7 +1317,7 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point break; case CPTPieDirectionCounterClockwise: - if ( isnan(theEndAngle) || (theStartAngle == theEndAngle) ) { + if ( isnan(theEndAngle) || (theStartAngle == theEndAngle)) { widthFactor = CPTFloat(1.0); } else { @@ -1327,7 +1327,7 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point for ( NSUInteger currentIndex = 0; currentIndex < sampleCount; currentIndex++ ) { // calculate angles for this slice CGFloat width = (CGFloat)[self cachedDoubleForField:CPTPieChartFieldSliceWidthNormalized recordIndex:currentIndex]; - if ( isnan(width) ) { + if ( isnan(width)) { continue; } width /= widthFactor; @@ -1338,7 +1338,7 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point CGFloat offsetTouchedAngle = touchedAngle; CGFloat offsetDistanceSquared = distanceSquared; CGFloat radialOffset = [(NSNumber *)[self cachedValueForKey:CPTPieChartBindingPieSliceRadialOffsets recordIndex:currentIndex] cgFloatValue]; - if ( radialOffset != CPTFloat(0.0) ) { + if ( radialOffset != CPTFloat(0.0)) { CGPoint offsetCenter; CGFloat medianAngle = CPTFloat(M_PI) * (startingAngle + endingAngle); offsetCenter = CPTPointMake(centerPoint.x + cos(medianAngle) * radialOffset, @@ -1363,7 +1363,7 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point } // check distance - if ( angleInSlice && (offsetDistanceSquared >= chartInnerRadiusSquared) && (offsetDistanceSquared <= chartRadiusSquared) ) { + if ( angleInSlice && (offsetDistanceSquared >= chartInnerRadiusSquared) && (offsetDistanceSquared <= chartRadiusSquared)) { return currentIndex; } @@ -1472,7 +1472,7 @@ -(void)setBorderLineStyle:(nullable CPTLineStyle *)newStyle -(void)setCenterAnchor:(CGPoint)newCenterAnchor { - if ( !CGPointEqualToPoint(centerAnchor, newCenterAnchor) ) { + if ( !CGPointEqualToPoint(centerAnchor, newCenterAnchor)) { centerAnchor = newCenterAnchor; [self setNeedsDisplay]; [self repositionAllLabelAnnotations]; diff --git a/framework/Source/CPTPlot.h b/framework/Source/CPTPlot.h index 20158052e..d9dd3d976 100644 --- a/framework/Source/CPTPlot.h +++ b/framework/Source/CPTPlot.h @@ -332,9 +332,9 @@ typedef NSMutableArray<__kindof CPTPlot *> CPTMutablePlotArray; -(void)reloadDataInIndexRange:(NSRange)indexRange; -(void)insertDataAtIndex:(NSUInteger)idx numberOfRecords:(NSUInteger)numberOfRecords; -(void)deleteDataInIndexRange:(NSRange)indexRange; --(void) reloadPlotData NS_SWIFT_NAME( CPTPlot.reloadPlotData() ); +-(void) reloadPlotData NS_SWIFT_NAME(CPTPlot.reloadPlotData()); --(void)reloadPlotDataInIndexRange:(NSRange) indexRange NS_SWIFT_NAME( CPTPlot.reloadPlotData(inIndexRange:) ); +-(void)reloadPlotDataInIndexRange:(NSRange) indexRange NS_SWIFT_NAME(CPTPlot.reloadPlotData(inIndexRange:)); /// @} diff --git a/framework/Source/CPTPlot.m b/framework/Source/CPTPlot.m index 828e8f307..679834020 100644 --- a/framework/Source/CPTPlot.m +++ b/framework/Source/CPTPlot.m @@ -292,7 +292,7 @@ +(void)initialize **/ -(nonnull instancetype)initWithFrame:(CGRect)newFrame { - if ( (self = [super initWithFrame:newFrame]) ) { + if ((self = [super initWithFrame:newFrame])) { cachedData = [[NSMutableDictionary alloc] initWithCapacity:5]; cachedDataCount = 0; cachePrecision = CPTPlotCachePrecisionAuto; @@ -330,7 +330,7 @@ -(nonnull instancetype)initWithFrame:(CGRect)newFrame -(nonnull instancetype)initWithLayer:(nonnull id)layer { - if ( (self = [super initWithLayer:layer]) ) { + if ((self = [super initWithLayer:layer])) { CPTPlot *theLayer = (CPTPlot *)layer; cachedData = theLayer->cachedData; @@ -404,7 +404,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super initWithCoder:coder]) ) { + if ((self = [super initWithCoder:coder])) { dataSource = [coder decodeObjectOfClass:[NSObject class] forKey:@"CPTPlot.dataSource"]; title = [[coder decodeObjectOfClass:[NSString class] @@ -855,7 +855,7 @@ -(BOOL)loadNumbersForAllFieldsFromDataSourceInRecordIndexRange:(NSRange)indexRan const NSUInteger sampleCount = data.numberOfSamples; CPTNumericDataType dataType = data.dataType; - if ( (sampleCount > 0) && (data.numberOfDimensions == 2) ) { + if ((sampleCount > 0) && (data.numberOfDimensions == 2)) { CPTNumberArray *theShape = data.shape; const NSUInteger rowCount = theShape[0].unsignedIntegerValue; const NSUInteger fieldCount = theShape[1].unsignedIntegerValue; @@ -865,14 +865,14 @@ -(BOOL)loadNumbersForAllFieldsFromDataSourceInRecordIndexRange:(NSRange)indexRan switch ( self.cachePrecision ) { case CPTPlotCachePrecisionAuto: if ( self.doublePrecisionCache ) { - if ( !CPTDataTypeEqualToDataType(dataType, self.doubleDataType) ) { + if ( !CPTDataTypeEqualToDataType(dataType, self.doubleDataType)) { CPTMutableNumericData *mutableData = [data mutableCopy]; mutableData.dataType = self.doubleDataType; data = mutableData; } } else { - if ( !CPTDataTypeEqualToDataType(dataType, self.decimalDataType) ) { + if ( !CPTDataTypeEqualToDataType(dataType, self.decimalDataType)) { CPTMutableNumericData *mutableData = [data mutableCopy]; mutableData.dataType = self.decimalDataType; data = mutableData; @@ -881,7 +881,7 @@ -(BOOL)loadNumbersForAllFieldsFromDataSourceInRecordIndexRange:(NSRange)indexRan break; case CPTPlotCachePrecisionDecimal: - if ( !CPTDataTypeEqualToDataType(dataType, self.decimalDataType) ) { + if ( !CPTDataTypeEqualToDataType(dataType, self.decimalDataType)) { CPTMutableNumericData *mutableData = [data mutableCopy]; mutableData.dataType = self.decimalDataType; data = mutableData; @@ -889,7 +889,7 @@ -(BOOL)loadNumbersForAllFieldsFromDataSourceInRecordIndexRange:(NSRange)indexRan break; case CPTPlotCachePrecisionDouble: - if ( !CPTDataTypeEqualToDataType(dataType, self.doubleDataType) ) { + if ( !CPTDataTypeEqualToDataType(dataType, self.doubleDataType)) { CPTMutableNumericData *mutableData = [data mutableCopy]; mutableData.dataType = self.doubleDataType; data = mutableData; @@ -908,7 +908,7 @@ -(BOOL)loadNumbersForAllFieldsFromDataSourceInRecordIndexRange:(NSRange)indexRan for ( NSUInteger fieldNum = 0; fieldNum < fieldCount; fieldNum++ ) { NSMutableData *tempData = [[NSMutableData alloc] initWithLength:bufferLength]; - if ( CPTDataTypeEqualToDataType(dataType, self.doubleDataType) ) { + if ( CPTDataTypeEqualToDataType(dataType, self.doubleDataType)) { const double *sourceData = [data samplePointerAtIndex:0, fieldNum]; double *destData = tempData.mutableBytes; @@ -1141,7 +1141,7 @@ -(void)cacheNumbers:(nullable id)numbers forField:(NSUInteger)fieldEnum atRecord break; } - if ( mutableNumbers && (sampleCount > 0) ) { + if ( mutableNumbers && (sampleCount > 0)) { // Ensure the data cache exists and is the right size CPTMutableNumericData *cachedNumbers = (self.cachedData)[cacheKey]; if ( !cachedNumbers ) { @@ -1180,7 +1180,7 @@ -(nonnull CPTMutableNumericData *)numericDataForNumbers:(nonnull id)numbers mutableNumbers = [numbers mutableCopy]; // ensure the numeric data is in a supported format; default to double if not already NSDecimal if ( !CPTDataTypeEqualToDataType(mutableNumbers.dataType, self.decimalDataType) && - !CPTDataTypeEqualToDataType(mutableNumbers.dataType, self.doubleDataType) ) { + !CPTDataTypeEqualToDataType(mutableNumbers.dataType, self.doubleDataType)) { mutableNumbers.dataType = self.doubleDataType; } } @@ -1189,10 +1189,10 @@ -(nonnull CPTMutableNumericData *)numericDataForNumbers:(nonnull id)numbers mutableNumbers = [[CPTMutableNumericData alloc] initWithData:numbers dataType:loadedDataType shape:nil]; } else if ( [numbers isKindOfClass:[NSArray class]] ) { - if ( ( (CPTNumberArray *)numbers).count == 0 ) { + if (((CPTNumberArray *)numbers).count == 0 ) { loadedDataType = self.doubleDataType; } - else if ( [( (NSArray *)numbers)[0] isKindOfClass:[NSDecimalNumber class]] ) { + else if ( [((NSArray *)numbers)[0] isKindOfClass:[NSDecimalNumber class]] ) { loadedDataType = self.decimalDataType; } else { @@ -1221,7 +1221,7 @@ -(BOOL)doublePrecisionCache Class numberClass = [NSNumber class]; for ( id key in dataCache.allKeys ) { if ( [key isKindOfClass:numberClass] ) { - result = CPTDataTypeEqualToDataType( ( (CPTMutableNumericData *)dataCache[key]).dataType, self.doubleDataType); + result = CPTDataTypeEqualToDataType(((CPTMutableNumericData *)dataCache[key]).dataType, self.doubleDataType); break; } } @@ -1358,7 +1358,7 @@ -(CPTNumericDataType)doubleDataType static dispatch_once_t onceToken = 0; dispatch_once(&onceToken, ^{ - dataType = CPTDataType( CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent() ); + dataType = CPTDataType(CPTFloatingPointDataType, sizeof(double), CFByteOrderGetCurrent()); }); return dataType; @@ -1370,7 +1370,7 @@ -(CPTNumericDataType)decimalDataType static dispatch_once_t onceToken = 0; dispatch_once(&onceToken, ^{ - dataType = CPTDataType( CPTDecimalDataType, sizeof(NSDecimal), CFByteOrderGetCurrent() ); + dataType = CPTDataType(CPTDecimalDataType, sizeof(NSDecimal), CFByteOrderGetCurrent()); }); return dataType; @@ -1476,7 +1476,7 @@ -(nullable CPTPlotRange *)plotRangeForField:(NSUInteger)fieldEnum while ( doubles < lastSample ) { double value = *doubles++; - if ( !isnan(value) ) { + if ( !isnan(value)) { if ( value < min ) { min = value; } @@ -1500,17 +1500,17 @@ -(nullable CPTPlotRange *)plotRangeForField:(NSUInteger)fieldEnum while ( decimals < lastSample ) { NSDecimal value = *decimals++; - if ( !NSDecimalIsNotANumber(&value) ) { - if ( CPTDecimalLessThan(value, min) ) { + if ( !NSDecimalIsNotANumber(&value)) { + if ( CPTDecimalLessThan(value, min)) { min = value; } - if ( CPTDecimalGreaterThan(value, max) ) { + if ( CPTDecimalGreaterThan(value, max)) { max = value; } } } - if ( CPTDecimalGreaterThanOrEqualTo(max, min) ) { + if ( CPTDecimalGreaterThanOrEqualTo(max, min)) { range = [CPTPlotRange plotRangeWithLocationDecimal:min lengthDecimal:CPTDecimalSubtract(max, min)]; } } @@ -1620,7 +1620,7 @@ -(void)relabel } } - if ( !self.showLabels || (!hasCachedLabels && !plotProvidesLabels) ) { + if ( !self.showLabels || (!hasCachedLabels && !plotProvidesLabels)) { for ( CPTAnnotation *annotation in self.labelAnnotations ) { if ( [annotation isKindOfClass:annotationClass] ) { [self removeAnnotation:annotation]; @@ -1655,13 +1655,13 @@ -(void)relabel NSNumber *dataValue = [labelFieldDataCache sampleValue:i]; CPTLayer *newLabelLayer; - if ( isnan([dataValue doubleValue]) ) { + if ( isnan([dataValue doubleValue])) { newLabelLayer = nil; } else { newLabelLayer = [self cachedValueForKey:CPTPlotBindingDataLabels recordIndex:i]; - if ( ( (newLabelLayer == nil) || (newLabelLayer == nilObject) ) && plotProvidesLabels ) { + if (((newLabelLayer == nil) || (newLabelLayer == nilObject)) && plotProvidesLabels ) { if ( hasAttributedFormatter ) { NSAttributedString *labelString = [dataLabelFormatter attributedStringForObjectValue:dataValue withDefaultAttributes:textAttributes]; newLabelLayer = [[CPTTextLayer alloc] initWithAttributedText:labelString]; @@ -1672,7 +1672,7 @@ -(void)relabel } } - if ( [newLabelLayer isKindOfClass:nullClass] || (newLabelLayer == nilObject) ) { + if ( [newLabelLayer isKindOfClass:nullClass] || (newLabelLayer == nilObject)) { newLabelLayer = nil; } } @@ -1740,14 +1740,14 @@ -(void)updateContentAnchorForLabel:(nonnull CPTPlotSpaceAnnotation *)label { if ( label && self.adjustLabelAnchors ) { CGPoint displacement = label.displacement; - if ( CGPointEqualToPoint(displacement, CGPointZero) ) { + if ( CGPointEqualToPoint(displacement, CGPointZero)) { displacement.y = CPTFloat(1.0); // put the label above the data point if zero displacement } CGFloat angle = CPTFloat(M_PI) + atan2(displacement.y, displacement.x) - label.rotation; CGFloat newAnchorX = cos(angle); CGFloat newAnchorY = sin(angle); - if ( ABS(newAnchorX) <= ABS(newAnchorY) ) { + if ( ABS(newAnchorX) <= ABS(newAnchorY)) { newAnchorX /= ABS(newAnchorY); newAnchorY = signbit(newAnchorY) ? CPTFloat(-1.0) : CPTFloat(1.0); } @@ -1756,7 +1756,7 @@ -(void)updateContentAnchorForLabel:(nonnull CPTPlotSpaceAnnotation *)label newAnchorX = signbit(newAnchorX) ? CPTFloat(-1.0) : CPTFloat(1.0); } - label.contentAnchorPoint = CPTPointMake( ( newAnchorX + CPTFloat(1.0) ) / CPTFloat(2.0), ( newAnchorY + CPTFloat(1.0) ) / CPTFloat(2.0) ); + label.contentAnchorPoint = CPTPointMake((newAnchorX + CPTFloat(1.0)) / CPTFloat(2.0), (newAnchorY + CPTFloat(1.0)) / CPTFloat(2.0)); } } @@ -1925,7 +1925,7 @@ -(BOOL)pointingDeviceDownEvent:(nonnull CPTNativeEvent *)event atPoint:(CGPoint) if ( labelLayer && !labelLayer.hidden ) { CGPoint labelPoint = [theGraph convertPoint:interactionPoint toLayer:labelLayer]; - if ( CGRectContainsPoint(labelLayer.bounds, labelPoint) ) { + if ( CGRectContainsPoint(labelLayer.bounds, labelPoint)) { self.pointingDeviceDownLabelIndex = idx; BOOL handled = NO; @@ -2003,7 +2003,7 @@ -(BOOL)pointingDeviceUpEvent:(nonnull CPTNativeEvent *)event atPoint:(CGPoint)in if ( labelLayer && !labelLayer.hidden ) { CGPoint labelPoint = [theGraph convertPoint:interactionPoint toLayer:labelLayer]; - if ( CGRectContainsPoint(labelLayer.bounds, labelPoint) ) { + if ( CGRectContainsPoint(labelLayer.bounds, labelPoint)) { BOOL handled = NO; if ( [theDelegate respondsToSelector:@selector(plot:dataLabelTouchUpAtRecordIndex:)] ) { diff --git a/framework/Source/CPTPlotArea.m b/framework/Source/CPTPlotArea.m index dc98ebc9e..34f04616d 100644 --- a/framework/Source/CPTPlotArea.m +++ b/framework/Source/CPTPlotArea.m @@ -152,7 +152,7 @@ @implementation CPTPlotArea **/ -(nonnull instancetype)initWithFrame:(CGRect)newFrame { - if ( (self = [super initWithFrame:newFrame]) ) { + if ((self = [super initWithFrame:newFrame])) { minorGridLineGroup = nil; majorGridLineGroup = nil; axisSet = nil; @@ -162,7 +162,7 @@ -(nonnull instancetype)initWithFrame:(CGRect)newFrame fill = nil; touchedPoint = CPTPointMake(NAN, NAN); topDownLayerOrder = nil; - bottomUpLayerOrder = calloc( kCPTNumberOfLayers, sizeof(CPTGraphLayerType) ); + bottomUpLayerOrder = calloc(kCPTNumberOfLayers, sizeof(CPTGraphLayerType)); [self updateLayerOrder]; CPTPlotGroup *newPlotGroup = [[CPTPlotGroup alloc] initWithFrame:newFrame]; @@ -183,7 +183,7 @@ -(nonnull instancetype)initWithFrame:(CGRect)newFrame -(nonnull instancetype)initWithLayer:(nonnull id)layer { - if ( (self = [super initWithLayer:layer]) ) { + if ((self = [super initWithLayer:layer])) { CPTPlotArea *theLayer = (CPTPlotArea *)layer; minorGridLineGroup = theLayer->minorGridLineGroup; @@ -195,8 +195,8 @@ -(nonnull instancetype)initWithLayer:(nonnull id)layer fill = theLayer->fill; touchedPoint = theLayer->touchedPoint; topDownLayerOrder = theLayer->topDownLayerOrder; - bottomUpLayerOrder = calloc( kCPTNumberOfLayers, sizeof(CPTGraphLayerType) ); - memcpy( bottomUpLayerOrder, theLayer->bottomUpLayerOrder, kCPTNumberOfLayers * sizeof(CPTGraphLayerType) ); + bottomUpLayerOrder = calloc(kCPTNumberOfLayers, sizeof(CPTGraphLayerType)); + memcpy(bottomUpLayerOrder, theLayer->bottomUpLayerOrder, kCPTNumberOfLayers * sizeof(CPTGraphLayerType)); widthDecimal = theLayer->widthDecimal; heightDecimal = theLayer->heightDecimal; } @@ -238,7 +238,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super initWithCoder:coder]) ) { + if ((self = [super initWithCoder:coder])) { minorGridLineGroup = [coder decodeObjectOfClass:[CPTGridLineGroup class] forKey:@"CPTPlotArea.minorGridLineGroup"]; majorGridLineGroup = [coder decodeObjectOfClass:[CPTGridLineGroup class] @@ -256,7 +256,7 @@ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder topDownLayerOrder = [coder decodeObjectOfClasses:[NSSet setWithArray:@[[NSArray class], [NSNumber class]]] forKey:@"CPTPlotArea.topDownLayerOrder"]; - bottomUpLayerOrder = calloc( kCPTNumberOfLayers, sizeof(CPTGraphLayerType) ); + bottomUpLayerOrder = calloc(kCPTNumberOfLayers, sizeof(CPTGraphLayerType)); [self updateLayerOrder]; touchedPoint = CPTPointMake(NAN, NAN); @@ -710,7 +710,7 @@ -(BOOL)pointingDeviceDownEvent:(nonnull CPTNativeEvent *)event atPoint:(CGPoint) // Inform delegate if a point was hit CGPoint plotAreaPoint = [theGraph convertPoint:interactionPoint toLayer:self]; - if ( CGRectContainsPoint(self.bounds, plotAreaPoint) ) { + if ( CGRectContainsPoint(self.bounds, plotAreaPoint)) { self.touchedPoint = plotAreaPoint; if ( [theDelegate respondsToSelector:@selector(plotAreaTouchDown:)] ) { @@ -764,9 +764,9 @@ -(BOOL)pointingDeviceUpEvent:(nonnull CPTNativeEvent *)event atPoint:(CGPoint)in // Inform delegate if a point was hit CGPoint plotAreaPoint = [theGraph convertPoint:interactionPoint toLayer:self]; - if ( CGRectContainsPoint(self.bounds, plotAreaPoint) ) { + if ( CGRectContainsPoint(self.bounds, plotAreaPoint)) { CGVector offset = CGVectorMake(plotAreaPoint.x - lastPoint.x, plotAreaPoint.y - lastPoint.y); - if ( (offset.dx * offset.dx + offset.dy * offset.dy) <= CPTFloat(25.0) ) { + if ((offset.dx * offset.dx + offset.dy * offset.dy) <= CPTFloat(25.0)) { if ( [theDelegate respondsToSelector:@selector(plotAreaTouchUp:)] ) { [theDelegate plotAreaTouchUp:self]; } @@ -818,7 +818,7 @@ -(void)setFill:(nullable CPTFill *)newFill -(void)setMinorGridLineGroup:(nullable CPTGridLineGroup *)newGridLines { - if ( (newGridLines != minorGridLineGroup) || self.isUpdatingLayers ) { + if ((newGridLines != minorGridLineGroup) || self.isUpdatingLayers ) { [minorGridLineGroup removeFromSuperlayer]; minorGridLineGroup = newGridLines; if ( newGridLines ) { @@ -834,7 +834,7 @@ -(void)setMinorGridLineGroup:(nullable CPTGridLineGroup *)newGridLines -(void)setMajorGridLineGroup:(nullable CPTGridLineGroup *)newGridLines { - if ( (newGridLines != majorGridLineGroup) || self.isUpdatingLayers ) { + if ((newGridLines != majorGridLineGroup) || self.isUpdatingLayers ) { [majorGridLineGroup removeFromSuperlayer]; majorGridLineGroup = newGridLines; if ( newGridLines ) { @@ -850,7 +850,7 @@ -(void)setMajorGridLineGroup:(nullable CPTGridLineGroup *)newGridLines -(void)setAxisSet:(nullable CPTAxisSet *)newAxisSet { - if ( (newAxisSet != axisSet) || self.isUpdatingLayers ) { + if ((newAxisSet != axisSet) || self.isUpdatingLayers ) { [axisSet removeFromSuperlayer]; for ( CPTAxis *axis in axisSet.axes ) { axis.plotArea = nil; @@ -878,7 +878,7 @@ -(void)setAxisSet:(nullable CPTAxisSet *)newAxisSet -(void)setPlotGroup:(nullable CPTPlotGroup *)newPlotGroup { - if ( (newPlotGroup != plotGroup) || self.isUpdatingLayers ) { + if ((newPlotGroup != plotGroup) || self.isUpdatingLayers ) { [plotGroup removeFromSuperlayer]; plotGroup = newPlotGroup; if ( newPlotGroup ) { @@ -892,7 +892,7 @@ -(void)setPlotGroup:(nullable CPTPlotGroup *)newPlotGroup -(void)setAxisLabelGroup:(nullable CPTAxisLabelGroup *)newAxisLabelGroup { - if ( (newAxisLabelGroup != axisLabelGroup) || self.isUpdatingLayers ) { + if ((newAxisLabelGroup != axisLabelGroup) || self.isUpdatingLayers ) { [axisLabelGroup removeFromSuperlayer]; axisLabelGroup = newAxisLabelGroup; if ( newAxisLabelGroup ) { @@ -906,7 +906,7 @@ -(void)setAxisLabelGroup:(nullable CPTAxisLabelGroup *)newAxisLabelGroup -(void)setAxisTitleGroup:(nullable CPTAxisLabelGroup *)newAxisTitleGroup { - if ( (newAxisTitleGroup != axisTitleGroup) || self.isUpdatingLayers ) { + if ((newAxisTitleGroup != axisTitleGroup) || self.isUpdatingLayers ) { [axisTitleGroup removeFromSuperlayer]; axisTitleGroup = newAxisTitleGroup; if ( newAxisTitleGroup ) { @@ -939,7 +939,7 @@ -(void)setGraph:(nullable CPTGraph *)newGraph -(void)setBounds:(CGRect)newBounds { - if ( !CGRectEqualToRect(self.bounds, newBounds) ) { + if ( !CGRectEqualToRect(self.bounds, newBounds)) { self.widthDecimal = CPTDecimalFromCGFloat(newBounds.size.width); self.heightDecimal = CPTDecimalFromCGFloat(newBounds.size.height); diff --git a/framework/Source/CPTPlotAreaFrame.m b/framework/Source/CPTPlotAreaFrame.m index b706c27c5..c5723c6a0 100644 --- a/framework/Source/CPTPlotAreaFrame.m +++ b/framework/Source/CPTPlotAreaFrame.m @@ -56,7 +56,7 @@ @implementation CPTPlotAreaFrame **/ -(nonnull instancetype)initWithFrame:(CGRect)newFrame { - if ( (self = [super initWithFrame:newFrame]) ) { + if ((self = [super initWithFrame:newFrame])) { plotArea = nil; CPTPlotArea *newPlotArea = [[CPTPlotArea alloc] initWithFrame:newFrame]; @@ -74,7 +74,7 @@ -(nonnull instancetype)initWithFrame:(CGRect)newFrame -(nonnull instancetype)initWithLayer:(nonnull id)layer { - if ( (self = [super initWithLayer:layer]) ) { + if ((self = [super initWithLayer:layer])) { CPTPlotAreaFrame *theLayer = (CPTPlotAreaFrame *)layer; plotArea = theLayer->plotArea; @@ -98,7 +98,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super initWithCoder:coder]) ) { + if ((self = [super initWithCoder:coder])) { plotArea = [coder decodeObjectOfClass:[CPTPlotArea class] forKey:@"CPTPlotAreaFrame.plotArea"]; } diff --git a/framework/Source/CPTPlotGroup.m b/framework/Source/CPTPlotGroup.m index 09c4ea9e6..e2ce5f393 100644 --- a/framework/Source/CPTPlotGroup.m +++ b/framework/Source/CPTPlotGroup.m @@ -14,7 +14,7 @@ @implementation CPTPlotGroup -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super initWithCoder:coder]) ) { + if ((self = [super initWithCoder:coder])) { // support old archives if ( [coder containsValueForKey:@"CPTPlotGroup.identifier"] ) { self.identifier = [coder decodeObjectOfClass:[NSObject class] diff --git a/framework/Source/CPTPlotRange.m b/framework/Source/CPTPlotRange.m index df3932021..81552a5c1 100644 --- a/framework/Source/CPTPlotRange.m +++ b/framework/Source/CPTPlotRange.m @@ -167,7 +167,7 @@ -(nonnull instancetype)initWithLocation:(nonnull NSNumber *)loc length:(nonnull **/ -(nonnull instancetype)initWithLocationDecimal:(NSDecimal)loc lengthDecimal:(NSDecimal)len { - if ( (self = [super init]) ) { + if ((self = [super init])) { self.locationDecimal = loc; self.lengthDecimal = len; } @@ -204,7 +204,7 @@ -(NSNumber *)location -(void)setLocationDecimal:(NSDecimal)newLocation { - if ( !CPTDecimalEquals(locationDecimal, newLocation) ) { + if ( !CPTDecimalEquals(locationDecimal, newLocation)) { locationDecimal = newLocation; if ( !self.inValueUpdate ) { @@ -231,7 +231,7 @@ -(NSNumber *)length -(void)setLengthDecimal:(NSDecimal)newLength { - if ( !CPTDecimalEquals(lengthDecimal, newLength) ) { + if ( !CPTDecimalEquals(lengthDecimal, newLength)) { lengthDecimal = newLength; if ( !self.inValueUpdate ) { @@ -276,7 +276,7 @@ -(NSDecimal)minLimitDecimal NSDecimal loc = self.locationDecimal; NSDecimal len = self.lengthDecimal; - if ( CPTDecimalLessThan( len, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalLessThan(len, CPTDecimalFromInteger(0))) { return CPTDecimalAdd(loc, len); } else { @@ -304,7 +304,7 @@ -(NSNumber *)midPoint -(NSDecimal)midPointDecimal { - return CPTDecimalAdd( self.locationDecimal, CPTDecimalDivide( self.lengthDecimal, CPTDecimalFromInteger(2) ) ); + return CPTDecimalAdd(self.locationDecimal, CPTDecimalDivide(self.lengthDecimal, CPTDecimalFromInteger(2))); } -(double)midPointDouble @@ -322,7 +322,7 @@ -(NSDecimal)maxLimitDecimal NSDecimal loc = self.locationDecimal; NSDecimal len = self.lengthDecimal; - if ( CPTDecimalGreaterThan( len, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalGreaterThan(len, CPTDecimalFromInteger(0))) { return CPTDecimalAdd(loc, len); } else { @@ -404,7 +404,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)encoder */ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)decoder { - if ( (self = [super init]) ) { + if ((self = [super init])) { self.locationDecimal = [decoder decodeDecimalForKey:@"CPTPlotRange.location"]; self.lengthDecimal = [decoder decodeDecimalForKey:@"CPTPlotRange.length"]; } @@ -538,7 +538,7 @@ -(CPTPlotRangeComparisonResult)compareToDecimal:(NSDecimal)number if ( [self contains:number] ) { result = CPTPlotRangeComparisonResultNumberInRange; } - else if ( CPTDecimalLessThan(number, self.minLimitDecimal) ) { + else if ( CPTDecimalLessThan(number, self.minLimitDecimal)) { result = CPTPlotRangeComparisonResultNumberBelowRange; } else { diff --git a/framework/Source/CPTPlotRangeTests.m b/framework/Source/CPTPlotRangeTests.m index 0701a3d48..94bb528be 100644 --- a/framework/Source/CPTPlotRangeTests.m +++ b/framework/Source/CPTPlotRangeTests.m @@ -423,11 +423,11 @@ -(void)checkRangeWithLocation:(double)loc length:(double)len NSDecimal newLocation = self.plotRange.locationDecimal; errMessage = [NSString stringWithFormat:@"expected location = %g, was %@", loc, NSDecimalString(&newLocation, nil)]; - XCTAssertTrue(CPTDecimalEquals( newLocation, CPTDecimalFromDouble(loc) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals(newLocation, CPTDecimalFromDouble(loc)), @"%@", errMessage); NSDecimal newLength = self.plotRange.lengthDecimal; errMessage = [NSString stringWithFormat:@"expected location = %g, was %@", loc, NSDecimalString(&newLength, nil)]; - XCTAssertTrue(CPTDecimalEquals( newLength, CPTDecimalFromDouble(len) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals(newLength, CPTDecimalFromDouble(len)), @"%@", errMessage); } @end diff --git a/framework/Source/CPTPlotSpace.m b/framework/Source/CPTPlotSpace.m index 83c4d628a..738a85ad7 100644 --- a/framework/Source/CPTPlotSpace.m +++ b/framework/Source/CPTPlotSpace.m @@ -92,7 +92,7 @@ @implementation CPTPlotSpace **/ -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { identifier = nil; allowsUserInteraction = NO; isDragging = NO; @@ -143,7 +143,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder */ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super init]) ) { + if ((self = [super init])) { graph = [coder decodeObjectOfClass:[CPTGraph class] forKey:@"CPTPlotSpace.graph"]; identifier = [[coder decodeObjectOfClass:[NSObject class] @@ -666,7 +666,7 @@ -(void)scaleToFitPlots:(nullable CPTPlotArray *)plots forCoordinate:(CPTCoordina // Set range if ( unionRange ) { - if ( CPTDecimalEquals( unionRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalEquals(unionRange.lengthDecimal, CPTDecimalFromInteger(0))) { [unionRange unionPlotRange:[self plotRangeForCoordinate:coordinate]]; } [self setPlotRange:unionRange forCoordinate:coordinate]; @@ -702,7 +702,7 @@ -(void)scaleToFitEntirePlots:(nullable CPTPlotArray *)plots forCoordinate:(CPTCo // Set range if ( unionRange ) { - if ( CPTDecimalEquals( unionRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalEquals(unionRange.lengthDecimal, CPTDecimalFromInteger(0))) { [unionRange unionPlotRange:[self plotRangeForCoordinate:coordinate]]; } [self setPlotRange:unionRange forCoordinate:coordinate]; diff --git a/framework/Source/CPTPlotSpaceAnnotation.m b/framework/Source/CPTPlotSpaceAnnotation.m index f3508f7b7..db08c4303 100644 --- a/framework/Source/CPTPlotSpaceAnnotation.m +++ b/framework/Source/CPTPlotSpaceAnnotation.m @@ -60,7 +60,7 @@ -(nonnull instancetype)initWithPlotSpace:(nonnull CPTPlotSpace *)newPlotSpace an { NSParameterAssert(newPlotSpace); - if ( (self = [super init]) ) { + if ((self = [super init])) { plotSpace = newPlotSpace; self.anchorPlotPoint = newPlotPoint; @@ -112,7 +112,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder */ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super initWithCoder:coder]) ) { + if ((self = [super initWithCoder:coder])) { self.anchorPlotPoint = [[coder decodeObjectOfClasses:[NSSet setWithArray:@[[NSArray class], [NSNumber class]]] forKey:@"CPTPlotSpaceAnnotation.anchorPlotPoint"] copy]; @@ -180,7 +180,7 @@ -(void)positionContentLayer content.anchorPoint = self.contentAnchorPoint; content.position = newPosition; - content.transform = CATransform3DMakeRotation( self.rotation, CPTFloat(0.0), CPTFloat(0.0), CPTFloat(1.0) ); + content.transform = CATransform3DMakeRotation(self.rotation, CPTFloat(0.0), CPTFloat(0.0), CPTFloat(1.0)); [content pixelAlign]; } } @@ -201,7 +201,7 @@ -(void)setAnchorPlotPoint:(nullable CPTNumberArray *)newPlotPoint self.anchorCount = anchorPlotPoint.count; - NSDecimal *decimalPoint = calloc( self.anchorCount, sizeof(NSDecimal) ); + NSDecimal *decimalPoint = calloc(self.anchorCount, sizeof(NSDecimal)); for ( NSUInteger i = 0; i < self.anchorCount; i++ ) { decimalPoint[i] = anchorPlotPoint[i].decimalValue; } diff --git a/framework/Source/CPTPlotSymbol.m b/framework/Source/CPTPlotSymbol.m index b37dd0359..9bae6be66 100644 --- a/framework/Source/CPTPlotSymbol.m +++ b/framework/Source/CPTPlotSymbol.m @@ -98,7 +98,7 @@ @implementation CPTPlotSymbol **/ -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { anchorPoint = CPTPointMake(0.5, 0.5); size = CPTSizeMake(5.0, 5.0); symbolType = CPTPlotSymbolTypeNone; @@ -151,7 +151,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super init]) ) { + if ((self = [super init])) { anchorPoint = [coder decodeCPTPointForKey:@"CPTPlotSymbol.anchorPoint"]; size = [coder decodeCPTSizeForKey:@"CPTPlotSymbol.size"]; symbolType = (CPTPlotSymbolType)[coder decodeIntegerForKey:@"CPTPlotSymbol.symbolType"]; @@ -192,7 +192,7 @@ +(BOOL)supportsSecureCoding -(void)setSize:(CGSize)newSize { - if ( !CGSizeEqualToSize(newSize, size) ) { + if ( !CGSizeEqualToSize(newSize, size)) { size = newSize; self.cachedSymbolPath = NULL; } @@ -479,7 +479,7 @@ -(void)renderInContext:(nonnull CGContextRef)context atPoint:(CGPoint)center sca CGLayerRef theCachedLayer = self.cachedLayer; CGFloat theCachedScale = self.cachedScale; - if ( !theCachedLayer || (theCachedScale != scale) ) { + if ( !theCachedLayer || (theCachedScale != scale)) { CGSize layerSize = [self layerSizeForScale:scale]; self.anchorPoint = CPTPointMake(0.5, 0.5); @@ -488,7 +488,7 @@ -(void)renderInContext:(nonnull CGContextRef)context atPoint:(CGPoint)center sca CGContextRef layerContext = CGLayerGetContext(newLayer); [self renderAsVectorInContext:layerContext - atPoint:CPTPointMake( layerSize.width * CPTFloat(0.5), layerSize.height * CPTFloat(0.5) ) + atPoint:CPTPointMake(layerSize.width * CPTFloat(0.5), layerSize.height * CPTFloat(0.5)) scale:scale]; self.cachedLayer = newLayer; @@ -500,18 +500,18 @@ -(void)renderInContext:(nonnull CGContextRef)context atPoint:(CGPoint)center sca if ( theCachedLayer ) { CGSize layerSize = CGLayerGetSize(theCachedLayer); - if ( scale != CPTFloat(1.0) ) { + if ( scale != CPTFloat(1.0)) { layerSize.width /= scale; layerSize.height /= scale; } CGSize symbolSize = self.size; - CGPoint origin = CPTPointMake( center.x - layerSize.width * CPTFloat(0.5) - symbolSize.width * ( symbolAnchor.x - CPTFloat(0.5) ), - center.y - layerSize.height * CPTFloat(0.5) - symbolSize.height * ( symbolAnchor.y - CPTFloat(0.5) ) ); + CGPoint origin = CPTPointMake(center.x - layerSize.width * CPTFloat(0.5) - symbolSize.width * (symbolAnchor.x - CPTFloat(0.5)), + center.y - layerSize.height * CPTFloat(0.5) - symbolSize.height * (symbolAnchor.y - CPTFloat(0.5))); if ( alignToPixels ) { - if ( scale == CPTFloat(1.0) ) { + if ( scale == CPTFloat(1.0)) { origin.x = round(origin.x); origin.y = round(origin.y); } @@ -599,12 +599,12 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context atPoint:(CGPoint)ce CPTShadow *myShadow = self.shadow; CGContextSaveGState(context); - CGContextTranslateCTM(context, center.x + ( symbolAnchor.x - CPTFloat(0.5) ) * symbolSize.width, center.y + ( symbolAnchor.y - CPTFloat(0.5) ) * symbolSize.height); + CGContextTranslateCTM(context, center.x + (symbolAnchor.x - CPTFloat(0.5)) * symbolSize.width, center.y + (symbolAnchor.y - CPTFloat(0.5)) * symbolSize.height); CGContextScaleCTM(context, scale, scale); [myShadow setShadowInContext:context]; // redraw only symbol rectangle - CGSize halfSize = CPTSizeMake( symbolSize.width * CPTFloat(0.5), symbolSize.height * CPTFloat(0.5) ); + CGSize halfSize = CPTSizeMake(symbolSize.width * CPTFloat(0.5), symbolSize.height * CPTFloat(0.5)); CGRect bounds = CPTRectMake(-halfSize.width, -halfSize.height, symbolSize.width, symbolSize.height); CGRect symbolRect = bounds; @@ -612,7 +612,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context atPoint:(CGPoint)ce if ( myShadow ) { CGFloat shadowRadius = myShadow.shadowBlurRadius; CGSize shadowOffset = myShadow.shadowOffset; - symbolRect = CGRectInset( symbolRect, -( ABS(shadowOffset.width) + ABS(shadowRadius) ), -( ABS(shadowOffset.height) + ABS(shadowRadius) ) ); + symbolRect = CGRectInset(symbolRect, -(ABS(shadowOffset.width) + ABS(shadowRadius)), -(ABS(shadowOffset.height) + ABS(shadowRadius))); } if ( theLineStyle ) { CGFloat lineWidth = ABS(theLineStyle.lineWidth); @@ -626,7 +626,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context atPoint:(CGPoint)ce if ( theFill ) { // use fillRect instead of fillPath so that images and gradients are properly centered in the symbol CGContextSaveGState(context); - if ( !CGPathIsEmpty(theSymbolPath) ) { + if ( !CGPathIsEmpty(theSymbolPath)) { CGContextBeginPath(context); CGContextAddPath(context, theSymbolPath); if ( self.usesEvenOddClipRule ) { @@ -666,7 +666,7 @@ -(nonnull CGPathRef)newSymbolPath { CGFloat dx, dy; CGSize symbolSize = self.size; - CGSize halfSize = CPTSizeMake( symbolSize.width * CPTFloat(0.5), symbolSize.height * CPTFloat(0.5) ); + CGSize halfSize = CPTSizeMake(symbolSize.width * CPTFloat(0.5), symbolSize.height * CPTFloat(0.5)); CGMutablePathRef symbolPath = CGPathCreateMutable(); @@ -676,11 +676,11 @@ -(nonnull CGPathRef)newSymbolPath break; case CPTPlotSymbolTypeRectangle: - CGPathAddRect( symbolPath, NULL, CPTRectMake(-halfSize.width, -halfSize.height, symbolSize.width, symbolSize.height) ); + CGPathAddRect(symbolPath, NULL, CPTRectMake(-halfSize.width, -halfSize.height, symbolSize.width, symbolSize.height)); break; case CPTPlotSymbolTypeEllipse: - CGPathAddEllipseInRect( symbolPath, NULL, CPTRectMake(-halfSize.width, -halfSize.height, symbolSize.width, symbolSize.height) ); + CGPathAddEllipseInRect(symbolPath, NULL, CPTRectMake(-halfSize.width, -halfSize.height, symbolSize.width, symbolSize.height)); break; case CPTPlotSymbolTypeCross: @@ -693,38 +693,38 @@ -(nonnull CGPathRef)newSymbolPath case CPTPlotSymbolTypePlus: CGPathMoveToPoint(symbolPath, NULL, CPTFloat(0.0), halfSize.height); CGPathAddLineToPoint(symbolPath, NULL, CPTFloat(0.0), -halfSize.height); - CGPathMoveToPoint( symbolPath, NULL, -halfSize.width, CPTFloat(0.0) ); - CGPathAddLineToPoint( symbolPath, NULL, halfSize.width, CPTFloat(0.0) ); + CGPathMoveToPoint(symbolPath, NULL, -halfSize.width, CPTFloat(0.0)); + CGPathAddLineToPoint(symbolPath, NULL, halfSize.width, CPTFloat(0.0)); break; case CPTPlotSymbolTypePentagon: CGPathMoveToPoint(symbolPath, NULL, CPTFloat(0.0), halfSize.height); - CGPathAddLineToPoint( symbolPath, NULL, halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); - CGPathAddLineToPoint( symbolPath, NULL, halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); - CGPathAddLineToPoint( symbolPath, NULL, -halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); - CGPathAddLineToPoint( symbolPath, NULL, -halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); + CGPathAddLineToPoint(symbolPath, NULL, halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437)); + CGPathAddLineToPoint(symbolPath, NULL, halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437)); + CGPathAddLineToPoint(symbolPath, NULL, -halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437)); + CGPathAddLineToPoint(symbolPath, NULL, -halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437)); CGPathCloseSubpath(symbolPath); break; case CPTPlotSymbolTypeStar: CGPathMoveToPoint(symbolPath, NULL, CPTFloat(0.0), halfSize.height); - CGPathAddLineToPoint( symbolPath, NULL, halfSize.width * CPTFloat(0.22451398829), halfSize.height * CPTFloat(0.30901699437) ); - CGPathAddLineToPoint( symbolPath, NULL, halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); - CGPathAddLineToPoint( symbolPath, NULL, halfSize.width * CPTFloat(0.36327126400), -halfSize.height * CPTFloat(0.11803398875) ); - CGPathAddLineToPoint( symbolPath, NULL, halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); - CGPathAddLineToPoint( symbolPath, NULL, CPTFloat(0.0), -halfSize.height * CPTFloat(0.38196601125) ); - CGPathAddLineToPoint( symbolPath, NULL, -halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437) ); - CGPathAddLineToPoint( symbolPath, NULL, -halfSize.width * CPTFloat(0.36327126400), -halfSize.height * CPTFloat(0.11803398875) ); - CGPathAddLineToPoint( symbolPath, NULL, -halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437) ); - CGPathAddLineToPoint( symbolPath, NULL, -halfSize.width * CPTFloat(0.22451398829), halfSize.height * CPTFloat(0.30901699437) ); + CGPathAddLineToPoint(symbolPath, NULL, halfSize.width * CPTFloat(0.22451398829), halfSize.height * CPTFloat(0.30901699437)); + CGPathAddLineToPoint(symbolPath, NULL, halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437)); + CGPathAddLineToPoint(symbolPath, NULL, halfSize.width * CPTFloat(0.36327126400), -halfSize.height * CPTFloat(0.11803398875)); + CGPathAddLineToPoint(symbolPath, NULL, halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437)); + CGPathAddLineToPoint(symbolPath, NULL, CPTFloat(0.0), -halfSize.height * CPTFloat(0.38196601125)); + CGPathAddLineToPoint(symbolPath, NULL, -halfSize.width * CPTFloat(0.58778525229), -halfSize.height * CPTFloat(0.80901699437)); + CGPathAddLineToPoint(symbolPath, NULL, -halfSize.width * CPTFloat(0.36327126400), -halfSize.height * CPTFloat(0.11803398875)); + CGPathAddLineToPoint(symbolPath, NULL, -halfSize.width * CPTFloat(0.95105651630), halfSize.height * CPTFloat(0.30901699437)); + CGPathAddLineToPoint(symbolPath, NULL, -halfSize.width * CPTFloat(0.22451398829), halfSize.height * CPTFloat(0.30901699437)); CGPathCloseSubpath(symbolPath); break; case CPTPlotSymbolTypeDiamond: CGPathMoveToPoint(symbolPath, NULL, CPTFloat(0.0), halfSize.height); - CGPathAddLineToPoint( symbolPath, NULL, halfSize.width, CPTFloat(0.0) ); + CGPathAddLineToPoint(symbolPath, NULL, halfSize.width, CPTFloat(0.0)); CGPathAddLineToPoint(symbolPath, NULL, CPTFloat(0.0), -halfSize.height); - CGPathAddLineToPoint( symbolPath, NULL, -halfSize.width, CPTFloat(0.0) ); + CGPathAddLineToPoint(symbolPath, NULL, -halfSize.width, CPTFloat(0.0)); CGPathCloseSubpath(symbolPath); break; @@ -739,8 +739,8 @@ -(nonnull CGPathRef)newSymbolPath break; case CPTPlotSymbolTypeDash: - CGPathMoveToPoint( symbolPath, NULL, halfSize.width, CPTFloat(0.0) ); - CGPathAddLineToPoint( symbolPath, NULL, -halfSize.width, CPTFloat(0.0) ); + CGPathMoveToPoint(symbolPath, NULL, halfSize.width, CPTFloat(0.0)); + CGPathAddLineToPoint(symbolPath, NULL, -halfSize.width, CPTFloat(0.0)); break; case CPTPlotSymbolTypeHexagon: @@ -777,8 +777,8 @@ -(nonnull CGPathRef)newSymbolPath CGFloat dy1 = symbolSize.height / oldBounds.size.height; CGAffineTransform scaleTransform = CGAffineTransformScale(CGAffineTransformIdentity, dx1, dy1); - scaleTransform = CGAffineTransformConcat( scaleTransform, - CGAffineTransformMakeTranslation(-halfSize.width, -halfSize.height) ); + scaleTransform = CGAffineTransformConcat(scaleTransform, + CGAffineTransformMakeTranslation(-halfSize.width, -halfSize.height)); CGPathAddPath(symbolPath, &scaleTransform, customPath); } } @@ -808,7 +808,7 @@ -(nullable id)debugQuickLookObject self.anchorPoint = CPTPointMake(0.5, 0.5); - [self renderAsVectorInContext:context atPoint:CGPointMake( CGRectGetMidX(bounds), CGRectGetMidY(bounds) ) scale:scale]; + [self renderAsVectorInContext:context atPoint:CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds)) scale:scale]; self.anchorPoint = symbolAnchor; }); diff --git a/framework/Source/CPTRangePlot.m b/framework/Source/CPTRangePlot.m index c996e4a96..60249e1f2 100644 --- a/framework/Source/CPTRangePlot.m +++ b/framework/Source/CPTRangePlot.m @@ -172,7 +172,7 @@ +(void)initialize **/ -(nonnull instancetype)initWithFrame:(CGRect)newFrame { - if ( (self = [super initWithFrame:newFrame]) ) { + if ((self = [super initWithFrame:newFrame])) { barLineStyle = [[CPTLineStyle alloc] init]; areaFill = nil; areaBorderLineStyle = nil; @@ -190,7 +190,7 @@ -(nonnull instancetype)initWithFrame:(CGRect)newFrame -(nonnull instancetype)initWithLayer:(nonnull id)layer { - if ( (self = [super initWithLayer:layer]) ) { + if ((self = [super initWithLayer:layer])) { CPTRangePlot *theLayer = (CPTRangePlot *)layer; barLineStyle = theLayer->barLineStyle; @@ -226,7 +226,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super initWithCoder:coder]) ) { + if ((self = [super initWithCoder:coder])) { barLineStyle = [[coder decodeObjectOfClass:[CPTLineStyle class] forKey:@"CPTRangePlot.barLineStyle"] copy]; barWidth = [coder decodeCGFloatForKey:@"CPTRangePlot.barWidth"]; @@ -274,9 +274,9 @@ -(void)calculatePointsToDraw:(nonnull BOOL *)pointDrawFlags numberOfPoints:(NSUI } } else { - CPTPlotRangeComparisonResult *xRangeFlags = calloc( dataCount, sizeof(CPTPlotRangeComparisonResult) ); - CPTPlotRangeComparisonResult *yRangeFlags = calloc( dataCount, sizeof(CPTPlotRangeComparisonResult) ); - BOOL *nanFlags = calloc( dataCount, sizeof(BOOL) ); + CPTPlotRangeComparisonResult *xRangeFlags = calloc(dataCount, sizeof(CPTPlotRangeComparisonResult)); + CPTPlotRangeComparisonResult *yRangeFlags = calloc(dataCount, sizeof(CPTPlotRangeComparisonResult)); + BOOL *nanFlags = calloc(dataCount, sizeof(BOOL)); CPTPlotRange *xRange = xyPlotSpace.xRange; CPTPlotRange *yRange = xyPlotSpace.yRange; @@ -343,7 +343,7 @@ -(void)calculateViewPoints:(nonnull CGPointError *)viewPoints withDrawPointFlags const double low = lowBytes[i]; const double left = leftBytes[i]; const double right = rightBytes[i]; - if ( !drawPointFlags[i] || isnan(x) || isnan(y) ) { + if ( !drawPointFlags[i] || isnan(x) || isnan(y)) { viewPoints[i].x = CPTNAN; // depending coordinates viewPoints[i].y = CPTNAN; } @@ -393,7 +393,7 @@ -(void)calculateViewPoints:(nonnull CGPointError *)viewPoints withDrawPointFlags const NSDecimal left = leftBytes[i]; const NSDecimal right = rightBytes[i]; - if ( !drawPointFlags[i] || NSDecimalIsNotANumber(&x) || NSDecimalIsNotANumber(&y) ) { + if ( !drawPointFlags[i] || NSDecimalIsNotANumber(&x) || NSDecimalIsNotANumber(&y)) { viewPoints[i].x = CPTNAN; // depending coordinates viewPoints[i].y = CPTNAN; } @@ -405,7 +405,7 @@ -(void)calculateViewPoints:(nonnull CGPointError *)viewPoints withDrawPointFlags viewPoints[i].x = pos.x; viewPoints[i].y = pos.y; - if ( !NSDecimalIsNotANumber(&high) ) { + if ( !NSDecimalIsNotANumber(&high)) { plotPoint[CPTCoordinateX] = x; NSDecimal yh; NSDecimalAdd(&yh, &y, &high, NSRoundPlain); @@ -417,7 +417,7 @@ -(void)calculateViewPoints:(nonnull CGPointError *)viewPoints withDrawPointFlags viewPoints[i].high = CPTNAN; } - if ( !NSDecimalIsNotANumber(&low) ) { + if ( !NSDecimalIsNotANumber(&low)) { plotPoint[CPTCoordinateX] = x; NSDecimal yl; NSDecimalSubtract(&yl, &y, &low, NSRoundPlain); @@ -429,7 +429,7 @@ -(void)calculateViewPoints:(nonnull CGPointError *)viewPoints withDrawPointFlags viewPoints[i].low = CPTNAN; } - if ( !NSDecimalIsNotANumber(&left) ) { + if ( !NSDecimalIsNotANumber(&left)) { NSDecimal xl; NSDecimalSubtract(&xl, &x, &left, NSRoundPlain); plotPoint[CPTCoordinateX] = xl; @@ -440,7 +440,7 @@ -(void)calculateViewPoints:(nonnull CGPointError *)viewPoints withDrawPointFlags else { viewPoints[i].left = CPTNAN; } - if ( !NSDecimalIsNotANumber(&right) ) { + if ( !NSDecimalIsNotANumber(&right)) { NSDecimal xr; NSDecimalAdd(&xr, &x, &right, NSRoundPlain); plotPoint[CPTCoordinateX] = xr; @@ -460,22 +460,22 @@ -(void)alignViewPointsToUserSpace:(nonnull CGPointError *)viewPoints withContext { // Align to device pixels if there is a data line. // Otherwise, align to view space, so fills are sharp at edges. - if ( self.barLineStyle.lineWidth > CPTFloat(0.0) ) { + if ( self.barLineStyle.lineWidth > CPTFloat(0.0)) { dispatch_apply(dataCount, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(size_t i) { if ( drawPointFlags[i] ) { CGFloat x = viewPoints[i].x; CGFloat y = viewPoints[i].y; - CGPoint pos = CPTAlignPointToUserSpace( context, CPTPointMake(viewPoints[i].x, viewPoints[i].y) ); + CGPoint pos = CPTAlignPointToUserSpace(context, CPTPointMake(viewPoints[i].x, viewPoints[i].y)); viewPoints[i].x = pos.x; viewPoints[i].y = pos.y; - pos = CPTAlignPointToUserSpace( context, CPTPointMake(x, viewPoints[i].high) ); + pos = CPTAlignPointToUserSpace(context, CPTPointMake(x, viewPoints[i].high)); viewPoints[i].high = pos.y; - pos = CPTAlignPointToUserSpace( context, CPTPointMake(x, viewPoints[i].low) ); + pos = CPTAlignPointToUserSpace(context, CPTPointMake(x, viewPoints[i].low)); viewPoints[i].low = pos.y; - pos = CPTAlignPointToUserSpace( context, CPTPointMake(viewPoints[i].left, y) ); + pos = CPTAlignPointToUserSpace(context, CPTPointMake(viewPoints[i].left, y)); viewPoints[i].left = pos.x; - pos = CPTAlignPointToUserSpace( context, CPTPointMake(viewPoints[i].right, y) ); + pos = CPTAlignPointToUserSpace(context, CPTPointMake(viewPoints[i].right, y)); viewPoints[i].right = pos.x; } }); @@ -485,17 +485,17 @@ -(void)alignViewPointsToUserSpace:(nonnull CGPointError *)viewPoints withContext if ( drawPointFlags[i] ) { CGFloat x = viewPoints[i].x; CGFloat y = viewPoints[i].y; - CGPoint pos = CPTAlignIntegralPointToUserSpace( context, CPTPointMake(viewPoints[i].x, viewPoints[i].y) ); + CGPoint pos = CPTAlignIntegralPointToUserSpace(context, CPTPointMake(viewPoints[i].x, viewPoints[i].y)); viewPoints[i].x = pos.x; viewPoints[i].y = pos.y; - pos = CPTAlignIntegralPointToUserSpace( context, CPTPointMake(x, viewPoints[i].high) ); + pos = CPTAlignIntegralPointToUserSpace(context, CPTPointMake(x, viewPoints[i].high)); viewPoints[i].high = pos.y; - pos = CPTAlignIntegralPointToUserSpace( context, CPTPointMake(x, viewPoints[i].low) ); + pos = CPTAlignIntegralPointToUserSpace(context, CPTPointMake(x, viewPoints[i].low)); viewPoints[i].low = pos.y; - pos = CPTAlignIntegralPointToUserSpace( context, CPTPointMake(viewPoints[i].left, y) ); + pos = CPTAlignIntegralPointToUserSpace(context, CPTPointMake(viewPoints[i].left, y)); viewPoints[i].left = pos.x; - pos = CPTAlignIntegralPointToUserSpace( context, CPTPointMake(viewPoints[i].right, y) ); + pos = CPTAlignIntegralPointToUserSpace(context, CPTPointMake(viewPoints[i].right, y)); viewPoints[i].right = pos.x; } }); @@ -514,7 +514,7 @@ -(NSInteger)extremeDrawnPointIndexForFlags:(nonnull BOOL *)pointDrawFlags number result = i; break; } - if ( (delta < 0) && (i == 0) ) { + if ((delta < 0) && (i == 0)) { break; } } @@ -637,7 +637,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context CPTMutableNumericData *xValueData = [self cachedNumbersForField:CPTRangePlotFieldX]; CPTMutableNumericData *yValueData = [self cachedNumbersForField:CPTRangePlotFieldY]; - if ( (xValueData == nil) || (yValueData == nil) ) { + if ((xValueData == nil) || (yValueData == nil)) { return; } NSUInteger dataCount = self.cachedDataCount; @@ -651,8 +651,8 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context [super renderAsVectorInContext:context]; // Calculate view points, and align to user space - CGPointError *viewPoints = calloc( dataCount, sizeof(CGPointError) ); - BOOL *drawPointFlags = calloc( dataCount, sizeof(BOOL) ); + CGPointError *viewPoints = calloc(dataCount, sizeof(CGPointError)); + BOOL *drawPointFlags = calloc(dataCount, sizeof(BOOL)); CPTXYPlotSpace *thePlotSpace = (CPTXYPlotSpace *)self.plotSpace; [self calculatePointsToDraw:drawPointFlags numberOfPoints:dataCount forPlotSpace:thePlotSpace includeVisiblePointsOnly:NO]; @@ -673,11 +673,11 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context for ( NSUInteger i = (NSUInteger)firstDrawnPointIndex; i <= (NSUInteger)lastDrawnPointIndex; i++ ) { CGFloat x = viewPoints[i].x; CGFloat y = viewPoints[i].high; - if ( isnan(y) ) { + if ( isnan(y)) { y = viewPoints[i].y; } - if ( !isnan(x) && !isnan(y) ) { + if ( !isnan(x) && !isnan(y)) { if ( i == (NSUInteger)firstDrawnPointIndex ) { CGPathMoveToPoint(fillPath, NULL, x, y); } @@ -691,11 +691,11 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context for ( NSUInteger j = (NSUInteger)lastDrawnPointIndex; j >= (NSUInteger)firstDrawnPointIndex; j-- ) { CGFloat x = viewPoints[j].x; CGFloat y = viewPoints[j].low; - if ( isnan(y) ) { + if ( isnan(y)) { y = viewPoints[j].y; } - if ( !isnan(x) && !isnan(y) ) { + if ( !isnan(x) && !isnan(y)) { CGPathAddLineToPoint(fillPath, NULL, x, y); } if ( j == (NSUInteger)firstDrawnPointIndex ) { @@ -724,7 +724,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context CGPathRelease(fillPath); } - CGSize halfGapSize = CPTSizeMake( self.gapWidth * CPTFloat(0.5), self.gapHeight * CPTFloat(0.5) ); + CGSize halfGapSize = CPTSizeMake(self.gapWidth * CPTFloat(0.5), self.gapHeight * CPTFloat(0.5)); CGFloat halfBarWidth = self.barWidth * CPTFloat(0.5); BOOL alignPoints = self.alignsPointsToPixels; @@ -749,18 +749,18 @@ -(void)drawRangeInContext:(nonnull CGContextRef)context halfBarWidth:(CGFloat)halfBarWidth alignPoints:(BOOL)alignPoints { - if ( [lineStyle isKindOfClass:[CPTLineStyle class]] && !isnan(viewPoint->x) && !isnan(viewPoint->y) ) { + if ( [lineStyle isKindOfClass:[CPTLineStyle class]] && !isnan(viewPoint->x) && !isnan(viewPoint->y)) { CPTAlignPointFunction alignmentFunction = CPTAlignPointToUserSpace; CGFloat lineWidth = lineStyle.lineWidth; - if ( ( self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { + if ((self.contentsScale > CPTFloat(1.0)) && (round(lineWidth) == lineWidth)) { alignmentFunction = CPTAlignIntegralPointToUserSpace; } CGMutablePathRef path = CGPathCreateMutable(); // centre-high - if ( !isnan(viewPoint->high) ) { + if ( !isnan(viewPoint->high)) { CGPoint alignedHighPoint = CPTPointMake(viewPoint->x, viewPoint->y + halfGapSize.height); CGPoint alignedLowPoint = CPTPointMake(viewPoint->x, viewPoint->high); if ( alignPoints ) { @@ -772,7 +772,7 @@ -(void)drawRangeInContext:(nonnull CGContextRef)context } // centre-low - if ( !isnan(viewPoint->low) ) { + if ( !isnan(viewPoint->low)) { CGPoint alignedHighPoint = CPTPointMake(viewPoint->x, viewPoint->y - halfGapSize.height); CGPoint alignedLowPoint = CPTPointMake(viewPoint->x, viewPoint->low); if ( alignPoints ) { @@ -784,7 +784,7 @@ -(void)drawRangeInContext:(nonnull CGContextRef)context } // top bar - if ( !isnan(viewPoint->high) ) { + if ( !isnan(viewPoint->high)) { CGPoint alignedHighPoint = CPTPointMake(viewPoint->x - halfBarWidth, viewPoint->high); CGPoint alignedLowPoint = CPTPointMake(viewPoint->x + halfBarWidth, viewPoint->high); if ( alignPoints ) { @@ -796,7 +796,7 @@ -(void)drawRangeInContext:(nonnull CGContextRef)context } // bottom bar - if ( !isnan(viewPoint->low) ) { + if ( !isnan(viewPoint->low)) { CGPoint alignedHighPoint = CPTPointMake(viewPoint->x - halfBarWidth, viewPoint->low); CGPoint alignedLowPoint = CPTPointMake(viewPoint->x + halfBarWidth, viewPoint->low); if ( alignPoints ) { @@ -808,7 +808,7 @@ -(void)drawRangeInContext:(nonnull CGContextRef)context } // centre-left - if ( !isnan(viewPoint->left) ) { + if ( !isnan(viewPoint->left)) { CGPoint alignedHighPoint = CPTPointMake(viewPoint->x - halfGapSize.width, viewPoint->y); CGPoint alignedLowPoint = CPTPointMake(viewPoint->left, viewPoint->y); if ( alignPoints ) { @@ -820,7 +820,7 @@ -(void)drawRangeInContext:(nonnull CGContextRef)context } // centre-right - if ( !isnan(viewPoint->right) ) { + if ( !isnan(viewPoint->right)) { CGPoint alignedHighPoint = CPTPointMake(viewPoint->x + halfGapSize.width, viewPoint->y); CGPoint alignedLowPoint = CPTPointMake(viewPoint->right, viewPoint->y); if ( alignPoints ) { @@ -832,7 +832,7 @@ -(void)drawRangeInContext:(nonnull CGContextRef)context } // left bar - if ( !isnan(viewPoint->left) ) { + if ( !isnan(viewPoint->left)) { CGPoint alignedHighPoint = CPTPointMake(viewPoint->left, viewPoint->y - halfBarWidth); CGPoint alignedLowPoint = CPTPointMake(viewPoint->left, viewPoint->y + halfBarWidth); if ( alignPoints ) { @@ -844,7 +844,7 @@ -(void)drawRangeInContext:(nonnull CGContextRef)context } // right bar - if ( !isnan(viewPoint->right) ) { + if ( !isnan(viewPoint->right)) { CGPoint alignedHighPoint = CPTPointMake(viewPoint->right, viewPoint->y - halfBarWidth); CGPoint alignedLowPoint = CPTPointMake(viewPoint->right, viewPoint->y + halfBarWidth); if ( alignPoints ) { @@ -898,7 +898,7 @@ -(void)drawSwatchForLegend:(nonnull CPTLegend *)legend atIndex:(NSUInteger)idx i [self drawRangeInContext:context lineStyle:theBarLineStyle viewPoint:&viewPoint - halfGapSize:CPTSizeMake( MIN( self.gapWidth, rect.size.width / CPTFloat(2.0) ) * CPTFloat(0.5), MIN( self.gapHeight, rect.size.height / CPTFloat(2.0) ) * CPTFloat(0.5) ) + halfGapSize:CPTSizeMake(MIN(self.gapWidth, rect.size.width / CPTFloat(2.0)) * CPTFloat(0.5), MIN(self.gapHeight, rect.size.height / CPTFloat(2.0)) * CPTFloat(0.5)) halfBarWidth:MIN(MIN(self.barWidth, rect.size.width), rect.size.height) * CPTFloat(0.5) alignPoints:YES]; } @@ -909,7 +909,7 @@ -(nullable CPTLineStyle *)barLineStyleForIndex:(NSUInteger)idx { CPTLineStyle *theBarLineStyle = [self cachedValueForKey:CPTRangePlotBindingBarLineStyles recordIndex:idx]; - if ( (theBarLineStyle == nil) || (theBarLineStyle == [CPTPlot nilData]) ) { + if ((theBarLineStyle == nil) || (theBarLineStyle == [CPTPlot nilData])) { theBarLineStyle = self.barLineStyle; } @@ -1023,7 +1023,7 @@ -(void)positionLabelAnnotation:(nonnull CPTPlotSpaceAnnotation *)label forIndex: BOOL positiveDirection = YES; CPTPlotRange *yRange = [self.plotSpace plotRangeForCoordinate:CPTCoordinateY]; - if ( CPTDecimalLessThan( yRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalLessThan(yRange.lengthDecimal, CPTDecimalFromInteger(0))) { positiveDirection = !positiveDirection; } @@ -1048,8 +1048,8 @@ -(void)positionLabelAnnotation:(nonnull CPTPlotSpaceAnnotation *)label forIndex: -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point { NSUInteger dataCount = self.cachedDataCount; - CGPointError *viewPoints = calloc( dataCount, sizeof(CGPointError) ); - BOOL *drawPointFlags = calloc( dataCount, sizeof(BOOL) ); + CGPointError *viewPoints = calloc(dataCount, sizeof(CGPointError)); + BOOL *drawPointFlags = calloc(dataCount, sizeof(BOOL)); [self calculatePointsToDraw:drawPointFlags numberOfPoints:dataCount forPlotSpace:(id)self.plotSpace includeVisiblePointsOnly:YES]; [self calculateViewPoints:viewPoints withDrawPointFlags:drawPointFlags numberOfPoints:dataCount]; @@ -1063,7 +1063,7 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point lastViewPoint = viewPoints[i]; CGPoint lastPoint = CPTPointMake(lastViewPoint.x, lastViewPoint.y); CGFloat distanceSquared = squareOfDistanceBetweenPoints(point, lastPoint); - if ( isnan(minimumDistanceSquared) || (distanceSquared < minimumDistanceSquared) ) { + if ( isnan(minimumDistanceSquared) || (distanceSquared < minimumDistanceSquared)) { minimumDistanceSquared = distanceSquared; result = (NSInteger)i; } @@ -1072,16 +1072,16 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point if ( result != NSNotFound ) { lastViewPoint = viewPoints[result]; - if ( !isnan(lastViewPoint.left) && (point.x < lastViewPoint.left) ) { + if ( !isnan(lastViewPoint.left) && (point.x < lastViewPoint.left)) { result = NSNotFound; } - if ( !isnan(lastViewPoint.right) && (point.x > lastViewPoint.right) ) { + if ( !isnan(lastViewPoint.right) && (point.x > lastViewPoint.right)) { result = NSNotFound; } - if ( !isnan(lastViewPoint.high) && (point.y > lastViewPoint.high) ) { + if ( !isnan(lastViewPoint.high) && (point.y > lastViewPoint.high)) { result = NSNotFound; } - if ( !isnan(lastViewPoint.low) && (point.y < lastViewPoint.low) ) { + if ( !isnan(lastViewPoint.low) && (point.y < lastViewPoint.low)) { result = NSNotFound; } } diff --git a/framework/Source/CPTScatterPlot.m b/framework/Source/CPTScatterPlot.m index 29ad5128a..b686c1ded 100644 --- a/framework/Source/CPTScatterPlot.m +++ b/framework/Source/CPTScatterPlot.m @@ -237,7 +237,7 @@ +(void)initialize **/ -(nonnull instancetype)initWithFrame:(CGRect)newFrame { - if ( (self = [super initWithFrame:newFrame]) ) { + if ((self = [super initWithFrame:newFrame])) { dataLineStyle = [[CPTLineStyle alloc] init]; plotSymbol = nil; areaFill = nil; @@ -264,7 +264,7 @@ -(nonnull instancetype)initWithFrame:(CGRect)newFrame -(nonnull instancetype)initWithLayer:(nonnull id)layer { - if ( (self = [super initWithLayer:layer]) ) { + if ((self = [super initWithLayer:layer])) { CPTScatterPlot *theLayer = (CPTScatterPlot *)layer; dataLineStyle = theLayer->dataLineStyle; @@ -320,7 +320,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super initWithCoder:coder]) ) { + if ((self = [super initWithCoder:coder])) { interpolation = (CPTScatterPlotInterpolation)[coder decodeIntegerForKey:@"CPTScatterPlot.interpolation"]; histogramOption = (CPTScatterPlotHistogramOption)[coder decodeIntegerForKey:@"CPTScatterPlot.histogramOption"]; curvedInterpolationOption = (CPTScatterPlotCurvedInterpolationOption)[coder decodeIntegerForKey:@"CPTScatterPlot.curvedInterpolationOption"]; @@ -456,7 +456,7 @@ -(nullable CPTPlotSymbol *)plotSymbolForRecordIndex:(NSUInteger)idx { CPTPlotSymbol *symbol = [self cachedValueForKey:CPTScatterPlotBindingPlotSymbols recordIndex:idx]; - if ( (symbol == nil) || (symbol == [CPTPlot nilData]) ) { + if ((symbol == nil) || (symbol == [CPTPlot nilData])) { symbol = self.plotSymbol; } @@ -476,16 +476,16 @@ -(void)calculatePointsToDraw:(nonnull BOOL *)pointDrawFlags forPlotSpace:(nonnul CPTLineStyle *lineStyle = self.dataLineStyle; - if ( self.areaFill || self.areaFill2 || lineStyle.dashPattern || lineStyle.lineFill || (self.interpolation == CPTScatterPlotInterpolationCurved) ) { + if ( self.areaFill || self.areaFill2 || lineStyle.dashPattern || lineStyle.lineFill || (self.interpolation == CPTScatterPlotInterpolationCurved)) { // show all points to preserve the line dash and area fills for ( NSUInteger i = 0; i < dataCount; i++ ) { pointDrawFlags[i] = YES; } } else { - CPTPlotRangeComparisonResult *xRangeFlags = calloc( dataCount, sizeof(CPTPlotRangeComparisonResult) ); - CPTPlotRangeComparisonResult *yRangeFlags = calloc( dataCount, sizeof(CPTPlotRangeComparisonResult) ); - BOOL *nanFlags = calloc( dataCount, sizeof(BOOL) ); + CPTPlotRangeComparisonResult *xRangeFlags = calloc(dataCount, sizeof(CPTPlotRangeComparisonResult)); + CPTPlotRangeComparisonResult *yRangeFlags = calloc(dataCount, sizeof(CPTPlotRangeComparisonResult)); + BOOL *nanFlags = calloc(dataCount, sizeof(BOOL)); CPTPlotRange *xRange = xyPlotSpace.xRange; CPTPlotRange *yRange = xyPlotSpace.yRange; @@ -536,7 +536,7 @@ -(void)calculatePointsToDraw:(nonnull BOOL *)pointDrawFlags forPlotSpace:(nonnul // are included. This ensures no lines are left out that shouldn't be. CPTScatterPlotInterpolation theInterpolation = self.interpolation; - memset( pointDrawFlags, NO, dataCount * sizeof(BOOL) ); + memset(pointDrawFlags, NO, dataCount * sizeof(BOOL)); if ( dataCount > 0 ) { pointDrawFlags[0] = (xRangeFlags[0] == CPTPlotRangeComparisonResultNumberInRange && yRangeFlags[0] == CPTPlotRangeComparisonResultNumberInRange && @@ -544,9 +544,9 @@ -(void)calculatePointsToDraw:(nonnull BOOL *)pointDrawFlags forPlotSpace:(nonnul } if ( visibleOnly ) { for ( NSUInteger i = 1; i < dataCount; i++ ) { - if ( (xRangeFlags[i] == CPTPlotRangeComparisonResultNumberInRange) && - (yRangeFlags[i] == CPTPlotRangeComparisonResultNumberInRange) && - !nanFlags[i] ) { + if ((xRangeFlags[i] == CPTPlotRangeComparisonResultNumberInRange) && + (yRangeFlags[i] == CPTPlotRangeComparisonResultNumberInRange) && + !nanFlags[i] ) { pointDrawFlags[i] = YES; } } @@ -556,13 +556,13 @@ -(void)calculatePointsToDraw:(nonnull BOOL *)pointDrawFlags forPlotSpace:(nonnul case CPTScatterPlotInterpolationCurved: // Keep 2 points outside of the visible area on each side to maintain the correct curvature of the line if ( dataCount > 1 ) { - if ( !nanFlags[0] && !nanFlags[1] && ( (xRangeFlags[0] != xRangeFlags[1]) || (yRangeFlags[0] != yRangeFlags[1]) ) ) { + if ( !nanFlags[0] && !nanFlags[1] && ((xRangeFlags[0] != xRangeFlags[1]) || (yRangeFlags[0] != yRangeFlags[1]))) { pointDrawFlags[0] = YES; pointDrawFlags[1] = YES; } - else if ( (xRangeFlags[1] == CPTPlotRangeComparisonResultNumberInRange) && - (yRangeFlags[1] == CPTPlotRangeComparisonResultNumberInRange) && - !nanFlags[1] ) { + else if ((xRangeFlags[1] == CPTPlotRangeComparisonResultNumberInRange) && + (yRangeFlags[1] == CPTPlotRangeComparisonResultNumberInRange) && + !nanFlags[1] ) { pointDrawFlags[1] = YES; } } @@ -573,14 +573,14 @@ -(void)calculatePointsToDraw:(nonnull BOOL *)pointDrawFlags forPlotSpace:(nonnul pointDrawFlags[i - 1] = YES; pointDrawFlags[i] = YES; } - else if ( !nanFlags[i - 1] && !nanFlags[i] && ( (xRangeFlags[i - 1] != xRangeFlags[i]) || (yRangeFlags[i - 1] != yRangeFlags[i]) ) ) { + else if ( !nanFlags[i - 1] && !nanFlags[i] && ((xRangeFlags[i - 1] != xRangeFlags[i]) || (yRangeFlags[i - 1] != yRangeFlags[i]))) { pointDrawFlags[i - 2] = YES; pointDrawFlags[i - 1] = YES; pointDrawFlags[i] = YES; } - else if ( (xRangeFlags[i] == CPTPlotRangeComparisonResultNumberInRange) && - (yRangeFlags[i] == CPTPlotRangeComparisonResultNumberInRange) && - !nanFlags[i] ) { + else if ((xRangeFlags[i] == CPTPlotRangeComparisonResultNumberInRange) && + (yRangeFlags[i] == CPTPlotRangeComparisonResultNumberInRange) && + !nanFlags[i] ) { pointDrawFlags[i] = YES; } } @@ -589,13 +589,13 @@ -(void)calculatePointsToDraw:(nonnull BOOL *)pointDrawFlags forPlotSpace:(nonnul default: // Keep 1 point outside of the visible area on each side for ( NSUInteger i = 1; i < dataCount; i++ ) { - if ( !nanFlags[i - 1] && !nanFlags[i] && ( (xRangeFlags[i - 1] != xRangeFlags[i]) || (yRangeFlags[i - 1] != yRangeFlags[i]) ) ) { + if ( !nanFlags[i - 1] && !nanFlags[i] && ((xRangeFlags[i - 1] != xRangeFlags[i]) || (yRangeFlags[i - 1] != yRangeFlags[i]))) { pointDrawFlags[i - 1] = YES; pointDrawFlags[i] = YES; } - else if ( (xRangeFlags[i] == CPTPlotRangeComparisonResultNumberInRange) && - (yRangeFlags[i] == CPTPlotRangeComparisonResultNumberInRange) && - !nanFlags[i] ) { + else if ((xRangeFlags[i] == CPTPlotRangeComparisonResultNumberInRange) && + (yRangeFlags[i] == CPTPlotRangeComparisonResultNumberInRange) && + !nanFlags[i] ) { pointDrawFlags[i] = YES; } } @@ -621,7 +621,7 @@ -(void)calculateViewPoints:(nonnull CGPoint *)viewPoints withDrawPointFlags:(non dispatch_apply(dataCount, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(size_t i) { const double x = xBytes[i]; const double y = yBytes[i]; - if ( !drawPointFlags[i] || isnan(x) || isnan(y) ) { + if ( !drawPointFlags[i] || isnan(x) || isnan(y)) { viewPoints[i] = CPTPointMake(NAN, NAN); } else { @@ -643,7 +643,7 @@ -(void)calculateViewPoints:(nonnull CGPoint *)viewPoints withDrawPointFlags:(non dispatch_apply(dataCount, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(size_t i) { const NSDecimal x = xBytes[i]; const NSDecimal y = yBytes[i]; - if ( !drawPointFlags[i] || NSDecimalIsNotANumber(&x) || NSDecimalIsNotANumber(&y) ) { + if ( !drawPointFlags[i] || NSDecimalIsNotANumber(&x) || NSDecimalIsNotANumber(&y)) { viewPoints[i] = CPTPointMake(NAN, NAN); } else { @@ -661,7 +661,7 @@ -(void)alignViewPointsToUserSpace:(nonnull CGPoint *)viewPoints withContext:(non { // Align to device pixels if there is a data line. // Otherwise, align to view space, so fills are sharp at edges. - if ( self.dataLineStyle.lineWidth > CPTFloat(0.0) ) { + if ( self.dataLineStyle.lineWidth > CPTFloat(0.0)) { dispatch_apply(dataCount, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(size_t i) { if ( drawPointFlags[i] ) { viewPoints[i] = CPTAlignPointToUserSpace(context, viewPoints[i]); @@ -689,7 +689,7 @@ -(NSInteger)extremeDrawnPointIndexForFlags:(nonnull BOOL *)pointDrawFlags number result = i; break; } - if ( (delta < 0) && (i == 0) ) { + if ((delta < 0) && (i == 0)) { break; } } @@ -718,8 +718,8 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point -(NSUInteger)indexOfVisiblePointClosestToPlotAreaPoint:(CGPoint)viewPoint { NSUInteger dataCount = self.cachedDataCount; - CGPoint *viewPoints = calloc( dataCount, sizeof(CGPoint) ); - BOOL *drawPointFlags = calloc( dataCount, sizeof(BOOL) ); + CGPoint *viewPoints = calloc(dataCount, sizeof(CGPoint)); + BOOL *drawPointFlags = calloc(dataCount, sizeof(BOOL)); [self calculatePointsToDraw:drawPointFlags forPlotSpace:(id)self.plotSpace includeVisiblePointsOnly:YES numberOfPoints:dataCount]; [self calculateViewPoints:viewPoints withDrawPointFlags:drawPointFlags numberOfPoints:dataCount]; @@ -730,7 +730,7 @@ -(NSUInteger)indexOfVisiblePointClosestToPlotAreaPoint:(CGPoint)viewPoint for ( NSUInteger i = (NSUInteger)result; i < dataCount; ++i ) { if ( drawPointFlags[i] ) { CGFloat distanceSquared = squareOfDistanceBetweenPoints(viewPoint, viewPoints[i]); - if ( isnan(minimumDistanceSquared) || (distanceSquared < minimumDistanceSquared) ) { + if ( isnan(minimumDistanceSquared) || (distanceSquared < minimumDistanceSquared)) { minimumDistanceSquared = distanceSquared; result = (NSInteger)i; } @@ -787,14 +787,14 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context CPTMutableNumericData *xValueData = [self cachedNumbersForField:CPTScatterPlotFieldX]; CPTMutableNumericData *yValueData = [self cachedNumbersForField:CPTScatterPlotFieldY]; - if ( (xValueData == nil) || (yValueData == nil) ) { + if ((xValueData == nil) || (yValueData == nil)) { return; } NSUInteger dataCount = self.cachedDataCount; if ( dataCount == 0 ) { return; } - if ( !(self.dataLineStyle || self.areaFill || self.areaFill2 || self.plotSymbol || self.plotSymbols.count) ) { + if ( !(self.dataLineStyle || self.areaFill || self.areaFill2 || self.plotSymbol || self.plotSymbols.count)) { return; } if ( xValueData.numberOfSamples != yValueData.numberOfSamples ) { @@ -804,8 +804,8 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context [super renderAsVectorInContext:context]; // Calculate view points, and align to user space - CGPoint *viewPoints = calloc( dataCount, sizeof(CGPoint) ); - BOOL *drawPointFlags = calloc( dataCount, sizeof(BOOL) ); + CGPoint *viewPoints = calloc(dataCount, sizeof(CGPoint)); + BOOL *drawPointFlags = calloc(dataCount, sizeof(BOOL)); CPTXYPlotSpace *thePlotSpace = (CPTXYPlotSpace *)self.plotSpace; [self calculatePointsToDraw:drawPointFlags forPlotSpace:thePlotSpace includeVisiblePointsOnly:NO numberOfPoints:dataCount]; @@ -821,7 +821,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context NSInteger firstDrawnPointIndex = [self extremeDrawnPointIndexForFlags:drawPointFlags numberOfPoints:dataCount extremeNumIsLowerBound:YES]; if ( firstDrawnPointIndex != NSNotFound ) { - NSRange viewIndexRange = NSMakeRange( (NSUInteger)firstDrawnPointIndex, (NSUInteger)(lastDrawnPointIndex - firstDrawnPointIndex + 1) ); + NSRange viewIndexRange = NSMakeRange((NSUInteger)firstDrawnPointIndex, (NSUInteger)(lastDrawnPointIndex - firstDrawnPointIndex + 1)); CPTPlotArea *thePlotArea = self.plotArea; CPTLineStyle *theLineStyle = self.dataLineStyle; @@ -847,8 +847,8 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context theAreaBaseValue = CPTDecimalNaN(); break; } - if ( !NSDecimalIsNotANumber(&theAreaBaseValue) ) { - if ( theFill || ( (i == 0) && fillBands) ) { + if ( !NSDecimalIsNotANumber(&theAreaBaseValue)) { + if ( theFill || ((i == 0) && fillBands)) { // clear the plot shadow if any--not needed for fills when the plot has a data line if ( theLineStyle ) { CGContextSaveGState(context); @@ -873,8 +873,8 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context } // Draw fill bands - if ( (i == 0) && fillBands ) { - CGFloat height = CPTFloat( CGBitmapContextGetHeight(context) ); + if ((i == 0) && fillBands ) { + CGFloat height = CPTFloat(CGBitmapContextGetHeight(context)); for ( CPTLimitBand *band in fillBands ) { CGContextSaveGState(context); @@ -892,7 +892,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context maxPoint = CPTAlignIntegralPointToUserSpace(context, maxPoint); } - CGContextClipToRect( context, CGRectMake(minPoint.x, 0.0, maxPoint.x - minPoint.x, height) ); + CGContextClipToRect(context, CGRectMake(minPoint.x, 0.0, maxPoint.x - minPoint.x, height)); CGContextBeginPath(context); CGContextAddPath(context, dataLinePath); @@ -984,9 +984,9 @@ -(nonnull CGPathRef)newDataLinePathForViewPoints:(nonnull CGPoint *)viewPoints i for ( NSUInteger i = indexRange.location; i <= lastDrawnPointIndex; i++ ) { CGPoint viewPoint = viewPoints[i]; - if ( isnan(viewPoint.x) || isnan(viewPoint.y) ) { + if ( isnan(viewPoint.x) || isnan(viewPoint.y)) { if ( !lastPointSkipped ) { - if ( !isnan(baselineYValue) ) { + if ( !isnan(baselineYValue)) { CGPathAddLineToPoint(dataLinePath, NULL, lastPoint.x, baselineYValue); CGPathAddLineToPoint(dataLinePath, NULL, firstPoint.x, baselineYValue); CGPathCloseSubpath(dataLinePath); @@ -1033,7 +1033,7 @@ -(nonnull CGPathRef)newDataLinePathForViewPoints:(nonnull CGPoint *)viewPoints i } } - if ( !lastPointSkipped && !isnan(baselineYValue) ) { + if ( !lastPointSkipped && !isnan(baselineYValue)) { CGPathAddLineToPoint(dataLinePath, NULL, lastPoint.x, baselineYValue); CGPathAddLineToPoint(dataLinePath, NULL, firstPoint.x, baselineYValue); CGPathCloseSubpath(dataLinePath); @@ -1054,8 +1054,8 @@ -(nonnull CGPathRef)newCurvedDataLinePathForViewPoints:(nonnull CGPoint *)viewPo CPTScatterPlotCurvedInterpolationOption interpolationOption = self.curvedInterpolationOption; if ( lastDrawnPointIndex > 0 ) { - CGPoint *controlPoints1 = calloc( lastDrawnPointIndex, sizeof(CGPoint) ); - CGPoint *controlPoints2 = calloc( lastDrawnPointIndex, sizeof(CGPoint) ); + CGPoint *controlPoints1 = calloc(lastDrawnPointIndex, sizeof(CGPoint)); + CGPoint *controlPoints2 = calloc(lastDrawnPointIndex, sizeof(CGPoint)); lastDrawnPointIndex--; @@ -1063,7 +1063,7 @@ -(nonnull CGPathRef)newCurvedDataLinePathForViewPoints:(nonnull CGPoint *)viewPo for ( NSUInteger i = indexRange.location; i <= lastDrawnPointIndex; i++ ) { CGPoint viewPoint = viewPoints[i]; - if ( isnan(viewPoint.x) || isnan(viewPoint.y) ) { + if ( isnan(viewPoint.x) || isnan(viewPoint.y)) { if ( !lastPointSkipped ) { switch ( interpolationOption ) { case CPTScatterPlotCurvedInterpolationNormal: @@ -1182,9 +1182,9 @@ -(nonnull CGPathRef)newCurvedDataLinePathForViewPoints:(nonnull CGPoint *)viewPo for ( NSUInteger i = indexRange.location; i <= lastDrawnPointIndex; i++ ) { CGPoint viewPoint = viewPoints[i]; - if ( isnan(viewPoint.x) || isnan(viewPoint.y) ) { + if ( isnan(viewPoint.x) || isnan(viewPoint.y)) { if ( !lastPointSkipped ) { - if ( !isnan(baselineYValue) ) { + if ( !isnan(baselineYValue)) { CGPathAddLineToPoint(dataLinePath, NULL, lastPoint.x, baselineYValue); CGPathAddLineToPoint(dataLinePath, NULL, firstPoint.x, baselineYValue); CGPathCloseSubpath(dataLinePath); @@ -1208,13 +1208,13 @@ -(nonnull CGPathRef)newCurvedDataLinePathForViewPoints:(nonnull CGPoint *)viewPo // add the control points CGPathMoveToPoint(dataLinePath, NULL, cp1.x - CPTFloat(5.0), cp1.y); CGPathAddLineToPoint(dataLinePath, NULL, cp1.x + CPTFloat(5.0), cp1.y); - CGPathMoveToPoint( dataLinePath, NULL, cp1.x, cp1.y - CPTFloat(5.0) ); - CGPathAddLineToPoint( dataLinePath, NULL, cp1.x, cp1.y + CPTFloat(5.0) ); + CGPathMoveToPoint(dataLinePath, NULL, cp1.x, cp1.y - CPTFloat(5.0)); + CGPathAddLineToPoint(dataLinePath, NULL, cp1.x, cp1.y + CPTFloat(5.0)); - CGPathMoveToPoint( dataLinePath, NULL, cp2.x - CPTFloat(3.5), cp2.y - CPTFloat(3.5) ); - CGPathAddLineToPoint( dataLinePath, NULL, cp2.x + CPTFloat(3.5), cp2.y + CPTFloat(3.5) ); - CGPathMoveToPoint( dataLinePath, NULL, cp2.x + CPTFloat(3.5), cp2.y - CPTFloat(3.5) ); - CGPathAddLineToPoint( dataLinePath, NULL, cp2.x - CPTFloat(3.5), cp2.y + CPTFloat(3.5) ); + CGPathMoveToPoint(dataLinePath, NULL, cp2.x - CPTFloat(3.5), cp2.y - CPTFloat(3.5)); + CGPathAddLineToPoint(dataLinePath, NULL, cp2.x + CPTFloat(3.5), cp2.y + CPTFloat(3.5)); + CGPathMoveToPoint(dataLinePath, NULL, cp2.x + CPTFloat(3.5), cp2.y - CPTFloat(3.5)); + CGPathAddLineToPoint(dataLinePath, NULL, cp2.x - CPTFloat(3.5), cp2.y + CPTFloat(3.5)); // add a line connecting the control points CGPathMoveToPoint(dataLinePath, NULL, cp1.x, cp1.y); @@ -1229,7 +1229,7 @@ -(nonnull CGPathRef)newCurvedDataLinePathForViewPoints:(nonnull CGPoint *)viewPo } } - if ( !lastPointSkipped && !isnan(baselineYValue) ) { + if ( !lastPointSkipped && !isnan(baselineYValue)) { CGPathAddLineToPoint(dataLinePath, NULL, lastPoint.x, baselineYValue); CGPathAddLineToPoint(dataLinePath, NULL, firstPoint.x, baselineYValue); CGPathCloseSubpath(dataLinePath); @@ -1285,12 +1285,12 @@ -(void)computeCatmullRomControlPoints:(nonnull CGPoint *)points points2:(nonnull CGFloat d2 = hypot(p2.x - p1.x, p2.y - p1.y); CGFloat d3 = hypot(p3.x - p2.x, p3.y - p2.y); // constants - CGFloat d1_a = pow(d1, alpha); // d1^alpha - CGFloat d2_a = pow(d2, alpha); // d2^alpha - CGFloat d3_a = pow(d3, alpha); // d3^alpha - CGFloat d1_2a = pow( d1_a, CPTFloat(2.0) ); // d1^alpha^2 = d1^2*alpha - CGFloat d2_2a = pow( d2_a, CPTFloat(2.0) ); // d2^alpha^2 = d2^2*alpha - CGFloat d3_2a = pow( d3_a, CPTFloat(2.0) ); // d3^alpha^2 = d3^2*alpha + CGFloat d1_a = pow(d1, alpha); // d1^alpha + CGFloat d2_a = pow(d2, alpha); // d2^alpha + CGFloat d3_a = pow(d3, alpha); // d3^alpha + CGFloat d1_2a = pow(d1_a, CPTFloat(2.0)); // d1^alpha^2 = d1^2*alpha + CGFloat d2_2a = pow(d2_a, CPTFloat(2.0)); // d2^alpha^2 = d2^2*alpha + CGFloat d3_2a = pow(d3_a, CPTFloat(2.0)); // d3^alpha^2 = d3^2*alpha // calculate the control points // see : http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf under point 3. @@ -1300,9 +1300,9 @@ -(void)computeCatmullRomControlPoints:(nonnull CGPoint *)points points2:(nonnull } else { CGFloat divisor = CPTFloat(3.0) * d1_a * (d1_a + d2_a); - cp1 = CPTPointMake( (p2.x * d1_2a - p0.x * d2_2a + (2 * d1_2a + 3 * d1_a * d2_a + d2_2a) * p1.x) / divisor, - (p2.y * d1_2a - p0.y * d2_2a + (2 * d1_2a + 3 * d1_a * d2_a + d2_2a) * p1.y) / divisor - ); + cp1 = CPTPointMake((p2.x * d1_2a - p0.x * d2_2a + (2 * d1_2a + 3 * d1_a * d2_a + d2_2a) * p1.x) / divisor, + (p2.y * d1_2a - p0.y * d2_2a + (2 * d1_2a + 3 * d1_a * d2_a + d2_2a) * p1.y) / divisor + ); } if ( fabs(d3) <= epsilon ) { @@ -1310,8 +1310,8 @@ -(void)computeCatmullRomControlPoints:(nonnull CGPoint *)points points2:(nonnull } else { CGFloat divisor = 3 * d3_a * (d3_a + d2_a); - cp2 = CPTPointMake( (d3_2a * p1.x - d2_2a * p3.x + (2 * d3_2a + 3 * d3_a * d2_a + d2_2a) * p2.x) / divisor, - (d3_2a * p1.y - d2_2a * p3.y + (2 * d3_2a + 3 * d3_a * d2_a + d2_2a) * p2.y) / divisor); + cp2 = CPTPointMake((d3_2a * p1.x - d2_2a * p3.x + (2 * d3_2a + 3 * d3_a * d2_a + d2_2a) * p2.x) / divisor, + (d3_2a * p1.y - d2_2a * p3.y + (2 * d3_2a + 3 * d3_a * d2_a + d2_2a) * p2.y) / divisor); } points[index + 1] = cp1; @@ -1364,17 +1364,17 @@ -(void)computeHermiteControlPoints:(nonnull CGPoint *)points points2:(nonnull CG m.dy = p2.y - p0.y; if ( monotonic ) { - if ( m.dx > CPTFloat(0.0) ) { + if ( m.dx > CPTFloat(0.0)) { m.dx = MIN(p2.x - p1.x, p1.x - p0.x); } - else if ( m.dx < CPTFloat(0.0) ) { + else if ( m.dx < CPTFloat(0.0)) { m.dx = MAX(p2.x - p1.x, p1.x - p0.x); } - if ( m.dy > CPTFloat(0.0) ) { + if ( m.dy > CPTFloat(0.0)) { m.dy = MIN(p2.y - p1.y, p1.y - p0.y); } - else if ( m.dy < CPTFloat(0.0) ) { + else if ( m.dy < CPTFloat(0.0)) { m.dy = MAX(p2.y - p1.y, p1.y - p0.y); } } @@ -1484,10 +1484,10 @@ -(void)computeBezierControlPoints:(nonnull CGPoint *)cp1 points2:(nonnull CGPoin NSUInteger n = indexRange.length - 1; // rhs vector - CGPoint *a = calloc( n, sizeof(CGPoint) ); - CGPoint *b = calloc( n, sizeof(CGPoint) ); - CGPoint *c = calloc( n, sizeof(CGPoint) ); - CGPoint *r = calloc( n, sizeof(CGPoint) ); + CGPoint *a = calloc(n, sizeof(CGPoint)); + CGPoint *b = calloc(n, sizeof(CGPoint)); + CGPoint *c = calloc(n, sizeof(CGPoint)); + CGPoint *r = calloc(n, sizeof(CGPoint)); // left most segment a[0] = CGPointZero; @@ -1534,11 +1534,11 @@ -(void)computeBezierControlPoints:(nonnull CGPoint *)cp1 points2:(nonnull CGPoin cp1[indexRange.location + n] = CGPointMake(r[n - 1].x / b[n - 1].x, r[n - 1].y / b[n - 1].y); for ( NSUInteger i = n - 2; i > 0; i-- ) { - cp1[indexRange.location + i + 1] = CGPointMake( (r[i].x - c[i].x * cp1[indexRange.location + i + 2].x) / b[i].x, - (r[i].y - c[i].y * cp1[indexRange.location + i + 2].y) / b[i].y); + cp1[indexRange.location + i + 1] = CGPointMake((r[i].x - c[i].x * cp1[indexRange.location + i + 2].x) / b[i].x, + (r[i].y - c[i].y * cp1[indexRange.location + i + 2].y) / b[i].y); } - cp1[indexRange.location + 1] = CGPointMake( (r[0].x - c[0].x * cp1[indexRange.location + 2].x) / b[0].x, - (r[0].y - c[0].y * cp1[indexRange.location + 2].y) / b[0].y); + cp1[indexRange.location + 1] = CGPointMake((r[0].x - c[0].x * cp1[indexRange.location + 2].x) / b[0].x, + (r[0].y - c[0].y * cp1[indexRange.location + 2].y) / b[0].y); // we have p1, now compute p2 NSUInteger rangeEnd = NSMaxRange(indexRange) - 1; @@ -1547,8 +1547,8 @@ -(void)computeBezierControlPoints:(nonnull CGPoint *)cp1 points2:(nonnull CGPoin CPTFloat(2.0) * viewPoints[i].y - cp1[i + 1].y); } - cp2[rangeEnd] = CGPointMake( CPTFloat(0.5) * (viewPoints[rangeEnd].x + cp1[rangeEnd].x), - CPTFloat(0.5) * (viewPoints[rangeEnd].y + cp1[rangeEnd].y) ); + cp2[rangeEnd] = CGPointMake(CPTFloat(0.5) * (viewPoints[rangeEnd].x + cp1[rangeEnd].x), + CPTFloat(0.5) * (viewPoints[rangeEnd].y + cp1[rangeEnd].y)); // clean up free(a); @@ -1568,8 +1568,8 @@ -(void)drawSwatchForLegend:(nonnull CPTLegend *)legend atIndex:(NSUInteger)idx i if ( theLineStyle ) { [theLineStyle setLineStyleInContext:context]; - CGPoint alignedStartPoint = CPTAlignPointToUserSpace( context, CPTPointMake( CGRectGetMinX(rect), CGRectGetMidY(rect) ) ); - CGPoint alignedEndPoint = CPTAlignPointToUserSpace( context, CPTPointMake( CGRectGetMaxX(rect), CGRectGetMidY(rect) ) ); + CGPoint alignedStartPoint = CPTAlignPointToUserSpace(context, CPTPointMake(CGRectGetMinX(rect), CGRectGetMidY(rect))); + CGPoint alignedEndPoint = CPTAlignPointToUserSpace(context, CPTPointMake(CGRectGetMaxX(rect), CGRectGetMidY(rect))); CGContextMoveToPoint(context, alignedStartPoint.x, alignedStartPoint.y); CGContextAddLineToPoint(context, alignedEndPoint.x, alignedEndPoint.y); @@ -1580,7 +1580,7 @@ -(void)drawSwatchForLegend:(nonnull CPTLegend *)legend atIndex:(NSUInteger)idx i if ( thePlotSymbol ) { [thePlotSymbol renderInContext:context - atPoint:CPTPointMake( CGRectGetMidX(rect), CGRectGetMidY(rect) ) + atPoint:CPTPointMake(CGRectGetMidX(rect), CGRectGetMidY(rect)) scale:self.contentsScale alignToPixels:YES]; } @@ -1608,13 +1608,13 @@ -(void)drawSwatchForLegend:(nonnull CPTLegend *)legend atIndex:(NSUInteger)idx i CGContextAddPath(context, swatchPath); CGContextClip(context); - if ( CPTDecimalGreaterThanOrEqualTo(self.areaBaseValue2.decimalValue, self.areaBaseValue.decimalValue) ) { - [fill1 fillRect:CPTRectMake( CGRectGetMinX(rect), CGRectGetMinY(rect), rect.size.width, rect.size.height / CPTFloat(2.0) ) inContext:context]; - [fill2 fillRect:CPTRectMake( CGRectGetMinX(rect), CGRectGetMidY(rect), rect.size.width, rect.size.height / CPTFloat(2.0) ) inContext:context]; + if ( CPTDecimalGreaterThanOrEqualTo(self.areaBaseValue2.decimalValue, self.areaBaseValue.decimalValue)) { + [fill1 fillRect:CPTRectMake(CGRectGetMinX(rect), CGRectGetMinY(rect), rect.size.width, rect.size.height / CPTFloat(2.0)) inContext:context]; + [fill2 fillRect:CPTRectMake(CGRectGetMinX(rect), CGRectGetMidY(rect), rect.size.width, rect.size.height / CPTFloat(2.0)) inContext:context]; } else { - [fill2 fillRect:CPTRectMake( CGRectGetMinX(rect), CGRectGetMinY(rect), rect.size.width, rect.size.height / CPTFloat(2.0) ) inContext:context]; - [fill1 fillRect:CPTRectMake( CGRectGetMinX(rect), CGRectGetMidY(rect), rect.size.width, rect.size.height / CPTFloat(2.0) ) inContext:context]; + [fill2 fillRect:CPTRectMake(CGRectGetMinX(rect), CGRectGetMinY(rect), rect.size.width, rect.size.height / CPTFloat(2.0)) inContext:context]; + [fill1 fillRect:CPTRectMake(CGRectGetMinX(rect), CGRectGetMidY(rect), rect.size.width, rect.size.height / CPTFloat(2.0)) inContext:context]; } CGContextRestoreGState(context); @@ -1636,8 +1636,8 @@ -(nonnull CGPathRef)newDataLinePath } // Calculate view points - CGPoint *viewPoints = calloc( dataCount, sizeof(CGPoint) ); - BOOL *drawPointFlags = calloc( dataCount, sizeof(BOOL) ); + CGPoint *viewPoints = calloc(dataCount, sizeof(CGPoint)); + BOOL *drawPointFlags = calloc(dataCount, sizeof(BOOL)); for ( NSUInteger i = 0; i < dataCount; i++ ) { drawPointFlags[i] = YES; @@ -1703,8 +1703,8 @@ -(nullable CPTPlotRange *)plotRangeEnclosingField:(NSUInteger)fieldEnum CGPathRelease(dataLinePath); CPTNumberArray *lowerLeft = [space plotPointForPlotAreaViewPoint:boundingBox.origin]; - CPTNumberArray *upperRight = [space plotPointForPlotAreaViewPoint:CGPointMake( CGRectGetMaxX(boundingBox), - CGRectGetMaxY(boundingBox) )]; + CPTNumberArray *upperRight = [space plotPointForPlotAreaViewPoint:CGPointMake(CGRectGetMaxX(boundingBox), + CGRectGetMaxY(boundingBox))]; switch ( fieldEnum ) { case CPTScatterPlotFieldX: @@ -1808,7 +1808,7 @@ -(void)positionLabelAnnotation:(nonnull CPTPlotSpaceAnnotation *)label forIndex: BOOL positiveDirection = YES; CPTPlotRange *yRange = [self.plotSpace plotRangeForCoordinate:CPTCoordinateY]; - if ( CPTDecimalLessThan( yRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalLessThan(yRange.lengthDecimal, CPTDecimalFromInteger(0))) { positiveDirection = !positiveDirection; } @@ -1939,9 +1939,9 @@ -(BOOL)pointingDeviceDownEvent:(nonnull CPTNativeEvent *)event atPoint:(CGPoint) CGFloat margin = self.plotSymbolMarginForHitDetection * CPTFloat(2.0); symbolRect.size.width += margin; symbolRect.size.height += margin; - symbolRect.origin = CPTPointMake( center.x - CPTFloat(0.5) * CGRectGetWidth(symbolRect), center.y - CPTFloat(0.5) * CGRectGetHeight(symbolRect) ); + symbolRect.origin = CPTPointMake(center.x - CPTFloat(0.5) * CGRectGetWidth(symbolRect), center.y - CPTFloat(0.5) * CGRectGetHeight(symbolRect)); - if ( CGRectContainsPoint(symbolRect, plotAreaPoint) ) { + if ( CGRectContainsPoint(symbolRect, plotAreaPoint)) { self.pointingDeviceDownIndex = idx; if ( [theDelegate respondsToSelector:@selector(scatterPlot:plotSymbolTouchDownAtRecordIndex:)] ) { @@ -1964,7 +1964,7 @@ -(BOOL)pointingDeviceDownEvent:(nonnull CPTNativeEvent *)event atPoint:(CGPoint) ([theDelegate respondsToSelector:@selector(scatterPlotDataLineTouchDown:)] || [theDelegate respondsToSelector:@selector(scatterPlot:dataLineTouchDownWithEvent:)] || [theDelegate respondsToSelector:@selector(scatterPlotDataLineWasSelected:)] || - [theDelegate respondsToSelector:@selector(scatterPlot:dataLineWasSelectedWithEvent:)]) ) { + [theDelegate respondsToSelector:@selector(scatterPlot:dataLineWasSelectedWithEvent:)])) { plotSelected = [self plotWasLineHitByInteractionPoint:interactionPoint]; if ( plotSelected ) { // Let the delegate know that the plot was selected. @@ -2056,9 +2056,9 @@ -(BOOL)pointingDeviceUpEvent:(nonnull CPTNativeEvent *)event atPoint:(CGPoint)in CGFloat margin = self.plotSymbolMarginForHitDetection * CPTFloat(2.0); symbolRect.size.width += margin; symbolRect.size.height += margin; - symbolRect.origin = CPTPointMake( center.x - CPTFloat(0.5) * CGRectGetWidth(symbolRect), center.y - CPTFloat(0.5) * CGRectGetHeight(symbolRect) ); + symbolRect.origin = CPTPointMake(center.x - CPTFloat(0.5) * CGRectGetWidth(symbolRect), center.y - CPTFloat(0.5) * CGRectGetHeight(symbolRect)); - if ( CGRectContainsPoint(symbolRect, plotAreaPoint) ) { + if ( CGRectContainsPoint(symbolRect, plotAreaPoint)) { self.pointingDeviceDownIndex = idx; if ( [theDelegate respondsToSelector:@selector(scatterPlot:plotSymbolTouchUpAtRecordIndex:)] ) { @@ -2093,7 +2093,7 @@ -(BOOL)pointingDeviceUpEvent:(nonnull CPTNativeEvent *)event atPoint:(CGPoint)in ([theDelegate respondsToSelector:@selector(scatterPlotDataLineTouchUp:)] || [theDelegate respondsToSelector:@selector(scatterPlot:dataLineTouchUpWithEvent:)] || [theDelegate respondsToSelector:@selector(scatterPlotDataLineWasSelected:)] || - [theDelegate respondsToSelector:@selector(scatterPlot:dataLineWasSelectedWithEvent:)]) ) { + [theDelegate respondsToSelector:@selector(scatterPlot:dataLineWasSelectedWithEvent:)])) { plotSelected = [self plotWasLineHitByInteractionPoint:interactionPoint]; if ( plotSelected ) { @@ -2137,8 +2137,8 @@ -(BOOL)plotWasLineHitByInteractionPoint:(CGPoint)interactionPoint NSUInteger dataCount = self.cachedDataCount; if ( theGraph && thePlotArea && !self.hidden && dataCount ) { - CGPoint *viewPoints = calloc( dataCount, sizeof(CGPoint) ); - BOOL *drawPointFlags = calloc( dataCount, sizeof(BOOL) ); + CGPoint *viewPoints = calloc(dataCount, sizeof(CGPoint)); + BOOL *drawPointFlags = calloc(dataCount, sizeof(BOOL)); CPTXYPlotSpace *thePlotSpace = (CPTXYPlotSpace *)self.plotSpace; [self calculatePointsToDraw:drawPointFlags forPlotSpace:thePlotSpace includeVisiblePointsOnly:NO numberOfPoints:dataCount]; @@ -2148,14 +2148,14 @@ -(BOOL)plotWasLineHitByInteractionPoint:(CGPoint)interactionPoint if ( firstDrawnPointIndex != NSNotFound ) { NSInteger lastDrawnPointIndex = [self extremeDrawnPointIndexForFlags:drawPointFlags numberOfPoints:dataCount extremeNumIsLowerBound:NO]; - NSRange viewIndexRange = NSMakeRange( (NSUInteger)firstDrawnPointIndex, (NSUInteger)(lastDrawnPointIndex - firstDrawnPointIndex + 1) ); + NSRange viewIndexRange = NSMakeRange((NSUInteger)firstDrawnPointIndex, (NSUInteger)(lastDrawnPointIndex - firstDrawnPointIndex + 1)); CGPathRef dataLinePath = [self newDataLinePathForViewPoints:viewPoints indexRange:viewIndexRange baselineYValue:CPTNAN]; - CGPathRef path = CGPathCreateCopyByStrokingPath( dataLinePath, - NULL, - self.plotLineMarginForHitDetection * CPTFloat(2.0), - kCGLineCapRound, - kCGLineJoinRound, - CPTFloat(3.0) ); + CGPathRef path = CGPathCreateCopyByStrokingPath(dataLinePath, + NULL, + self.plotLineMarginForHitDetection * CPTFloat(2.0), + kCGLineCapRound, + kCGLineJoinRound, + CPTFloat(3.0)); CGPoint plotAreaPoint = [theGraph convertPoint:interactionPoint toLayer:thePlotArea]; @@ -2204,10 +2204,10 @@ -(void)setCurvedInterpolationOption:(CPTScatterPlotCurvedInterpolationOption)new -(void)setCurvedInterpolationCustomAlpha:(CGFloat)newCurvedInterpolationCustomAlpha { - if ( newCurvedInterpolationCustomAlpha > CPTFloat(1.0) ) { + if ( newCurvedInterpolationCustomAlpha > CPTFloat(1.0)) { newCurvedInterpolationCustomAlpha = CPTFloat(1.0); } - if ( newCurvedInterpolationCustomAlpha < CPTFloat(0.0) ) { + if ( newCurvedInterpolationCustomAlpha < CPTFloat(0.0)) { newCurvedInterpolationCustomAlpha = CPTFloat(0.0); } diff --git a/framework/Source/CPTScatterPlotTests.m b/framework/Source/CPTScatterPlotTests.m index b599bae77..5cecafe5b 100644 --- a/framework/Source/CPTScatterPlotTests.m +++ b/framework/Source/CPTScatterPlotTests.m @@ -42,7 +42,7 @@ -(void)testCalculatePointsToDrawAllInRange { CPTNumberArray *inRangeValues = @[@0.1, @0.2, @0.15, @0.6, @0.9]; - BOOL *drawFlags = calloc( inRangeValues.count, sizeof(BOOL) ); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -60,7 +60,7 @@ -(void)testCalculatePointsToDrawAllInRangeVisibleOnly { CPTNumberArray *inRangeValues = @[@0.1, @0.2, @0.15, @0.6, @0.9]; - BOOL *drawFlags = calloc( inRangeValues.count, sizeof(BOOL) ); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -78,7 +78,7 @@ -(void)testCalculatePointsToDrawNoneInRange { CPTNumberArray *inRangeValues = @[@(-0.1), @(-0.2), @(-0.15), @(-0.6), @(-0.9)]; - BOOL *drawFlags = calloc( inRangeValues.count, sizeof(BOOL) ); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -96,7 +96,7 @@ -(void)testCalculatePointsToDrawNoneInRangeVisibleOnly { CPTNumberArray *inRangeValues = @[@(-0.1), @(-0.2), @(-0.15), @(-0.6), @(-0.9)]; - BOOL *drawFlags = calloc( inRangeValues.count, sizeof(BOOL) ); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -114,7 +114,7 @@ -(void)testCalculatePointsToDrawNoneInRangeDifferentRegions { CPTNumberArray *inRangeValues = @[@(-0.1), @2, @(-0.15), @3, @(-0.9)]; - BOOL *drawFlags = calloc( inRangeValues.count, sizeof(BOOL) ); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -132,7 +132,7 @@ -(void)testCalculatePointsToDrawNoneInRangeDifferentRegionsVisibleOnly { CPTNumberArray *inRangeValues = @[@(-0.1), @2, @(-0.15), @3, @(-0.9)]; - BOOL *drawFlags = calloc( inRangeValues.count, sizeof(BOOL) ); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -151,7 +151,7 @@ -(void)testCalculatePointsToDrawSomeInRange CPTNumberArray *inRangeValues = @[@(-0.1), @0.1, @0.2, @1.2, @1.5]; BOOL expected[5] = { YES, YES, YES, YES, NO }; - BOOL *drawFlags = calloc( inRangeValues.count, sizeof(BOOL) ); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -173,7 +173,7 @@ -(void)testCalculatePointsToDrawSomeInRangeVisibleOnly { CPTNumberArray *inRangeValues = @[@(-0.1), @0.1, @0.2, @1.2, @1.5]; - BOOL *drawFlags = calloc( inRangeValues.count, sizeof(BOOL) ); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); CPTXYPlotSpace *thePlotSpace = self.plotSpace; @@ -196,8 +196,8 @@ -(void)testCalculatePointsToDrawSomeInRangeCrossing { CPTNumberArray *inRangeValues = @[@(-0.1), @1.1, @0.9, @(-0.1), @(-0.2)]; - BOOL *drawFlags = calloc( inRangeValues.count, sizeof(BOOL) ); - BOOL *expected = calloc( inRangeValues.count, sizeof(BOOL) ); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); + BOOL *expected = calloc(inRangeValues.count, sizeof(BOOL)); for ( NSUInteger i = 0; i < inRangeValues.count - 1; i++ ) { expected[i] = YES; @@ -226,7 +226,7 @@ -(void)testCalculatePointsToDrawSomeInRangeCrossingVisibleOnly { CPTNumberArray *inRangeValues = @[@(-0.1), @1.1, @0.9, @(-0.1), @(-0.2)]; - BOOL *drawFlags = calloc( inRangeValues.count, sizeof(BOOL) ); + BOOL *drawFlags = calloc(inRangeValues.count, sizeof(BOOL)); CPTXYPlotSpace *thePlotSpace = self.plotSpace; diff --git a/framework/Source/CPTShadow.m b/framework/Source/CPTShadow.m index bd26fc5bf..6204c3943 100644 --- a/framework/Source/CPTShadow.m +++ b/framework/Source/CPTShadow.m @@ -70,7 +70,7 @@ +(nonnull instancetype)shadow **/ -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { shadowOffset = CGSizeZero; shadowBlurRadius = CPTFloat(0.0); shadowColor = nil; @@ -94,7 +94,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super init]) ) { + if ((self = [super init])) { shadowOffset = [coder decodeCPTSizeForKey:@"CPTShadow.shadowOffset"]; shadowBlurRadius = [coder decodeCGFloatForKey:@"CPTShadow.shadowBlurRadius"]; shadowColor = [coder decodeObjectOfClass:[CPTColor class] @@ -174,7 +174,7 @@ -(nonnull id)mutableCopyWithZone:(nullable NSZone *)zone -(void)setShadowBlurRadius:(CGFloat)newShadowBlurRadius { - NSParameterAssert( newShadowBlurRadius >= CPTFloat(0.0) ); + NSParameterAssert(newShadowBlurRadius >= CPTFloat(0.0)); if ( newShadowBlurRadius != shadowBlurRadius ) { shadowBlurRadius = newShadowBlurRadius; diff --git a/framework/Source/CPTTextLayer.m b/framework/Source/CPTTextLayer.m index 97a475e77..995afbe5f 100644 --- a/framework/Source/CPTTextLayer.m +++ b/framework/Source/CPTTextLayer.m @@ -71,7 +71,7 @@ @implementation CPTTextLayer **/ -(nonnull instancetype)initWithText:(nullable NSString *)newText style:(nullable CPTTextStyle *)newStyle { - if ( (self = [super initWithFrame:CGRectZero]) ) { + if ((self = [super initWithFrame:CGRectZero])) { textStyle = newStyle; text = [newText copy]; attributedText = nil; @@ -102,7 +102,7 @@ -(nonnull instancetype)initWithAttributedText:(nullable NSAttributedString *)new { CPTTextStyle *newStyle = [CPTTextStyle textStyleWithAttributes:[newText attributesAtIndex:0 effectiveRange:NULL]]; - if ( (self = [self initWithText:newText.string style:newStyle]) ) { + if ((self = [self initWithText:newText.string style:newStyle])) { attributedText = [newText copy]; [self sizeToFit]; @@ -115,7 +115,7 @@ -(nonnull instancetype)initWithAttributedText:(nullable NSAttributedString *)new -(nonnull instancetype)initWithLayer:(nonnull id)layer { - if ( (self = [super initWithLayer:layer]) ) { + if ((self = [super initWithLayer:layer])) { CPTTextLayer *theLayer = (CPTTextLayer *)layer; textStyle = theLayer->textStyle; @@ -167,7 +167,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super initWithCoder:coder]) ) { + if ((self = [super initWithCoder:coder])) { textStyle = [coder decodeObjectOfClass:[CPTTextStyle class] forKey:@"CPTTextLayer.textStyle"]; text = [[coder decodeObjectOfClass:[NSString class] @@ -255,7 +255,7 @@ -(void)setAttributedText:(nullable NSAttributedString *)newValue -(void)setMaximumSize:(CGSize)newSize { - if ( !CGSizeEqualToSize(maximumSize, newSize) ) { + if ( !CGSizeEqualToSize(maximumSize, newSize)) { maximumSize = newSize; [self sizeToFit]; } @@ -347,10 +347,10 @@ -(void)sizeToFit newBounds.size.height += self.paddingTop + self.paddingBottom; CGSize myMaxSize = self.maximumSize; - if ( myMaxSize.width > CPTFloat(0.0) ) { + if ( myMaxSize.width > CPTFloat(0.0)) { newBounds.size.width = MIN(newBounds.size.width, myMaxSize.width); } - if ( myMaxSize.height > CPTFloat(0.0) ) { + if ( myMaxSize.height > CPTFloat(0.0)) { newBounds.size.height = MIN(newBounds.size.height, myMaxSize.height); } @@ -381,7 +381,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context #if TARGET_OS_SIMULATOR || TARGET_OS_IPHONE CGContextSaveGState(context); CGContextTranslateCTM(context, CPTFloat(0.0), self.bounds.size.height); - CGContextScaleCTM( context, CPTFloat(1.0), CPTFloat(-1.0) ); + CGContextScaleCTM(context, CPTFloat(1.0), CPTFloat(-1.0)); #endif CGRect newBounds = CGRectInset(self.bounds, kCPTTextLayerMarginWidth, kCPTTextLayerMarginWidth); @@ -395,7 +395,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context newBounds.size.height -= self.paddingTop + self.paddingBottom; NSAttributedString *styledText = self.attributedText; - if ( (styledText.length > 0) && [styledText respondsToSelector:@selector(drawInRect:)] ) { + if ((styledText.length > 0) && [styledText respondsToSelector:@selector(drawInRect:)] ) { [styledText drawInRect:newBounds inContext:context]; } diff --git a/framework/Source/CPTTextStyle.m b/framework/Source/CPTTextStyle.m index 61e6b28d6..f1b7452be 100644 --- a/framework/Source/CPTTextStyle.m +++ b/framework/Source/CPTTextStyle.m @@ -101,7 +101,7 @@ +(nonnull instancetype)textStyleWithStyle:(nullable CPTTextStyle *)textStyle **/ -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { fontName = @"Helvetica"; fontSize = CPTFloat(12.0); color = [CPTColor blackColor]; @@ -129,7 +129,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super init]) ) { + if ((self = [super init])) { fontName = [[coder decodeObjectOfClass:[NSString class] forKey:@"CPTTextStyle.fontName"] copy]; fontSize = [coder decodeCGFloatForKey:@"CPTTextStyle.fontSize"]; diff --git a/framework/Source/CPTTheme.m b/framework/Source/CPTTheme.m index 0fc513f8e..b4b06de37 100644 --- a/framework/Source/CPTTheme.m +++ b/framework/Source/CPTTheme.m @@ -40,7 +40,7 @@ @implementation CPTTheme **/ -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { graphClass = Nil; } return self; diff --git a/framework/Source/CPTTimeFormatter.m b/framework/Source/CPTTimeFormatter.m index 4abfd3967..8d0ad4b51 100644 --- a/framework/Source/CPTTimeFormatter.m +++ b/framework/Source/CPTTimeFormatter.m @@ -49,7 +49,7 @@ -(nonnull instancetype)init **/ -(nonnull instancetype)initWithDateFormatter:(nullable NSDateFormatter *)aDateFormatter { - if ( (self = [super init]) ) { + if ((self = [super init])) { dateFormatter = aDateFormatter; referenceDate = nil; } @@ -77,7 +77,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder */ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super init]) ) { + if ((self = [super init])) { dateFormatter = [coder decodeObjectForKey:@"CPTTimeFormatter.dateFormatter"]; referenceDate = [[coder decodeObjectForKey:@"CPTTimeFormatter.referenceDate"] copy]; } diff --git a/framework/Source/CPTTradingRangePlot.m b/framework/Source/CPTTradingRangePlot.m index b0b10c3fc..6d07649c1 100644 --- a/framework/Source/CPTTradingRangePlot.m +++ b/framework/Source/CPTTradingRangePlot.m @@ -204,7 +204,7 @@ +(void)initialize **/ -(nonnull instancetype)initWithFrame:(CGRect)newFrame { - if ( (self = [super initWithFrame:newFrame]) ) { + if ((self = [super initWithFrame:newFrame])) { plotStyle = CPTTradingRangePlotStyleOHLC; lineStyle = [[CPTLineStyle alloc] init]; increaseLineStyle = nil; @@ -229,7 +229,7 @@ -(nonnull instancetype)initWithFrame:(CGRect)newFrame -(nonnull instancetype)initWithLayer:(nonnull id)layer { - if ( (self = [super initWithLayer:layer]) ) { + if ((self = [super initWithLayer:layer])) { CPTTradingRangePlot *theLayer = (CPTTradingRangePlot *)layer; plotStyle = theLayer->plotStyle; @@ -276,7 +276,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super initWithCoder:coder]) ) { + if ((self = [super initWithCoder:coder])) { lineStyle = [[coder decodeObjectOfClass:[CPTLineStyle class] forKey:@"CPTTradingRangePlot.lineStyle"] copy]; increaseLineStyle = [[coder decodeObjectOfClass:[CPTLineStyle class] @@ -570,11 +570,11 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context if ( sampleCount == 0 ) { return; } - if ( (opens == nil) || (highs == nil) || (lows == nil) || (closes == nil) ) { + if ((opens == nil) || (highs == nil) || (lows == nil) || (closes == nil)) { return; } - if ( (opens.numberOfSamples != sampleCount) || (highs.numberOfSamples != sampleCount) || (lows.numberOfSamples != sampleCount) || (closes.numberOfSamples != sampleCount) ) { + if ((opens.numberOfSamples != sampleCount) || (highs.numberOfSamples != sampleCount) || (lows.numberOfSamples != sampleCount) || (closes.numberOfSamples != sampleCount)) { [NSException raise:CPTException format:@"Mismatching number of data values in trading range plot"]; } @@ -598,7 +598,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context for ( NSUInteger i = 0; i < sampleCount; i++ ) { double plotPoint[2]; plotPoint[independentCoord] = *locationBytes++; - if ( isnan(plotPoint[independentCoord]) ) { + if ( isnan(plotPoint[independentCoord])) { openBytes++; highBytes++; lowBytes++; @@ -608,7 +608,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context // open point plotPoint[dependentCoord] = *openBytes++; - if ( isnan(plotPoint[dependentCoord]) ) { + if ( isnan(plotPoint[dependentCoord])) { openPoint = CPTPointMake(NAN, NAN); } else { @@ -617,7 +617,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context // high point plotPoint[dependentCoord] = *highBytes++; - if ( isnan(plotPoint[dependentCoord]) ) { + if ( isnan(plotPoint[dependentCoord])) { highPoint = CPTPointMake(NAN, NAN); } else { @@ -626,7 +626,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context // low point plotPoint[dependentCoord] = *lowBytes++; - if ( isnan(plotPoint[dependentCoord]) ) { + if ( isnan(plotPoint[dependentCoord])) { lowPoint = CPTPointMake(NAN, NAN); } else { @@ -635,7 +635,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context // close point plotPoint[dependentCoord] = *closeBytes++; - if ( isnan(plotPoint[dependentCoord]) ) { + if ( isnan(plotPoint[dependentCoord])) { closePoint = CPTPointMake(NAN, NAN); } else { @@ -643,17 +643,17 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context } CGFloat xCoord = openPoint.x; - if ( isnan(xCoord) ) { + if ( isnan(xCoord)) { xCoord = highPoint.x; } - else if ( isnan(xCoord) ) { + else if ( isnan(xCoord)) { xCoord = lowPoint.x; } - else if ( isnan(xCoord) ) { + else if ( isnan(xCoord)) { xCoord = closePoint.x; } - if ( !isnan(xCoord) ) { + if ( !isnan(xCoord)) { // Draw switch ( thePlotStyle ) { case CPTTradingRangePlotStyleOHLC: @@ -691,7 +691,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context for ( NSUInteger i = 0; i < sampleCount; i++ ) { NSDecimal plotPoint[2]; plotPoint[independentCoord] = *locationBytes++; - if ( NSDecimalIsNotANumber(&plotPoint[independentCoord]) ) { + if ( NSDecimalIsNotANumber(&plotPoint[independentCoord])) { openBytes++; highBytes++; lowBytes++; @@ -701,7 +701,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context // open point plotPoint[dependentCoord] = *openBytes++; - if ( NSDecimalIsNotANumber(&plotPoint[dependentCoord]) ) { + if ( NSDecimalIsNotANumber(&plotPoint[dependentCoord])) { openPoint = CPTPointMake(NAN, NAN); } else { @@ -710,7 +710,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context // high point plotPoint[dependentCoord] = *highBytes++; - if ( NSDecimalIsNotANumber(&plotPoint[dependentCoord]) ) { + if ( NSDecimalIsNotANumber(&plotPoint[dependentCoord])) { highPoint = CPTPointMake(NAN, NAN); } else { @@ -719,7 +719,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context // low point plotPoint[dependentCoord] = *lowBytes++; - if ( NSDecimalIsNotANumber(&plotPoint[dependentCoord]) ) { + if ( NSDecimalIsNotANumber(&plotPoint[dependentCoord])) { lowPoint = CPTPointMake(NAN, NAN); } else { @@ -728,7 +728,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context // close point plotPoint[dependentCoord] = *closeBytes++; - if ( NSDecimalIsNotANumber(&plotPoint[dependentCoord]) ) { + if ( NSDecimalIsNotANumber(&plotPoint[dependentCoord])) { closePoint = CPTPointMake(NAN, NAN); } else { @@ -736,17 +736,17 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context } CGFloat xCoord = openPoint.x; - if ( isnan(xCoord) ) { + if ( isnan(xCoord)) { xCoord = highPoint.x; } - else if ( isnan(xCoord) ) { + else if ( isnan(xCoord)) { xCoord = lowPoint.x; } - else if ( isnan(xCoord) ) { + else if ( isnan(xCoord)) { xCoord = closePoint.x; } - if ( !isnan(xCoord) ) { + if ( !isnan(xCoord)) { // Draw switch ( thePlotStyle ) { case CPTTradingRangePlotStyleOHLC: @@ -791,7 +791,7 @@ -(void)drawCandleStickInContext:(nonnull CGContextRef)context CPTFill *currentBarFill = nil; CPTLineStyle *theBorderLineStyle = nil; - if ( !isnan(openValue) && !isnan(closeValue) ) { + if ( !isnan(openValue) && !isnan(closeValue)) { if ( openValue < closeValue ) { theBorderLineStyle = [self increaseLineStyleForIndex:idx]; currentBarFill = [self increaseFillForIndex:idx]; @@ -816,13 +816,13 @@ -(void)drawCandleStickInContext:(nonnull CGContextRef)context [theBorderLineStyle setLineStyleInContext:context]; CGFloat lineWidth = theBorderLineStyle.lineWidth; - if ( ( self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { + if ((self.contentsScale > CPTFloat(1.0)) && (round(lineWidth) == lineWidth)) { alignmentFunction = CPTAlignIntegralPointToUserSpace; } } // high - low only - if ( hasLineStyle && !isnan(highValue) && !isnan(lowValue) && ( isnan(openValue) || isnan(closeValue) ) ) { + if ( hasLineStyle && !isnan(highValue) && !isnan(lowValue) && (isnan(openValue) || isnan(closeValue))) { CGPoint alignedHighPoint = CPTPointMake(x, highValue); CGPoint alignedLowPoint = CPTPointMake(x, lowValue); if ( alignPoints ) { @@ -842,10 +842,10 @@ -(void)drawCandleStickInContext:(nonnull CGContextRef)context } // open-close - if ( !isnan(openValue) && !isnan(closeValue) ) { + if ( !isnan(openValue) && !isnan(closeValue)) { if ( currentBarFill || hasLineStyle ) { CGFloat radius = MIN(self.barCornerRadius, halfBarWidth); - radius = MIN( radius, ABS(closeValue - openValue) ); + radius = MIN(radius, ABS(closeValue - openValue)); CGPoint alignedPoint1 = CPTPointMake(x + halfBarWidth, openValue); CGPoint alignedPoint2 = CPTPointMake(x + halfBarWidth, closeValue); @@ -869,7 +869,7 @@ -(void)drawCandleStickInContext:(nonnull CGContextRef)context } } - if ( hasLineStyle && (openValue == closeValue) ) { + if ( hasLineStyle && (openValue == closeValue)) { // #285 Draw a cross with open/close values marked const CGFloat halfLineWidth = CPTFloat(0.5) * theBorderLineStyle.lineWidth; @@ -899,9 +899,9 @@ -(void)drawCandleStickInContext:(nonnull CGContextRef)context path = CGPathCreateMutable(); } - if ( !isnan(lowValue) ) { - if ( lowValue < MIN(openValue, closeValue) ) { - CGPoint alignedStartPoint = CPTPointMake( x, MIN(openValue, closeValue) ); + if ( !isnan(lowValue)) { + if ( lowValue < MIN(openValue, closeValue)) { + CGPoint alignedStartPoint = CPTPointMake(x, MIN(openValue, closeValue)); CGPoint alignedLowPoint = CPTPointMake(x, lowValue); if ( alignPoints ) { alignedStartPoint = alignmentFunction(context, alignedStartPoint); @@ -912,9 +912,9 @@ -(void)drawCandleStickInContext:(nonnull CGContextRef)context CGPathAddLineToPoint(path, NULL, alignedLowPoint.x, alignedLowPoint.y); } } - if ( !isnan(highValue) ) { - if ( highValue > MAX(openValue, closeValue) ) { - CGPoint alignedStartPoint = CPTPointMake( x, MAX(openValue, closeValue) ); + if ( !isnan(highValue)) { + if ( highValue > MAX(openValue, closeValue)) { + CGPoint alignedStartPoint = CPTPointMake(x, MAX(openValue, closeValue)); CGPoint alignedHighPoint = CPTPointMake(x, highValue); if ( alignPoints ) { alignedStartPoint = alignmentFunction(context, alignedStartPoint); @@ -946,7 +946,7 @@ -(void)drawOHLCInContext:(nonnull CGContextRef)context { CPTLineStyle *theLineStyle = [self lineStyleForIndex:idx]; - if ( !isnan(openValue) && !isnan(closeValue) ) { + if ( !isnan(openValue) && !isnan(closeValue)) { if ( openValue < closeValue ) { CPTLineStyle *lineStyleForIncrease = [self increaseLineStyleForIndex:idx]; if ( [lineStyleForIncrease isKindOfClass:[CPTLineStyle class]] ) { @@ -968,12 +968,12 @@ -(void)drawOHLCInContext:(nonnull CGContextRef)context CPTAlignPointFunction alignmentFunction = CPTAlignPointToUserSpace; CGFloat lineWidth = theLineStyle.lineWidth; - if ( ( self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { + if ((self.contentsScale > CPTFloat(1.0)) && (round(lineWidth) == lineWidth)) { alignmentFunction = CPTAlignIntegralPointToUserSpace; } // high-low - if ( !isnan(highValue) && !isnan(lowValue) ) { + if ( !isnan(highValue) && !isnan(lowValue)) { CGPoint alignedHighPoint = CPTPointMake(x, highValue); CGPoint alignedLowPoint = CPTPointMake(x, lowValue); if ( alignPoints ) { @@ -985,7 +985,7 @@ -(void)drawOHLCInContext:(nonnull CGContextRef)context } // open - if ( !isnan(openValue) ) { + if ( !isnan(openValue)) { CGPoint alignedOpenStartPoint = CPTPointMake(x, openValue); CGPoint alignedOpenEndPoint = CPTPointMake(x - theStickLength, openValue); // left side if ( alignPoints ) { @@ -997,7 +997,7 @@ -(void)drawOHLCInContext:(nonnull CGContextRef)context } // close - if ( !isnan(closeValue) ) { + if ( !isnan(closeValue)) { CGPoint alignedCloseStartPoint = CPTPointMake(x, closeValue); CGPoint alignedCloseEndPoint = CPTPointMake(x + theStickLength, closeValue); // right side if ( alignPoints ) { @@ -1053,7 +1053,7 @@ -(nullable CPTFill *)increaseFillForIndex:(NSUInteger)idx { CPTFill *theFill = [self cachedValueForKey:CPTTradingRangePlotBindingIncreaseFills recordIndex:idx]; - if ( (theFill == nil) || (theFill == [CPTPlot nilData]) ) { + if ((theFill == nil) || (theFill == [CPTPlot nilData])) { theFill = self.increaseFill; } @@ -1064,7 +1064,7 @@ -(nullable CPTFill *)decreaseFillForIndex:(NSUInteger)idx { CPTFill *theFill = [self cachedValueForKey:CPTTradingRangePlotBindingDecreaseFills recordIndex:idx]; - if ( (theFill == nil) || (theFill == [CPTPlot nilData]) ) { + if ((theFill == nil) || (theFill == [CPTPlot nilData])) { theFill = self.decreaseFill; } @@ -1075,7 +1075,7 @@ -(nullable CPTLineStyle *)lineStyleForIndex:(NSUInteger)idx { CPTLineStyle *theLineStyle = [self cachedValueForKey:CPTTradingRangePlotBindingLineStyles recordIndex:idx]; - if ( (theLineStyle == nil) || (theLineStyle == [CPTPlot nilData]) ) { + if ((theLineStyle == nil) || (theLineStyle == [CPTPlot nilData])) { theLineStyle = self.lineStyle; } @@ -1086,7 +1086,7 @@ -(nullable CPTLineStyle *)increaseLineStyleForIndex:(NSUInteger)idx { CPTLineStyle *theLineStyle = [self cachedValueForKey:CPTTradingRangePlotBindingIncreaseLineStyles recordIndex:idx]; - if ( (theLineStyle == nil) || (theLineStyle == [CPTPlot nilData]) ) { + if ((theLineStyle == nil) || (theLineStyle == [CPTPlot nilData])) { theLineStyle = self.increaseLineStyle; } @@ -1101,7 +1101,7 @@ -(nullable CPTLineStyle *)decreaseLineStyleForIndex:(NSUInteger)idx { CPTLineStyle *theLineStyle = [self cachedValueForKey:CPTTradingRangePlotBindingDecreaseLineStyles recordIndex:idx]; - if ( (theLineStyle == nil) || (theLineStyle == [CPTPlot nilData]) ) { + if ((theLineStyle == nil) || (theLineStyle == [CPTPlot nilData])) { theLineStyle = self.decreaseLineStyle; } @@ -1218,7 +1218,7 @@ -(void)positionLabelAnnotation:(nonnull CPTPlotSpaceAnnotation *)label forIndex: BOOL positiveDirection = YES; CPTPlotRange *yRange = [self.plotSpace plotRangeForCoordinate:CPTCoordinateY]; - if ( CPTDecimalLessThan( yRange.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalLessThan(yRange.lengthDecimal, CPTDecimalFromInteger(0))) { positiveDirection = !positiveDirection; } @@ -1307,7 +1307,7 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point if ( !isnan(plotPoint[dependentCoord]) && [yRange containsDouble:plotPoint[dependentCoord]] ) { openPoint = [thePlotSpace plotAreaViewPointForDoublePrecisionPlotPoint:plotPoint numberOfCoordinates:2]; CGFloat distanceSquared = squareOfDistanceBetweenPoints(point, openPoint); - if ( isnan(minimumDistanceSquared) || (distanceSquared < minimumDistanceSquared) ) { + if ( isnan(minimumDistanceSquared) || (distanceSquared < minimumDistanceSquared)) { minimumDistanceSquared = distanceSquared; result = i; } @@ -1321,7 +1321,7 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point if ( !isnan(plotPoint[dependentCoord]) && [yRange containsDouble:plotPoint[dependentCoord]] ) { highPoint = [thePlotSpace plotAreaViewPointForDoublePrecisionPlotPoint:plotPoint numberOfCoordinates:2]; CGFloat distanceSquared = squareOfDistanceBetweenPoints(point, highPoint); - if ( isnan(minimumDistanceSquared) || (distanceSquared < minimumDistanceSquared) ) { + if ( isnan(minimumDistanceSquared) || (distanceSquared < minimumDistanceSquared)) { minimumDistanceSquared = distanceSquared; result = i; } @@ -1335,7 +1335,7 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point if ( !isnan(plotPoint[dependentCoord]) && [yRange containsDouble:plotPoint[dependentCoord]] ) { lowPoint = [thePlotSpace plotAreaViewPointForDoublePrecisionPlotPoint:plotPoint numberOfCoordinates:2]; CGFloat distanceSquared = squareOfDistanceBetweenPoints(point, lowPoint); - if ( isnan(minimumDistanceSquared) || (distanceSquared < minimumDistanceSquared) ) { + if ( isnan(minimumDistanceSquared) || (distanceSquared < minimumDistanceSquared)) { minimumDistanceSquared = distanceSquared; result = i; } @@ -1349,7 +1349,7 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point if ( !isnan(plotPoint[dependentCoord]) && [yRange containsDouble:plotPoint[dependentCoord]] ) { closePoint = [thePlotSpace plotAreaViewPointForDoublePrecisionPlotPoint:plotPoint numberOfCoordinates:2]; CGFloat distanceSquared = squareOfDistanceBetweenPoints(point, closePoint); - if ( isnan(minimumDistanceSquared) || (distanceSquared < minimumDistanceSquared) ) { + if ( isnan(minimumDistanceSquared) || (distanceSquared < minimumDistanceSquared)) { minimumDistanceSquared = distanceSquared; result = i; } @@ -1360,18 +1360,18 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point if ( result == i ) { lastViewX = openPoint.x; - if ( isnan(lastViewX) ) { + if ( isnan(lastViewX)) { lastViewX = highPoint.x; } - else if ( isnan(lastViewX) ) { + else if ( isnan(lastViewX)) { lastViewX = lowPoint.x; } - else if ( isnan(lastViewX) ) { + else if ( isnan(lastViewX)) { lastViewX = closePoint.x; } - lastViewMin = MIN( MIN(openPoint.y, closePoint.y), MIN(highPoint.y, lowPoint.y) ); - lastViewMax = MAX( MAX(openPoint.y, closePoint.y), MAX(highPoint.y, lowPoint.y) ); + lastViewMin = MIN(MIN(openPoint.y, closePoint.y), MIN(highPoint.y, lowPoint.y)); + lastViewMax = MAX(MAX(openPoint.y, closePoint.y), MAX(highPoint.y, lowPoint.y)); } } } @@ -1400,7 +1400,7 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point if ( !NSDecimalIsNotANumber(&plotPoint[dependentCoord]) && [yRange contains:plotPoint[dependentCoord]] ) { openPoint = [thePlotSpace plotAreaViewPointForPlotPoint:plotPoint numberOfCoordinates:2]; CGFloat distanceSquared = squareOfDistanceBetweenPoints(point, openPoint); - if ( isnan(minimumDistanceSquared) || (distanceSquared < minimumDistanceSquared) ) { + if ( isnan(minimumDistanceSquared) || (distanceSquared < minimumDistanceSquared)) { minimumDistanceSquared = distanceSquared; result = i; } @@ -1414,7 +1414,7 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point if ( !NSDecimalIsNotANumber(&plotPoint[dependentCoord]) && [yRange contains:plotPoint[dependentCoord]] ) { highPoint = [thePlotSpace plotAreaViewPointForPlotPoint:plotPoint numberOfCoordinates:2]; CGFloat distanceSquared = squareOfDistanceBetweenPoints(point, highPoint); - if ( isnan(minimumDistanceSquared) || (distanceSquared < minimumDistanceSquared) ) { + if ( isnan(minimumDistanceSquared) || (distanceSquared < minimumDistanceSquared)) { minimumDistanceSquared = distanceSquared; result = i; } @@ -1428,7 +1428,7 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point if ( !NSDecimalIsNotANumber(&plotPoint[dependentCoord]) && [yRange contains:plotPoint[dependentCoord]] ) { lowPoint = [thePlotSpace plotAreaViewPointForPlotPoint:plotPoint numberOfCoordinates:2]; CGFloat distanceSquared = squareOfDistanceBetweenPoints(point, lowPoint); - if ( isnan(minimumDistanceSquared) || (distanceSquared < minimumDistanceSquared) ) { + if ( isnan(minimumDistanceSquared) || (distanceSquared < minimumDistanceSquared)) { minimumDistanceSquared = distanceSquared; result = i; } @@ -1442,7 +1442,7 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point if ( !NSDecimalIsNotANumber(&plotPoint[dependentCoord]) && [yRange contains:plotPoint[dependentCoord]] ) { closePoint = [thePlotSpace plotAreaViewPointForPlotPoint:plotPoint numberOfCoordinates:2]; CGFloat distanceSquared = squareOfDistanceBetweenPoints(point, closePoint); - if ( isnan(minimumDistanceSquared) || (distanceSquared < minimumDistanceSquared) ) { + if ( isnan(minimumDistanceSquared) || (distanceSquared < minimumDistanceSquared)) { minimumDistanceSquared = distanceSquared; result = i; } @@ -1453,18 +1453,18 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point if ( result == i ) { lastViewX = openPoint.x; - if ( isnan(lastViewX) ) { + if ( isnan(lastViewX)) { lastViewX = highPoint.x; } - else if ( isnan(lastViewX) ) { + else if ( isnan(lastViewX)) { lastViewX = lowPoint.x; } - else if ( isnan(lastViewX) ) { + else if ( isnan(lastViewX)) { lastViewX = closePoint.x; } - lastViewMin = MIN( MIN(openPoint.y, closePoint.y), MIN(highPoint.y, lowPoint.y) ); - lastViewMax = MAX( MAX(openPoint.y, closePoint.y), MAX(highPoint.y, lowPoint.y) ); + lastViewMin = MIN(MIN(openPoint.y, closePoint.y), MIN(highPoint.y, lowPoint.y)); + lastViewMax = MAX(MAX(openPoint.y, closePoint.y), MAX(highPoint.y, lowPoint.y)); } } } @@ -1482,10 +1482,10 @@ -(NSUInteger)dataIndexFromInteractionPoint:(CGPoint)point break; } - if ( ( point.x < (lastViewX - offset) ) || ( point.x > (lastViewX + offset) ) ) { + if ((point.x < (lastViewX - offset)) || (point.x > (lastViewX + offset))) { result = NSNotFound; } - if ( (point.y < lastViewMin) || (point.y > lastViewMax) ) { + if ((point.y < lastViewMin) || (point.y > lastViewMax)) { result = NSNotFound; } } diff --git a/framework/Source/CPTUtilities.m b/framework/Source/CPTUtilities.m index b5d05769d..f4786034d 100644 --- a/framework/Source/CPTUtilities.m +++ b/framework/Source/CPTUtilities.m @@ -247,7 +247,7 @@ CGFloat CPTDecimalCGFloatValue(NSDecimal decimalNumber) **/ NSDecimal CPTDecimalFromChar(int8_t anInt) { - if ( (anInt >= 0) && (anInt < kCacheSize) ) { + if ((anInt >= 0) && (anInt < kCacheSize)) { if ( !cacheValueInitialized[anInt] ) { NSString *stringValue = [[NSString alloc] initWithFormat:@"%hhd", anInt]; cache[anInt] = CPTDecimalFromString(stringValue); @@ -270,7 +270,7 @@ NSDecimal CPTDecimalFromChar(int8_t anInt) **/ NSDecimal CPTDecimalFromShort(int16_t anInt) { - if ( (anInt >= 0) && (anInt < kCacheSize) ) { + if ((anInt >= 0) && (anInt < kCacheSize)) { if ( !cacheValueInitialized[anInt] ) { NSString *stringValue = [[NSString alloc] initWithFormat:@"%hd", anInt]; cache[anInt] = CPTDecimalFromString(stringValue); @@ -293,7 +293,7 @@ NSDecimal CPTDecimalFromShort(int16_t anInt) **/ NSDecimal CPTDecimalFromLong(int32_t anInt) { - if ( (anInt >= 0) && (anInt < kCacheSize) ) { + if ((anInt >= 0) && (anInt < kCacheSize)) { if ( !cacheValueInitialized[anInt] ) { NSString *stringValue = [[NSString alloc] initWithFormat:@"%d", anInt]; cache[anInt] = CPTDecimalFromString(stringValue); @@ -316,7 +316,7 @@ NSDecimal CPTDecimalFromLong(int32_t anInt) **/ NSDecimal CPTDecimalFromLongLong(int64_t anInt) { - if ( (anInt >= 0) && (anInt < kCacheSize) ) { + if ((anInt >= 0) && (anInt < kCacheSize)) { if ( !cacheValueInitialized[anInt] ) { NSString *stringValue = [[NSString alloc] initWithFormat:@"%lld", anInt]; cache[anInt] = CPTDecimalFromString(stringValue); @@ -339,7 +339,7 @@ NSDecimal CPTDecimalFromLongLong(int64_t anInt) **/ NSDecimal CPTDecimalFromInt(int anInt) { - if ( (anInt >= 0) && (anInt < kCacheSize) ) { + if ((anInt >= 0) && (anInt < kCacheSize)) { if ( !cacheValueInitialized[anInt] ) { NSString *stringValue = [[NSString alloc] initWithFormat:@"%d", anInt]; cache[anInt] = CPTDecimalFromString(stringValue); @@ -362,7 +362,7 @@ NSDecimal CPTDecimalFromInt(int anInt) **/ NSDecimal CPTDecimalFromInteger(NSInteger anInt) { - if ( (anInt >= 0) && (anInt < kCacheSize) ) { + if ((anInt >= 0) && (anInt < kCacheSize)) { if ( !cacheValueInitialized[anInt] ) { NSString *stringValue = [[NSString alloc] initWithFormat:@"%ld", (long)anInt]; cache[anInt] = CPTDecimalFromString(stringValue); @@ -523,7 +523,7 @@ NSDecimal CPTDecimalFromUnsignedInteger(NSUInteger anInt) **/ NSDecimal CPTDecimalFromFloat(float aFloat) { - if ( isnan(aFloat) ) { + if ( isnan(aFloat)) { return CPTDecimalNaN(); } else { @@ -541,7 +541,7 @@ NSDecimal CPTDecimalFromFloat(float aFloat) **/ NSDecimal CPTDecimalFromDouble(double aDouble) { - if ( isnan(aDouble) ) { + if ( isnan(aDouble)) { return CPTDecimalNaN(); } else { @@ -559,7 +559,7 @@ NSDecimal CPTDecimalFromDouble(double aDouble) **/ NSDecimal CPTDecimalFromCGFloat(CGFloat aCGFloat) { - if ( isnan(aCGFloat) ) { + if ( isnan(aCGFloat)) { return CPTDecimalNaN(); } else { @@ -774,11 +774,11 @@ NSDecimal CPTDecimalMax(NSDecimal leftOperand, NSDecimal rightOperand) **/ NSDecimal CPTDecimalAbs(NSDecimal value) { - if ( CPTDecimalGreaterThanOrEqualTo( value, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalGreaterThanOrEqualTo(value, CPTDecimalFromInteger(0))) { return value; } else { - return CPTDecimalMultiply( value, CPTDecimalFromInteger(-1) ); + return CPTDecimalMultiply(value, CPTDecimalFromInteger(-1)); } } @@ -800,7 +800,7 @@ NSRange CPTExpandedRange(NSRange range, NSInteger expandBy) NSInteger lowerExpansion = (NSInteger)range.location - loc; NSInteger length = MAX(0, (NSInteger)range.length + lowerExpansion + expandBy); - return NSMakeRange( (NSUInteger)loc, (NSUInteger)length); + return NSMakeRange((NSUInteger)loc, (NSUInteger)length); } #pragma mark - @@ -875,7 +875,7 @@ CGPoint CPTAlignPointToUserSpace(__nonnull CGContextRef context, CGPoint point) // Ensure that coordinates are at exactly the corner // of a device pixel. - point.x = round( point.x - CPTFloat(0.5) ) + CPTFloat(0.5); + point.x = round(point.x - CPTFloat(0.5)) + CPTFloat(0.5); point.y = ceil(point.y) - CPTFloat(0.5); // Convert the device aligned coordinate back to user space. @@ -922,11 +922,11 @@ CGRect CPTAlignRectToUserSpace(__nonnull CGContextRef context, CGRect rect) CGPoint oldOrigin = rect.origin; - rect.origin.x = round( rect.origin.x - CPTFloat(0.5) ); - rect.size.width = round( oldOrigin.x + rect.size.width - CPTFloat(0.5) ) - rect.origin.x; + rect.origin.x = round(rect.origin.x - CPTFloat(0.5)); + rect.size.width = round(oldOrigin.x + rect.size.width - CPTFloat(0.5)) - rect.origin.x; rect.origin.x += CPTFloat(0.5); - rect.origin.y = ceil( CGRectGetMaxY(rect) ) - CPTFloat(0.5); + rect.origin.y = ceil(CGRectGetMaxY(rect)) - CPTFloat(0.5); rect.size.height = ceil(oldOrigin.y - CPTFloat(0.5) - rect.origin.y); return CGContextConvertRectToUserSpace(context, rect); @@ -949,7 +949,7 @@ CGPoint CPTAlignIntegralPointToUserSpace(__nonnull CGContextRef context, CGPoint point = CGContextConvertPointToDeviceSpace(context, point); point.x = round(point.x); - point.y = ceil( point.y - CPTFloat(0.5) ); + point.y = ceil(point.y - CPTFloat(0.5)); return CGContextConvertPointToUserSpace(context, point); } @@ -973,7 +973,7 @@ CGRect CPTAlignIntegralRectToUserSpace(__nonnull CGContextRef context, CGRect re rect.origin.x = round(rect.origin.x); rect.size.width = round(oldOrigin.x + rect.size.width) - rect.origin.x; - rect.origin.y = ceil( CGRectGetMaxY(rect) - CPTFloat(0.5) ); + rect.origin.y = ceil(CGRectGetMaxY(rect) - CPTFloat(0.5)); rect.size.height = ceil(oldOrigin.y - CPTFloat(0.5) - rect.origin.y); return CGContextConvertRectToUserSpace(context, rect); @@ -984,14 +984,14 @@ CGRect CPTAlignBorderedRectToUserSpace(__nonnull CGContextRef context, CGRect re CGRect borderRect; CGFloat contextScale = CPTFloat(1.0); - if ( rect.size.height != CPTFloat(0.0) ) { + if ( rect.size.height != CPTFloat(0.0)) { CGRect deviceRect = CGContextConvertRectToDeviceSpace(context, rect); contextScale = deviceRect.size.height / rect.size.height; } - if ( contextScale != CPTFloat(1.0) ) { + if ( contextScale != CPTFloat(1.0)) { CGFloat borderWidth = borderLineStyle.lineWidth; - if ( ( borderWidth > CPTFloat(0.0) ) && ( borderWidth == round(borderWidth) ) ) { + if ((borderWidth > CPTFloat(0.0)) && (borderWidth == round(borderWidth))) { borderRect = CPTAlignIntegralRectToUserSpace(context, rect); } else { @@ -1125,7 +1125,7 @@ BOOL CPTEdgeInsetsEqualToEdgeInsets(CPTEdgeInsets insets1, CPTEdgeInsets insets2 if ( value != 0.0 ) { double sign = (signbit(value) ? -1.0 : +1.0); - return sign * (pow( 10.0, fabs(value) ) - 1.0); + return sign * (pow(10.0, fabs(value)) - 1.0); } else { return 0.0; diff --git a/framework/Source/CPTUtilitiesTests.m b/framework/Source/CPTUtilitiesTests.m index a90d52b7a..acbb54f94 100644 --- a/framework/Source/CPTUtilitiesTests.m +++ b/framework/Source/CPTUtilitiesTests.m @@ -50,7 +50,7 @@ -(void)testCPTDecimalIntegerValue XCTAssertEqual(CPTDecimalIntegerValue([d decimalValue]), (NSInteger)42, @"Result incorrect"); d = [NSDecimalNumber decimalNumberWithString:@"42.1"]; - XCTAssertEqual( (NSInteger)CPTDecimalIntegerValue([d decimalValue]), (NSInteger)42, @"Result incorrect"); + XCTAssertEqual((NSInteger)CPTDecimalIntegerValue([d decimalValue]), (NSInteger)42, @"Result incorrect"); } -(void)testCPTDecimalFloatValue @@ -634,11 +634,11 @@ -(void)testInverseLogModulus { XCTAssertEqual(CPTInverseLogModulus(0.0), 0.0, @"CPTInverseLogModulus(0.0)"); - XCTAssertEqualWithAccuracy(CPTInverseLogModulus( log10(11.0) ), 10.0, 1.0e-7, @"CPTInverseLogModulus(log10(11.0))"); - XCTAssertEqualWithAccuracy(CPTInverseLogModulus( -log10(11.0) ), -10.0, 1.0e-7, @"CPTInverseLogModulus(-log10(11.0))"); + XCTAssertEqualWithAccuracy(CPTInverseLogModulus(log10(11.0)), 10.0, 1.0e-7, @"CPTInverseLogModulus(log10(11.0))"); + XCTAssertEqualWithAccuracy(CPTInverseLogModulus(-log10(11.0)), -10.0, 1.0e-7, @"CPTInverseLogModulus(-log10(11.0))"); - XCTAssertEqualWithAccuracy(CPTInverseLogModulus( log10(101.0) ), 100.0, 1.0e-7, @"CPTInverseLogModulus(log10(101.0))"); - XCTAssertEqualWithAccuracy(CPTInverseLogModulus( -log10(101.0) ), -100.0, 1.0e-7, @"CPTInverseLogModulus(-log10(101.0))"); + XCTAssertEqualWithAccuracy(CPTInverseLogModulus(log10(101.0)), 100.0, 1.0e-7, @"CPTInverseLogModulus(log10(101.0))"); + XCTAssertEqualWithAccuracy(CPTInverseLogModulus(-log10(101.0)), -100.0, 1.0e-7, @"CPTInverseLogModulus(-log10(101.0))"); } /// @endcond diff --git a/framework/Source/CPTXYAxis.m b/framework/Source/CPTXYAxis.m index 5a3a62492..9b0c117a4 100644 --- a/framework/Source/CPTXYAxis.m +++ b/framework/Source/CPTXYAxis.m @@ -67,7 +67,7 @@ @implementation CPTXYAxis **/ -(nonnull instancetype)initWithFrame:(CGRect)newFrame { - if ( (self = [super initWithFrame:newFrame]) ) { + if ((self = [super initWithFrame:newFrame])) { orthogonalPosition = @0.0; axisConstraints = nil; self.tickDirection = CPTSignNone; @@ -81,7 +81,7 @@ -(nonnull instancetype)initWithFrame:(CGRect)newFrame -(nonnull instancetype)initWithLayer:(nonnull id)layer { - if ( (self = [super initWithLayer:layer]) ) { + if ((self = [super initWithLayer:layer])) { CPTXYAxis *theLayer = (CPTXYAxis *)layer; orthogonalPosition = theLayer->orthogonalPosition; @@ -107,7 +107,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super initWithCoder:coder]) ) { + if ((self = [super initWithCoder:coder])) { orthogonalPosition = [coder decodeObjectOfClass:[NSNumber class] forKey:@"CPTXYAxis.orthogonalPosition"]; axisConstraints = [coder decodeObjectOfClass:[CPTConstraints class] @@ -205,13 +205,13 @@ -(CGPoint)viewPointForCoordinateValue:(nullable NSNumber *)coordinateValue } } - if ( isnan(point.x) || isnan(point.y) ) { - NSLog( @"[CPTXYAxis viewPointForCoordinateValue:%@] was %@", coordinateValue, CPTStringFromPoint(point) ); + if ( isnan(point.x) || isnan(point.y)) { + NSLog(@"[CPTXYAxis viewPointForCoordinateValue:%@] was %@", coordinateValue, CPTStringFromPoint(point)); - if ( isnan(point.x) ) { + if ( isnan(point.x)) { point.x = CPTFloat(0.0); } - if ( isnan(point.y) ) { + if ( isnan(point.y)) { point.y = CPTFloat(0.0); } } @@ -237,7 +237,7 @@ -(void)drawTicksInContext:(nonnull CGContextRef)context atLocations:(nullable CP CGFloat lineWidth = lineStyle.lineWidth; CPTAlignPointFunction alignmentFunction = NULL; - if ( ( self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { + if ((self.contentsScale > CPTFloat(1.0)) && (round(lineWidth) == lineWidth)) { alignmentFunction = CPTAlignIntegralPointToUserSpace; } else { @@ -348,7 +348,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context CPTAlignPointFunction alignmentFunction = CPTAlignPointToUserSpace; if ( theLineStyle ) { CGFloat lineWidth = theLineStyle.lineWidth; - if ( ( self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { + if ((self.contentsScale > CPTFloat(1.0)) && (round(lineWidth) == lineWidth)) { alignmentFunction = CPTAlignIntegralPointToUserSpace; } @@ -443,7 +443,7 @@ -(void)drawGridLinesInContext:(nonnull CGContextRef)context isMajor:(BOOL)major CGFloat lineWidth = lineStyle.lineWidth; CPTAlignPointFunction alignmentFunction = NULL; - if ( ( self.contentsScale > CPTFloat(1.0) ) && (round(lineWidth) == lineWidth) ) { + if ((self.contentsScale > CPTFloat(1.0)) && (round(lineWidth) == lineWidth)) { alignmentFunction = CPTAlignIntegralPointToUserSpace; } else { @@ -501,7 +501,7 @@ -(NSUInteger)initialBandIndexForSortedLocations:(CPTNumberArray *)sortedLocation NSNumber *bandAnchor = self.alternatingBandAnchor; NSUInteger bandCount = self.alternatingBandFills.count; - if ( bandAnchor && (bandCount > 0) ) { + if ( bandAnchor && (bandCount > 0)) { NSDecimal anchor = bandAnchor.decimalValue; CPTPlotRange *theVisibleRange = self.visibleRange; @@ -552,7 +552,7 @@ -(NSUInteger)initialBandIndexForSortedLocations:(CPTNumberArray *)sortedLocation // user provided tick locations; they're not guaranteed to be evenly spaced, but band drawing always starts with the first location if ( range.lengthDouble >= 0.0 ) { for ( NSNumber *location in sortedLocations ) { - if ( CPTDecimalLessThan(anchor, location.decimalValue) ) { + if ( CPTDecimalLessThan(anchor, location.decimalValue)) { break; } @@ -561,7 +561,7 @@ -(NSUInteger)initialBandIndexForSortedLocations:(CPTNumberArray *)sortedLocation } else { for ( NSNumber *location in sortedLocations ) { - if ( CPTDecimalGreaterThanOrEqualTo(anchor, location.decimalValue) ) { + if ( CPTDecimalGreaterThanOrEqualTo(anchor, location.decimalValue)) { break; } @@ -574,7 +574,7 @@ -(NSUInteger)initialBandIndexForSortedLocations:(CPTNumberArray *)sortedLocation break; } - if ( !CPTDecimalEquals(majorInterval, zero) ) { + if ( !CPTDecimalEquals(majorInterval, zero)) { coord = CPTDecimalDivide(CPTDecimalSubtract(rangeStart, origin), majorInterval); NSDecimalRound(&coord, &coord, 0, NSRoundUp); NSInteger stepCount = CPTDecimalIntegerValue(coord) + CPTDecimalIntegerValue(offset) + 1; @@ -622,7 +622,7 @@ -(void)drawBackgroundBandsInContext:(nonnull CGContextRef)context const NSDecimal zero = CPTDecimalFromInteger(0); NSSortDescriptor *sortDescriptor = nil; if ( range ) { - if ( CPTDecimalGreaterThanOrEqualTo(range.lengthDecimal, zero) ) { + if ( CPTDecimalGreaterThanOrEqualTo(range.lengthDecimal, zero)) { sortDescriptor = [[NSSortDescriptor alloc] initWithKey:nil ascending:YES]; } else { @@ -659,7 +659,7 @@ -(void)drawBackgroundBandsInContext:(nonnull CGContextRef)context for ( NSDecimalNumber *location in locations ) { NSDecimal currentLocation = location.decimalValue; - if ( !CPTDecimalEquals(CPTDecimalSubtract(currentLocation, lastLocation), zero) ) { + if ( !CPTDecimalEquals(CPTDecimalSubtract(currentLocation, lastLocation), zero)) { CPTFill *bandFill = bandArray[bandIndex++]; bandIndex %= bandCount; @@ -673,10 +673,10 @@ -(void)drawBackgroundBandsInContext:(nonnull CGContextRef)context CGPoint endViewPoint = [thePlotSpace plotAreaViewPointForPlotPoint:endPlotPoint numberOfCoordinates:2]; // Fill band - CGRect fillRect = CPTRectMake( MIN(startViewPoint.x, endViewPoint.x), - MIN(startViewPoint.y, endViewPoint.y), - ABS(endViewPoint.x - startViewPoint.x), - ABS(endViewPoint.y - startViewPoint.y) ); + CGRect fillRect = CPTRectMake(MIN(startViewPoint.x, endViewPoint.x), + MIN(startViewPoint.y, endViewPoint.y), + ABS(endViewPoint.x - startViewPoint.x), + ABS(endViewPoint.y - startViewPoint.y)); [bandFill fillRect:CPTAlignIntegralRectToUserSpace(context, fillRect) inContext:context]; } } @@ -692,7 +692,7 @@ -(void)drawBackgroundBandsInContext:(nonnull CGContextRef)context else { endLocation = CPTDecimalNaN(); } - if ( !CPTDecimalEquals(lastLocation, endLocation) ) { + if ( !CPTDecimalEquals(lastLocation, endLocation)) { CPTFill *bandFill = bandArray[bandIndex]; if ( bandFill != null ) { @@ -705,10 +705,10 @@ -(void)drawBackgroundBandsInContext:(nonnull CGContextRef)context CGPoint endViewPoint = [thePlotSpace plotAreaViewPointForPlotPoint:endPlotPoint numberOfCoordinates:2]; // Fill band - CGRect fillRect = CPTRectMake( MIN(startViewPoint.x, endViewPoint.x), - MIN(startViewPoint.y, endViewPoint.y), - ABS(endViewPoint.x - startViewPoint.x), - ABS(endViewPoint.y - startViewPoint.y) ); + CGRect fillRect = CPTRectMake(MIN(startViewPoint.x, endViewPoint.x), + MIN(startViewPoint.y, endViewPoint.y), + ABS(endViewPoint.x - startViewPoint.x), + ABS(endViewPoint.y - startViewPoint.y)); [bandFill fillRect:CPTAlignIntegralRectToUserSpace(context, fillRect) inContext:context]; } } @@ -763,10 +763,10 @@ -(void)drawBackgroundLimitsInContext:(nonnull CGContextRef)context CGPoint endViewPoint = [thePlotSpace plotAreaViewPointForPlotPoint:endPlotPoint numberOfCoordinates:2]; // Fill band - CGRect fillRect = CPTRectMake( MIN(startViewPoint.x, endViewPoint.x), - MIN(startViewPoint.y, endViewPoint.y), - ABS(endViewPoint.x - startViewPoint.x), - ABS(endViewPoint.y - startViewPoint.y) ); + CGRect fillRect = CPTRectMake(MIN(startViewPoint.x, endViewPoint.x), + MIN(startViewPoint.y, endViewPoint.y), + ABS(endViewPoint.x - startViewPoint.x), + ABS(endViewPoint.y - startViewPoint.y)); [bandFill fillRect:CPTAlignIntegralRectToUserSpace(context, fillRect) inContext:context]; } } @@ -824,8 +824,8 @@ -(nonnull NSNumber *)defaultTitleLocation double loc = axisRange.locationDouble; double end = axisRange.endDouble; - if ( (loc > 0.0) && (end >= 0.0) ) { - location = @( pow(10.0, ( log10(loc) + log10(end) ) / 2.0) ); + if ((loc > 0.0) && (end >= 0.0)) { + location = @(pow(10.0, (log10(loc) + log10(end)) / 2.0)); } else { location = axisRange.midPoint; @@ -838,7 +838,7 @@ -(nonnull NSNumber *)defaultTitleLocation double loc = axisRange.locationDouble; double end = axisRange.endDouble; - location = @( CPTInverseLogModulus( ( CPTLogModulus(loc) + CPTLogModulus(end) ) / 2.0) ); + location = @(CPTInverseLogModulus((CPTLogModulus(loc) + CPTLogModulus(end)) / 2.0)); } break; diff --git a/framework/Source/CPTXYAxisSet.m b/framework/Source/CPTXYAxisSet.m index 8f14af251..70c48c5bf 100644 --- a/framework/Source/CPTXYAxisSet.m +++ b/framework/Source/CPTXYAxisSet.m @@ -42,7 +42,7 @@ @implementation CPTXYAxisSet **/ -(nonnull instancetype)initWithFrame:(CGRect)newFrame { - if ( (self = [super initWithFrame:newFrame]) ) { + if ((self = [super initWithFrame:newFrame])) { CPTXYAxis *xAxis = [[CPTXYAxis alloc] initWithFrame:newFrame]; xAxis.coordinate = CPTCoordinateX; xAxis.tickDirection = CPTSignNegative; @@ -80,7 +80,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context CGFloat radius = superlayer.cornerRadius; - if ( radius > CPTFloat(0.0) ) { + if ( radius > CPTFloat(0.0)) { CGContextBeginPath(context); CPTAddRoundedRectPath(context, borderRect, radius); diff --git a/framework/Source/CPTXYGraph.m b/framework/Source/CPTXYGraph.m index 4f4ab0c88..480c28bb6 100644 --- a/framework/Source/CPTXYGraph.m +++ b/framework/Source/CPTXYGraph.m @@ -47,7 +47,7 @@ @implementation CPTXYGraph **/ -(nonnull instancetype)initWithFrame:(CGRect)newFrame xScaleType:(CPTScaleType)newXScaleType yScaleType:(CPTScaleType)newYScaleType { - if ( (self = [super initWithFrame:newFrame]) ) { + if ((self = [super initWithFrame:newFrame])) { xScaleType = newXScaleType; yScaleType = newYScaleType; } @@ -78,7 +78,7 @@ -(nonnull instancetype)initWithFrame:(CGRect)newFrame -(nonnull instancetype)initWithLayer:(nonnull id)layer { - if ( (self = [super initWithLayer:layer]) ) { + if ((self = [super initWithLayer:layer])) { CPTXYGraph *theLayer = (CPTXYGraph *)layer; xScaleType = theLayer->xScaleType; @@ -104,7 +104,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super initWithCoder:coder]) ) { + if ((self = [super initWithCoder:coder])) { xScaleType = (CPTScaleType)[coder decodeIntegerForKey:@"CPTXYGraph.xScaleType"]; yScaleType = (CPTScaleType)[coder decodeIntegerForKey:@"CPTXYGraph.yScaleType"]; } diff --git a/framework/Source/CPTXYPlotSpace.m b/framework/Source/CPTXYPlotSpace.m index fa4c309d9..cd8368252 100644 --- a/framework/Source/CPTXYPlotSpace.m +++ b/framework/Source/CPTXYPlotSpace.m @@ -198,7 +198,7 @@ @implementation CPTXYPlotSpace **/ -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { xRange = [[CPTPlotRange alloc] initWithLocation:@0.0 length:@1.0]; yRange = [[CPTPlotRange alloc] initWithLocation:@0.0 length:@1.0]; globalXRange = nil; @@ -257,7 +257,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super initWithCoder:coder]) ) { + if ((self = [super initWithCoder:coder])) { CPTPlotRange *range = [coder decodeObjectOfClass:[CPTPlotRange class] forKey:@"CPTXYPlotSpace.xRange"]; if ( range ) { @@ -418,14 +418,14 @@ -(void)setXRange:(nonnull CPTPlotRange *)range if ( xRange && constrainedRange ) { isScrolling = !CPTDecimalEquals(constrainedRange.locationDecimal, xRange.locationDecimal) && CPTDecimalEquals(constrainedRange.lengthDecimal, xRange.lengthDecimal); - if ( isScrolling && ( displacement == CPTFloat(0.0) ) ) { + if ( isScrolling && (displacement == CPTFloat(0.0))) { CPTGraph *theGraph = self.graph; CPTPlotArea *plotArea = theGraph.plotAreaFrame.plotArea; if ( plotArea ) { NSDecimal rangeLength = constrainedRange.lengthDecimal; - if ( !CPTDecimalEquals( rangeLength, CPTDecimalFromInteger(0) ) ) { + if ( !CPTDecimalEquals(rangeLength, CPTDecimalFromInteger(0))) { NSDecimal diff = CPTDecimalDivide(CPTDecimalSubtract(constrainedRange.locationDecimal, xRange.locationDecimal), rangeLength); displacement = plotArea.bounds.size.width * CPTDecimalCGFloatValue(diff); @@ -482,14 +482,14 @@ -(void)setYRange:(nonnull CPTPlotRange *)range if ( yRange && constrainedRange ) { isScrolling = !CPTDecimalEquals(constrainedRange.locationDecimal, yRange.locationDecimal) && CPTDecimalEquals(constrainedRange.lengthDecimal, yRange.lengthDecimal); - if ( isScrolling && ( displacement == CPTFloat(0.0) ) ) { + if ( isScrolling && (displacement == CPTFloat(0.0))) { CPTGraph *theGraph = self.graph; CPTPlotArea *plotArea = theGraph.plotAreaFrame.plotArea; if ( plotArea ) { NSDecimal rangeLength = constrainedRange.lengthDecimal; - if ( !CPTDecimalEquals( rangeLength, CPTDecimalFromInteger(0) ) ) { + if ( !CPTDecimalEquals(rangeLength, CPTDecimalFromInteger(0))) { NSDecimal diff = CPTDecimalDivide(CPTDecimalSubtract(constrainedRange.locationDecimal, yRange.locationDecimal), rangeLength); displacement = plotArea.bounds.size.height * CPTDecimalCGFloatValue(diff); @@ -531,7 +531,7 @@ -(nonnull CPTPlotRange *)constrainRange:(nonnull CPTPlotRange *)existingRange to CPTPlotRange *theGlobalRange = globalRange; - if ( CPTDecimalGreaterThanOrEqualTo(existingRange.lengthDecimal, theGlobalRange.lengthDecimal) ) { + if ( CPTDecimalGreaterThanOrEqualTo(existingRange.lengthDecimal, theGlobalRange.lengthDecimal)) { return [theGlobalRange copy]; } else { @@ -595,8 +595,8 @@ -(void)animateRangeForCoordinate:(CPTCoordinate)coordinate shift:(NSDecimal)shif CPTPlotRange *constrainedRange = [self constrainRange:newRange toGlobalRange:globalRange]; if ( ![newRange isEqualToRange:constrainedRange] && ![globalRange containsRange:newRange] ) { - BOOL direction = ( CPTDecimalGreaterThan(shift, zero) && CPTDecimalGreaterThan(oldRange.lengthDecimal, zero) ) || - ( CPTDecimalLessThan(shift, zero) && CPTDecimalLessThan(oldRange.lengthDecimal, zero) ); + BOOL direction = (CPTDecimalGreaterThan(shift, zero) && CPTDecimalGreaterThan(oldRange.lengthDecimal, zero)) || + (CPTDecimalLessThan(shift, zero) && CPTDecimalLessThan(oldRange.lengthDecimal, zero)); // decelerate at the global range if ( hasShift ) { @@ -610,11 +610,11 @@ -(void)animateRangeForCoordinate:(CPTCoordinate)coordinate shift:(NSDecimal)shif CGFloat brakingOffset = globalPoint - oldPoint; brakingDelay = CPTFirstPositiveRoot(acceleration, speed, brakingOffset); - if ( !isnan(brakingDelay) ) { + if ( !isnan(brakingDelay)) { speed -= brakingDelay * acceleration; // slow down quickly - while ( momentumTime > CPTFloat(0.1) ) { + while ( momentumTime > CPTFloat(0.1)) { acceleration *= CPTFloat(2.0); momentumTime = speed / (CPTFloat(2.0) * acceleration); } @@ -651,10 +651,10 @@ -(void)animateRangeForCoordinate:(CPTCoordinate)coordinate shift:(NSDecimal)shif brakingDelay = CPTFloat(0.0); // slow down quickly - while ( momentumTime > CPTFloat(0.1) ) { + while ( momentumTime > CPTFloat(0.1)) { momentumTime *= CPTFloat(0.5); - shift = CPTDecimalDivide( shift, CPTDecimalFromInteger(2) ); + shift = CPTDecimalDivide(shift, CPTDecimalFromInteger(2)); } newRange = [oldRange mutableCopy]; @@ -662,7 +662,7 @@ -(void)animateRangeForCoordinate:(CPTCoordinate)coordinate shift:(NSDecimal)shif newRange.locationDecimal = CPTDecimalAdd(newRange.locationDecimal, shift); } - if ( !isnan(brakingDelay) ) { + if ( !isnan(brakingDelay)) { op = [CPTAnimation animate:self property:property fromPlotRange:constrainedRange @@ -736,11 +736,11 @@ CGFloat CPTFirstPositiveRoot(CGFloat a, CGFloat b, CGFloat c) CGFloat root1 = (-b + discriminant) / (CPTFloat(2.0) * a); CGFloat root2 = (-b - discriminant) / (CPTFloat(2.0) * a); - if ( !isnan(root1) && !isnan(root2) ) { - if ( root1 >= CPTFloat(0.0) ) { + if ( !isnan(root1) && !isnan(root2)) { + if ( root1 >= CPTFloat(0.0)) { root = root1; } - if ( ( root2 >= CPTFloat(0.0) ) && ( isnan(root) || (root2 < root) ) ) { + if ((root2 >= CPTFloat(0.0)) && (isnan(root) || (root2 < root))) { root = root2; } } @@ -789,13 +789,13 @@ -(void)scaleToFitPlots:(nullable CPTPlotArray *)plots // Set range NSDecimal zero = CPTDecimalFromInteger(0); if ( unionXRange ) { - if ( CPTDecimalEquals(unionXRange.lengthDecimal, zero) ) { + if ( CPTDecimalEquals(unionXRange.lengthDecimal, zero)) { [unionXRange unionPlotRange:self.xRange]; } self.xRange = unionXRange; } if ( unionYRange ) { - if ( CPTDecimalEquals(unionYRange.lengthDecimal, zero) ) { + if ( CPTDecimalEquals(unionYRange.lengthDecimal, zero)) { [unionYRange unionPlotRange:self.yRange]; } self.yRange = unionYRange; @@ -827,13 +827,13 @@ -(void)scaleToFitEntirePlots:(nullable CPTPlotArray *)plots // Set range NSDecimal zero = CPTDecimalFromInteger(0); if ( unionXRange ) { - if ( CPTDecimalEquals(unionXRange.lengthDecimal, zero) ) { + if ( CPTDecimalEquals(unionXRange.lengthDecimal, zero)) { [unionXRange unionPlotRange:self.xRange]; } self.xRange = unionXRange; } if ( unionYRange ) { - if ( CPTDecimalEquals(unionYRange.lengthDecimal, zero) ) { + if ( CPTDecimalEquals(unionYRange.lengthDecimal, zero)) { [unionYRange unionPlotRange:self.yRange]; } self.yRange = unionYRange; @@ -891,7 +891,7 @@ -(CGFloat)viewCoordinateForViewLength:(NSDecimal)viewLength linearPlotRange:(non } NSDecimal factor = CPTDecimalDivide(CPTDecimalSubtract(plotCoord, range.locationDecimal), range.lengthDecimal); - if ( NSDecimalIsNotANumber(&factor) ) { + if ( NSDecimalIsNotANumber(&factor)) { factor = CPTDecimalFromInteger(0); } @@ -902,17 +902,17 @@ -(CGFloat)viewCoordinateForViewLength:(NSDecimal)viewLength linearPlotRange:(non -(CGFloat)viewCoordinateForViewLength:(CGFloat)viewLength linearPlotRange:(nonnull CPTPlotRange *)range doublePrecisionPlotCoordinateValue:(double)plotCoord { - if ( !range || (range.lengthDouble == 0.0) ) { + if ( !range || (range.lengthDouble == 0.0)) { return CPTFloat(0.0); } - return viewLength * (CGFloat)( (plotCoord - range.locationDouble) / range.lengthDouble); + return viewLength * (CGFloat)((plotCoord - range.locationDouble) / range.lengthDouble); } -(NSDecimal)plotCoordinateForViewLength:(NSDecimal)viewLength linearPlotRange:(nonnull CPTPlotRange *)range boundsLength:(NSDecimal)boundsLength { const NSDecimal zero = CPTDecimalFromInteger(0); - if ( CPTDecimalEquals(boundsLength, zero) ) { + if ( CPTDecimalEquals(boundsLength, zero)) { return zero; } @@ -929,7 +929,7 @@ -(NSDecimal)plotCoordinateForViewLength:(NSDecimal)viewLength linearPlotRange:(n -(double)doublePrecisionPlotCoordinateForViewLength:(CGFloat)viewLength linearPlotRange:(nonnull CPTPlotRange *)range boundsLength:(CGFloat)boundsLength { - if ( boundsLength == CPTFloat(0.0) ) { + if ( boundsLength == CPTFloat(0.0)) { return 0.0; } @@ -943,7 +943,7 @@ -(double)doublePrecisionPlotCoordinateForViewLength:(CGFloat)viewLength linearPl // Log (only one version since there are no transcendental functions for NSDecimal) -(CGFloat)viewCoordinateForViewLength:(CGFloat)viewLength logPlotRange:(nonnull CPTPlotRange *)range doublePrecisionPlotCoordinateValue:(double)plotCoord { - if ( (range.minLimitDouble <= 0.0) || (range.maxLimitDouble <= 0.0) || (plotCoord <= 0.0) ) { + if ((range.minLimitDouble <= 0.0) || (range.maxLimitDouble <= 0.0) || (plotCoord <= 0.0)) { return CPTFloat(0.0); } @@ -951,12 +951,12 @@ -(CGFloat)viewCoordinateForViewLength:(CGFloat)viewLength logPlotRange:(nonnull double logCoord = log10(plotCoord); double logEnd = log10(range.endDouble); - return viewLength * (CGFloat)( (logCoord - logLoc) / (logEnd - logLoc) ); + return viewLength * (CGFloat)((logCoord - logLoc) / (logEnd - logLoc)); } -(double)doublePrecisionPlotCoordinateForViewLength:(CGFloat)viewLength logPlotRange:(nonnull CPTPlotRange *)range boundsLength:(CGFloat)boundsLength { - if ( boundsLength == CPTFloat(0.0) ) { + if ( boundsLength == CPTFloat(0.0)) { return 0.0; } @@ -979,12 +979,12 @@ -(CGFloat)viewCoordinateForViewLength:(CGFloat)viewLength logModulusPlotRange:(n double logCoord = CPTLogModulus(plotCoord); double logEnd = CPTLogModulus(range.endDouble); - return viewLength * (CGFloat)( (logCoord - logLoc) / (logEnd - logLoc) ); + return viewLength * (CGFloat)((logCoord - logLoc) / (logEnd - logLoc)); } -(double)doublePrecisionPlotCoordinateForViewLength:(CGFloat)viewLength logModulusPlotRange:(nonnull CPTPlotRange *)range boundsLength:(CGFloat)boundsLength { - if ( boundsLength == CPTFloat(0.0) ) { + if ( boundsLength == CPTFloat(0.0)) { return 0.0; } @@ -1418,7 +1418,7 @@ -(void)scaleBy:(CGFloat)interactionScale aboutPoint:(CGPoint)plotAreaPoint CPTGraph *theGraph = self.graph; CPTPlotArea *plotArea = theGraph.plotAreaFrame.plotArea; - if ( !plotArea || ( interactionScale <= CPTFloat(1.e-6) ) ) { + if ( !plotArea || (interactionScale <= CPTFloat(1.e-6))) { return; } if ( ![plotArea containsPoint:plotAreaPoint] ) { @@ -1451,7 +1451,7 @@ -(void)scaleBy:(CGFloat)interactionScale aboutPoint:(CGPoint)plotAreaPoint // New locations NSDecimal newLocationX; - if ( CPTDecimalGreaterThanOrEqualTo( oldRangeX.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalGreaterThanOrEqualTo(oldRangeX.lengthDecimal, CPTDecimalFromInteger(0))) { NSDecimal oldFirstLengthX = CPTDecimalSubtract(plotInteractionPoint[CPTCoordinateX], oldRangeX.minLimitDecimal); // x - minX NSDecimal newFirstLengthX = CPTDecimalDivide(oldFirstLengthX, decimalScale); // (x - minX) / scale newLocationX = CPTDecimalSubtract(plotInteractionPoint[CPTCoordinateX], newFirstLengthX); @@ -1463,7 +1463,7 @@ -(void)scaleBy:(CGFloat)interactionScale aboutPoint:(CGPoint)plotAreaPoint } NSDecimal newLocationY; - if ( CPTDecimalGreaterThanOrEqualTo( oldRangeY.lengthDecimal, CPTDecimalFromInteger(0) ) ) { + if ( CPTDecimalGreaterThanOrEqualTo(oldRangeY.lengthDecimal, CPTDecimalFromInteger(0))) { NSDecimal oldFirstLengthY = CPTDecimalSubtract(plotInteractionPoint[CPTCoordinateY], oldRangeY.minLimitDecimal); // y - minY NSDecimal newFirstLengthY = CPTDecimalDivide(oldFirstLengthY, decimalScale); // (y - minY) / scale newLocationY = CPTDecimalSubtract(plotInteractionPoint[CPTCoordinateY], newFirstLengthY); @@ -1601,7 +1601,7 @@ -(BOOL)pointingDeviceUpEvent:(nonnull CPTNativeEvent *)event atPoint:(CGPoint)in NSTimeInterval deltaT = event.timestamp - self.lastDragTime; NSTimeInterval lastDeltaT = self.lastDeltaTime; - if ( (deltaT > 0.0) && (deltaT < 0.05) && (lastDeltaT > 0.0) ) { + if ((deltaT > 0.0) && (deltaT < 0.05) && (lastDeltaT > 0.0)) { CGPoint pointInPlotArea = [theGraph convertPoint:interactionPoint toLayer:plotArea]; CGPoint displacement = self.lastDisplacement; @@ -1609,7 +1609,7 @@ -(BOOL)pointingDeviceUpEvent:(nonnull CPTNativeEvent *)event atPoint:(CGPoint)in speed = sqrt(displacement.x * displacement.x + displacement.y * displacement.y) / CPTFloat(lastDeltaT); momentumTime = speed / (CPTFloat(2.0) * acceleration); CGFloat distanceTraveled = speed * momentumTime - CPTFloat(0.5) * acceleration * momentumTime * momentumTime; - distanceTraveled = MAX( distanceTraveled, CPTFloat(0.0) ); + distanceTraveled = MAX(distanceTraveled, CPTFloat(0.0)); CGFloat theta = atan2(displacement.y, displacement.x); scaleX = cos(theta); @@ -1755,13 +1755,13 @@ -(nullable CPTPlotRange *)shiftRange:(nonnull CPTPlotRange *)oldRange by:(NSDeci // reduce the shift as we get farther outside the global range NSDecimal rangeLength = newRange.lengthDecimal; - if ( !CPTDecimalEquals( rangeLength, CPTDecimalFromInteger(0) ) ) { + if ( !CPTDecimalEquals(rangeLength, CPTDecimalFromInteger(0))) { NSDecimal diff = CPTDecimalDivide(CPTDecimalSubtract(constrainedRange.locationDecimal, newRange.locationDecimal), rangeLength); - diff = CPTDecimalMax( CPTDecimalMin( CPTDecimalMultiply( diff, CPTDecimalFromDouble(2.5) ), CPTDecimalFromInteger(1) ), CPTDecimalFromInteger(-1) ); + diff = CPTDecimalMax(CPTDecimalMin(CPTDecimalMultiply(diff, CPTDecimalFromDouble(2.5)), CPTDecimalFromInteger(1)), CPTDecimalFromInteger(-1)); - newRange.locationDecimal = CPTDecimalSubtract( newRange.locationDecimal, CPTDecimalMultiply( shift, CPTDecimalAbs(diff) ) ); + newRange.locationDecimal = CPTDecimalSubtract(newRange.locationDecimal, CPTDecimalMultiply(shift, CPTDecimalAbs(diff))); - *displacement = *displacement * ( CPTFloat(1.0) - ABS( CPTDecimalCGFloatValue(diff) ) ); + *displacement = *displacement * (CPTFloat(1.0) - ABS(CPTDecimalCGFloatValue(diff))); } } } diff --git a/framework/Source/CPTXYPlotSpaceTests.m b/framework/Source/CPTXYPlotSpaceTests.m index 8b0075245..888b6045d 100644 --- a/framework/Source/CPTXYPlotSpaceTests.m +++ b/framework/Source/CPTXYPlotSpaceTests.m @@ -146,7 +146,7 @@ -(void)testViewPointForPlotPointArrayLog plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:@1.0 length:@9.0]; - CPTNumberArray *plotPoint = @[@( sqrt(10.0) ), @( sqrt(10.0) )]; + CPTNumberArray *plotPoint = @[@(sqrt(10.0)), @(sqrt(10.0))]; CGPoint viewPoint = [plotSpace plotAreaViewPointForPlotPoint:plotPoint]; @@ -177,8 +177,8 @@ -(void)testViewPointForPlotPointLog length:@9.0]; NSDecimal plotPoint[2]; - plotPoint[CPTCoordinateX] = CPTDecimalFromDouble( sqrt(10.0) ); - plotPoint[CPTCoordinateY] = CPTDecimalFromDouble( sqrt(10.0) ); + plotPoint[CPTCoordinateX] = CPTDecimalFromDouble(sqrt(10.0)); + plotPoint[CPTCoordinateY] = CPTDecimalFromDouble(sqrt(10.0)); CGPoint viewPoint = [plotSpace plotAreaViewPointForPlotPoint:plotPoint numberOfCoordinates:2]; @@ -315,9 +315,9 @@ -(void)testPlotPointArrayForViewPointLinear NSString *errMessage; errMessage = [NSString stringWithFormat:@"plotPoint[CPTCoordinateX] was %@", plotPoint[CPTCoordinateX]]; - XCTAssertTrue(CPTDecimalEquals( [plotPoint[CPTCoordinateX] decimalValue], CPTDecimalFromDouble(5.0) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals([plotPoint[CPTCoordinateX] decimalValue], CPTDecimalFromDouble(5.0)), @"%@", errMessage); errMessage = [NSString stringWithFormat:@"plotPoint[CPTCoordinateY] was %@", plotPoint[CPTCoordinateY]]; - XCTAssertTrue(CPTDecimalEquals( [plotPoint[CPTCoordinateY] decimalValue], CPTDecimalFromDouble(5.0) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals([plotPoint[CPTCoordinateY] decimalValue], CPTDecimalFromDouble(5.0)), @"%@", errMessage); } -(void)testPlotPointForViewPointLinear @@ -339,9 +339,9 @@ -(void)testPlotPointForViewPointLinear [plotSpace plotPoint:plotPoint numberOfCoordinates:2 forPlotAreaViewPoint:viewPoint]; errMessage = [NSString stringWithFormat:@"plotPoint[CPTCoordinateX] was %@", NSDecimalString(&plotPoint[CPTCoordinateX], nil)]; - XCTAssertTrue(CPTDecimalEquals( plotPoint[CPTCoordinateX], CPTDecimalFromDouble(5.0) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals(plotPoint[CPTCoordinateX], CPTDecimalFromDouble(5.0)), @"%@", errMessage); errMessage = [NSString stringWithFormat:@"plotPoint[CPTCoordinateY] was %@", NSDecimalString(&plotPoint[CPTCoordinateY], nil)]; - XCTAssertTrue(CPTDecimalEquals( plotPoint[CPTCoordinateY], CPTDecimalFromDouble(5.0) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals(plotPoint[CPTCoordinateY], CPTDecimalFromDouble(5.0)), @"%@", errMessage); } -(void)testDoublePrecisionPlotPointForViewPointLinear @@ -414,9 +414,9 @@ -(void)testPlotPointForViewPointLog [plotSpace plotPoint:plotPoint numberOfCoordinates:2 forPlotAreaViewPoint:viewPoint]; errMessage = [NSString stringWithFormat:@"plotPoint[CPTCoordinateX] was %@", NSDecimalString(&plotPoint[CPTCoordinateX], nil)]; - XCTAssertTrue(CPTDecimalEquals( plotPoint[CPTCoordinateX], CPTDecimalFromDouble( sqrt(10.0) ) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals(plotPoint[CPTCoordinateX], CPTDecimalFromDouble(sqrt(10.0))), @"%@", errMessage); errMessage = [NSString stringWithFormat:@"plotPoint[CPTCoordinateY] was %@", NSDecimalString(&plotPoint[CPTCoordinateY], nil)]; - XCTAssertTrue(CPTDecimalEquals( plotPoint[CPTCoordinateY], CPTDecimalFromDouble( sqrt(10.0) ) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals(plotPoint[CPTCoordinateY], CPTDecimalFromDouble(sqrt(10.0))), @"%@", errMessage); } -(void)testDoublePrecisionPlotPointForViewPointLog @@ -489,9 +489,9 @@ -(void)testPlotPointForViewPointLogModulus [plotSpace plotPoint:plotPoint numberOfCoordinates:2 forPlotAreaViewPoint:viewPoint]; errMessage = [NSString stringWithFormat:@"plotPoint[CPTCoordinateX] was %@", NSDecimalString(&plotPoint[CPTCoordinateX], nil)]; - XCTAssertTrue(CPTDecimalEquals( plotPoint[CPTCoordinateX], CPTDecimalFromInteger(0) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals(plotPoint[CPTCoordinateX], CPTDecimalFromInteger(0)), @"%@", errMessage); errMessage = [NSString stringWithFormat:@"plotPoint[CPTCoordinateY] was %@", NSDecimalString(&plotPoint[CPTCoordinateY], nil)]; - XCTAssertTrue(CPTDecimalEquals( plotPoint[CPTCoordinateY], CPTDecimalFromInteger(0) ), @"%@", errMessage); + XCTAssertTrue(CPTDecimalEquals(plotPoint[CPTCoordinateY], CPTDecimalFromInteger(0)), @"%@", errMessage); } -(void)testDoublePrecisionPlotPointForViewPointLogModulus @@ -610,7 +610,7 @@ -(void)testScaleByAboutPoint1 CGRect myBounds = self.graph.bounds; - [plotSpace scaleBy:0.5 aboutPoint:CGPointMake( CGRectGetMidX(myBounds), CGRectGetMidY(myBounds) )]; + [plotSpace scaleBy:0.5 aboutPoint:CGPointMake(CGRectGetMidX(myBounds), CGRectGetMidY(myBounds))]; CPTPlotRange *expectedRangeX = [CPTPlotRange plotRangeWithLocation:@(-5.0) length:@20.0]; @@ -637,7 +637,7 @@ -(void)testScaleByAboutPoint2 CGRect myBounds = self.graph.bounds; - [plotSpace scaleBy:2.0 aboutPoint:CGPointMake( CGRectGetMidX(myBounds), CGRectGetMidY(myBounds) )]; + [plotSpace scaleBy:2.0 aboutPoint:CGPointMake(CGRectGetMidX(myBounds), CGRectGetMidY(myBounds))]; CPTPlotRange *expectedRangeX = [CPTPlotRange plotRangeWithLocation:@2.5 length:@5.0]; diff --git a/framework/Source/NSCoderExtensions.m b/framework/Source/NSCoderExtensions.m index 631b7bf17..cfaa913c5 100644 --- a/framework/Source/NSCoderExtensions.m +++ b/framework/Source/NSCoderExtensions.m @@ -336,7 +336,7 @@ -(nullable CGColorSpaceRef)newCGColorSpaceDecodeForKey:(nonnull NSString *)key NSData *iccProfile = [self decodeObjectOfClass:[NSData class] forKey:key]; if ( iccProfile ) { - colorSpace = CGColorSpaceCreateWithICCProfile( (__bridge CFDataRef)iccProfile); + colorSpace = CGColorSpaceCreateWithICCProfile((__bridge CFDataRef)iccProfile); } else { NSLog(@"Color space not available for key '%@'. Using generic RGB color space.", key); @@ -446,15 +446,15 @@ -(nullable CGImageRef)newCGImageDecodeForKey:(nonnull NSString *)key const CGBitmapInfo *bitmapInfo = (const void *)[self decodeBytesForKey:newKey returnedLength:&length]; newKey = [[NSString alloc] initWithFormat:@"%@.provider", key]; - CGDataProviderRef provider = CGDataProviderCreateWithCFData( (__bridge CFDataRef)[self decodeObjectOfClass:[NSData class] - forKey:newKey]); + CGDataProviderRef provider = CGDataProviderCreateWithCFData((__bridge CFDataRef)[self decodeObjectOfClass:[NSData class] + forKey:newKey]); newKey = [[NSString alloc] initWithFormat:@"%@.numberOfComponents", key]; size_t numberOfComponents = (size_t)[self decodeInt64ForKey:newKey]; CGFloat *decodeArray = NULL; if ( numberOfComponents ) { - decodeArray = calloc( (numberOfComponents * 2), sizeof(CGFloat) ); + decodeArray = calloc((numberOfComponents * 2), sizeof(CGFloat)); for ( size_t i = 0; i < numberOfComponents; i++ ) { newKey = [[NSString alloc] initWithFormat:@"%@.decode[%zu].lower", key, i]; diff --git a/framework/Source/_CPTAnimationCGFloatPeriod.m b/framework/Source/_CPTAnimationCGFloatPeriod.m index 3d5cde004..1bcf82cea 100644 --- a/framework/Source/_CPTAnimationCGFloatPeriod.m +++ b/framework/Source/_CPTAnimationCGFloatPeriod.m @@ -31,7 +31,7 @@ CGFloat CPTCurrentFloatValue(id __nonnull boundObject, SEL __nonnull boundGetter -(void)setStartValueFromObject:(nonnull id)boundObject propertyGetter:(nonnull SEL)boundGetter { - self.startValue = @( CPTCurrentFloatValue(boundObject, boundGetter) ); + self.startValue = @(CPTCurrentFloatValue(boundObject, boundGetter)); } -(BOOL)canStartWithValueFromObject:(nonnull id)boundObject propertyGetter:(nonnull SEL)boundGetter @@ -47,7 +47,7 @@ -(BOOL)canStartWithValueFromObject:(nonnull id)boundObject propertyGetter:(nonnu [self.startValue getValue:&start]; [self.endValue getValue:&end]; - return ( (current >= start) && (current <= end) ) || ( (current >= end) && (current <= start) ); + return ((current >= start) && (current <= end)) || ((current >= end) && (current <= start)); } -(nonnull NSValue *)tweenedValueForProgress:(CGFloat)progress diff --git a/framework/Source/_CPTAnimationCGPointPeriod.m b/framework/Source/_CPTAnimationCGPointPeriod.m index 62a825574..bb6246379 100644 --- a/framework/Source/_CPTAnimationCGPointPeriod.m +++ b/framework/Source/_CPTAnimationCGPointPeriod.m @@ -47,8 +47,8 @@ -(BOOL)canStartWithValueFromObject:(nonnull id)boundObject propertyGetter:(nonnu [self.startValue getValue:&start]; [self.endValue getValue:&end]; - return ( ( (current.x >= start.x) && (current.x <= end.x) ) || ( (current.x >= end.x) && (current.x <= start.x) ) ) && - ( ( (current.y >= start.y) && (current.y <= end.y) ) || ( (current.y >= end.y) && (current.y <= start.y) ) ); + return (((current.x >= start.x) && (current.x <= end.x)) || ((current.x >= end.x) && (current.x <= start.x))) && + (((current.y >= start.y) && (current.y <= end.y)) || ((current.y >= end.y) && (current.y <= start.y))); } -(nonnull NSValue *)tweenedValueForProgress:(CGFloat)progress diff --git a/framework/Source/_CPTAnimationCGRectPeriod.m b/framework/Source/_CPTAnimationCGRectPeriod.m index 2ab3fde6a..1e05bf9b8 100644 --- a/framework/Source/_CPTAnimationCGRectPeriod.m +++ b/framework/Source/_CPTAnimationCGRectPeriod.m @@ -47,10 +47,10 @@ -(BOOL)canStartWithValueFromObject:(nonnull id)boundObject propertyGetter:(nonnu [self.startValue getValue:&start]; [self.endValue getValue:&end]; - return ( ( (current.origin.x >= start.origin.x) && (current.origin.x <= end.origin.x) ) || ( (current.origin.x >= end.origin.x) && (current.origin.x <= start.origin.x) ) ) && - ( ( (current.origin.y >= start.origin.y) && (current.origin.y <= end.origin.y) ) || ( (current.origin.y >= end.origin.y) && (current.origin.y <= start.origin.y) ) ) && - ( ( (current.size.width >= start.size.width) && (current.size.width <= end.size.width) ) || ( (current.size.width >= end.size.width) && (current.size.width <= start.size.width) ) ) && - ( ( (current.size.height >= start.size.height) && (current.size.height <= end.size.height) ) || ( (current.size.height >= end.size.height) && (current.size.height <= start.size.height) ) ); + return (((current.origin.x >= start.origin.x) && (current.origin.x <= end.origin.x)) || ((current.origin.x >= end.origin.x) && (current.origin.x <= start.origin.x))) && + (((current.origin.y >= start.origin.y) && (current.origin.y <= end.origin.y)) || ((current.origin.y >= end.origin.y) && (current.origin.y <= start.origin.y))) && + (((current.size.width >= start.size.width) && (current.size.width <= end.size.width)) || ((current.size.width >= end.size.width) && (current.size.width <= start.size.width))) && + (((current.size.height >= start.size.height) && (current.size.height <= end.size.height)) || ((current.size.height >= end.size.height) && (current.size.height <= start.size.height))); } -(nonnull NSValue *)tweenedValueForProgress:(CGFloat)progress diff --git a/framework/Source/_CPTAnimationCGSizePeriod.m b/framework/Source/_CPTAnimationCGSizePeriod.m index 89499b687..e0b54f48e 100644 --- a/framework/Source/_CPTAnimationCGSizePeriod.m +++ b/framework/Source/_CPTAnimationCGSizePeriod.m @@ -47,8 +47,8 @@ -(BOOL)canStartWithValueFromObject:(nonnull id)boundObject propertyGetter:(nonnu [self.startValue getValue:&start]; [self.endValue getValue:&end]; - return ( ( (current.width >= start.width) && (current.width <= end.width) ) || ( (current.width >= end.width) && (current.width <= start.width) ) ) && - ( ( (current.height >= start.height) && (current.height <= end.height) ) || ( (current.height >= end.height) && (current.height <= start.height) ) ); + return (((current.width >= start.width) && (current.width <= end.width)) || ((current.width >= end.width) && (current.width <= start.width))) && + (((current.height >= start.height) && (current.height <= end.height)) || ((current.height >= end.height) && (current.height <= start.height))); } -(nonnull NSValue *)tweenedValueForProgress:(CGFloat)progress diff --git a/framework/Source/_CPTAnimationNSDecimalPeriod.m b/framework/Source/_CPTAnimationNSDecimalPeriod.m index e01989f5f..bcf36e651 100644 --- a/framework/Source/_CPTAnimationNSDecimalPeriod.m +++ b/framework/Source/_CPTAnimationNSDecimalPeriod.m @@ -43,20 +43,20 @@ -(BOOL)canStartWithValueFromObject:(nonnull id)boundObject propertyGetter:(nonnu } NSDecimal current = CPTCurrentDecimalValue(boundObject, boundGetter); - NSDecimal start = ( (NSDecimalNumber *)self.startValue).decimalValue; - NSDecimal end = ( (NSDecimalNumber *)self.endValue).decimalValue; + NSDecimal start = ((NSDecimalNumber *)self.startValue).decimalValue; + NSDecimal end = ((NSDecimalNumber *)self.endValue).decimalValue; - return ( CPTDecimalGreaterThanOrEqualTo(current, start) && CPTDecimalLessThanOrEqualTo(current, end) ) || - ( CPTDecimalGreaterThanOrEqualTo(current, end) && CPTDecimalLessThanOrEqualTo(current, start) ); + return (CPTDecimalGreaterThanOrEqualTo(current, start) && CPTDecimalLessThanOrEqualTo(current, end)) || + (CPTDecimalGreaterThanOrEqualTo(current, end) && CPTDecimalLessThanOrEqualTo(current, start)); } -(nonnull NSValue *)tweenedValueForProgress:(CGFloat)progress { - NSDecimal start = ( (NSDecimalNumber *)self.startValue).decimalValue; - NSDecimal end = ( (NSDecimalNumber *)self.endValue).decimalValue; + NSDecimal start = ((NSDecimalNumber *)self.startValue).decimalValue; + NSDecimal end = ((NSDecimalNumber *)self.endValue).decimalValue; NSDecimal length = CPTDecimalSubtract(end, start); - NSDecimal tweenedValue = CPTDecimalAdd( start, CPTDecimalMultiply(CPTDecimalFromCGFloat(progress), length) ); + NSDecimal tweenedValue = CPTDecimalAdd(start, CPTDecimalMultiply(CPTDecimalFromCGFloat(progress), length)); return [NSDecimalNumber decimalNumberWithDecimal:tweenedValue]; } diff --git a/framework/Source/_CPTAnimationNSNumberPeriod.m b/framework/Source/_CPTAnimationNSNumberPeriod.m index 362e4a309..e4692f041 100644 --- a/framework/Source/_CPTAnimationNSNumberPeriod.m +++ b/framework/Source/_CPTAnimationNSNumberPeriod.m @@ -32,16 +32,16 @@ -(BOOL)canStartWithValueFromObject:(id)boundObject propertyGetter:(SEL)boundGett NSDecimal startDecimal = start.decimalValue; NSDecimal endDecimal = end.decimalValue; - return ( CPTDecimalGreaterThanOrEqualTo(currentDecimal, startDecimal) && CPTDecimalLessThanOrEqualTo(currentDecimal, endDecimal) ) || - ( CPTDecimalGreaterThanOrEqualTo(currentDecimal, endDecimal) && CPTDecimalLessThanOrEqualTo(currentDecimal, startDecimal) ); + return (CPTDecimalGreaterThanOrEqualTo(currentDecimal, startDecimal) && CPTDecimalLessThanOrEqualTo(currentDecimal, endDecimal)) || + (CPTDecimalGreaterThanOrEqualTo(currentDecimal, endDecimal) && CPTDecimalLessThanOrEqualTo(currentDecimal, startDecimal)); } else { double currentDouble = current.doubleValue; double startDouble = start.doubleValue; double endDouble = end.doubleValue; - return ( (currentDouble >= startDouble) && (currentDouble <= endDouble) ) || - ( (currentDouble >= endDouble) && (currentDouble <= startDouble) ); + return ((currentDouble >= startDouble) && (currentDouble <= endDouble)) || + ((currentDouble >= endDouble) && (currentDouble <= startDouble)); } } @@ -57,7 +57,7 @@ -(NSValue *)tweenedValueForProgress:(CGFloat)progress NSDecimal endDecimal = end.decimalValue; NSDecimal length = CPTDecimalSubtract(endDecimal, startDecimal); - NSDecimal tweenedValue = CPTDecimalAdd( startDecimal, CPTDecimalMultiply(CPTDecimalFromCGFloat(progress), length) ); + NSDecimal tweenedValue = CPTDecimalAdd(startDecimal, CPTDecimalMultiply(CPTDecimalFromCGFloat(progress), length)); return [NSDecimalNumber decimalNumberWithDecimal:tweenedValue]; } diff --git a/framework/Source/_CPTAnimationPlotRangePeriod.m b/framework/Source/_CPTAnimationPlotRangePeriod.m index fdcabbb21..857d65506 100644 --- a/framework/Source/_CPTAnimationPlotRangePeriod.m +++ b/framework/Source/_CPTAnimationPlotRangePeriod.m @@ -30,8 +30,8 @@ -(BOOL)canStartWithValueFromObject:(nonnull id)boundObject propertyGetter:(nonnu NSDecimal startLoc = start.locationDecimal; NSDecimal endLoc = end.locationDecimal; - return ( CPTDecimalGreaterThanOrEqualTo(currentLoc, startLoc) && CPTDecimalLessThanOrEqualTo(currentLoc, endLoc) ) || - ( CPTDecimalGreaterThanOrEqualTo(currentLoc, endLoc) && CPTDecimalLessThanOrEqualTo(currentLoc, startLoc) ); + return (CPTDecimalGreaterThanOrEqualTo(currentLoc, startLoc) && CPTDecimalLessThanOrEqualTo(currentLoc, endLoc)) || + (CPTDecimalGreaterThanOrEqualTo(currentLoc, endLoc) && CPTDecimalLessThanOrEqualTo(currentLoc, startLoc)); } -(nonnull NSValue *)tweenedValueForProgress:(CGFloat)progress @@ -42,10 +42,10 @@ -(nonnull NSValue *)tweenedValueForProgress:(CGFloat)progress NSDecimal progressDecimal = CPTDecimalFromCGFloat(progress); NSDecimal locationDiff = CPTDecimalSubtract(end.locationDecimal, start.locationDecimal); - NSDecimal tweenedLocation = CPTDecimalAdd( start.locationDecimal, CPTDecimalMultiply(progressDecimal, locationDiff) ); + NSDecimal tweenedLocation = CPTDecimalAdd(start.locationDecimal, CPTDecimalMultiply(progressDecimal, locationDiff)); NSDecimal lengthDiff = CPTDecimalSubtract(end.lengthDecimal, start.lengthDecimal); - NSDecimal tweenedLength = CPTDecimalAdd( start.lengthDecimal, CPTDecimalMultiply(progressDecimal, lengthDiff) ); + NSDecimal tweenedLength = CPTDecimalAdd(start.lengthDecimal, CPTDecimalMultiply(progressDecimal, lengthDiff)); return (NSValue *)[CPTPlotRange plotRangeWithLocationDecimal:tweenedLocation lengthDecimal:tweenedLength]; } diff --git a/framework/Source/_CPTAnimationTimingFunctions.m b/framework/Source/_CPTAnimationTimingFunctions.m index b5043f13d..36b20aa6e 100644 --- a/framework/Source/_CPTAnimationTimingFunctions.m +++ b/framework/Source/_CPTAnimationTimingFunctions.m @@ -15,13 +15,13 @@ **/ CGFloat CPTAnimationTimingFunctionLinear(CGFloat elapsedTime, CGFloat duration) { - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime /= duration; - if ( elapsedTime >= CPTFloat(1.0) ) { + if ( elapsedTime >= CPTFloat(1.0)) { return CPTFloat(1.0); } @@ -41,17 +41,17 @@ CGFloat CPTAnimationTimingFunctionBackIn(CGFloat elapsedTime, CGFloat duration) { const CGFloat s = CPTFloat(1.70158); - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime /= duration; - if ( elapsedTime >= CPTFloat(1.0) ) { + if ( elapsedTime >= CPTFloat(1.0)) { return CPTFloat(1.0); } - return elapsedTime * elapsedTime * ( ( s + CPTFloat(1.0) ) * elapsedTime - s); + return elapsedTime * elapsedTime * ((s + CPTFloat(1.0)) * elapsedTime - s); } /** @@ -64,17 +64,17 @@ CGFloat CPTAnimationTimingFunctionBackOut(CGFloat elapsedTime, CGFloat duration) { const CGFloat s = CPTFloat(1.70158); - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime = elapsedTime / duration - CPTFloat(1.0); - if ( elapsedTime >= CPTFloat(0.0) ) { + if ( elapsedTime >= CPTFloat(0.0)) { return CPTFloat(1.0); } - return elapsedTime * elapsedTime * ( ( s + CPTFloat(1.0) ) * elapsedTime + s) + CPTFloat(1.0); + return elapsedTime * elapsedTime * ((s + CPTFloat(1.0)) * elapsedTime + s) + CPTFloat(1.0); } /** @@ -87,23 +87,23 @@ CGFloat CPTAnimationTimingFunctionBackInOut(CGFloat elapsedTime, CGFloat duratio { const CGFloat s = CPTFloat(1.70158 * 1.525); - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime /= duration * CPTFloat(0.5); - if ( elapsedTime >= CPTFloat(2.0) ) { + if ( elapsedTime >= CPTFloat(2.0)) { return CPTFloat(1.0); } - if ( elapsedTime < CPTFloat(1.0) ) { - return CPTFloat(0.5) * ( elapsedTime * elapsedTime * ( ( s + CPTFloat(1.0) ) * elapsedTime - s) ); + if ( elapsedTime < CPTFloat(1.0)) { + return CPTFloat(0.5) * (elapsedTime * elapsedTime * ((s + CPTFloat(1.0)) * elapsedTime - s)); } else { elapsedTime -= CPTFloat(2.0); - return CPTFloat(0.5) * ( elapsedTime * elapsedTime * ( ( s + CPTFloat(1.0) ) * elapsedTime + s) + CPTFloat(2.0) ); + return CPTFloat(0.5) * (elapsedTime * elapsedTime * ((s + CPTFloat(1.0)) * elapsedTime + s) + CPTFloat(2.0)); } } @@ -129,25 +129,25 @@ CGFloat CPTAnimationTimingFunctionBounceIn(CGFloat elapsedTime, CGFloat duration **/ CGFloat CPTAnimationTimingFunctionBounceOut(CGFloat elapsedTime, CGFloat duration) { - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime /= duration; - if ( elapsedTime >= CPTFloat(1.0) ) { + if ( elapsedTime >= CPTFloat(1.0)) { return CPTFloat(1.0); } - if ( elapsedTime < CPTFloat(1.0 / 2.75) ) { + if ( elapsedTime < CPTFloat(1.0 / 2.75)) { return CPTFloat(7.5625) * elapsedTime * elapsedTime; } - else if ( elapsedTime < CPTFloat(2.0 / 2.75) ) { + else if ( elapsedTime < CPTFloat(2.0 / 2.75)) { elapsedTime -= CPTFloat(1.5 / 2.75); return CPTFloat(7.5625) * elapsedTime * elapsedTime + CPTFloat(0.75); } - else if ( elapsedTime < CPTFloat(2.5 / 2.75) ) { + else if ( elapsedTime < CPTFloat(2.5 / 2.75)) { elapsedTime -= CPTFloat(2.25 / 2.75); return CPTFloat(7.5625) * elapsedTime * elapsedTime + CPTFloat(0.9375); @@ -167,7 +167,7 @@ CGFloat CPTAnimationTimingFunctionBounceOut(CGFloat elapsedTime, CGFloat duratio **/ CGFloat CPTAnimationTimingFunctionBounceInOut(CGFloat elapsedTime, CGFloat duration) { - if ( elapsedTime < duration * CPTFloat(0.5) ) { + if ( elapsedTime < duration * CPTFloat(0.5)) { return CPTAnimationTimingFunctionBounceIn(elapsedTime * CPTFloat(2.0), duration) * CPTFloat(0.5); } else { @@ -187,17 +187,17 @@ CGFloat CPTAnimationTimingFunctionBounceInOut(CGFloat elapsedTime, CGFloat durat **/ CGFloat CPTAnimationTimingFunctionCircularIn(CGFloat elapsedTime, CGFloat duration) { - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime /= duration; - if ( elapsedTime >= CPTFloat(1.0) ) { + if ( elapsedTime >= CPTFloat(1.0)) { return CPTFloat(1.0); } - return -( sqrt(CPTFloat(1.0) - elapsedTime * elapsedTime) - CPTFloat(1.0) ); + return -(sqrt(CPTFloat(1.0) - elapsedTime * elapsedTime) - CPTFloat(1.0)); } /** @@ -208,13 +208,13 @@ CGFloat CPTAnimationTimingFunctionCircularIn(CGFloat elapsedTime, CGFloat durati **/ CGFloat CPTAnimationTimingFunctionCircularOut(CGFloat elapsedTime, CGFloat duration) { - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime = elapsedTime / duration - CPTFloat(1.0); - if ( elapsedTime >= CPTFloat(0.0) ) { + if ( elapsedTime >= CPTFloat(0.0)) { return CPTFloat(1.0); } @@ -229,23 +229,23 @@ CGFloat CPTAnimationTimingFunctionCircularOut(CGFloat elapsedTime, CGFloat durat **/ CGFloat CPTAnimationTimingFunctionCircularInOut(CGFloat elapsedTime, CGFloat duration) { - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime /= duration * CPTFloat(0.5); - if ( elapsedTime >= CPTFloat(2.0) ) { + if ( elapsedTime >= CPTFloat(2.0)) { return CPTFloat(1.0); } - if ( elapsedTime < CPTFloat(1.0) ) { - return CPTFloat(-0.5) * ( sqrt(CPTFloat(1.0) - elapsedTime * elapsedTime) - CPTFloat(1.0) ); + if ( elapsedTime < CPTFloat(1.0)) { + return CPTFloat(-0.5) * (sqrt(CPTFloat(1.0) - elapsedTime * elapsedTime) - CPTFloat(1.0)); } else { elapsedTime -= CPTFloat(2.0); - return CPTFloat(0.5) * ( sqrt(CPTFloat(1.0) - elapsedTime * elapsedTime) + CPTFloat(1.0) ); + return CPTFloat(0.5) * (sqrt(CPTFloat(1.0) - elapsedTime * elapsedTime) + CPTFloat(1.0)); } } @@ -260,13 +260,13 @@ CGFloat CPTAnimationTimingFunctionCircularInOut(CGFloat elapsedTime, CGFloat dur **/ CGFloat CPTAnimationTimingFunctionElasticIn(CGFloat elapsedTime, CGFloat duration) { - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime /= duration; - if ( elapsedTime >= CPTFloat(1.0) ) { + if ( elapsedTime >= CPTFloat(1.0)) { return CPTFloat(1.0); } @@ -275,7 +275,7 @@ CGFloat CPTAnimationTimingFunctionElasticIn(CGFloat elapsedTime, CGFloat duratio elapsedTime -= CPTFloat(1.0); - return -( pow(CPTFloat(2.0), CPTFloat(10.0) * elapsedTime) * sin( (elapsedTime * duration - s) * CPTFloat(2.0 * M_PI) / period) ); + return -(pow(CPTFloat(2.0), CPTFloat(10.0) * elapsedTime) * sin((elapsedTime * duration - s) * CPTFloat(2.0 * M_PI) / period)); } /** @@ -286,20 +286,20 @@ CGFloat CPTAnimationTimingFunctionElasticIn(CGFloat elapsedTime, CGFloat duratio **/ CGFloat CPTAnimationTimingFunctionElasticOut(CGFloat elapsedTime, CGFloat duration) { - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime /= duration; - if ( elapsedTime >= CPTFloat(1.0) ) { + if ( elapsedTime >= CPTFloat(1.0)) { return CPTFloat(1.0); } CGFloat period = duration * CPTFloat(0.3); CGFloat s = period * CPTFloat(0.25); - return pow(CPTFloat(2.0), CPTFloat(-10.0) * elapsedTime) * sin( (elapsedTime * duration - s) * CPTFloat(2.0 * M_PI) / period) + CPTFloat(1.0); + return pow(CPTFloat(2.0), CPTFloat(-10.0) * elapsedTime) * sin((elapsedTime * duration - s) * CPTFloat(2.0 * M_PI) / period) + CPTFloat(1.0); } /** @@ -310,13 +310,13 @@ CGFloat CPTAnimationTimingFunctionElasticOut(CGFloat elapsedTime, CGFloat durati **/ CGFloat CPTAnimationTimingFunctionElasticInOut(CGFloat elapsedTime, CGFloat duration) { - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime /= duration * CPTFloat(0.5); - if ( elapsedTime >= CPTFloat(2.0) ) { + if ( elapsedTime >= CPTFloat(2.0)) { return CPTFloat(1.0); } @@ -325,11 +325,11 @@ CGFloat CPTAnimationTimingFunctionElasticInOut(CGFloat elapsedTime, CGFloat dura elapsedTime -= CPTFloat(1.0); - if ( elapsedTime < CPTFloat(0.0) ) { - return CPTFloat(-0.5) * ( pow(CPTFloat(2.0), CPTFloat(10.0) * elapsedTime) * sin( (elapsedTime * duration - s) * CPTFloat(2.0 * M_PI) / period) ); + if ( elapsedTime < CPTFloat(0.0)) { + return CPTFloat(-0.5) * (pow(CPTFloat(2.0), CPTFloat(10.0) * elapsedTime) * sin((elapsedTime * duration - s) * CPTFloat(2.0 * M_PI) / period)); } else { - return pow(CPTFloat(2.0), CPTFloat(-10.0) * elapsedTime) * sin( (elapsedTime * duration - s) * CPTFloat(2.0 * M_PI) / period) * CPTFloat(0.5) + CPTFloat(1.0); + return pow(CPTFloat(2.0), CPTFloat(-10.0) * elapsedTime) * sin((elapsedTime * duration - s) * CPTFloat(2.0 * M_PI) / period) * CPTFloat(0.5) + CPTFloat(1.0); } } @@ -344,17 +344,17 @@ CGFloat CPTAnimationTimingFunctionElasticInOut(CGFloat elapsedTime, CGFloat dura **/ CGFloat CPTAnimationTimingFunctionExponentialIn(CGFloat elapsedTime, CGFloat duration) { - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime /= duration; - if ( elapsedTime >= CPTFloat(1.0) ) { + if ( elapsedTime >= CPTFloat(1.0)) { return CPTFloat(1.0); } - return pow( CPTFloat(2.0), CPTFloat(10.0) * ( elapsedTime - CPTFloat(1.0) ) ); + return pow(CPTFloat(2.0), CPTFloat(10.0) * (elapsedTime - CPTFloat(1.0))); } /** @@ -365,13 +365,13 @@ CGFloat CPTAnimationTimingFunctionExponentialIn(CGFloat elapsedTime, CGFloat dur **/ CGFloat CPTAnimationTimingFunctionExponentialOut(CGFloat elapsedTime, CGFloat duration) { - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime /= duration; - if ( elapsedTime >= CPTFloat(1.0) ) { + if ( elapsedTime >= CPTFloat(1.0)) { return CPTFloat(1.0); } @@ -386,22 +386,22 @@ CGFloat CPTAnimationTimingFunctionExponentialOut(CGFloat elapsedTime, CGFloat du **/ CGFloat CPTAnimationTimingFunctionExponentialInOut(CGFloat elapsedTime, CGFloat duration) { - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime /= duration * CPTFloat(0.5); elapsedTime -= CPTFloat(1.0); - if ( elapsedTime >= CPTFloat(1.0) ) { + if ( elapsedTime >= CPTFloat(1.0)) { return CPTFloat(1.0); } - if ( elapsedTime < CPTFloat(0.0) ) { + if ( elapsedTime < CPTFloat(0.0)) { return CPTFloat(0.5) * pow(CPTFloat(2.0), CPTFloat(10.0) * elapsedTime); } else { - return CPTFloat(0.5) * ( -pow(CPTFloat(2.0), CPTFloat(-10.0) * elapsedTime) + CPTFloat(2.0) ); + return CPTFloat(0.5) * (-pow(CPTFloat(2.0), CPTFloat(-10.0) * elapsedTime) + CPTFloat(2.0)); } } @@ -416,17 +416,17 @@ CGFloat CPTAnimationTimingFunctionExponentialInOut(CGFloat elapsedTime, CGFloat **/ CGFloat CPTAnimationTimingFunctionSinusoidalIn(CGFloat elapsedTime, CGFloat duration) { - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime /= duration; - if ( elapsedTime >= CPTFloat(1.0) ) { + if ( elapsedTime >= CPTFloat(1.0)) { return CPTFloat(1.0); } - return -cos( elapsedTime * CPTFloat(M_PI_2) ) + CPTFloat(1.0); + return -cos(elapsedTime * CPTFloat(M_PI_2)) + CPTFloat(1.0); } /** @@ -437,17 +437,17 @@ CGFloat CPTAnimationTimingFunctionSinusoidalIn(CGFloat elapsedTime, CGFloat dura **/ CGFloat CPTAnimationTimingFunctionSinusoidalOut(CGFloat elapsedTime, CGFloat duration) { - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime /= duration; - if ( elapsedTime >= CPTFloat(1.0) ) { + if ( elapsedTime >= CPTFloat(1.0)) { return CPTFloat(1.0); } - return sin( elapsedTime * CPTFloat(M_PI_2) ); + return sin(elapsedTime * CPTFloat(M_PI_2)); } /** @@ -458,17 +458,17 @@ CGFloat CPTAnimationTimingFunctionSinusoidalOut(CGFloat elapsedTime, CGFloat dur **/ CGFloat CPTAnimationTimingFunctionSinusoidalInOut(CGFloat elapsedTime, CGFloat duration) { - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime /= duration; - if ( elapsedTime >= CPTFloat(1.0) ) { + if ( elapsedTime >= CPTFloat(1.0)) { return CPTFloat(1.0); } - return CPTFloat(-0.5) * ( cos(CPTFloat(M_PI) * elapsedTime) - CPTFloat(1.0) ); + return CPTFloat(-0.5) * (cos(CPTFloat(M_PI) * elapsedTime) - CPTFloat(1.0)); } #pragma mark - @@ -482,13 +482,13 @@ CGFloat CPTAnimationTimingFunctionSinusoidalInOut(CGFloat elapsedTime, CGFloat d **/ CGFloat CPTAnimationTimingFunctionCubicIn(CGFloat elapsedTime, CGFloat duration) { - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime /= duration; - if ( elapsedTime >= CPTFloat(1.0) ) { + if ( elapsedTime >= CPTFloat(1.0)) { return CPTFloat(1.0); } @@ -503,13 +503,13 @@ CGFloat CPTAnimationTimingFunctionCubicIn(CGFloat elapsedTime, CGFloat duration) **/ CGFloat CPTAnimationTimingFunctionCubicOut(CGFloat elapsedTime, CGFloat duration) { - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime = elapsedTime / duration - CPTFloat(1.0); - if ( elapsedTime >= CPTFloat(0.0) ) { + if ( elapsedTime >= CPTFloat(0.0)) { return CPTFloat(1.0); } @@ -524,23 +524,23 @@ CGFloat CPTAnimationTimingFunctionCubicOut(CGFloat elapsedTime, CGFloat duration **/ CGFloat CPTAnimationTimingFunctionCubicInOut(CGFloat elapsedTime, CGFloat duration) { - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime /= duration * CPTFloat(0.5); - if ( elapsedTime >= CPTFloat(2.0) ) { + if ( elapsedTime >= CPTFloat(2.0)) { return CPTFloat(1.0); } - if ( elapsedTime < CPTFloat(1.0) ) { + if ( elapsedTime < CPTFloat(1.0)) { return CPTFloat(0.5) * elapsedTime * elapsedTime * elapsedTime; } else { elapsedTime -= CPTFloat(2.0); - return CPTFloat(0.5) * ( elapsedTime * elapsedTime * elapsedTime + CPTFloat(2.0) ); + return CPTFloat(0.5) * (elapsedTime * elapsedTime * elapsedTime + CPTFloat(2.0)); } } @@ -555,13 +555,13 @@ CGFloat CPTAnimationTimingFunctionCubicInOut(CGFloat elapsedTime, CGFloat durati **/ CGFloat CPTAnimationTimingFunctionQuadraticIn(CGFloat elapsedTime, CGFloat duration) { - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime /= duration; - if ( elapsedTime >= CPTFloat(1.0) ) { + if ( elapsedTime >= CPTFloat(1.0)) { return CPTFloat(1.0); } @@ -576,17 +576,17 @@ CGFloat CPTAnimationTimingFunctionQuadraticIn(CGFloat elapsedTime, CGFloat durat **/ CGFloat CPTAnimationTimingFunctionQuadraticOut(CGFloat elapsedTime, CGFloat duration) { - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime /= duration; - if ( elapsedTime >= CPTFloat(1.0) ) { + if ( elapsedTime >= CPTFloat(1.0)) { return CPTFloat(1.0); } - return -elapsedTime * ( elapsedTime - CPTFloat(2.0) ); + return -elapsedTime * (elapsedTime - CPTFloat(2.0)); } /** @@ -597,23 +597,23 @@ CGFloat CPTAnimationTimingFunctionQuadraticOut(CGFloat elapsedTime, CGFloat dura **/ CGFloat CPTAnimationTimingFunctionQuadraticInOut(CGFloat elapsedTime, CGFloat duration) { - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime /= duration * CPTFloat(0.5); - if ( elapsedTime >= CPTFloat(2.0) ) { + if ( elapsedTime >= CPTFloat(2.0)) { return CPTFloat(1.0); } - if ( elapsedTime < CPTFloat(1.0) ) { + if ( elapsedTime < CPTFloat(1.0)) { return CPTFloat(0.5) * elapsedTime * elapsedTime; } else { elapsedTime -= CPTFloat(1.0); - return CPTFloat(-0.5) * ( elapsedTime * ( elapsedTime - CPTFloat(2.0) ) - CPTFloat(1.0) ); + return CPTFloat(-0.5) * (elapsedTime * (elapsedTime - CPTFloat(2.0)) - CPTFloat(1.0)); } } @@ -628,13 +628,13 @@ CGFloat CPTAnimationTimingFunctionQuadraticInOut(CGFloat elapsedTime, CGFloat du **/ CGFloat CPTAnimationTimingFunctionQuarticIn(CGFloat elapsedTime, CGFloat duration) { - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime /= duration; - if ( elapsedTime >= CPTFloat(1.0) ) { + if ( elapsedTime >= CPTFloat(1.0)) { return CPTFloat(1.0); } @@ -649,17 +649,17 @@ CGFloat CPTAnimationTimingFunctionQuarticIn(CGFloat elapsedTime, CGFloat duratio **/ CGFloat CPTAnimationTimingFunctionQuarticOut(CGFloat elapsedTime, CGFloat duration) { - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime = elapsedTime / duration - CPTFloat(1.0); - if ( elapsedTime >= CPTFloat(0.0) ) { + if ( elapsedTime >= CPTFloat(0.0)) { return CPTFloat(1.0); } - return -( elapsedTime * elapsedTime * elapsedTime * elapsedTime - CPTFloat(1.0) ); + return -(elapsedTime * elapsedTime * elapsedTime * elapsedTime - CPTFloat(1.0)); } /** @@ -670,23 +670,23 @@ CGFloat CPTAnimationTimingFunctionQuarticOut(CGFloat elapsedTime, CGFloat durati **/ CGFloat CPTAnimationTimingFunctionQuarticInOut(CGFloat elapsedTime, CGFloat duration) { - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime /= duration * CPTFloat(0.5); - if ( elapsedTime >= CPTFloat(2.0) ) { + if ( elapsedTime >= CPTFloat(2.0)) { return CPTFloat(1.0); } - if ( elapsedTime < CPTFloat(1.0) ) { + if ( elapsedTime < CPTFloat(1.0)) { return CPTFloat(0.5) * elapsedTime * elapsedTime * elapsedTime * elapsedTime; } else { elapsedTime -= CPTFloat(2.0); - return CPTFloat(-0.5) * ( elapsedTime * elapsedTime * elapsedTime * elapsedTime - CPTFloat(2.0) ); + return CPTFloat(-0.5) * (elapsedTime * elapsedTime * elapsedTime * elapsedTime - CPTFloat(2.0)); } } @@ -701,13 +701,13 @@ CGFloat CPTAnimationTimingFunctionQuarticInOut(CGFloat elapsedTime, CGFloat dura **/ CGFloat CPTAnimationTimingFunctionQuinticIn(CGFloat elapsedTime, CGFloat duration) { - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime /= duration; - if ( elapsedTime >= CPTFloat(1.0) ) { + if ( elapsedTime >= CPTFloat(1.0)) { return CPTFloat(1.0); } @@ -722,13 +722,13 @@ CGFloat CPTAnimationTimingFunctionQuinticIn(CGFloat elapsedTime, CGFloat duratio **/ CGFloat CPTAnimationTimingFunctionQuinticOut(CGFloat elapsedTime, CGFloat duration) { - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime = elapsedTime / duration - CPTFloat(1.0); - if ( elapsedTime >= CPTFloat(0.0) ) { + if ( elapsedTime >= CPTFloat(0.0)) { return CPTFloat(1.0); } @@ -743,22 +743,22 @@ CGFloat CPTAnimationTimingFunctionQuinticOut(CGFloat elapsedTime, CGFloat durati **/ CGFloat CPTAnimationTimingFunctionQuinticInOut(CGFloat elapsedTime, CGFloat duration) { - if ( elapsedTime <= CPTFloat(0.0) ) { + if ( elapsedTime <= CPTFloat(0.0)) { return CPTFloat(0.0); } elapsedTime /= duration * CPTFloat(0.5); - if ( elapsedTime >= CPTFloat(2.0) ) { + if ( elapsedTime >= CPTFloat(2.0)) { return CPTFloat(1.0); } - if ( elapsedTime < CPTFloat(1.0) ) { + if ( elapsedTime < CPTFloat(1.0)) { return CPTFloat(0.5) * elapsedTime * elapsedTime * elapsedTime * elapsedTime * elapsedTime; } else { elapsedTime -= CPTFloat(2.0); - return CPTFloat(0.5) * ( elapsedTime * elapsedTime * elapsedTime * elapsedTime * elapsedTime + CPTFloat(2.0) ); + return CPTFloat(0.5) * (elapsedTime * elapsedTime * elapsedTime * elapsedTime * elapsedTime + CPTFloat(2.0)); } } diff --git a/framework/Source/_CPTBorderLayer.m b/framework/Source/_CPTBorderLayer.m index 05930cbe6..009fa48eb 100644 --- a/framework/Source/_CPTBorderLayer.m +++ b/framework/Source/_CPTBorderLayer.m @@ -33,7 +33,7 @@ @implementation CPTBorderLayer **/ -(nonnull instancetype)initWithFrame:(CGRect)newFrame { - if ( (self = [super initWithFrame:newFrame]) ) { + if ((self = [super initWithFrame:newFrame])) { maskedLayer = nil; self.needsDisplayOnBoundsChange = YES; @@ -47,7 +47,7 @@ -(nonnull instancetype)initWithFrame:(CGRect)newFrame -(nonnull instancetype)initWithLayer:(nonnull id)layer { - if ( (self = [super initWithLayer:layer]) ) { + if ((self = [super initWithLayer:layer])) { CPTBorderLayer *theLayer = (CPTBorderLayer *)layer; maskedLayer = theLayer->maskedLayer; @@ -71,7 +71,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super initWithCoder:coder]) ) { + if ((self = [super initWithCoder:coder])) { maskedLayer = [coder decodeObjectOfClass:[CPTBorderedLayer class] forKey:@"CPTBorderLayer.maskedLayer"]; } @@ -177,7 +177,7 @@ -(void)setMaskedLayer:(nullable CPTBorderedLayer *)newLayer -(void)setBounds:(CGRect)newBounds { - if ( !CGRectEqualToRect(newBounds, self.bounds) ) { + if ( !CGRectEqualToRect(newBounds, self.bounds)) { super.bounds = newBounds; [self setNeedsLayout]; } diff --git a/framework/Source/_CPTConstraintsFixed.m b/framework/Source/_CPTConstraintsFixed.m index 328369da5..7cef014bc 100644 --- a/framework/Source/_CPTConstraintsFixed.m +++ b/framework/Source/_CPTConstraintsFixed.m @@ -32,7 +32,7 @@ @implementation _CPTConstraintsFixed **/ -(nonnull instancetype)initWithLowerOffset:(CGFloat)newOffset { - if ( (self = [super init]) ) { + if ((self = [super init])) { offset = newOffset; isFixedToLower = YES; } @@ -46,7 +46,7 @@ -(nonnull instancetype)initWithLowerOffset:(CGFloat)newOffset **/ -(nonnull instancetype)initWithUpperOffset:(CGFloat)newOffset { - if ( (self = [super init]) ) { + if ((self = [super init])) { offset = newOffset; isFixedToLower = NO; } @@ -62,8 +62,8 @@ -(BOOL)isEqualToConstraint:(nullable CPTConstraints *)otherConstraint if ( [self class] != [otherConstraint class] ) { return NO; } - return (self.offset == ( (_CPTConstraintsFixed *)otherConstraint).offset) && - (self.isFixedToLower == ( (_CPTConstraintsFixed *)otherConstraint).isFixedToLower); + return (self.offset == ((_CPTConstraintsFixed *)otherConstraint).offset) && + (self.isFixedToLower == ((_CPTConstraintsFixed *)otherConstraint).isFixedToLower); } #pragma mark - @@ -131,7 +131,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder */ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super init]) ) { + if ((self = [super init])) { offset = [coder decodeCGFloatForKey:@"_CPTConstraintsFixed.offset"]; isFixedToLower = [coder decodeBoolForKey:@"_CPTConstraintsFixed.isFixedToLower"]; } diff --git a/framework/Source/_CPTConstraintsRelative.m b/framework/Source/_CPTConstraintsRelative.m index ccebdc35f..533e204ed 100644 --- a/framework/Source/_CPTConstraintsRelative.m +++ b/framework/Source/_CPTConstraintsRelative.m @@ -35,7 +35,7 @@ @implementation _CPTConstraintsRelative **/ -(nonnull instancetype)initWithRelativeOffset:(CGFloat)newOffset { - if ( (self = [super init]) ) { + if ((self = [super init])) { offset = newOffset; } @@ -50,7 +50,7 @@ -(BOOL)isEqualToConstraint:(nullable CPTConstraints *)otherConstraint if ( [self class] != [otherConstraint class] ) { return NO; } - return self.offset == ( (_CPTConstraintsRelative *)otherConstraint).offset; + return self.offset == ((_CPTConstraintsRelative *)otherConstraint).offset; } #pragma mark - @@ -109,7 +109,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder */ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super init]) ) { + if ((self = [super init])) { offset = [coder decodeCGFloatForKey:@"_CPTConstraintsRelative.offset"]; } return self; diff --git a/framework/Source/_CPTFillColor.m b/framework/Source/_CPTFillColor.m index ed4df6cd4..628f5b6d1 100644 --- a/framework/Source/_CPTFillColor.m +++ b/framework/Source/_CPTFillColor.m @@ -32,7 +32,7 @@ @implementation _CPTFillColor **/ -(nonnull instancetype)initWithColor:(nonnull CPTColor *)aColor { - if ( (self = [super init]) ) { + if ((self = [super init])) { fillColor = aColor; } return self; @@ -119,7 +119,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder */ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super init]) ) { + if ((self = [super init])) { CPTColor *color = [coder decodeObjectOfClass:[CPTColor class] forKey:@"_CPTFillColor.fillColor"]; diff --git a/framework/Source/_CPTFillGradient.m b/framework/Source/_CPTFillGradient.m index 4f088d325..c7d0aa70c 100644 --- a/framework/Source/_CPTFillGradient.m +++ b/framework/Source/_CPTFillGradient.m @@ -32,7 +32,7 @@ @implementation _CPTFillGradient **/ -(nonnull instancetype)initWithGradient:(nonnull CPTGradient *)aGradient { - if ( (self = [super init]) ) { + if ((self = [super init])) { fillGradient = aGradient; } return self; @@ -105,7 +105,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder */ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super init]) ) { + if ((self = [super init])) { CPTGradient *gradient = [coder decodeObjectOfClass:[CPTGradient class] forKey:@"_CPTFillGradient.fillGradient"]; diff --git a/framework/Source/_CPTFillImage.m b/framework/Source/_CPTFillImage.m index a79793aa7..48614de11 100644 --- a/framework/Source/_CPTFillImage.m +++ b/framework/Source/_CPTFillImage.m @@ -32,7 +32,7 @@ @implementation _CPTFillImage **/ -(nonnull instancetype)initWithImage:(nonnull CPTImage *)anImage { - if ( (self = [super init]) ) { + if ((self = [super init])) { fillImage = anImage; } return self; @@ -111,7 +111,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder */ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super init]) ) { + if ((self = [super init])) { CPTImage *image = [coder decodeObjectOfClass:[CPTImage class] forKey:@"_CPTFillImage.fillImage"]; diff --git a/framework/Source/_CPTMaskLayer.m b/framework/Source/_CPTMaskLayer.m index d4cceba9f..14e3dc603 100644 --- a/framework/Source/_CPTMaskLayer.m +++ b/framework/Source/_CPTMaskLayer.m @@ -18,7 +18,7 @@ @implementation CPTMaskLayer **/ -(nonnull instancetype)initWithFrame:(CGRect)newFrame { - if ( (self = [super initWithFrame:newFrame]) ) { + if ((self = [super initWithFrame:newFrame])) { self.needsDisplayOnBoundsChange = YES; } return self; @@ -36,7 +36,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context CPTLayer *theMaskedLayer = (CPTLayer *)self.superlayer; if ( theMaskedLayer ) { - CGContextSetRGBFillColor( context, CPTFloat(0.0), CPTFloat(0.0), CPTFloat(0.0), CPTFloat(1.0) ); + CGContextSetRGBFillColor(context, CPTFloat(0.0), CPTFloat(0.0), CPTFloat(0.0), CPTFloat(1.0)); if ( [theMaskedLayer isKindOfClass:[CPTLayer class]] ) { CGPathRef maskingPath = theMaskedLayer.sublayerMaskingPath; diff --git a/framework/Source/_CPTXYTheme.m b/framework/Source/_CPTXYTheme.m index 9bb2675ba..129d137aa 100644 --- a/framework/Source/_CPTXYTheme.m +++ b/framework/Source/_CPTXYTheme.m @@ -15,7 +15,7 @@ @implementation _CPTXYTheme -(nonnull instancetype)init { - if ( (self = [super init]) ) { + if ((self = [super init])) { self.graphClass = [CPTXYGraph class]; } return self; diff --git a/framework/iPhoneOnly/CPTGraphHostingView.m b/framework/iPhoneOnly/CPTGraphHostingView.m index 2b96fc27e..0efa0939e 100644 --- a/framework/iPhoneOnly/CPTGraphHostingView.m +++ b/framework/iPhoneOnly/CPTGraphHostingView.m @@ -79,12 +79,12 @@ -(void)commonInit self.allowPinchScaling = YES; // This undoes the normal coordinate space inversion that UIViews apply to their layers - self.layer.sublayerTransform = CATransform3DMakeScale( CPTFloat(1.0), CPTFloat(-1.0), CPTFloat(1.0) ); + self.layer.sublayerTransform = CATransform3DMakeScale(CPTFloat(1.0), CPTFloat(-1.0), CPTFloat(1.0)); } -(nonnull instancetype)initWithFrame:(CGRect)frame { - if ( (self = [super initWithFrame:frame]) ) { + if ((self = [super initWithFrame:frame])) { [self commonInit]; } return self; @@ -123,7 +123,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { - if ( (self = [super initWithCoder:coder]) ) { + if ((self = [super initWithCoder:coder])) { [self commonInit]; collapsesLayers = [coder decodeBoolForKey:@"CPTGraphHostingView.collapsesLayers"]; @@ -361,7 +361,7 @@ -(void)graphNeedsRedraw:(nonnull NSNotification *)notification -(void)setHostedGraph:(nullable CPTGraph *)newLayer { - NSParameterAssert( (newLayer == nil) || [newLayer isKindOfClass:[CPTGraph class]]); + NSParameterAssert((newLayer == nil) || [newLayer isKindOfClass:[CPTGraph class]]); if ( newLayer == hostedGraph ) { return; diff --git a/framework/iPhoneOnly/CPTImagePlatformSpecific.m b/framework/iPhoneOnly/CPTImagePlatformSpecific.m index 21ad7a51e..20c73f03d 100644 --- a/framework/iPhoneOnly/CPTImagePlatformSpecific.m +++ b/framework/iPhoneOnly/CPTImagePlatformSpecific.m @@ -14,7 +14,7 @@ @implementation CPTImage(CPTPlatformSpecificImageExtensions) **/ -(nonnull instancetype)initWithNativeImage:(nullable CPTNativeImage *)anImage { - if ( (self = [self initWithCGImage:NULL scale:anImage.scale]) ) { + if ((self = [self initWithCGImage:NULL scale:anImage.scale])) { self.nativeImage = anImage; UIEdgeInsets insets = anImage.capInsets; @@ -45,7 +45,7 @@ -(nonnull instancetype)initForPNGFile:(nonnull NSString *)path imageScale = MAX(imageScale, screen.scale); } - if ( imageScale > CPTFloat(1.0) ) { + if ( imageScale > CPTFloat(1.0)) { NSMutableString *hiDpiPath = [path mutableCopy]; NSUInteger replaceCount = [hiDpiPath replaceOccurrencesOfString:@".png" withString:[NSString stringWithFormat:@"@%dx.png", (int)imageScale] diff --git a/framework/iPhoneOnly/CPTPlatformSpecificCategories.m b/framework/iPhoneOnly/CPTPlatformSpecificCategories.m index 4d22e17da..b9e492726 100644 --- a/framework/iPhoneOnly/CPTPlatformSpecificCategories.m +++ b/framework/iPhoneOnly/CPTPlatformSpecificCategories.m @@ -30,14 +30,14 @@ -(nullable CPTNativeImage *)imageOfLayer { CGSize boundsSize = self.bounds.size; - UIGraphicsBeginImageContextWithOptions( boundsSize, self.opaque, CPTFloat(0.0) ); + UIGraphicsBeginImageContextWithOptions(boundsSize, self.opaque, CPTFloat(0.0)); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSaveGState(context); CGContextSetAllowsAntialiasing(context, true); CGContextTranslateCTM(context, CPTFloat(0.0), boundsSize.height); - CGContextScaleCTM( context, CPTFloat(1.0), CPTFloat(-1.0) ); + CGContextScaleCTM(context, CPTFloat(1.0), CPTFloat(-1.0)); [self layoutAndRenderInContext:context]; CPTNativeImage *layerImage = UIGraphicsGetImageFromCurrentImageContext(); From ca70b477f934d1d2f3c1defa0d4dbf2a1b655663 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sat, 1 Jun 2019 11:01:21 -0400 Subject: [PATCH 085/160] Added Fred Potter to the license file. --- License.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/License.txt b/License.txt index 759564836..0cf1dfdfd 100644 --- a/License.txt +++ b/License.txt @@ -1,9 +1,13 @@ -Copyright (c) 2018, Drew McCormack, Brad Larson, Eric Skroch, Barry Wark, Dirkjan Krijnders, Rick Maddy, Vijay Kalusani, Caleb Cannon, Jeff Buck, Thomas Elstner, Jeroen Leenarts, Craig Hockenberry, Hartwig Wiesmann, Koen van der Drift, Nino Ag, Mike Lischke, Trevor Harmon, Travis Fischer, Graham Mueller, Rafał Wójcik, Mike Rossetti, Michael Merickel, Lane Roathe, Ingmar Stein, Sean Holbert, Victor Martin Garcia, Jérôme Morissard, Demitri Muna, Tim Monzures, Kirill Yakimovich, Tom Izaks, and Pascal Freiburghaus. +Copyright (c) 2019, Drew McCormack, Brad Larson, Eric Skroch, Barry Wark, Dirkjan Krijnders, Rick Maddy, Vijay Kalusani, Caleb Cannon, Jeff Buck, Thomas Elstner, Jeroen Leenarts, Craig Hockenberry, Hartwig Wiesmann, Koen van der Drift, Nino Ag, Mike Lischke, Trevor Harmon, Travis Fischer, Graham Mueller, Rafał Wójcik, Mike Rossetti, Michael Merickel, Lane Roathe, Ingmar Stein, Sean Holbert, Victor Martin Garcia, Jérôme Morissard, Demitri Muna, Tim Monzures, Kirill Yakimovich, Tom Izaks, Pascal Freiburghaus, and Fred Potter. + All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + Neither the name of the Core Plot Project nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. From 83a7466ea815052f54fd7d269b23c818b844d684 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sat, 1 Jun 2019 11:30:37 -0400 Subject: [PATCH 086/160] Fixed deprecated localizations for Xcode 10.2. --- .../project.pbxproj | 10 +++++----- .../AAPLot/AAPLot.xcodeproj/project.pbxproj | 9 ++++----- .../CPTTestApp-iPad.xcodeproj/project.pbxproj | 10 +++++----- .../project.pbxproj | 10 +++++----- .../CPTTestApp.xcodeproj/project.pbxproj | 14 +++++++------- .../InfoPlist.strings | Bin .../DropPlot.xcodeproj/project.pbxproj | 18 +++++++++--------- .../{English.lproj => en.lproj}/Credits.rtf | 0 .../InfoPlist.strings | Bin .../InfoPlist.strings | Bin .../project.pbxproj | 14 +++++++------- .../RangePlot.xcodeproj/project.pbxproj | 14 +++++++------- .../InfoPlist.strings | Bin .../StockPlot.xcodeproj/project.pbxproj | 9 ++++----- framework/CorePlot.xcodeproj/project.pbxproj | 5 +++-- .../InfoPlist.strings | Bin 16 files changed, 56 insertions(+), 57 deletions(-) rename examples/CPTTestApp/{English.lproj => en.lproj}/InfoPlist.strings (100%) rename examples/DropPlot/{English.lproj => en.lproj}/Credits.rtf (100%) rename examples/DropPlot/{English.lproj => en.lproj}/InfoPlist.strings (100%) rename examples/MinorTickLabels/{English.lproj => en.lproj}/InfoPlist.strings (100%) rename examples/RangePlot/{English.lproj => en.lproj}/InfoPlist.strings (100%) rename framework/{English.lproj => en.lproj}/InfoPlist.strings (100%) diff --git a/QCPlugin/CorePlotQCPlugin.xcodeproj/project.pbxproj b/QCPlugin/CorePlotQCPlugin.xcodeproj/project.pbxproj index 8761e06f2..1ce1433bb 100644 --- a/QCPlugin/CorePlotQCPlugin.xcodeproj/project.pbxproj +++ b/QCPlugin/CorePlotQCPlugin.xcodeproj/project.pbxproj @@ -266,14 +266,14 @@ }; buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "CorePlotQCPlugin" */; compatibilityVersion = "Xcode 6.3"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 1; knownRegions = ( - English, - Japanese, - French, - German, Base, + en, + ja, + fr, + de, ); mainGroup = 089C166AFE841209C02AAC07 /* Quartz Composer Plug In */; projectDirPath = ""; diff --git a/examples/AAPLot/AAPLot.xcodeproj/project.pbxproj b/examples/AAPLot/AAPLot.xcodeproj/project.pbxproj index ea04af943..d7f4398f2 100644 --- a/examples/AAPLot/AAPLot.xcodeproj/project.pbxproj +++ b/examples/AAPLot/AAPLot.xcodeproj/project.pbxproj @@ -298,15 +298,14 @@ }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "AAPLot" */; compatibilityVersion = "Xcode 6.3"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 1; knownRegions = ( - English, - Japanese, - French, - German, en, Base, + ja, + de, + fr, ); mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; projectDirPath = ""; diff --git a/examples/CPTTestApp-iPad/CPTTestApp-iPad.xcodeproj/project.pbxproj b/examples/CPTTestApp-iPad/CPTTestApp-iPad.xcodeproj/project.pbxproj index 3109c9d46..c58beb82c 100644 --- a/examples/CPTTestApp-iPad/CPTTestApp-iPad.xcodeproj/project.pbxproj +++ b/examples/CPTTestApp-iPad/CPTTestApp-iPad.xcodeproj/project.pbxproj @@ -238,14 +238,14 @@ }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "CPTTestApp-iPad" */; compatibilityVersion = "Xcode 6.3"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 1; knownRegions = ( - English, - Japanese, - French, - German, Base, + ja, + en, + de, + fr, ); mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; projectDirPath = ""; diff --git a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj index 9f4fe0105..335671fd9 100644 --- a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj +++ b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj @@ -255,14 +255,14 @@ }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "CPTTestApp-iPhone" */; compatibilityVersion = "Xcode 6.3"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 1; knownRegions = ( - English, - Japanese, - French, - German, Base, + fr, + de, + ja, + en, ); mainGroup = 29B97314FDCFA39411CA2CEA /* CPTTestApp-iPhone */; projectDirPath = ""; diff --git a/examples/CPTTestApp/CPTTestApp.xcodeproj/project.pbxproj b/examples/CPTTestApp/CPTTestApp.xcodeproj/project.pbxproj index 9f97317e2..1a1bce3b3 100644 --- a/examples/CPTTestApp/CPTTestApp.xcodeproj/project.pbxproj +++ b/examples/CPTTestApp/CPTTestApp.xcodeproj/project.pbxproj @@ -119,7 +119,6 @@ 077382AF0F3DC1FB002F10E2 /* Controller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Controller.h; path = Source/Controller.h; sourceTree = ""; }; 077382B00F3DC1FB002F10E2 /* Controller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Controller.m; path = Source/Controller.m; sourceTree = ""; }; 07C13BBA0FF9322A00BEE616 /* BlueTexture.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = BlueTexture.png; path = Resources/BlueTexture.png; sourceTree = ""; }; - 089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Source/main.m; sourceTree = ""; }; @@ -134,6 +133,7 @@ C317AB741093E17500B25011 /* AxisDemoController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AxisDemoController.h; path = Source/AxisDemoController.h; sourceTree = ""; }; C34D4F8C0F8ED78400969C24 /* CPTPlotSymbolTestController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CPTPlotSymbolTestController.m; path = Source/CPTPlotSymbolTestController.m; sourceTree = ""; }; C34D4F8D0F8ED78400969C24 /* CPTPlotSymbolTestController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CPTPlotSymbolTestController.h; path = Source/CPTPlotSymbolTestController.h; sourceTree = ""; }; + C3564D2522A2D11D000A54C9 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; C37A40A620E030C000C4FF48 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Base; path = Base.lproj/Info.plist; sourceTree = ""; }; C38017DF124132610052B00D /* SelectionDemoController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SelectionDemoController.h; path = Source/SelectionDemoController.h; sourceTree = ""; }; C38017E0124132610052B00D /* SelectionDemoController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SelectionDemoController.m; path = Source/SelectionDemoController.m; sourceTree = ""; }; @@ -304,14 +304,14 @@ }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "CPTTestApp" */; compatibilityVersion = "Xcode 6.3"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 1; knownRegions = ( - English, - Japanese, - French, - German, Base, + ja, + de, + en, + fr, ); mainGroup = 29B97314FDCFA39411CA2CEA /* CPTTestApp */; projectDirPath = ""; @@ -437,7 +437,7 @@ 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( - 089C165DFE840E0CC02AAC07 /* English */, + C3564D2522A2D11D000A54C9 /* en */, ); name = InfoPlist.strings; sourceTree = ""; diff --git a/examples/CPTTestApp/English.lproj/InfoPlist.strings b/examples/CPTTestApp/en.lproj/InfoPlist.strings similarity index 100% rename from examples/CPTTestApp/English.lproj/InfoPlist.strings rename to examples/CPTTestApp/en.lproj/InfoPlist.strings diff --git a/examples/DropPlot/DropPlot.xcodeproj/project.pbxproj b/examples/DropPlot/DropPlot.xcodeproj/project.pbxproj index c616593df..a95f8970e 100644 --- a/examples/DropPlot/DropPlot.xcodeproj/project.pbxproj +++ b/examples/DropPlot/DropPlot.xcodeproj/project.pbxproj @@ -102,13 +102,11 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 089C1660FE840EACC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 13E42FBA07B3F13500E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; 2A37F4ACFDCFA73011CA2CEA /* CPTPlotDocument.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = CPTPlotDocument.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 2A37F4AEFDCFA73011CA2CEA /* CPTPlotDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPTPlotDocument.h; sourceTree = ""; }; 2A37F4B0FDCFA73011CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 2A37F4BAFDCFA73011CA2CEA /* English */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = English; path = English.lproj/Credits.rtf; sourceTree = ""; }; 2A37F4C4FDCFA73011CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 2A37F4C5FDCFA73011CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 32DBCF750370BD2300C91783 /* DropPlot_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DropPlot_Prefix.pch; sourceTree = ""; }; @@ -117,6 +115,8 @@ BC93AA7C0FDEFEAC00606226 /* CorePlot.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = CorePlot.xcodeproj; path = ../../framework/CorePlot.xcodeproj; sourceTree = SOURCE_ROOT; }; BC93AAF40FDF3F0200606226 /* NSString+ParseCSV.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+ParseCSV.h"; sourceTree = ""; }; BC93AAF50FDF3F0200606226 /* NSString+ParseCSV.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+ParseCSV.m"; sourceTree = ""; }; + C3564D1722A2D115000A54C9 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = ""; }; + C3564D1822A2D115000A54C9 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; C37A40A820E0314800C4FF48 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Base; path = Base.lproj/Info.plist; sourceTree = ""; }; C3D3937719FD705000148319 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = DropPlot/Images.xcassets; sourceTree = ""; }; C3D6210E19DF72E000652CE7 /* CorePlotWarnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = CorePlotWarnings.xcconfig; path = ../../framework/xcconfig/CorePlotWarnings.xcconfig; sourceTree = ""; }; @@ -272,14 +272,14 @@ }; buildConfigurationList = C05733CB08A9546B00998B17 /* Build configuration list for PBXProject "DropPlot" */; compatibilityVersion = "Xcode 6.3"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 1; knownRegions = ( - English, - Japanese, - French, - German, Base, + de, + ja, + fr, + en, ); mainGroup = 2A37F4AAFDCFA73011CA2CEA /* DropPlot */; projectDirPath = ""; @@ -395,7 +395,7 @@ 089C165FFE840EACC02AAC07 /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( - 089C1660FE840EACC02AAC07 /* English */, + C3564D1822A2D115000A54C9 /* en */, ); name = InfoPlist.strings; sourceTree = ""; @@ -419,7 +419,7 @@ 2A37F4B9FDCFA73011CA2CEA /* Credits.rtf */ = { isa = PBXVariantGroup; children = ( - 2A37F4BAFDCFA73011CA2CEA /* English */, + C3564D1722A2D115000A54C9 /* en */, ); name = Credits.rtf; sourceTree = ""; diff --git a/examples/DropPlot/English.lproj/Credits.rtf b/examples/DropPlot/en.lproj/Credits.rtf similarity index 100% rename from examples/DropPlot/English.lproj/Credits.rtf rename to examples/DropPlot/en.lproj/Credits.rtf diff --git a/examples/DropPlot/English.lproj/InfoPlist.strings b/examples/DropPlot/en.lproj/InfoPlist.strings similarity index 100% rename from examples/DropPlot/English.lproj/InfoPlist.strings rename to examples/DropPlot/en.lproj/InfoPlist.strings diff --git a/examples/MinorTickLabels/English.lproj/InfoPlist.strings b/examples/MinorTickLabels/en.lproj/InfoPlist.strings similarity index 100% rename from examples/MinorTickLabels/English.lproj/InfoPlist.strings rename to examples/MinorTickLabels/en.lproj/InfoPlist.strings diff --git a/examples/MinorTickLabels/minorTickFormatter.xcodeproj/project.pbxproj b/examples/MinorTickLabels/minorTickFormatter.xcodeproj/project.pbxproj index 069150b92..e48c54686 100644 --- a/examples/MinorTickLabels/minorTickFormatter.xcodeproj/project.pbxproj +++ b/examples/MinorTickLabels/minorTickFormatter.xcodeproj/project.pbxproj @@ -104,7 +104,6 @@ 0761854B0F3CB3CB00A89A76 /* CorePlot.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = CorePlot.framework; path = ../../../../framework/build/Debug/CorePlot.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 077382AF0F3DC1FB002F10E2 /* Controller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Controller.h; sourceTree = ""; }; 077382B00F3DC1FB002F10E2 /* Controller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Controller.m; sourceTree = ""; }; - 089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Source/main.m; sourceTree = ""; }; @@ -113,6 +112,7 @@ 32CA4F630368D1EE00C91783 /* minorTickFormatter_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = minorTickFormatter_Prefix.pch; sourceTree = ""; }; 8D1107320486CEB800E47090 /* minorTickFormatter.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = minorTickFormatter.app; sourceTree = BUILT_PRODUCTS_DIR; }; BC8E737C0FC0B3CF00DF8511 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + C3564CFD22A2D107000A54C9 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; C37A40B620E0316900C4FF48 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Base; path = Base.lproj/Info.plist; sourceTree = ""; }; C37FFB5D19E1ECF0003F34C5 /* CorePlotWarnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = CorePlotWarnings.xcconfig; path = ../../framework/xcconfig/CorePlotWarnings.xcconfig; sourceTree = ""; }; C3D0A1DA20E0195F00BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/minorTickFormatter.xib; sourceTree = ""; }; @@ -266,14 +266,14 @@ }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "minorTickFormatter" */; compatibilityVersion = "Xcode 6.3"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 1; knownRegions = ( - English, - Japanese, - French, - German, Base, + de, + en, + ja, + fr, ); mainGroup = 29B97314FDCFA39411CA2CEA /* CPTTestApp */; projectDirPath = ""; @@ -386,7 +386,7 @@ 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( - 089C165DFE840E0CC02AAC07 /* English */, + C3564CFD22A2D107000A54C9 /* en */, ); name = InfoPlist.strings; sourceTree = ""; diff --git a/examples/RangePlot/RangePlot.xcodeproj/project.pbxproj b/examples/RangePlot/RangePlot.xcodeproj/project.pbxproj index c8e77ae28..070fa3363 100644 --- a/examples/RangePlot/RangePlot.xcodeproj/project.pbxproj +++ b/examples/RangePlot/RangePlot.xcodeproj/project.pbxproj @@ -104,7 +104,6 @@ 0761854B0F3CB3CB00A89A76 /* CorePlot.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = CorePlot.framework; path = ../../../../framework/build/Debug/CorePlot.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 077382AF0F3DC1FB002F10E2 /* Controller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Controller.h; sourceTree = ""; }; 077382B00F3DC1FB002F10E2 /* Controller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Controller.m; sourceTree = ""; }; - 089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Source/main.m; sourceTree = ""; }; @@ -113,6 +112,7 @@ 32CA4F630368D1EE00C91783 /* RangePlot_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RangePlot_Prefix.pch; sourceTree = ""; }; 8D1107320486CEB800E47090 /* RangePlot.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RangePlot.app; sourceTree = BUILT_PRODUCTS_DIR; }; BC8E737C0FC0B3CF00DF8511 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + C3564CBC22A2D0E1000A54C9 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; C37A40C420E0318900C4FF48 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Base; path = Base.lproj/Info.plist; sourceTree = ""; }; C37FFB6019E1EEB6003F34C5 /* CorePlotWarnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = CorePlotWarnings.xcconfig; path = ../../framework/xcconfig/CorePlotWarnings.xcconfig; sourceTree = ""; }; C3D0A18A20E0179F00BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/RangePlot.xib; sourceTree = ""; }; @@ -266,14 +266,14 @@ }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "RangePlot" */; compatibilityVersion = "Xcode 6.3"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 1; knownRegions = ( - English, - Japanese, - French, - German, Base, + en, + de, + fr, + ja, ); mainGroup = 29B97314FDCFA39411CA2CEA /* CPTTestApp */; projectDirPath = ""; @@ -386,7 +386,7 @@ 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( - 089C165DFE840E0CC02AAC07 /* English */, + C3564CBC22A2D0E1000A54C9 /* en */, ); name = InfoPlist.strings; sourceTree = ""; diff --git a/examples/RangePlot/English.lproj/InfoPlist.strings b/examples/RangePlot/en.lproj/InfoPlist.strings similarity index 100% rename from examples/RangePlot/English.lproj/InfoPlist.strings rename to examples/RangePlot/en.lproj/InfoPlist.strings diff --git a/examples/StockPlot/StockPlot.xcodeproj/project.pbxproj b/examples/StockPlot/StockPlot.xcodeproj/project.pbxproj index 413dd4723..2887c434b 100644 --- a/examples/StockPlot/StockPlot.xcodeproj/project.pbxproj +++ b/examples/StockPlot/StockPlot.xcodeproj/project.pbxproj @@ -270,15 +270,14 @@ }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "StockPlot" */; compatibilityVersion = "Xcode 6.3"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 1; knownRegions = ( - English, - Japanese, - French, - German, en, Base, + de, + ja, + fr, ); mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; projectDirPath = ""; diff --git a/framework/CorePlot.xcodeproj/project.pbxproj b/framework/CorePlot.xcodeproj/project.pbxproj index bb90ab8d8..eb6c68b50 100644 --- a/framework/CorePlot.xcodeproj/project.pbxproj +++ b/framework/CorePlot.xcodeproj/project.pbxproj @@ -989,7 +989,6 @@ 07FCF2C5115B54AE00E46606 /* _CPTSlateTheme.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _CPTSlateTheme.m; sourceTree = ""; }; 07FEBD60110B7E8B00E44D37 /* CPTScatterPlotTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPTScatterPlotTests.h; sourceTree = ""; }; 07FEBD61110B7E8B00E44D37 /* CPTScatterPlotTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CPTScatterPlotTests.m; sourceTree = ""; }; - 089C1667FE841158C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; 32484B3F0F530E8B002151AD /* CPTPlotRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = CPTPlotRange.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 32484B400F530E8B002151AD /* CPTPlotRange.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = CPTPlotRange.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 32DBCF5E0370ADEE00C91783 /* CorePlot_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CorePlot_Prefix.pch; sourceTree = ""; }; @@ -1090,6 +1089,7 @@ C34BF5BA10A67633007F0894 /* CPTPlotArea.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPTPlotArea.h; sourceTree = ""; }; C34BF5BB10A67633007F0894 /* CPTPlotArea.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = CPTPlotArea.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; C34F570D19D8CE5500446248 /* CorePlotWarnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = CorePlotWarnings.xcconfig; path = xcconfig/CorePlotWarnings.xcconfig; sourceTree = ""; }; + C3564CBD22A2D0E1000A54C9 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; C36468A80FE5533F0064B186 /* CPTTextStyleTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPTTextStyleTests.h; sourceTree = ""; }; C36468A90FE5533F0064B186 /* CPTTextStyleTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CPTTextStyleTests.m; sourceTree = ""; }; C36E89B811EE7F97003DE309 /* CPTPlotRangeTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPTPlotRangeTests.h; sourceTree = ""; }; @@ -2484,6 +2484,7 @@ French, German, Base, + en, ); mainGroup = 0867D691FE84028FC02AAC07 /* CorePlot */; productRefGroup = 034768DFFF38A50411DB9C8B /* Products */; @@ -3192,7 +3193,7 @@ 089C1666FE841158C02AAC07 /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( - 089C1667FE841158C02AAC07 /* English */, + C3564CBD22A2D0E1000A54C9 /* en */, ); name = InfoPlist.strings; sourceTree = ""; diff --git a/framework/English.lproj/InfoPlist.strings b/framework/en.lproj/InfoPlist.strings similarity index 100% rename from framework/English.lproj/InfoPlist.strings rename to framework/en.lproj/InfoPlist.strings From 12f4d4ed20a53931f234f6f44aa173855fd528a1 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sat, 1 Jun 2019 11:39:27 -0400 Subject: [PATCH 087/160] Updated example apps to Swift 5. --- .../CPTTestApp-iPhone.xcodeproj/project.pbxproj | 6 +++--- .../CPTTestApp-iPhone/Classes/ScatterPlotController.swift | 2 +- examples/DatePlot/DatePlot.xcodeproj/project.pbxproj | 6 +++--- examples/DatePlot/Source/DateController.swift | 3 +++ 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj index 335671fd9..266632a6c 100644 --- a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj +++ b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj @@ -249,7 +249,7 @@ LastUpgradeCheck = 0930; TargetAttributes = { 1D6058900D05DD3D006BFB54 = { - LastSwiftMigration = 0900; + LastSwiftMigration = 1020; }; }; }; @@ -449,7 +449,7 @@ PRODUCT_NAME = "CPTTestApp-iPhone"; "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; SWIFT_OBJC_BRIDGING_HEADER = "CPTTestApp-iPhone-Bridging-Header.h"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -477,7 +477,7 @@ "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; SWIFT_OBJC_BRIDGING_HEADER = "CPTTestApp-iPhone-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; }; name = Release; }; diff --git a/examples/CPTTestApp-iPhone/Classes/ScatterPlotController.swift b/examples/CPTTestApp-iPhone/Classes/ScatterPlotController.swift index 22f5a4918..fffaba488 100644 --- a/examples/CPTTestApp-iPhone/Classes/ScatterPlotController.swift +++ b/examples/CPTTestApp-iPhone/Classes/ScatterPlotController.swift @@ -107,7 +107,7 @@ class ScatterPlotController : UIViewController, CPTScatterPlotDataSource, CPTAxi let fadeInAnimation = CABasicAnimation(keyPath: "opacity") fadeInAnimation.duration = 1.0 fadeInAnimation.isRemovedOnCompletion = false - fadeInAnimation.fillMode = kCAFillModeForwards + fadeInAnimation.fillMode = .forwards fadeInAnimation.toValue = 1.0 dataSourceLinePlot.add(fadeInAnimation, forKey: "animateOpacity") diff --git a/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj b/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj index 3068b7b86..78430d7bc 100644 --- a/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj +++ b/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj @@ -264,7 +264,7 @@ LastUpgradeCheck = 0930; TargetAttributes = { 8D1107260486CEB800E47090 = { - LastSwiftMigration = 0900; + LastSwiftMigration = 1020; }; }; }; @@ -438,7 +438,7 @@ PRODUCT_NAME = DatePlot; SWIFT_OBJC_BRIDGING_HEADER = "DatePlot-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -463,7 +463,7 @@ PRODUCT_NAME = DatePlot; SWIFT_OBJC_BRIDGING_HEADER = "DatePlot-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; }; name = Release; }; diff --git a/examples/DatePlot/Source/DateController.swift b/examples/DatePlot/Source/DateController.swift index c0718f373..e82b00087 100644 --- a/examples/DatePlot/Source/DateController.swift +++ b/examples/DatePlot/Source/DateController.swift @@ -100,6 +100,9 @@ class DateController : NSObject, CPTPlotDataSource { case .Y: return self.plotData[Int(record)] as NSNumber + + @unknown default: + return nil } } } From 70bbb9be37bfabab3f7ede5c8b1d888c62f44af2 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Thu, 6 Jun 2019 18:35:40 -0400 Subject: [PATCH 088/160] Fixed deprecated localizations for Xcode 10.3 beta. --- .../Plot_Gallery.xcodeproj/project.pbxproj | 13 ++++++------- .../{English.lproj => en.lproj}/InfoPlist.strings | 0 .../DatePlot/DatePlot.xcodeproj/project.pbxproj | 14 +++++++------- .../{English.lproj => en.lproj}/InfoPlist.strings | Bin framework/CorePlot.xcodeproj/project.pbxproj | 9 ++++----- 5 files changed, 17 insertions(+), 19 deletions(-) rename examples/CorePlotGallery/src/mac/{English.lproj => en.lproj}/InfoPlist.strings (100%) rename examples/DatePlot/{English.lproj => en.lproj}/InfoPlist.strings (100%) diff --git a/examples/CorePlotGallery/Plot_Gallery.xcodeproj/project.pbxproj b/examples/CorePlotGallery/Plot_Gallery.xcodeproj/project.pbxproj index 777da1d8b..2920f7763 100644 --- a/examples/CorePlotGallery/Plot_Gallery.xcodeproj/project.pbxproj +++ b/examples/CorePlotGallery/Plot_Gallery.xcodeproj/project.pbxproj @@ -244,7 +244,6 @@ 4F22FF4712342978006BF615 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = src/mac/main.m; sourceTree = ""; }; 4F22FF4A1234298E006BF615 /* Plot_Gallery_MacAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Plot_Gallery_MacAppDelegate.h; path = src/mac/Plot_Gallery_MacAppDelegate.h; sourceTree = ""; }; 4F22FF4B1234298E006BF615 /* Plot_Gallery_MacAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Plot_Gallery_MacAppDelegate.m; path = src/mac/Plot_Gallery_MacAppDelegate.m; sourceTree = ""; }; - 4F22FF5812342A21006BF615 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = InfoPlist.strings; sourceTree = ""; }; 4F22FF7B12342B5A006BF615 /* Plot_Gallery_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Plot_Gallery_Prefix.pch; sourceTree = ""; }; 4F22FF9A12342D7C006BF615 /* CompositePlot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = CompositePlot.h; path = src/plots/CompositePlot.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 4F22FF9B12342D7C006BF615 /* CompositePlot.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = CompositePlot.m; path = src/plots/CompositePlot.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; @@ -315,6 +314,7 @@ C360E1DF13B18CAE007994B6 /* CandlestickPlot.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = CandlestickPlot.m; path = src/plots/CandlestickPlot.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; C367249113E103910070F47A /* LineCapDemo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LineCapDemo.h; path = src/plots/LineCapDemo.h; sourceTree = ""; }; C367249213E103910070F47A /* LineCapDemo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LineCapDemo.m; path = src/plots/LineCapDemo.m; sourceTree = ""; }; + C385067022A9CC840086BAD5 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = ../en.lproj/InfoPlist.strings; sourceTree = ""; }; C39C4E3F13BFE1A900CD9194 /* LabelingPolicyDemo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LabelingPolicyDemo.h; path = src/plots/LabelingPolicyDemo.h; sourceTree = ""; }; C39C4E4013BFE1A900CD9194 /* LabelingPolicyDemo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = LabelingPolicyDemo.m; path = src/plots/LabelingPolicyDemo.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; C39C4E4213BFE1B400CD9194 /* PlotSpaceDemo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlotSpaceDemo.h; path = src/plots/PlotSpaceDemo.h; sourceTree = ""; }; @@ -704,15 +704,14 @@ }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Plot_Gallery" */; compatibilityVersion = "Xcode 6.3"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 1; knownRegions = ( - English, - Japanese, - French, - German, Base, en, + fr, + ja, + de, ); mainGroup = 29B97314FDCFA39411CA2CEA /* Plot Gallery-Mac */; projectDirPath = ""; @@ -966,7 +965,7 @@ 4F22FF5712342A21006BF615 /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( - 4F22FF5812342A21006BF615 /* English */, + C385067022A9CC840086BAD5 /* en */, ); name = InfoPlist.strings; path = src/mac/English.lproj; diff --git a/examples/CorePlotGallery/src/mac/English.lproj/InfoPlist.strings b/examples/CorePlotGallery/src/mac/en.lproj/InfoPlist.strings similarity index 100% rename from examples/CorePlotGallery/src/mac/English.lproj/InfoPlist.strings rename to examples/CorePlotGallery/src/mac/en.lproj/InfoPlist.strings diff --git a/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj b/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj index 78430d7bc..9dcabd748 100644 --- a/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj +++ b/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj @@ -102,7 +102,6 @@ 071BCBD61079EBE00045E43D /* CorePlot.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = CorePlot.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 076184BC0F3CAD5900A89A76 /* CorePlot.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = CorePlot.xcodeproj; path = ../../framework/CorePlot.xcodeproj; sourceTree = SOURCE_ROOT; }; 0761854B0F3CB3CB00A89A76 /* CorePlot.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = CorePlot.framework; path = ../../../../framework/build/Debug/CorePlot.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; @@ -111,6 +110,7 @@ BC8E737C0FC0B3CF00DF8511 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; C33E19A7198330CA00182AF2 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = Source/AppDelegate.swift; sourceTree = ""; }; C37A409820E030B500C4FF48 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Base; path = Base.lproj/Info.plist; sourceTree = ""; }; + C385066522A9CC740086BAD5 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; C3A1443E197DE35F0048F1FF /* DatePlot-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "DatePlot-Bridging-Header.h"; sourceTree = ""; }; C3A1443F197DE35F0048F1FF /* DateController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = DateController.swift; path = Source/DateController.swift; sourceTree = ""; }; C3C3CBBF19EA07F600A0296A /* CorePlotWarnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = CorePlotWarnings.xcconfig; path = ../../framework/xcconfig/CorePlotWarnings.xcconfig; sourceTree = ""; }; @@ -270,14 +270,14 @@ }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "DatePlot" */; compatibilityVersion = "Xcode 6.3"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 1; knownRegions = ( - English, - Japanese, - French, - German, Base, + de, + ja, + en, + fr, ); mainGroup = 29B97314FDCFA39411CA2CEA /* CPTTestApp */; projectDirPath = ""; @@ -390,7 +390,7 @@ 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( - 089C165DFE840E0CC02AAC07 /* English */, + C385066522A9CC740086BAD5 /* en */, ); name = InfoPlist.strings; sourceTree = ""; diff --git a/examples/DatePlot/English.lproj/InfoPlist.strings b/examples/DatePlot/en.lproj/InfoPlist.strings similarity index 100% rename from examples/DatePlot/English.lproj/InfoPlist.strings rename to examples/DatePlot/en.lproj/InfoPlist.strings diff --git a/framework/CorePlot.xcodeproj/project.pbxproj b/framework/CorePlot.xcodeproj/project.pbxproj index eb6c68b50..3f35d7e81 100644 --- a/framework/CorePlot.xcodeproj/project.pbxproj +++ b/framework/CorePlot.xcodeproj/project.pbxproj @@ -2476,15 +2476,14 @@ }; buildConfigurationList = 1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "CorePlot" */; compatibilityVersion = "Xcode 6.3"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 1; knownRegions = ( - English, - Japanese, - French, - German, Base, en, + de, + ja, + fr, ); mainGroup = 0867D691FE84028FC02AAC07 /* CorePlot */; productRefGroup = 034768DFFF38A50411DB9C8B /* Products */; From 1eab74237cf6f168a0779a9ea0b4fe64505a5f30 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Thu, 6 Jun 2019 18:39:00 -0400 Subject: [PATCH 089/160] Updated code signing and other project settings to Xcode 10.3 beta recommended defaults. --- .../xcschemes/Build & Copy.xcscheme | 6 +---- .../xcschemes/CorePlotQCPlugin.xcscheme | 6 +---- .../xcshareddata/xcschemes/AAPLot.xcscheme | 10 +++----- .../xcschemes/CPTTestApp-iPad.xcscheme | 10 +++----- .../xcschemes/CPTTestApp-iPhone.xcscheme | 10 +++----- .../CPTTestApp.xcodeproj/project.pbxproj | 4 +++- .../xcschemes/CPTTestApp.xcscheme | 10 +++----- .../Plot_Gallery.xcodeproj/project.pbxproj | 4 +++- .../xcschemes/Plot Gallery-Mac.xcscheme | 14 ++++------- .../xcschemes/Plot Gallery-iOS.xcscheme | 14 ++++------- .../xcschemes/Plot Gallery-tvOS.xcscheme | 14 ++++------- .../DatePlot.xcodeproj/project.pbxproj | 4 +++- .../xcshareddata/xcschemes/DatePlot.xcscheme | 10 +++----- .../DropPlot.xcodeproj/project.pbxproj | 4 +++- .../xcshareddata/xcschemes/DropPlot.xcscheme | 10 +++----- .../project.pbxproj | 4 +++- .../xcschemes/minorTickFormatter.xcscheme | 10 +++----- .../RangePlot.xcodeproj/project.pbxproj | 4 +++- .../xcshareddata/xcschemes/RangePlot.xcscheme | 10 +++----- .../xcshareddata/xcschemes/StockPlot.xcscheme | 10 +++----- framework/CorePlot.xcodeproj/project.pbxproj | 10 ++++---- .../xcschemes/CorePlot Mac.xcscheme | 6 +---- .../xcschemes/CorePlot iOS.xcscheme | 24 ++++++++----------- .../xcschemes/CorePlot tvOS.xcscheme | 24 ++++++++----------- .../xcschemes/CorePlot-CocoaTouch.xcscheme | 24 ++++++++----------- .../xcschemes/Documentation-Mac.xcscheme | 6 +---- .../xcschemes/Documentation-iOS.xcscheme | 6 +---- .../xcschemes/Universal Library.xcscheme | 6 +---- .../Universal iOS Framework.xcscheme | 6 +---- 29 files changed, 102 insertions(+), 178 deletions(-) diff --git a/QCPlugin/CorePlotQCPlugin.xcodeproj/xcshareddata/xcschemes/Build & Copy.xcscheme b/QCPlugin/CorePlotQCPlugin.xcodeproj/xcshareddata/xcschemes/Build & Copy.xcscheme index d64dd0f04..7afa5ea4a 100644 --- a/QCPlugin/CorePlotQCPlugin.xcodeproj/xcshareddata/xcschemes/Build & Copy.xcscheme +++ b/QCPlugin/CorePlotQCPlugin.xcodeproj/xcshareddata/xcschemes/Build & Copy.xcscheme @@ -1,6 +1,6 @@ - - - - - - - - - - - - + + - - - - - - + + - - - - - - + + - - - - - - + + - - - - + shouldUseLaunchSchemeArgsEnv = "YES" + codeCoverageEnabled = "YES"> - - + + - - - - + shouldUseLaunchSchemeArgsEnv = "YES" + codeCoverageEnabled = "YES"> - - + + - - - - + shouldUseLaunchSchemeArgsEnv = "YES" + codeCoverageEnabled = "YES"> - - + + - - - - - - + + - - - - - - + + - - - - - - + + - - - - - - + + - - - - - - + + - - - - - - + + + + @@ -53,17 +62,6 @@ - - - - - - - - + + + + @@ -53,17 +62,6 @@ - - - - - - - - + + + + @@ -53,17 +62,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - Date: Thu, 6 Jun 2019 18:53:57 -0400 Subject: [PATCH 090/160] Fixed new compile-time errors for Xcode 10.3 beta. --- framework/Source/CPTGradient.m | 2 +- framework/Source/CPTImage.m | 2 +- framework/Source/CPTXYPlotSpace.m | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/framework/Source/CPTGradient.m b/framework/Source/CPTGradient.m index 85d833e82..965903adb 100644 --- a/framework/Source/CPTGradient.m +++ b/framework/Source/CPTGradient.m @@ -1002,7 +1002,7 @@ -(NSUInteger)hash return (NSUInteger)theHash; } else { - return self.blendingMode + self.gradientType; + return (NSUInteger)(self.blendingMode + self.gradientType); } } diff --git a/framework/Source/CPTImage.m b/framework/Source/CPTImage.m index 14d1df084..baebbc284 100644 --- a/framework/Source/CPTImage.m +++ b/framework/Source/CPTImage.m @@ -478,7 +478,7 @@ -(NSUInteger)hash CGImageGetBytesPerRow(selfCGImage) + CGImageGetBitmapInfo(selfCGImage) + CGImageGetShouldInterpolate(selfCGImage) + - CGImageGetRenderingIntent(selfCGImage) * (NSUInteger)self.scale; + (NSUInteger)(CGImageGetRenderingIntent(selfCGImage) * self.scale); } /// @endcond diff --git a/framework/Source/CPTXYPlotSpace.m b/framework/Source/CPTXYPlotSpace.m index cd8368252..3b2750488 100644 --- a/framework/Source/CPTXYPlotSpace.m +++ b/framework/Source/CPTXYPlotSpace.m @@ -241,8 +241,8 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder [coder encodeInteger:self.yScaleType forKey:@"CPTXYPlotSpace.yScaleType"]; [coder encodeBool:self.allowsMomentumX forKey:@"CPTXYPlotSpace.allowsMomentumX"]; [coder encodeBool:self.allowsMomentumY forKey:@"CPTXYPlotSpace.allowsMomentumY"]; - [coder encodeInt:self.momentumAnimationCurve forKey:@"CPTXYPlotSpace.momentumAnimationCurve"]; - [coder encodeInt:self.bounceAnimationCurve forKey:@"CPTXYPlotSpace.bounceAnimationCurve"]; + [coder encodeInteger:self.momentumAnimationCurve forKey:@"CPTXYPlotSpace.momentumAnimationCurve"]; + [coder encodeInteger:self.bounceAnimationCurve forKey:@"CPTXYPlotSpace.bounceAnimationCurve"]; [coder encodeCGFloat:self.momentumAcceleration forKey:@"CPTXYPlotSpace.momentumAcceleration"]; [coder encodeCGFloat:self.bounceAcceleration forKey:@"CPTXYPlotSpace.bounceAcceleration"]; [coder encodeCGFloat:self.minimumDisplacementToDrag forKey:@"CPTXYPlotSpace.minimumDisplacementToDrag"]; @@ -282,8 +282,8 @@ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder allowsMomentumX = [coder decodeBoolForKey:@"CPTXYPlotSpace.allowsMomentumX"]; allowsMomentumY = [coder decodeBoolForKey:@"CPTXYPlotSpace.allowsMomentumY"]; } - momentumAnimationCurve = (CPTAnimationCurve)[coder decodeIntForKey:@"CPTXYPlotSpace.momentumAnimationCurve"]; - bounceAnimationCurve = (CPTAnimationCurve)[coder decodeIntForKey:@"CPTXYPlotSpace.bounceAnimationCurve"]; + momentumAnimationCurve = (CPTAnimationCurve)[coder decodeIntegerForKey:@"CPTXYPlotSpace.momentumAnimationCurve"]; + bounceAnimationCurve = (CPTAnimationCurve)[coder decodeIntegerForKey:@"CPTXYPlotSpace.bounceAnimationCurve"]; momentumAcceleration = [coder decodeCGFloatForKey:@"CPTXYPlotSpace.momentumAcceleration"]; bounceAcceleration = [coder decodeCGFloatForKey:@"CPTXYPlotSpace.bounceAcceleration"]; minimumDisplacementToDrag = [coder decodeCGFloatForKey:@"CPTXYPlotSpace.minimumDisplacementToDrag"]; From 825154b93fd0815da4958d60fb47e6957636b438 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Fri, 14 Jun 2019 20:24:24 -0400 Subject: [PATCH 091/160] Annotated enumerations with NS_CLOSED_ENUM vice NS_ENUM where appropriate. --- documentation/doxygen/doxygen touch.config | 1 + documentation/doxygen/doxygen.config | 1 + framework/Source/CPTDefinitions.h | 2 +- framework/Source/CPTNumericDataType.h | 2 +- framework/Source/CPTPieChart.h | 2 +- framework/Source/CPTPlotRange.h | 2 +- 6 files changed, 6 insertions(+), 4 deletions(-) diff --git a/documentation/doxygen/doxygen touch.config b/documentation/doxygen/doxygen touch.config index 8e2e6612b..01d4c0b2d 100644 --- a/documentation/doxygen/doxygen touch.config +++ b/documentation/doxygen/doxygen touch.config @@ -2098,6 +2098,7 @@ PREDEFINED = TARGET_OS_IPHONE, \ "NS_DESIGNATED_INITIALIZER:= " \ "NS_RETURNS_INNER_POINTER:= " \ "NS_ENUM(_type,_name):=enum _name : _type _name; enum _name : _type " \ + "NS_CLOSED_ENUM(_type,_name):=enum _name : _type _name; enum _name : _type " \ "NS_OPTIONS(_type,_name):=enum _name : _type _name; enum _name : _type " \ "NS_SWIFT_NAME(_name):= " \ "cpt_deprecated:= " \ diff --git a/documentation/doxygen/doxygen.config b/documentation/doxygen/doxygen.config index d7334bf98..46ed09de4 100644 --- a/documentation/doxygen/doxygen.config +++ b/documentation/doxygen/doxygen.config @@ -2095,6 +2095,7 @@ INCLUDE_FILE_PATTERNS = PREDEFINED = "NS_DESIGNATED_INITIALIZER:= " \ "NS_RETURNS_INNER_POINTER:= " \ "NS_ENUM(_type,_name):=enum _name : _type _name; enum _name : _type " \ + "NS_CLOSED_ENUM(_type,_name):=enum _name : _type _name; enum _name : _type " \ "NS_OPTIONS(_type,_name):=enum _name : _type _name; enum _name : _type " \ "NS_SWIFT_NAME(_name):= " \ "cpt_deprecated:= " \ diff --git a/framework/Source/CPTDefinitions.h b/framework/Source/CPTDefinitions.h index 26d4bd5de..f282f88b3 100644 --- a/framework/Source/CPTDefinitions.h +++ b/framework/Source/CPTDefinitions.h @@ -168,7 +168,7 @@ CPTRGBAColor; /** * @brief Enumeration of label positioning offset directions **/ -typedef NS_ENUM (NSInteger, CPTSign) { +typedef NS_CLOSED_ENUM (NSInteger, CPTSign) { CPTSignNone = 0, ///< No offset CPTSignPositive = +1, ///< Positive offset CPTSignNegative = -1 ///< Negative offset diff --git a/framework/Source/CPTNumericDataType.h b/framework/Source/CPTNumericDataType.h index b629c7b50..bee60899c 100644 --- a/framework/Source/CPTNumericDataType.h +++ b/framework/Source/CPTNumericDataType.h @@ -16,7 +16,7 @@ typedef NS_ENUM (NSInteger, CPTDataTypeFormat) { * @brief Enumeration of memory arrangements for multi-dimensional data arrays. * @see See Wikipedia for more information. **/ -typedef NS_ENUM (NSInteger, CPTDataOrder) { +typedef NS_CLOSED_ENUM (NSInteger, CPTDataOrder) { CPTDataOrderRowsFirst, ///< Numeric data is arranged in row-major order. CPTDataOrderColumnsFirst ///< Numeric data is arranged in column-major order. }; diff --git a/framework/Source/CPTPieChart.h b/framework/Source/CPTPieChart.h index e7aeb6e25..079cac20b 100644 --- a/framework/Source/CPTPieChart.h +++ b/framework/Source/CPTPieChart.h @@ -33,7 +33,7 @@ typedef NS_ENUM (NSInteger, CPTPieChartField) { /** * @brief Enumeration of pie slice drawing directions. **/ -typedef NS_ENUM (NSInteger, CPTPieDirection) { +typedef NS_CLOSED_ENUM (NSInteger, CPTPieDirection) { CPTPieDirectionClockwise, ///< Pie slices are drawn in a clockwise direction. CPTPieDirectionCounterClockwise ///< Pie slices are drawn in a counter-clockwise direction. }; diff --git a/framework/Source/CPTPlotRange.h b/framework/Source/CPTPlotRange.h index 6ba3f43ff..83f043519 100644 --- a/framework/Source/CPTPlotRange.h +++ b/framework/Source/CPTPlotRange.h @@ -7,7 +7,7 @@ /** * @brief Enumeration of possible results of a plot range comparison. **/ -typedef NS_ENUM (NSInteger, CPTPlotRangeComparisonResult) { +typedef NS_CLOSED_ENUM (NSInteger, CPTPlotRangeComparisonResult) { CPTPlotRangeComparisonResultNumberBelowRange, ///< Number is below the range. CPTPlotRangeComparisonResultNumberInRange, ///< Number is in the range. CPTPlotRangeComparisonResultNumberAboveRange ///< Number is above the range. From 354a8e6d2dc8be71fa8b21381ccbe76fe1b2474b Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sat, 15 Jun 2019 07:35:40 -0400 Subject: [PATCH 092/160] Updated the Travis CI configuration to use Xcode 10. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 0de77074a..49aa993ae 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,5 @@ language: objective-c -osx_image: xcode8 +osx_image: xcode10 ios_env: SDK:iphonesimulator From d7b63c24bfcbcd351afa127efac766523c0eef5c Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Wed, 19 Jun 2019 19:35:36 -0400 Subject: [PATCH 093/160] Replaced deprecated CGColorSpace functions with the new versions. Fixed issue #406. --- framework/Source/CPTColorSpaceTests.m | 14 ++++++++++++-- framework/Source/NSCoderExtensions.m | 19 +++++++++++++++++-- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/framework/Source/CPTColorSpaceTests.m b/framework/Source/CPTColorSpaceTests.m index 61a22d2c5..40fecd110 100644 --- a/framework/Source/CPTColorSpaceTests.m +++ b/framework/Source/CPTColorSpaceTests.m @@ -13,8 +13,18 @@ -(void)testKeyedArchivingRoundTrip CPTColorSpace *newColorSpace = [self archiveRoundTrip:colorSpace]; - CFDataRef iccProfile = CGColorSpaceCopyICCProfile(colorSpace.cgColorSpace); - CFDataRef newIccProfile = CGColorSpaceCopyICCProfile(newColorSpace.cgColorSpace); + CFDataRef iccProfile = NULL; + CFDataRef newIccProfile = NULL; + + // CGColorSpaceCopyICCProfile() is deprecated as of macOS 10.13 + if ( CGColorSpaceCopyICCData ) { + iccProfile = CGColorSpaceCopyICCData(colorSpace.cgColorSpace); + newIccProfile = CGColorSpaceCopyICCData(newColorSpace.cgColorSpace); + } + else { + iccProfile = CGColorSpaceCopyICCProfile(colorSpace.cgColorSpace); + newIccProfile = CGColorSpaceCopyICCProfile(newColorSpace.cgColorSpace); + } if ( iccProfile && newIccProfile ) { XCTAssertTrue([(__bridge NSData *) iccProfile isEqualToData:(__bridge NSData *)newIccProfile], @"Color spaces not equal"); diff --git a/framework/Source/NSCoderExtensions.m b/framework/Source/NSCoderExtensions.m index cfaa913c5..f8b927103 100644 --- a/framework/Source/NSCoderExtensions.m +++ b/framework/Source/NSCoderExtensions.m @@ -78,7 +78,16 @@ -(void)encodeCGColorSpace:(nullable CGColorSpaceRef)colorSpace forKey:(nonnull N NSLog(@"Color space encoding is not supported on iOS. Decoding will return a generic RGB color space."); #else if ( colorSpace ) { - CFDataRef iccProfile = CGColorSpaceCopyICCProfile(colorSpace); + CFDataRef iccProfile = NULL; + + // CGColorSpaceCopyICCProfile() is deprecated as of macOS 10.13 + if ( CGColorSpaceCopyICCData ) { + iccProfile = CGColorSpaceCopyICCData(colorSpace); + } + else { + iccProfile = CGColorSpaceCopyICCProfile(colorSpace); + } + [self encodeObject:(__bridge NSData *)iccProfile forKey:key]; CFRelease(iccProfile); } @@ -336,7 +345,13 @@ -(nullable CGColorSpaceRef)newCGColorSpaceDecodeForKey:(nonnull NSString *)key NSData *iccProfile = [self decodeObjectOfClass:[NSData class] forKey:key]; if ( iccProfile ) { - colorSpace = CGColorSpaceCreateWithICCProfile((__bridge CFDataRef)iccProfile); + // CGColorSpaceCreateWithICCProfile() is deprecated as of macOS 10.13 + if ( CGColorSpaceCreateWithICCData ) { + colorSpace = CGColorSpaceCreateWithICCData((__bridge CFDataRef)iccProfile); + } + else { + colorSpace = CGColorSpaceCreateWithICCProfile((__bridge CFDataRef)iccProfile); + } } else { NSLog(@"Color space not available for key '%@'. Using generic RGB color space.", key); From 01f0520c18ea28cb5e3afa2fe90a638cae58db31 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sat, 13 Jul 2019 14:24:07 -0400 Subject: [PATCH 094/160] Updated the -autoGenerateMajorTickLocations:minorTickLocations: method to handle plot ranges with infinite length gracefully. Updated CPTPlotRange and various CPTDecimal utility functions to handle empty and infinite ranges. Added and updated unit tests for the new CPTPlotRange and CPTDecimal features. Fixed issue #404. --- framework/Source/CPTAxis.m | 2 +- framework/Source/CPTMutablePlotRange.m | 159 +++++++++++--- framework/Source/CPTPlotRange.h | 10 +- framework/Source/CPTPlotRange.m | 241 +++++++++++++++++---- framework/Source/CPTPlotRangeTests.m | 277 ++++++++++++++++++++++++- framework/Source/CPTTestCase.m | 4 +- framework/Source/CPTUtilities.m | 22 +- framework/Source/CPTUtilitiesTests.m | 85 ++++++++ 8 files changed, 715 insertions(+), 85 deletions(-) diff --git a/framework/Source/CPTAxis.m b/framework/Source/CPTAxis.m index 66363ffee..1e060b24b 100644 --- a/framework/Source/CPTAxis.m +++ b/framework/Source/CPTAxis.m @@ -1064,7 +1064,7 @@ -(void)autoGenerateMajorTickLocations:(CPTNumberSet *__autoreleasing *)newMajorL double length = fabs(range.lengthDouble); // Filter troublesome values and return empty sets - if ( length != 0.0 ) { + if ((length != 0.0) && !isinf(length)) { switch ( scaleType ) { case CPTScaleTypeLinear: { diff --git a/framework/Source/CPTMutablePlotRange.m b/framework/Source/CPTMutablePlotRange.m index e4ac89993..eb1079824 100644 --- a/framework/Source/CPTMutablePlotRange.m +++ b/framework/Source/CPTMutablePlotRange.m @@ -73,24 +73,76 @@ -(void)unionPlotRange:(nullable CPTPlotRange *)other NSDecimal min1 = self.minLimitDecimal; NSDecimal min2 = other.minLimitDecimal; - NSDecimal minimum = CPTDecimalLessThan(min1, min2) ? min1 : min2; + NSDecimal minimum = CPTDecimalMin(min1, min2); NSDecimal max1 = self.maxLimitDecimal; NSDecimal max2 = other.maxLimitDecimal; - NSDecimal maximum = CPTDecimalGreaterThan(max1, max2) ? max1 : max2; - - NSDecimal newLocation, newLength; - if ( CPTDecimalGreaterThanOrEqualTo(self.lengthDecimal, CPTDecimalFromInteger(0))) { - newLocation = minimum; - newLength = CPTDecimalSubtract(maximum, minimum); + NSDecimal maximum = CPTDecimalMax(max1, max2); + + if ( self.isInfinite && other.isInfinite ) { + if ( self.lengthSign == other.lengthSign ) { + switch ( self.lengthSign ) { + case CPTSignPositive: + self.locationDecimal = minimum; + break; + + case CPTSignNegative: + self.locationDecimal = maximum; + break; + + default: + break; + } + } + else { + self.locationDouble = -HUGE_VAL; + self.lengthDouble = HUGE_VAL; + } + } + else if ( self.isInfinite && !other.isInfinite ) { + switch ( self.lengthSign ) { + case CPTSignPositive: + self.locationDecimal = minimum; + break; + + case CPTSignNegative: + self.locationDecimal = maximum; + break; + + default: + break; + } + } + else if ( !self.isInfinite && other.isInfinite ) { + switch ( other.lengthSign ) { + case CPTSignPositive: + self.locationDecimal = minimum; + self.lengthDouble = HUGE_VAL; + break; + + case CPTSignNegative: + self.locationDecimal = maximum; + self.lengthDouble = -HUGE_VAL; + break; + + default: + break; + } + } + else if ( NSDecimalIsNotANumber(&minimum) || NSDecimalIsNotANumber(&maximum)) { + self.locationDecimal = CPTDecimalNaN(); + self.lengthDecimal = CPTDecimalNaN(); } else { - newLocation = maximum; - newLength = CPTDecimalSubtract(minimum, maximum); + if ( CPTDecimalGreaterThanOrEqualTo(self.lengthDecimal, CPTDecimalFromInteger(0))) { + self.locationDecimal = minimum; + self.lengthDecimal = CPTDecimalSubtract(maximum, minimum); + } + else { + self.locationDecimal = maximum; + self.lengthDecimal = CPTDecimalSubtract(minimum, maximum); + } } - - self.locationDecimal = newLocation; - self.lengthDecimal = newLength; } /** @brief Sets the messaged object to the intersection with another range. The sign of @ref length is unchanged. @@ -104,28 +156,75 @@ -(void)intersectionPlotRange:(nullable CPTPlotRange *)other NSDecimal min1 = self.minLimitDecimal; NSDecimal min2 = other.minLimitDecimal; - NSDecimal minimum = CPTDecimalGreaterThan(min1, min2) ? min1 : min2; + NSDecimal minimum = CPTDecimalMax(min1, min2); NSDecimal max1 = self.maxLimitDecimal; NSDecimal max2 = other.maxLimitDecimal; - NSDecimal maximum = CPTDecimalLessThan(max1, max2) ? max1 : max2; + NSDecimal maximum = CPTDecimalMin(max1, max2); - if ( CPTDecimalGreaterThanOrEqualTo(maximum, minimum)) { - NSDecimal newLocation, newLength; - if ( CPTDecimalGreaterThanOrEqualTo(self.lengthDecimal, CPTDecimalFromInteger(0))) { - newLocation = minimum; - newLength = CPTDecimalSubtract(maximum, minimum); + if ( ![self intersectsRange:other] ) { + self.locationDecimal = CPTDecimalNaN(); + self.lengthDecimal = CPTDecimalNaN(); + } + else if ( self.isInfinite && other.isInfinite ) { + switch ( self.lengthSign ) { + case CPTSignPositive: + self.locationDecimal = minimum; + break; + + case CPTSignNegative: + self.locationDecimal = maximum; + break; + + default: + break; } - else { - newLocation = maximum; - newLength = CPTDecimalSubtract(minimum, maximum); + } + else if ( self.isInfinite && !other.isInfinite ) { + switch ( self.lengthSign ) { + case CPTSignPositive: + self.locationDecimal = minimum; + self.lengthDecimal = CPTDecimalSubtract(other.maxLimitDecimal, minimum); + break; + + case CPTSignNegative: + self.locationDecimal = maximum; + self.lengthDecimal = CPTDecimalSubtract(other.minLimitDecimal, maximum); + break; + + default: + break; + } + } + else if ( !self.isInfinite && other.isInfinite ) { + switch ( other.lengthSign ) { + case CPTSignPositive: + self.locationDecimal = minimum; + self.lengthDecimal = CPTDecimalSubtract(self.maxLimitDecimal, minimum); + break; + + case CPTSignNegative: + self.locationDecimal = maximum; + self.lengthDecimal = CPTDecimalSubtract(self.minLimitDecimal, maximum); + break; + + default: + break; } - - self.locationDecimal = newLocation; - self.lengthDecimal = newLength; + } + else if ( NSDecimalIsNotANumber(&minimum) || NSDecimalIsNotANumber(&maximum)) { + self.locationDecimal = CPTDecimalNaN(); + self.lengthDecimal = CPTDecimalNaN(); } else { - self.lengthDecimal = CPTDecimalFromInteger(0); + if ( CPTDecimalGreaterThanOrEqualTo(self.lengthDecimal, CPTDecimalFromInteger(0))) { + self.locationDecimal = minimum; + self.lengthDecimal = CPTDecimalSubtract(maximum, minimum); + } + else { + self.locationDecimal = maximum; + self.lengthDecimal = CPTDecimalSubtract(minimum, maximum); + } } } @@ -201,8 +300,10 @@ -(void)shiftEndToFitInRange:(nonnull CPTPlotRange *)otherRange /// @cond --(void)setLocation:(NSNumber *)newLocation +-(void)setLocation:(nonnull NSNumber *)newLocation { + NSParameterAssert(newLocation); + self.inValueUpdate = YES; self.locationDecimal = newLocation.decimalValue; @@ -211,8 +312,10 @@ -(void)setLocation:(NSNumber *)newLocation self.inValueUpdate = NO; } --(void)setLength:(NSNumber *)newLength +-(void)setLength:(nonnull NSNumber *)newLength { + NSParameterAssert(newLength); + self.inValueUpdate = YES; self.lengthDecimal = newLength.decimalValue; diff --git a/framework/Source/CPTPlotRange.h b/framework/Source/CPTPlotRange.h index 83f043519..ce6fbb8f7 100644 --- a/framework/Source/CPTPlotRange.h +++ b/framework/Source/CPTPlotRange.h @@ -10,7 +10,8 @@ typedef NS_CLOSED_ENUM (NSInteger, CPTPlotRangeComparisonResult) { CPTPlotRangeComparisonResultNumberBelowRange, ///< Number is below the range. CPTPlotRangeComparisonResultNumberInRange, ///< Number is in the range. - CPTPlotRangeComparisonResultNumberAboveRange ///< Number is above the range. + CPTPlotRangeComparisonResultNumberAboveRange, ///< Number is above the range. + CPTPlotRangeComparisonResultNumberUndefined ///< Number is undefined (e.g., @NAN). }; /** @@ -46,6 +47,9 @@ typedef NSMutableArray CPTMutablePlotRangeArray; @property (nonatomic, readonly) double minLimitDouble; @property (nonatomic, readonly) double midPointDouble; @property (nonatomic, readonly) double maxLimitDouble; + +@property (nonatomic, readonly) BOOL isInfinite; +@property (nonatomic, readonly) CPTSign lengthSign; /// @} /// @name Factory Methods @@ -56,8 +60,8 @@ typedef NSMutableArray CPTMutablePlotRangeArray; /// @name Initialization /// @{ --(nonnull instancetype)initWithLocation:(nonnull NSNumber *)loc length:(nonnull NSNumber *)len; --(nonnull instancetype)initWithLocationDecimal:(NSDecimal)loc lengthDecimal:(NSDecimal)len NS_DESIGNATED_INITIALIZER; +-(nonnull instancetype)initWithLocation:(nonnull NSNumber *)loc length:(nonnull NSNumber *)len NS_DESIGNATED_INITIALIZER; +-(nonnull instancetype)initWithLocationDecimal:(NSDecimal)loc lengthDecimal:(NSDecimal)len; -(nullable instancetype)initWithCoder:(nonnull NSCoder *)decoder NS_DESIGNATED_INITIALIZER; /// @} diff --git a/framework/Source/CPTPlotRange.m b/framework/Source/CPTPlotRange.m index 81552a5c1..c83c432e6 100644 --- a/framework/Source/CPTPlotRange.m +++ b/framework/Source/CPTPlotRange.m @@ -12,6 +12,9 @@ @interface CPTPlotRange() @property (nonatomic, readwrite) double locationDouble; @property (nonatomic, readwrite) double lengthDouble; +@property (nonatomic, readwrite) BOOL isInfinite; +@property (nonatomic, readwrite) CPTSign lengthSign; + @property (nonatomic, readwrite) BOOL inValueUpdate; @end @@ -121,6 +124,16 @@ @implementation CPTPlotRange **/ @dynamic maxLimitDouble; +/** @property BOOL isInfinite + * @brief @YES if the length of the range is infinite. + **/ +@synthesize isInfinite; + +/** @property CPTSign lengthSign + * @brief The direction (positive or negative) if the length of the range is infinite. + **/ +@synthesize lengthSign; + @synthesize inValueUpdate; #pragma mark - @@ -156,8 +169,24 @@ -(nonnull instancetype)initWithLocation:(nonnull NSNumber *)loc length:(nonnull NSParameterAssert(loc); NSParameterAssert(len); - return [self initWithLocationDecimal:loc.decimalValue - lengthDecimal:len.decimalValue]; + if ((self = [super init])) { + locationDecimal = loc.decimalValue; + locationDouble = loc.doubleValue; + + lengthDecimal = len.decimalValue; + lengthDouble = len.doubleValue; + + if ( isnan(lengthDouble)) { + isInfinite = NO; + lengthSign = CPTSignNone; + } + else { + isInfinite = (BOOL)isinf(lengthDouble); + lengthSign = signbit(lengthDouble) ? CPTSignNegative : CPTSignPositive; + } + } + + return self; } /** @brief Initializes a newly allocated CPTPlotRange object with the provided location and length. @@ -167,11 +196,8 @@ -(nonnull instancetype)initWithLocation:(nonnull NSNumber *)loc length:(nonnull **/ -(nonnull instancetype)initWithLocationDecimal:(NSDecimal)loc lengthDecimal:(NSDecimal)len { - if ((self = [super init])) { - self.locationDecimal = loc; - self.lengthDecimal = len; - } - return self; + return [self initWithLocation:[NSDecimalNumber decimalNumberWithDecimal:loc] + length:[NSDecimalNumber decimalNumberWithDecimal:len]]; } /// @name Initialization @@ -208,7 +234,11 @@ -(void)setLocationDecimal:(NSDecimal)newLocation locationDecimal = newLocation; if ( !self.inValueUpdate ) { - self.locationDouble = [NSDecimalNumber decimalNumberWithDecimal:newLocation].doubleValue; + self.inValueUpdate = YES; + + self.locationDouble = CPTDecimalDoubleValue(newLocation); + + self.inValueUpdate = NO; } } } @@ -219,7 +249,11 @@ -(void)setLocationDouble:(double)newLocation locationDouble = newLocation; if ( !self.inValueUpdate ) { - self.locationDecimal = @(newLocation).decimalValue; + self.inValueUpdate = YES; + + self.locationDecimal = CPTDecimalFromDouble(newLocation); + + self.inValueUpdate = NO; } } } @@ -235,7 +269,11 @@ -(void)setLengthDecimal:(NSDecimal)newLength lengthDecimal = newLength; if ( !self.inValueUpdate ) { - self.lengthDouble = [NSDecimalNumber decimalNumberWithDecimal:newLength].doubleValue; + self.inValueUpdate = YES; + + self.lengthDouble = CPTDecimalDoubleValue(newLength); + + self.inValueUpdate = NO; } } } @@ -245,8 +283,21 @@ -(void)setLengthDouble:(double)newLength if ( lengthDouble != newLength ) { lengthDouble = newLength; + if ( isnan(newLength)) { + self.isInfinite = NO; + self.lengthSign = CPTSignNone; + } + else { + self.isInfinite = (BOOL)isinf(newLength); + self.lengthSign = signbit(newLength) ? CPTSignNegative : CPTSignPositive; + } + if ( !self.inValueUpdate ) { - self.lengthDecimal = @(newLength).decimalValue; + self.inValueUpdate = YES; + + self.lengthDecimal = CPTDecimalFromDouble(newLength); + + self.inValueUpdate = NO; } } } @@ -276,7 +327,10 @@ -(NSDecimal)minLimitDecimal NSDecimal loc = self.locationDecimal; NSDecimal len = self.lengthDecimal; - if ( CPTDecimalLessThan(len, CPTDecimalFromInteger(0))) { + if ( NSDecimalIsNotANumber(&len)) { + return loc; + } + else if ( CPTDecimalLessThan(len, CPTDecimalFromInteger(0))) { return CPTDecimalAdd(loc, len); } else { @@ -322,7 +376,10 @@ -(NSDecimal)maxLimitDecimal NSDecimal loc = self.locationDecimal; NSDecimal len = self.lengthDecimal; - if ( CPTDecimalGreaterThan(len, CPTDecimalFromInteger(0))) { + if ( NSDecimalIsNotANumber(&len)) { + return loc; + } + else if ( CPTDecimalGreaterThan(len, CPTDecimalFromInteger(0))) { return CPTDecimalAdd(loc, len); } else { @@ -355,10 +412,15 @@ -(nonnull id)copyWithZone:(nullable NSZone *)zone CPTPlotRange *newRange = [[CPTPlotRange allocWithZone:zone] init]; if ( newRange ) { + newRange.inValueUpdate = YES; + newRange.locationDecimal = self.locationDecimal; - newRange.lengthDecimal = self.lengthDecimal; newRange.locationDouble = self.locationDouble; - newRange.lengthDouble = self.lengthDouble; + + newRange.lengthDecimal = self.lengthDecimal; + newRange.lengthDouble = self.lengthDouble; + + newRange.inValueUpdate = NO; } return newRange; } @@ -375,10 +437,15 @@ -(nonnull id)mutableCopyWithZone:(nullable NSZone *)zone CPTPlotRange *newRange = [[CPTMutablePlotRange allocWithZone:zone] init]; if ( newRange ) { + newRange.inValueUpdate = YES; + newRange.locationDecimal = self.locationDecimal; - newRange.lengthDecimal = self.lengthDecimal; newRange.locationDouble = self.locationDouble; - newRange.lengthDouble = self.lengthDouble; + + newRange.lengthDecimal = self.lengthDecimal; + newRange.lengthDouble = self.lengthDouble; + + newRange.inValueUpdate = NO; } return newRange; } @@ -394,6 +461,8 @@ -(void)encodeWithCoder:(nonnull NSCoder *)encoder { [encoder encodeDecimal:self.locationDecimal forKey:@"CPTPlotRange.location"]; [encoder encodeDecimal:self.lengthDecimal forKey:@"CPTPlotRange.length"]; + [encoder encodeBool:self.isInfinite forKey:@"CPTPlotRange.isInfinite"]; + [encoder encodeInteger:self.lengthSign forKey:@"CPTPlotRange.lengthSign"]; } /// @endcond @@ -407,6 +476,9 @@ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)decoder if ((self = [super init])) { self.locationDecimal = [decoder decodeDecimalForKey:@"CPTPlotRange.location"]; self.lengthDecimal = [decoder decodeDecimalForKey:@"CPTPlotRange.length"]; + + isInfinite = [decoder decodeBoolForKey:@"CPTPlotRange.isInfinite"]; + lengthSign = [decoder decodeIntegerForKey:@"CPTPlotRange.lengthSign"]; } return self; @@ -433,7 +505,27 @@ +(BOOL)supportsSecureCoding **/ -(BOOL)contains:(NSDecimal)number { - return CPTDecimalGreaterThanOrEqualTo(number, self.minLimitDecimal) && CPTDecimalLessThanOrEqualTo(number, self.maxLimitDecimal); + BOOL result = NO; + + if ( self.isInfinite ) { + switch ( self.lengthSign ) { + case CPTSignPositive: + result = CPTDecimalGreaterThanOrEqualTo(number, self.minLimitDecimal); + break; + + case CPTSignNegative: + result = CPTDecimalLessThanOrEqualTo(number, self.maxLimitDecimal); + break; + + default: + break; + } + } + else { + result = CPTDecimalGreaterThanOrEqualTo(number, self.minLimitDecimal) && CPTDecimalLessThanOrEqualTo(number, self.maxLimitDecimal); + } + + return result; } /** @brief Determines whether a given number is inside the range. @@ -452,12 +544,10 @@ -(BOOL)containsDouble:(double)number -(BOOL)containsNumber:(nullable NSNumber *)number { if ( [number isKindOfClass:[NSDecimalNumber class]] ) { - NSDecimal numericValue = number.decimalValue; - return CPTDecimalGreaterThanOrEqualTo(numericValue, self.minLimitDecimal) && CPTDecimalLessThanOrEqualTo(numericValue, self.maxLimitDecimal); + return [self contains:number.decimalValue]; } else { - double numericValue = number.doubleValue; - return (numericValue >= self.minLimitDouble) && (numericValue <= self.maxLimitDouble); + return [self containsDouble:number.doubleValue]; } } @@ -468,7 +558,10 @@ -(BOOL)containsNumber:(nullable NSNumber *)number -(BOOL)isEqualToRange:(nullable CPTPlotRange *)otherRange { if ( otherRange ) { - return CPTDecimalEquals(self.locationDecimal, otherRange.locationDecimal) && CPTDecimalEquals(self.lengthDecimal, otherRange.lengthDecimal); + return CPTDecimalEquals(self.locationDecimal, otherRange.locationDecimal) && + CPTDecimalEquals(self.lengthDecimal, otherRange.lengthDecimal) && + (self.isInfinite == otherRange.isInfinite) && + (self.lengthSign == otherRange.lengthSign); } else { return NO; @@ -481,12 +574,31 @@ -(BOOL)isEqualToRange:(nullable CPTPlotRange *)otherRange **/ -(BOOL)containsRange:(nullable CPTPlotRange *)otherRange { + BOOL result = NO; + if ( otherRange ) { - return CPTDecimalGreaterThanOrEqualTo(otherRange.minLimitDecimal, self.minLimitDecimal) && CPTDecimalLessThanOrEqualTo(otherRange.maxLimitDecimal, self.maxLimitDecimal); - } - else { - return NO; + if ( self.isInfinite ) { + if ( !otherRange.isInfinite || (otherRange.lengthSign == self.lengthSign)) { + switch ( self.lengthSign ) { + case CPTSignPositive: + result = CPTDecimalGreaterThanOrEqualTo(otherRange.minLimitDecimal, self.minLimitDecimal); + break; + + case CPTSignNegative: + result = CPTDecimalLessThanOrEqualTo(otherRange.maxLimitDecimal, self.maxLimitDecimal); + break; + + default: + break; + } + } + } + else { + result = CPTDecimalGreaterThanOrEqualTo(otherRange.minLimitDecimal, self.minLimitDecimal) && CPTDecimalLessThanOrEqualTo(otherRange.maxLimitDecimal, self.maxLimitDecimal); + } } + + return result; } /** @brief Determines whether a given range intersects the receiver. @@ -495,19 +607,58 @@ -(BOOL)containsRange:(nullable CPTPlotRange *)otherRange **/ -(BOOL)intersectsRange:(nullable CPTPlotRange *)otherRange { - if ( !otherRange ) { - return NO; - } + BOOL result = NO; - NSDecimal min1 = self.minLimitDecimal; - NSDecimal min2 = otherRange.minLimitDecimal; - NSDecimal minimum = CPTDecimalGreaterThan(min1, min2) ? min1 : min2; - - NSDecimal max1 = self.maxLimitDecimal; - NSDecimal max2 = otherRange.maxLimitDecimal; - NSDecimal maximum = CPTDecimalLessThan(max1, max2) ? max1 : max2; + if ( otherRange ) { + if ( self.isInfinite ) { + if ( otherRange.isInfinite ) { + result = (otherRange.lengthSign == self.lengthSign); + } + if ( !result ) { + switch ( self.lengthSign ) { + case CPTSignPositive: + result = CPTDecimalGreaterThanOrEqualTo(otherRange.maxLimitDecimal, self.minLimitDecimal); + break; + + case CPTSignNegative: + result = CPTDecimalLessThanOrEqualTo(otherRange.minLimitDecimal, self.maxLimitDecimal); + break; + + default: + break; + } + } + } + else { + if ( otherRange.isInfinite ) { + switch ( otherRange.lengthSign ) { + case CPTSignPositive: + result = CPTDecimalLessThanOrEqualTo(otherRange.minLimitDecimal, self.maxLimitDecimal); + break; + + case CPTSignNegative: + result = CPTDecimalLessThanOrEqualTo(otherRange.maxLimitDecimal, self.minLimitDecimal); + break; + + default: + break; + } + } + else { + NSDecimal min1 = self.minLimitDecimal; + NSDecimal min2 = otherRange.minLimitDecimal; + NSDecimal minimum = CPTDecimalMax(min1, min2); + + NSDecimal max1 = self.maxLimitDecimal; + NSDecimal max2 = otherRange.maxLimitDecimal; + NSDecimal maximum = CPTDecimalMin(max1, max2); + + result = CPTDecimalGreaterThanOrEqualTo(maximum, minimum); + } + } + } - return CPTDecimalGreaterThanOrEqualTo(maximum, minimum); + return result; } /** @brief Compares a number to the range, determining if it is in the range, or above or below it. @@ -535,7 +686,10 @@ -(CPTPlotRangeComparisonResult)compareToDecimal:(NSDecimal)number { CPTPlotRangeComparisonResult result; - if ( [self contains:number] ) { + if ( NSDecimalIsNotANumber(&number)) { + result = CPTPlotRangeComparisonResultNumberUndefined; + } + else if ( [self contains:number] ) { result = CPTPlotRangeComparisonResultNumberInRange; } else if ( CPTDecimalLessThan(number, self.minLimitDecimal)) { @@ -555,7 +709,10 @@ -(CPTPlotRangeComparisonResult)compareToDouble:(double)number { CPTPlotRangeComparisonResult result; - if ( number < self.minLimitDouble ) { + if ( isnan(number)) { + result = CPTPlotRangeComparisonResultNumberUndefined; + } + else if ( number < self.minLimitDouble ) { result = CPTPlotRangeComparisonResultNumberBelowRange; } else if ( number > self.maxLimitDouble ) { @@ -608,7 +765,7 @@ -(nullable NSString *)description return [NSString stringWithFormat:@"<%@ {%@, %@}>", super.description, NSDecimalString(&myLocation, [NSLocale currentLocale]), - NSDecimalString(&myLength, [NSLocale currentLocale])]; + self.isInfinite ? (self.lengthSign == CPTSignPositive ? @"+INF" : @"-INF") : NSDecimalString(&myLength, [NSLocale currentLocale])]; } /// @endcond @@ -625,7 +782,7 @@ -(nullable id)debugQuickLookObject return [NSString stringWithFormat:@"Location: %@\nLength: %@", NSDecimalString(&myLocation, [NSLocale currentLocale]), - NSDecimalString(&myLength, [NSLocale currentLocale])]; + self.isInfinite ? (self.lengthSign == CPTSignPositive ? @"+INF" : @"-INF") : NSDecimalString(&myLength, [NSLocale currentLocale])]; } /// @endcond diff --git a/framework/Source/CPTPlotRangeTests.m b/framework/Source/CPTPlotRangeTests.m index 94bb528be..c5cfeabd0 100644 --- a/framework/Source/CPTPlotRangeTests.m +++ b/framework/Source/CPTPlotRangeTests.m @@ -37,6 +37,17 @@ -(void)testContains XCTAssertFalse([self.plotRange contains:CPTDecimalFromDouble(3.001)], @"Test contains:3.001"); } +-(void)testContainsInfinite +{ + self.plotRange.lengthDouble = HUGE_VAL; + + XCTAssertFalse([self.plotRange contains:CPTDecimalFromDouble(0.999)], @"Test contains:0.999"); + XCTAssertTrue([self.plotRange contains:CPTDecimalFromDouble(1.0)], @"Test contains:1.0"); + XCTAssertTrue([self.plotRange contains:CPTDecimalFromDouble(2.0)], @"Test contains:2.0"); + XCTAssertTrue([self.plotRange contains:CPTDecimalFromDouble(3.0)], @"Test contains:3.0"); + XCTAssertTrue([self.plotRange contains:CPTDecimalFromDouble(3.001)], @"Test contains:3.001"); +} + -(void)testContainsNegative { self.plotRange.lengthDouble = -2.0; @@ -48,6 +59,17 @@ -(void)testContainsNegative XCTAssertFalse([self.plotRange contains:CPTDecimalFromDouble(1.001)], @"Test contains:1.001"); } +-(void)testContainsNegativeInfinite +{ + self.plotRange.lengthDouble = -HUGE_VAL; + + XCTAssertTrue([self.plotRange contains:CPTDecimalFromDouble(-1.001)], @"Test contains:-1.001"); + XCTAssertTrue([self.plotRange contains:CPTDecimalFromDouble(-1.0)], @"Test contains:-1.0"); + XCTAssertTrue([self.plotRange contains:CPTDecimalFromDouble(0.0)], @"Test contains:0.0"); + XCTAssertTrue([self.plotRange contains:CPTDecimalFromDouble(1.0)], @"Test contains:1.0"); + XCTAssertFalse([self.plotRange contains:CPTDecimalFromDouble(1.001)], @"Test contains:1.001"); +} + -(void)testContainsDouble { XCTAssertFalse([self.plotRange containsDouble:0.999], @"Test contains:0.999"); @@ -57,6 +79,17 @@ -(void)testContainsDouble XCTAssertFalse([self.plotRange containsDouble:3.001], @"Test contains:3.001"); } +-(void)testContainsDoubleInfinite +{ + self.plotRange.lengthDouble = HUGE_VAL; + + XCTAssertFalse([self.plotRange containsDouble:0.999], @"Test contains:0.999"); + XCTAssertTrue([self.plotRange containsDouble:1.0], @"Test contains:1.0"); + XCTAssertTrue([self.plotRange containsDouble:2.0], @"Test contains:2.0"); + XCTAssertTrue([self.plotRange containsDouble:3.0], @"Test contains:3.0"); + XCTAssertTrue([self.plotRange containsDouble:3.001], @"Test contains:3.001"); +} + -(void)testContainsNumber { XCTAssertFalse([self.plotRange containsNumber:@(0.999)], @"Test contains:0.999"); @@ -66,6 +99,17 @@ -(void)testContainsNumber XCTAssertFalse([self.plotRange containsNumber:@(3.001)], @"Test contains:3.001"); } +-(void)testContainsNumberInfinite +{ + self.plotRange.lengthDouble = HUGE_VAL; + + XCTAssertFalse([self.plotRange containsNumber:@(0.999)], @"Test contains:0.999"); + XCTAssertTrue([self.plotRange containsNumber:[NSDecimalNumber one]], @"Test contains:1.0"); + XCTAssertTrue([self.plotRange containsNumber:@(2.0)], @"Test contains:2.0"); + XCTAssertTrue([self.plotRange containsNumber:@(3.0)], @"Test contains:3.0"); + XCTAssertTrue([self.plotRange containsNumber:@(3.001)], @"Test contains:3.001"); +} + -(void)testContainsDoubleNegative { self.plotRange.lengthDouble = -2.0; @@ -77,6 +121,17 @@ -(void)testContainsDoubleNegative XCTAssertFalse([self.plotRange containsDouble:1.001], @"Test contains:1.001"); } +-(void)testContainsDoubleNegativeInfinite +{ + self.plotRange.lengthDouble = -HUGE_VAL; + + XCTAssertTrue([self.plotRange containsDouble:-1.001], @"Test contains:-1.001"); + XCTAssertTrue([self.plotRange containsDouble:-1.0], @"Test contains:-1.0"); + XCTAssertTrue([self.plotRange containsDouble:0.0], @"Test contains:0.0"); + XCTAssertTrue([self.plotRange containsDouble:1.0], @"Test contains:1.0"); + XCTAssertFalse([self.plotRange containsDouble:1.001], @"Test contains:1.001"); +} + -(void)testContainsRange { CPTPlotRange *otherRange = [CPTPlotRange plotRangeWithLocation:@0.0 length:@4.0]; @@ -96,6 +151,48 @@ -(void)testContainsRange XCTAssertFalse([self.plotRange containsRange:otherRange], @"otherRange was {%g, %g}", otherRange.locationDouble, otherRange.lengthDouble); } +-(void)testContainsRangeInfinite +{ + self.plotRange.lengthDouble = HUGE_VAL; + + CPTPlotRange *otherRange = [CPTPlotRange plotRangeWithLocation:@0.0 length:@4.0]; + + XCTAssertFalse([self.plotRange containsRange:otherRange], @"otherRange was {%g, %g}", otherRange.locationDouble, otherRange.lengthDouble); + + otherRange = [CPTPlotRange plotRangeWithLocation:@1.0 length:@2.0]; + XCTAssertTrue([self.plotRange containsRange:otherRange], @"otherRange was {%g, %g}", otherRange.locationDouble, otherRange.lengthDouble); + + otherRange = [CPTPlotRange plotRangeWithLocation:@2.0 length:@1.0]; + XCTAssertTrue([self.plotRange containsRange:otherRange], @"otherRange was {%g, %g}", otherRange.locationDouble, otherRange.lengthDouble); + + otherRange = [CPTPlotRange plotRangeWithLocation:@2.0 length:@4.0]; + XCTAssertTrue([self.plotRange containsRange:otherRange], @"otherRange was {%g, %g}", otherRange.locationDouble, otherRange.lengthDouble); + + otherRange = [CPTPlotRange plotRangeWithLocation:@0.0 length:@2.0]; + XCTAssertFalse([self.plotRange containsRange:otherRange], @"otherRange was {%g, %g}", otherRange.locationDouble, otherRange.lengthDouble); +} + +-(void)testContainsRangeNegativeInfinite +{ + self.plotRange.lengthDouble = -HUGE_VAL; + + CPTPlotRange *otherRange = [CPTPlotRange plotRangeWithLocation:@0.0 length:@4.0]; + + XCTAssertFalse([self.plotRange containsRange:otherRange], @"otherRange was {%g, %g}", otherRange.locationDouble, otherRange.lengthDouble); + + otherRange = [CPTPlotRange plotRangeWithLocation:@1.0 length:@(-2.0)]; + XCTAssertTrue([self.plotRange containsRange:otherRange], @"otherRange was {%g, %g}", otherRange.locationDouble, otherRange.lengthDouble); + + otherRange = [CPTPlotRange plotRangeWithLocation:@2.0 length:@(-1.0)]; + XCTAssertFalse([self.plotRange containsRange:otherRange], @"otherRange was {%g, %g}", otherRange.locationDouble, otherRange.lengthDouble); + + otherRange = [CPTPlotRange plotRangeWithLocation:@2.0 length:@4.0]; + XCTAssertFalse([self.plotRange containsRange:otherRange], @"otherRange was {%g, %g}", otherRange.locationDouble, otherRange.lengthDouble); + + otherRange = [CPTPlotRange plotRangeWithLocation:@0.0 length:@(-2.0)]; + XCTAssertTrue([self.plotRange containsRange:otherRange], @"otherRange was {%g, %g}", otherRange.locationDouble, otherRange.lengthDouble); +} + #pragma mark - #pragma mark Union @@ -120,6 +217,32 @@ -(void)testUnionRange [self checkRangeWithLocation:-5.0 length:12.0]; } +-(void)testUnionRangeInfinite +{ + self.plotRange.lengthDouble = HUGE_VAL; + + [self.plotRange unionPlotRange:[CPTPlotRange plotRangeWithLocation:@0.0 length:@4.0]]; + [self checkRangeWithLocation:0.0 length:HUGE_VAL]; + + [self.plotRange unionPlotRange:[CPTPlotRange plotRangeWithLocation:@(-1.0) length:@1.0]]; + [self checkRangeWithLocation:-1.0 length:HUGE_VAL]; + + [self.plotRange unionPlotRange:[CPTPlotRange plotRangeWithLocation:@5.0 length:@2.0]]; + [self checkRangeWithLocation:-1.0 length:HUGE_VAL]; + + [self.plotRange unionPlotRange:[CPTPlotRange plotRangeWithLocation:@0.0 length:@(-4.0)]]; + [self checkRangeWithLocation:-4.0 length:HUGE_VAL]; + + [self.plotRange unionPlotRange:[CPTPlotRange plotRangeWithLocation:@(-1.0) length:@(-4.0)]]; + [self checkRangeWithLocation:-5.0 length:HUGE_VAL]; + + [self.plotRange unionPlotRange:[CPTPlotRange plotRangeWithLocation:@5.0 length:@(HUGE_VAL)]]; + [self checkRangeWithLocation:-5.0 length:HUGE_VAL]; + + [self.plotRange unionPlotRange:[CPTPlotRange plotRangeWithLocation:@5.0 length:@(-HUGE_VAL)]]; + [self checkRangeWithLocation:-HUGE_VAL length:HUGE_VAL]; +} + -(void)testUnionRangeNegative { self.plotRange.lengthDouble = -2.0; @@ -143,6 +266,32 @@ -(void)testUnionRangeNegative [self checkRangeWithLocation:7.0 length:-12.0]; } +-(void)testUnionRangeNegativeInfinite +{ + self.plotRange.lengthDouble = -HUGE_VAL; + + [self.plotRange unionPlotRange:[CPTPlotRange plotRangeWithLocation:@0.0 length:@4.0]]; + [self checkRangeWithLocation:4.0 length:-HUGE_VAL]; + + [self.plotRange unionPlotRange:[CPTPlotRange plotRangeWithLocation:@(-1.0) length:@1.0]]; + [self checkRangeWithLocation:4.0 length:-HUGE_VAL]; + + [self.plotRange unionPlotRange:[CPTPlotRange plotRangeWithLocation:@5.0 length:@2.0]]; + [self checkRangeWithLocation:7.0 length:-HUGE_VAL]; + + [self.plotRange unionPlotRange:[CPTPlotRange plotRangeWithLocation:@0.0 length:@(-4.0)]]; + [self checkRangeWithLocation:7.0 length:-HUGE_VAL]; + + [self.plotRange unionPlotRange:[CPTPlotRange plotRangeWithLocation:@(-1.0) length:@(-4.0)]]; + [self checkRangeWithLocation:7.0 length:-HUGE_VAL]; + + [self.plotRange unionPlotRange:[CPTPlotRange plotRangeWithLocation:@10.0 length:@(-HUGE_VAL)]]; + [self checkRangeWithLocation:10.0 length:-HUGE_VAL]; + + [self.plotRange unionPlotRange:[CPTPlotRange plotRangeWithLocation:@5.0 length:@(HUGE_VAL)]]; + [self checkRangeWithLocation:-HUGE_VAL length:HUGE_VAL]; +} + #pragma mark - #pragma mark Intersection @@ -162,7 +311,7 @@ -(void)testIntersectRange otherRange = [CPTPlotRange plotRangeWithLocation:@(-1.0) length:@1.0]; XCTAssertFalse([self.plotRange intersectsRange:otherRange], @"otherRange was {%g, %g}", otherRange.locationDouble, otherRange.lengthDouble); [self.plotRange intersectionPlotRange:otherRange]; - [self checkRangeWithLocation:1.0 length:0.0]; + [self checkRangeWithLocation:(double)NAN length:(double)NAN]; } -(void)testIntersectRange2 @@ -181,7 +330,7 @@ -(void)testIntersectRange2 otherRange = [CPTPlotRange plotRangeWithLocation:@0.0 length:@(-4.0)]; XCTAssertFalse([self.plotRange intersectsRange:otherRange], @"otherRange was {%g, %g}", otherRange.locationDouble, otherRange.lengthDouble); [self.plotRange intersectionPlotRange:otherRange]; - [self checkRangeWithLocation:1.0 length:0.0]; + [self checkRangeWithLocation:(double)NAN length:(double)NAN]; } -(void)testIntersectRangeNegative @@ -201,7 +350,7 @@ -(void)testIntersectRangeNegative otherRange = [CPTPlotRange plotRangeWithLocation:@5.0 length:@2.0]; XCTAssertFalse([self.plotRange intersectsRange:otherRange], @"otherRange was {%g, %g}", otherRange.locationDouble, otherRange.lengthDouble); [self.plotRange intersectionPlotRange:otherRange]; - [self checkRangeWithLocation:1.0 length:0.0]; + [self checkRangeWithLocation:(double)NAN length:(double)NAN]; } -(void)testIntersectRangeNegative2 @@ -221,7 +370,67 @@ -(void)testIntersectRangeNegative2 otherRange = [CPTPlotRange plotRangeWithLocation:@5.0 length:@(-4.0)]; XCTAssertFalse([self.plotRange intersectsRange:otherRange], @"otherRange was {%g, %g}", otherRange.locationDouble, otherRange.lengthDouble); [self.plotRange intersectionPlotRange:otherRange]; - [self checkRangeWithLocation:0.0 length:0.0]; + [self checkRangeWithLocation:(double)NAN length:(double)NAN]; +} + +-(void)testIntersectRangeInfinite1 +{ + self.plotRange.lengthDouble = HUGE_VAL; + + CPTPlotRange *otherRange = [CPTPlotRange plotRangeWithLocation:@0.0 length:@4.0]; + XCTAssertTrue([self.plotRange intersectsRange:otherRange], @"otherRange was {%g, %g}", otherRange.locationDouble, otherRange.lengthDouble); + [self.plotRange intersectionPlotRange:otherRange]; + [self checkRangeWithLocation:1.0 length:3.0]; +} + +-(void)testIntersectRangeInfinite2 +{ + self.plotRange.lengthDouble = HUGE_VAL; + + CPTPlotRange *otherRange = [CPTPlotRange plotRangeWithLocation:@0.0 length:@(HUGE_VAL)]; + XCTAssertTrue([self.plotRange intersectsRange:otherRange], @"otherRange was {%g, %g}", otherRange.locationDouble, otherRange.lengthDouble); + [self.plotRange intersectionPlotRange:otherRange]; + [self checkRangeWithLocation:1.0 length:HUGE_VAL]; +} + +-(void)testIntersectRangeInfinite3 +{ + self.plotRange.lengthDouble = HUGE_VAL; + + CPTPlotRange *otherRange = [CPTPlotRange plotRangeWithLocation:@0.0 length:@(-4.0)]; + XCTAssertFalse([self.plotRange intersectsRange:otherRange], @"otherRange was {%g, %g}", otherRange.locationDouble, otherRange.lengthDouble); + [self.plotRange intersectionPlotRange:otherRange]; + [self checkRangeWithLocation:(double)NAN length:(double)NAN]; +} + +-(void)testIntersectRangeNegativeInfinite1 +{ + self.plotRange.lengthDouble = -HUGE_VAL; + + CPTPlotRange *otherRange = [CPTPlotRange plotRangeWithLocation:@0.0 length:@4.0]; + XCTAssertTrue([self.plotRange intersectsRange:otherRange], @"otherRange was {%g, %g}", otherRange.locationDouble, otherRange.lengthDouble); + [self.plotRange intersectionPlotRange:otherRange]; + [self checkRangeWithLocation:1.0 length:-1.0]; +} + +-(void)testIntersectRangeNegativeInfinite2 +{ + self.plotRange.lengthDouble = -HUGE_VAL; + + CPTPlotRange *otherRange = [CPTPlotRange plotRangeWithLocation:@0.0 length:@(-HUGE_VAL)]; + XCTAssertTrue([self.plotRange intersectsRange:otherRange], @"otherRange was {%g, %g}", otherRange.locationDouble, otherRange.lengthDouble); + [self.plotRange intersectionPlotRange:otherRange]; + [self checkRangeWithLocation:0.0 length:-HUGE_VAL]; +} + +-(void)testIntersectRangeNegativeInfinite3 +{ + self.plotRange.lengthDouble = -HUGE_VAL; + + CPTPlotRange *otherRange = [CPTPlotRange plotRangeWithLocation:@10.0 length:@(-4.0)]; + XCTAssertFalse([self.plotRange intersectsRange:otherRange], @"otherRange was {%g, %g}", otherRange.locationDouble, otherRange.lengthDouble); + [self.plotRange intersectionPlotRange:otherRange]; + [self checkRangeWithLocation:(double)NAN length:(double)NAN]; } #pragma mark - @@ -370,6 +579,19 @@ -(void)testCompareToDecimal XCTAssertEqual([self.plotRange compareToDecimal:CPTDecimalFromDouble(2.0)], CPTPlotRangeComparisonResultNumberInRange, @"Test compareTo:2.0"); XCTAssertEqual([self.plotRange compareToDecimal:CPTDecimalFromDouble(3.0)], CPTPlotRangeComparisonResultNumberInRange, @"Test compareTo:3.0"); XCTAssertEqual([self.plotRange compareToDecimal:CPTDecimalFromDouble(3.001)], CPTPlotRangeComparisonResultNumberAboveRange, @"Test compareTo:3.001"); + XCTAssertEqual([self.plotRange compareToDecimal:CPTDecimalNaN()], CPTPlotRangeComparisonResultNumberUndefined, @"Test compareTo:NAN"); +} + +-(void)testCompareToDecimalInfinite +{ + self.plotRange.lengthDouble = HUGE_VAL; + + XCTAssertEqual([self.plotRange compareToDecimal:CPTDecimalFromDouble(0.999)], CPTPlotRangeComparisonResultNumberBelowRange, @"Test compareTo:0.999"); + XCTAssertEqual([self.plotRange compareToDecimal:CPTDecimalFromDouble(1.0)], CPTPlotRangeComparisonResultNumberInRange, @"Test compareTo:1.0"); + XCTAssertEqual([self.plotRange compareToDecimal:CPTDecimalFromDouble(2.0)], CPTPlotRangeComparisonResultNumberInRange, @"Test compareTo:2.0"); + XCTAssertEqual([self.plotRange compareToDecimal:CPTDecimalFromDouble(3.0)], CPTPlotRangeComparisonResultNumberInRange, @"Test compareTo:3.0"); + XCTAssertEqual([self.plotRange compareToDecimal:CPTDecimalFromDouble(3.001)], CPTPlotRangeComparisonResultNumberInRange, @"Test compareTo:3.001"); + XCTAssertEqual([self.plotRange compareToDecimal:CPTDecimalNaN()], CPTPlotRangeComparisonResultNumberUndefined, @"Test compareTo:NAN"); } -(void)testCompareToDecimalNegative @@ -381,6 +603,19 @@ -(void)testCompareToDecimalNegative XCTAssertEqual([self.plotRange compareToDecimal:CPTDecimalFromDouble(0.0)], CPTPlotRangeComparisonResultNumberInRange, @"Test compareTo:0.0"); XCTAssertEqual([self.plotRange compareToDecimal:CPTDecimalFromDouble(1.0)], CPTPlotRangeComparisonResultNumberInRange, @"Test compareTo:1.0"); XCTAssertEqual([self.plotRange compareToDecimal:CPTDecimalFromDouble(1.001)], CPTPlotRangeComparisonResultNumberAboveRange, @"Test compareTo:1.001"); + XCTAssertEqual([self.plotRange compareToDecimal:CPTDecimalNaN()], CPTPlotRangeComparisonResultNumberUndefined, @"Test compareTo:NAN"); +} + +-(void)testCompareToDecimalNegativeInfinite +{ + self.plotRange.lengthDouble = -HUGE_VAL; + + XCTAssertEqual([self.plotRange compareToDecimal:CPTDecimalFromDouble(-1.001)], CPTPlotRangeComparisonResultNumberInRange, @"Test compareTo:-1.001"); + XCTAssertEqual([self.plotRange compareToDecimal:CPTDecimalFromDouble(-1.0)], CPTPlotRangeComparisonResultNumberInRange, @"Test compareTo:-1.0"); + XCTAssertEqual([self.plotRange compareToDecimal:CPTDecimalFromDouble(0.0)], CPTPlotRangeComparisonResultNumberInRange, @"Test compareTo:0.0"); + XCTAssertEqual([self.plotRange compareToDecimal:CPTDecimalFromDouble(1.0)], CPTPlotRangeComparisonResultNumberInRange, @"Test compareTo:1.0"); + XCTAssertEqual([self.plotRange compareToDecimal:CPTDecimalFromDouble(1.001)], CPTPlotRangeComparisonResultNumberAboveRange, @"Test compareTo:1.001"); + XCTAssertEqual([self.plotRange compareToDecimal:CPTDecimalNaN()], CPTPlotRangeComparisonResultNumberUndefined, @"Test compareTo:NAN"); } -(void)testCompareToDouble @@ -390,6 +625,23 @@ -(void)testCompareToDouble XCTAssertEqual([self.plotRange compareToDouble:2.0], CPTPlotRangeComparisonResultNumberInRange, @"Test compareTo:2.0"); XCTAssertEqual([self.plotRange compareToDouble:3.0], CPTPlotRangeComparisonResultNumberInRange, @"Test compareTo:3.0"); XCTAssertEqual([self.plotRange compareToDouble:3.001], CPTPlotRangeComparisonResultNumberAboveRange, @"Test compareTo:3.001"); + XCTAssertEqual([self.plotRange compareToDouble:HUGE_VAL], CPTPlotRangeComparisonResultNumberAboveRange, @"Test compareTo:+INF"); + XCTAssertEqual([self.plotRange compareToDouble:-HUGE_VAL], CPTPlotRangeComparisonResultNumberBelowRange, @"Test compareTo:-INF"); + XCTAssertEqual([self.plotRange compareToDouble:(double)NAN], CPTPlotRangeComparisonResultNumberUndefined, @"Test compareTo:NAN"); +} + +-(void)testCompareToDoubleInfinite +{ + self.plotRange.lengthDouble = HUGE_VAL; + + XCTAssertEqual([self.plotRange compareToDouble:0.999], CPTPlotRangeComparisonResultNumberBelowRange, @"Test compareTo:0.999"); + XCTAssertEqual([self.plotRange compareToDouble:1.0], CPTPlotRangeComparisonResultNumberInRange, @"Test compareTo:1.0"); + XCTAssertEqual([self.plotRange compareToDouble:2.0], CPTPlotRangeComparisonResultNumberInRange, @"Test compareTo:2.0"); + XCTAssertEqual([self.plotRange compareToDouble:3.0], CPTPlotRangeComparisonResultNumberInRange, @"Test compareTo:3.0"); + XCTAssertEqual([self.plotRange compareToDouble:3.001], CPTPlotRangeComparisonResultNumberInRange, @"Test compareTo:3.001"); + XCTAssertEqual([self.plotRange compareToDouble:HUGE_VAL], CPTPlotRangeComparisonResultNumberInRange, @"Test compareTo:+INF"); + XCTAssertEqual([self.plotRange compareToDouble:-HUGE_VAL], CPTPlotRangeComparisonResultNumberBelowRange, @"Test compareTo:-INF"); + XCTAssertEqual([self.plotRange compareToDouble:(double)NAN], CPTPlotRangeComparisonResultNumberUndefined, @"Test compareTo:NAN"); } -(void)testCompareToDoubleNegative @@ -401,6 +653,23 @@ -(void)testCompareToDoubleNegative XCTAssertEqual([self.plotRange compareToDouble:0.0], CPTPlotRangeComparisonResultNumberInRange, @"Test compareTo:0.0"); XCTAssertEqual([self.plotRange compareToDouble:1.0], CPTPlotRangeComparisonResultNumberInRange, @"Test compareTo:1.0"); XCTAssertEqual([self.plotRange compareToDouble:1.001], CPTPlotRangeComparisonResultNumberAboveRange, @"Test compareTo:1.001"); + XCTAssertEqual([self.plotRange compareToDouble:HUGE_VAL], CPTPlotRangeComparisonResultNumberAboveRange, @"Test compareTo:+INF"); + XCTAssertEqual([self.plotRange compareToDouble:-HUGE_VAL], CPTPlotRangeComparisonResultNumberBelowRange, @"Test compareTo:-INF"); + XCTAssertEqual([self.plotRange compareToDouble:(double)NAN], CPTPlotRangeComparisonResultNumberUndefined, @"Test compareTo:NAN"); +} + +-(void)testCompareToDoubleNegativeInfinite +{ + self.plotRange.lengthDouble = -HUGE_VAL; + + XCTAssertEqual([self.plotRange compareToDouble:-1.001], CPTPlotRangeComparisonResultNumberInRange, @"Test compareTo:-1.001"); + XCTAssertEqual([self.plotRange compareToDouble:-1.0], CPTPlotRangeComparisonResultNumberInRange, @"Test compareTo:-1.0"); + XCTAssertEqual([self.plotRange compareToDouble:0.0], CPTPlotRangeComparisonResultNumberInRange, @"Test compareTo:0.0"); + XCTAssertEqual([self.plotRange compareToDouble:1.0], CPTPlotRangeComparisonResultNumberInRange, @"Test compareTo:1.0"); + XCTAssertEqual([self.plotRange compareToDouble:1.001], CPTPlotRangeComparisonResultNumberAboveRange, @"Test compareTo:1.001"); + XCTAssertEqual([self.plotRange compareToDouble:HUGE_VAL], CPTPlotRangeComparisonResultNumberAboveRange, @"Test compareTo:+INF"); + XCTAssertEqual([self.plotRange compareToDouble:-HUGE_VAL], CPTPlotRangeComparisonResultNumberInRange, @"Test compareTo:-INF"); + XCTAssertEqual([self.plotRange compareToDouble:(double)NAN], CPTPlotRangeComparisonResultNumberUndefined, @"Test compareTo:NAN"); } #pragma mark - diff --git a/framework/Source/CPTTestCase.m b/framework/Source/CPTTestCase.m index 9ad27ca63..effe3adec 100644 --- a/framework/Source/CPTTestCase.m +++ b/framework/Source/CPTTestCase.m @@ -2,12 +2,12 @@ @implementation CPTTestCase --(id)archiveRoundTrip:(id)object +-(nullable id)archiveRoundTrip:(nonnull id)object { return [self archiveRoundTrip:object toClass:[object class]]; } --(nullable id)archiveRoundTrip:(nonnull id)object toClass:(Class)archiveClass +-(nullable id)archiveRoundTrip:(nonnull id)object toClass:(nonnull Class)archiveClass { const BOOL secure = ![archiveClass isSubclassOfClass:[NSNumberFormatter class]]; diff --git a/framework/Source/CPTUtilities.m b/framework/Source/CPTUtilities.m index f4786034d..1a4641de6 100644 --- a/framework/Source/CPTUtilities.m +++ b/framework/Source/CPTUtilities.m @@ -523,7 +523,7 @@ NSDecimal CPTDecimalFromUnsignedInteger(NSUInteger anInt) **/ NSDecimal CPTDecimalFromFloat(float aFloat) { - if ( isnan(aFloat)) { + if ( isnan(aFloat) || isinf(aFloat)) { return CPTDecimalNaN(); } else { @@ -541,7 +541,7 @@ NSDecimal CPTDecimalFromFloat(float aFloat) **/ NSDecimal CPTDecimalFromDouble(double aDouble) { - if ( isnan(aDouble)) { + if ( isnan(aDouble) || isinf(aDouble)) { return CPTDecimalNaN(); } else { @@ -559,7 +559,7 @@ NSDecimal CPTDecimalFromDouble(double aDouble) **/ NSDecimal CPTDecimalFromCGFloat(CGFloat aCGFloat) { - if ( isnan(aCGFloat)) { + if ( isnan(aCGFloat) || isinf(aCGFloat)) { return CPTDecimalNaN(); } else { @@ -743,7 +743,13 @@ NSDecimal CPTDecimalNaN(void) **/ NSDecimal CPTDecimalMin(NSDecimal leftOperand, NSDecimal rightOperand) { - if ( NSDecimalCompare(&leftOperand, &rightOperand) == NSOrderedAscending ) { + if ( NSDecimalIsNotANumber(&leftOperand)) { + return rightOperand; + } + else if ( NSDecimalIsNotANumber(&rightOperand)) { + return leftOperand; + } + else if ( NSDecimalCompare(&leftOperand, &rightOperand) == NSOrderedAscending ) { return leftOperand; } else { @@ -759,7 +765,13 @@ NSDecimal CPTDecimalMin(NSDecimal leftOperand, NSDecimal rightOperand) **/ NSDecimal CPTDecimalMax(NSDecimal leftOperand, NSDecimal rightOperand) { - if ( NSDecimalCompare(&leftOperand, &rightOperand) == NSOrderedDescending ) { + if ( NSDecimalIsNotANumber(&leftOperand)) { + return rightOperand; + } + else if ( NSDecimalIsNotANumber(&rightOperand)) { + return leftOperand; + } + else if ( NSDecimalCompare(&leftOperand, &rightOperand) == NSOrderedDescending ) { return leftOperand; } else { diff --git a/framework/Source/CPTUtilitiesTests.m b/framework/Source/CPTUtilitiesTests.m index acbb54f94..c8335a100 100644 --- a/framework/Source/CPTUtilitiesTests.m +++ b/framework/Source/CPTUtilitiesTests.m @@ -122,6 +122,91 @@ -(void)testConvertNegativeOne XCTAssertTrue(NSDecimalCompare(&testValue, &negativeOne) == NSOrderedSame, @"%@", errMessage); } +#pragma mark - +#pragma mark Decimal utilities + +-(void)testDecimalMax +{ + NSDecimal zero = CPTDecimalFromInteger(0); + NSDecimal one = CPTDecimalFromInteger(1); + NSDecimal dNAN = CPTDecimalNaN(); + + NSDecimal testValue; + NSString *errMessage; + + testValue = CPTDecimalMin(zero, one); + errMessage = [NSString stringWithFormat:@"test min(0, 1), expected %@", NSDecimalString(&zero, nil)]; + XCTAssertTrue(NSDecimalCompare(&testValue, &zero) == NSOrderedSame, @"%@", errMessage); + + testValue = CPTDecimalMin(one, zero); + errMessage = [NSString stringWithFormat:@"test min(1, 0), expected %@", NSDecimalString(&zero, nil)]; + XCTAssertTrue(NSDecimalCompare(&testValue, &zero) == NSOrderedSame, @"%@", errMessage); + + testValue = CPTDecimalMin(one, dNAN); + errMessage = [NSString stringWithFormat:@"test min(1, NAN), expected %@", NSDecimalString(&one, nil)]; + XCTAssertTrue(NSDecimalCompare(&testValue, &one) == NSOrderedSame, @"%@", errMessage); + + testValue = CPTDecimalMin(dNAN, one); + errMessage = [NSString stringWithFormat:@"test min(NAN, 1), expected %@", NSDecimalString(&one, nil)]; + XCTAssertTrue(NSDecimalCompare(&testValue, &one) == NSOrderedSame, @"%@", errMessage); + + testValue = CPTDecimalMin(dNAN, dNAN); + errMessage = [NSString stringWithFormat:@"test min(NAN, NAN), expected %@", NSDecimalString(&dNAN, nil)]; + XCTAssertTrue(NSDecimalCompare(&testValue, &dNAN) == NSOrderedSame, @"%@", errMessage); +} + +-(void)testDecimalMin +{ + NSDecimal zero = CPTDecimalFromInteger(0); + NSDecimal one = CPTDecimalFromInteger(1); + NSDecimal dNAN = CPTDecimalNaN(); + + NSDecimal testValue; + NSString *errMessage; + + testValue = CPTDecimalMax(zero, one); + errMessage = [NSString stringWithFormat:@"test min(0, 1), expected %@", NSDecimalString(&one, nil)]; + XCTAssertTrue(NSDecimalCompare(&testValue, &one) == NSOrderedSame, @"%@", errMessage); + + testValue = CPTDecimalMax(one, zero); + errMessage = [NSString stringWithFormat:@"test min(1, 0), expected %@", NSDecimalString(&one, nil)]; + XCTAssertTrue(NSDecimalCompare(&testValue, &one) == NSOrderedSame, @"%@", errMessage); + + testValue = CPTDecimalMax(one, dNAN); + errMessage = [NSString stringWithFormat:@"test min(1, NAN), expected %@", NSDecimalString(&one, nil)]; + XCTAssertTrue(NSDecimalCompare(&testValue, &one) == NSOrderedSame, @"%@", errMessage); + + testValue = CPTDecimalMax(dNAN, one); + errMessage = [NSString stringWithFormat:@"test min(NAN, 1), expected %@", NSDecimalString(&one, nil)]; + XCTAssertTrue(NSDecimalCompare(&testValue, &one) == NSOrderedSame, @"%@", errMessage); + + testValue = CPTDecimalMin(dNAN, dNAN); + errMessage = [NSString stringWithFormat:@"test min(NAN, NAN), expected %@", NSDecimalString(&dNAN, nil)]; + XCTAssertTrue(NSDecimalCompare(&testValue, &dNAN) == NSOrderedSame, @"%@", errMessage); +} + +-(void)testDecimalAbs +{ + NSDecimal zero = CPTDecimalFromInteger(0); + NSDecimal one = CPTDecimalFromInteger(1); + NSDecimal negativeOne = CPTDecimalFromInteger(-1); + + NSDecimal testValue; + NSString *errMessage; + + testValue = CPTDecimalAbs(one); + errMessage = [NSString stringWithFormat:@"test value was %@, expected %@", NSDecimalString(&testValue, nil), NSDecimalString(&one, nil)]; + XCTAssertTrue(NSDecimalCompare(&testValue, &one) == NSOrderedSame, @"%@", errMessage); + + testValue = CPTDecimalAbs(zero); + errMessage = [NSString stringWithFormat:@"test value was %@, expected %@", NSDecimalString(&testValue, nil), NSDecimalString(&zero, nil)]; + XCTAssertTrue(NSDecimalCompare(&testValue, &zero) == NSOrderedSame, @"%@", errMessage); + + testValue = CPTDecimalAbs(negativeOne); + errMessage = [NSString stringWithFormat:@"test value was %@, expected %@", NSDecimalString(&testValue, nil), NSDecimalString(&one, nil)]; + XCTAssertTrue(NSDecimalCompare(&testValue, &one) == NSOrderedSame, @"%@", errMessage); +} + #pragma mark - #pragma mark NSDecimalNumber tests From 4b5354a4e090b74d2a5b9e00af8f3127e9fa9c4c Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Wed, 17 Jul 2019 19:48:21 -0400 Subject: [PATCH 095/160] Added legend swatch layout options to place the swatches above or below the title. --- .../src/plots/ColoredBarChart.m | 7 +- .../CorePlotGallery/src/plots/RangePlot.m | 1 + framework/Source/CPTLegend.h | 6 +- framework/Source/CPTLegend.m | 114 +++++++++++++++--- 4 files changed, 105 insertions(+), 23 deletions(-) diff --git a/examples/CorePlotGallery/src/plots/ColoredBarChart.m b/examples/CorePlotGallery/src/plots/ColoredBarChart.m index 064eb7b0e..885203624 100644 --- a/examples/CorePlotGallery/src/plots/ColoredBarChart.m +++ b/examples/CorePlotGallery/src/plots/ColoredBarChart.m @@ -131,9 +131,10 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT theLegend.textStyle = whiteTextStyle; theLegend.numberOfRows = 1; - graph.legend = theLegend; - graph.legendAnchor = CPTRectAnchorTop; - graph.legendDisplacement = CGPointMake(0.0, self.titleSize * CPTFloat(-2.625)); + graph.legend = theLegend; + graph.legend.swatchLayout = CPTLegendSwatchLayoutTop; + graph.legendAnchor = CPTRectAnchorTop; + graph.legendDisplacement = CGPointMake(0.0, self.titleSize * CPTFloat(-2.625)); } #pragma mark - diff --git a/examples/CorePlotGallery/src/plots/RangePlot.m b/examples/CorePlotGallery/src/plots/RangePlot.m index 8ad6f5568..cbbaf2423 100644 --- a/examples/CorePlotGallery/src/plots/RangePlot.m +++ b/examples/CorePlotGallery/src/plots/RangePlot.m @@ -170,6 +170,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT newGraph.legend.borderLineStyle = x.axisLineStyle; newGraph.legend.cornerRadius = 5.0; newGraph.legend.swatchCornerRadius = 3.0; + newGraph.legend.swatchLayout = CPTLegendSwatchLayoutBottom; newGraph.legendAnchor = CPTRectAnchorTop; newGraph.legendDisplacement = CGPointMake(0.0, self.titleSize * CPTFloat(-2.0) - CPTFloat(12.0)); } diff --git a/framework/Source/CPTLegend.h b/framework/Source/CPTLegend.h index 06c9bf942..d865a3e21 100644 --- a/framework/Source/CPTLegend.h +++ b/framework/Source/CPTLegend.h @@ -37,8 +37,10 @@ extern CPTLegendNotification __nonnull const CPTLegendNeedsReloadEntriesForPlotN * @brief Enumeration of legend layout options. **/ typedef NS_ENUM (NSInteger, CPTLegendSwatchLayout) { - CPTLegendSwatchLayoutLeft, ///< Lay out the swatch to the left side of the title. - CPTLegendSwatchLayoutRight ///< Lay out the swatch to the right side of the title. + CPTLegendSwatchLayoutLeft, ///< Lay out the swatch to the left side of the title. + CPTLegendSwatchLayoutRight, ///< Lay out the swatch to the right side of the title. + CPTLegendSwatchLayoutTop, ///< Lay out the swatch above the title. + CPTLegendSwatchLayoutBottom ///< Lay out the swatch below the title. }; #pragma mark - diff --git a/framework/Source/CPTLegend.m b/framework/Source/CPTLegend.m index aac0422b7..02c8716d8 100644 --- a/framework/Source/CPTLegend.m +++ b/framework/Source/CPTLegend.m @@ -208,7 +208,7 @@ @implementation CPTLegend @synthesize titleOffset; /** @property CPTLegendSwatchLayout swatchLayout - * @brief Draw the legend swatch to the left or right side of the title. Default is #CPTLegendSwatchLayoutLeft. + * @brief Where to draw the legend swatch relative to the title. Default is #CPTLegendSwatchLayoutLeft. **/ @synthesize swatchLayout; @@ -552,6 +552,20 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context return; } + BOOL isHorizontalLayout; + + switch ( self.swatchLayout ) { + case CPTLegendSwatchLayoutLeft: + case CPTLegendSwatchLayoutRight: + isHorizontalLayout = YES; + break; + + case CPTLegendSwatchLayoutTop: + case CPTLegendSwatchLayoutBottom: + isHorizontalLayout = NO; + break; + } + // calculate column positions CPTNumberArray *computedColumnWidths = self.columnWidthsThatFit; NSUInteger columnCount = computedColumnWidths.count; @@ -572,7 +586,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context CGFloat width = [colWidth cgFloatValue]; actualColumnWidths[col] = width; if ( col < columnCount - 1 ) { - columnPositions[col + 1] = columnPositions[col] + padLeft + width + padRight + theOffset + theSwatchSize.width + theColumnMargin; + columnPositions[col + 1] = columnPositions[col] + padLeft + width + padRight + (isHorizontalLayout ? theOffset + theSwatchSize.width : 0.0) + theColumnMargin; } } @@ -591,7 +605,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context CGFloat height = [rowHeight cgFloatValue]; actualRowHeights[row] = height; if ( row < rowCount - 1 ) { - rowPositions[row] = rowPositions[row + 1] + padBottom + lastRowHeight + padTop + theRowMargin; + rowPositions[row] = rowPositions[row + 1] + padBottom + lastRowHeight + padTop + (isHorizontalLayout ? 0.0 : theOffset + theSwatchSize.height) + theRowMargin; } lastRowHeight = height; } @@ -620,10 +634,21 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context CGFloat left = columnPositions[col]; CGFloat rowPosition = rowPositions[row]; - CGRect entryRect = CPTRectMake(left, - rowPosition, - padLeft + theSwatchSize.width + theOffset + actualColumnWidths[col] + CPTFloat(1.0) + padRight, - padBottom + actualRowHeights[row] + padTop); + + CGRect entryRect; + + if ( isHorizontalLayout ) { + entryRect = CPTRectMake(left, + rowPosition, + padLeft + theSwatchSize.width + theOffset + actualColumnWidths[col] + CPTFloat(1.0) + padRight, + padBottom + actualRowHeights[row] + padTop); + } + else { + entryRect = CPTRectMake(left, + rowPosition, + padLeft + MAX(theSwatchSize.width, actualColumnWidths[col]) + CPTFloat(1.0) + padRight, + padBottom + theSwatchSize.height + theOffset + actualRowHeights[row] + padTop); + } // draw background CPTFill *theFill = nil; @@ -654,24 +679,46 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context } // lay out swatch and title - CGFloat swatchLeft; - CGFloat titleLeft; + CGFloat swatchLeft, swatchBottom; + CGFloat titleLeft, titleBottom; switch ( self.swatchLayout ) { case CPTLegendSwatchLayoutLeft: - swatchLeft = left + padLeft; - titleLeft = swatchLeft + theSwatchSize.width + theOffset; + swatchLeft = CGRectGetMinX(entryRect) + padLeft; + swatchBottom = CGRectGetMinY(entryRect) + (entryRect.size.height - theSwatchSize.height) * CPTFloat(0.5); + + titleLeft = swatchLeft + theSwatchSize.width + theOffset; + titleBottom = CGRectGetMinY(entryRect) + padBottom; break; case CPTLegendSwatchLayoutRight: - swatchLeft = CGRectGetMaxX(entryRect) - padRight - theSwatchSize.width; - titleLeft = left + padLeft; + swatchLeft = CGRectGetMaxX(entryRect) - padRight - theSwatchSize.width; + swatchBottom = CGRectGetMinY(entryRect) + (entryRect.size.height - theSwatchSize.height) * CPTFloat(0.5); + + titleLeft = CGRectGetMinX(entryRect) + padLeft; + titleBottom = CGRectGetMinY(entryRect) + padBottom; + break; + + case CPTLegendSwatchLayoutTop: + swatchLeft = CGRectGetMidX(entryRect) - theSwatchSize.width * CPTFloat(0.5); + swatchBottom = CGRectGetMaxY(entryRect) - padTop - theSwatchSize.height; + + titleLeft = CGRectGetMidX(entryRect) - actualColumnWidths[col] * CPTFloat(0.5); + titleBottom = CGRectGetMinY(entryRect) + padBottom; + break; + + case CPTLegendSwatchLayoutBottom: + swatchLeft = CGRectGetMidX(entryRect) - theSwatchSize.width * CPTFloat(0.5); + swatchBottom = CGRectGetMinY(entryRect) + padBottom; + + titleLeft = CGRectGetMidX(entryRect) - actualColumnWidths[col] * CPTFloat(0.5); + titleBottom = swatchBottom + theOffset + theSwatchSize.height; break; } // draw swatch CGRect swatchRect = CPTRectMake(swatchLeft, - rowPosition + (entryRect.size.height - theSwatchSize.height) * CPTFloat(0.5), + swatchBottom, theSwatchSize.width, theSwatchSize.height); @@ -691,7 +738,12 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context } // draw title - [legendEntry drawTitleInRect:CPTAlignRectToUserSpace(context, CPTRectMake(titleLeft, rowPosition + padBottom, actualColumnWidths[col] + CPTFloat(1.0), actualRowHeights[row])) + CGRect titleRect = CPTRectMake(titleLeft, + titleBottom, + actualColumnWidths[col] + CPTFloat(1.0), + actualRowHeights[row]); + + [legendEntry drawTitleInRect:CPTAlignRectToUserSpace(context, titleRect) inContext:context scale:self.contentsScale]; } @@ -755,6 +807,20 @@ -(void)recalculateLayout return; } + BOOL isHorizontalLayout; + + switch ( self.swatchLayout ) { + case CPTLegendSwatchLayoutLeft: + case CPTLegendSwatchLayoutRight: + isHorizontalLayout = YES; + break; + + case CPTLegendSwatchLayoutTop: + case CPTLegendSwatchLayoutBottom: + isHorizontalLayout = NO; + break; + } + // compute the number of rows and columns needed to hold the legend entries NSUInteger rowCount = self.numberOfRows; NSUInteger columnCount = self.numberOfColumns; @@ -801,7 +867,10 @@ -(void)recalculateLayout CGSize titleSize = legendEntry.titleSize; if ((desiredRowCount == 0) || (row < desiredRowCount)) { - maxTitleHeight[row] = MAX(MAX(maxTitleHeight[row], titleSize.height), theSwatchSize.height); + maxTitleHeight[row] = MAX(maxTitleHeight[row], titleSize.height); + if ( isHorizontalLayout ) { + maxTitleHeight[row] = MAX(maxTitleHeight[row], theSwatchSize.height); + } if ( row < desiredRowHeights.count ) { id desiredRowHeight = desiredRowHeights[row]; @@ -812,7 +881,10 @@ -(void)recalculateLayout } if ((desiredColumnCount == 0) || (col < desiredColumnCount)) { - maxTitleWidth[col] = MAX(MAX(maxTitleWidth[col], titleSize.width), theSwatchSize.width); + maxTitleWidth[col] = MAX(maxTitleWidth[col], titleSize.width); + if ( !isHorizontalLayout ) { + maxTitleWidth[col] = MAX(maxTitleWidth[col], theSwatchSize.width); + } if ( col < desiredColumnWidths.count ) { id desiredColumnWidth = desiredColumnWidths[col]; @@ -865,7 +937,10 @@ -(void)recalculateLayout } } if ( columnCount > 0 ) { - legendSize.width += ((theSwatchSize.width + self.titleOffset + self.entryPaddingLeft + self.entryPaddingRight) * columnCount) + (self.columnMargin * (columnCount - 1)); + legendSize.width += ((self.entryPaddingLeft + self.entryPaddingRight) * columnCount) + (self.columnMargin * (columnCount - 1)); + if ( isHorizontalLayout ) { + legendSize.width += (theSwatchSize.width + self.titleOffset) * columnCount; + } } NSUInteger rows = row; @@ -877,6 +952,9 @@ -(void)recalculateLayout } if ( rows > 0 ) { legendSize.height += ((self.entryPaddingBottom + self.entryPaddingTop) * rowCount) + (self.rowMargin * (rows - 1)); + if ( !isHorizontalLayout ) { + legendSize.height += (theSwatchSize.height + self.titleOffset) * rowCount; + } } self.bounds = CPTRectMake(0.0, 0.0, ceil(legendSize.width), ceil(legendSize.height)); From 6bee91bf8495369f28b5d09fb9291ba94b0a5ef9 Mon Sep 17 00:00:00 2001 From: Pascal Freiburghaus Date: Sun, 4 Aug 2019 17:09:15 +0200 Subject: [PATCH 096/160] Changes to support dynamic UIColor for dark mode on iOS. Create a CPTColor from UIColor and dynamic colors will be adapted as needed. --- framework/Source/CPTColor.h | 4 + framework/Source/CPTColor.m | 78 ++++++++++++++++++- framework/Source/CPTGraph.m | 14 +++- framework/Source/CPTLayer.m | 14 +++- .../CPTPlatformSpecificCategories.m | 10 --- 5 files changed, 106 insertions(+), 14 deletions(-) diff --git a/framework/Source/CPTColor.h b/framework/Source/CPTColor.h index 2f668815d..8d8e7ecc8 100644 --- a/framework/Source/CPTColor.h +++ b/framework/Source/CPTColor.h @@ -5,6 +5,8 @@ #if TARGET_OS_OSX @property (nonatomic, readonly, nonnull) NSColor *nsColor; +#elif TARGET_OS_SIMULATOR || TARGET_OS_IOS +@property (nonatomic, readonly, nonnull) UIColor *uiColor; #endif /// @name Factory Methods @@ -31,6 +33,8 @@ #if TARGET_OS_OSX +(nonnull instancetype)colorWithNSColor:(nonnull NSColor *)newNSColor; +#elif TARGET_OS_SIMULATOR || TARGET_OS_IOS ++(nonnull instancetype)colorWithUIColor:(nonnull UIColor *)newUIColor; #endif /// @} diff --git a/framework/Source/CPTColor.m b/framework/Source/CPTColor.m index d0ba919ea..4b3b57773 100644 --- a/framework/Source/CPTColor.m +++ b/framework/Source/CPTColor.m @@ -11,6 +11,8 @@ @interface CPTColor() #if TARGET_OS_OSX @property (nonatomic, readonly, nullable) NSColor *nsColorCache; +#elif TARGET_OS_SIMULATOR || TARGET_OS_IOS +@property (nonatomic, readonly, nullable) UIColor *uiColorCache; #endif @end @@ -51,7 +53,29 @@ -(NSColor *)nsColor return [NSColor colorWithCIColor:[CIColor colorWithCGColor:self.cgColor]]; } } +#elif TARGET_OS_SIMULATOR || TARGET_OS_IOS +/** @internal + * @property nullable UIColor *uiColorCache + * @brief The UIColor to wrap around. + **/ +@synthesize uiColorCache; + +/** @property nonnull UIColor *uiColor + * @brief The UIColor to wrap around. + **/ +@dynamic uiColor; +-(UIColor *)uiColor +{ + UIColor *theUIColor = self.uiColorCache; + + if ( theUIColor ) { + return theUIColor; + } + else { + return [UIColor colorWithCGColor:self.cgColor]; + } +} #endif /** @property nonnull CGColorRef cgColor @@ -66,6 +90,11 @@ -(CGColorRef)cgColor if ( theNSColor ) { return theNSColor.CGColor; } +#elif TARGET_OS_SIMULATOR || TARGET_OS_IOS + UIColor *theUIColor = self.uiColorCache; + if ( theUIColor ) { + return theUIColor.CGColor; + } #endif return cgColor; } @@ -382,7 +411,18 @@ +(nonnull instancetype)colorWithNSColor:(nonnull NSColor *)newNSColor { return [[self alloc] initWithNSColor:newNSColor]; } - +#elif TARGET_OS_SIMULATOR || TARGET_OS_IOS +/** @brief Creates and returns a new CPTColor instance initialized with the provided UIColor. + * + * UIColor can be a dynamic system color or catalog color. This adds support for dark mode in iOS13. + * + * @param newUIColor The color to wrap. + * @return A new CPTColor instance initialized with the provided UIColor. + **/ ++(nonnull instancetype)colorWithUIColor:(nonnull UIColor *)newUIColor +{ + return [[self alloc] initWithUIColor:newUIColor]; +} #endif #pragma mark - @@ -440,7 +480,21 @@ -(nonnull instancetype)initWithNSColor:(nonnull NSColor *)newNSColor } return self; } - +#elif TARGET_OS_SIMULATOR || TARGET_OS_IOS +/** @brief Initializes a newly allocated CPTColor object with the provided UIColor. + * + * UIColor can be a dynamic system color or catalog color. This adds support for dark mode in iOS13. + * + * @param newUIColor The color to wrap. + * @return The initialized CPTColor object. + **/ +-(nonnull instancetype)initWithUIColor:(nonnull UIColor *)newUIColor +{ + if ((self = [self init])) { + uiColorCache = newUIColor; + } + return self; +} #endif /// @cond @@ -473,6 +527,12 @@ -(nonnull instancetype)colorWithAlphaComponent:(CGFloat)alpha NSColor *newNSColor = [theNSColor colorWithAlphaComponent:alpha]; return [[self class] colorWithNSColor:newNSColor]; } +#elif TARGET_OS_SIMULATOR || TARGET_OS_IOS + UIColor *theUIColor = self.uiColorCache; + if ( theUIColor ) { + UIColor *newUIColor = [theUIColor colorWithAlphaComponent:alpha]; + return [[self class] colorWithUIColor:newUIColor]; + } #endif CGColorRef newCGColor = CGColorCreateCopyWithAlpha(self.cgColor, alpha); CPTColor *newColor = [[self class] colorWithCGColor:newCGColor]; @@ -502,6 +562,8 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder { #if TARGET_OS_OSX [coder encodeConditionalObject:self.nsColorCache forKey:@"CPTColor.nsColorCache"]; +#elif TARGET_OS_SIMULATOR || TARGET_OS_IOS + [coder encodeConditionalObject:self.uiColorCache forKey:@"CPTColor.uiColorCache"]; #endif CGColorRef theColor = self.cgColor; @@ -534,6 +596,12 @@ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder if ( decodedNSColor ) { nsColorCache = decodedNSColor; } +#elif TARGET_OS_SIMULATOR || TARGET_OS_IOS + UIColor *decodedUIColor = [coder decodeObjectOfClass:[UIColor class] + forKey:@"CPTColor.uiColorCache"]; + if ( decodedUIColor ) { + uiColorCache = decodedUIColor; + } #endif CGColorSpaceRef colorSpace = [coder newCGColorSpaceDecodeForKey:@"CPTColor.colorSpace"]; @@ -580,6 +648,12 @@ -(nonnull id)copyWithZone:(nullable NSZone *)zone CPTColor *colorCopy = [[[self class] allocWithZone:zone] initWithNSColor:nsColorCopy]; return colorCopy; } +#elif TARGET_OS_SIMULATOR || TARGET_OS_IOS + UIColor *uiColorCopy = [self.uiColorCache copyWithZone:zone]; + if ( uiColorCopy ) { + CPTColor *colorCopy = [[[self class] allocWithZone:zone] initWithUIColor:uiColorCopy]; + return colorCopy; + } #endif CGColorRef cgColorCopy = NULL; diff --git a/framework/Source/CPTGraph.m b/framework/Source/CPTGraph.m index bc4b7c6a9..067e19db2 100644 --- a/framework/Source/CPTGraph.m +++ b/framework/Source/CPTGraph.m @@ -396,7 +396,19 @@ -(void)layoutAndRenderInContext:(nonnull CGContextRef)context } #pragma clang diagnostic pop #else - [super layoutAndRenderInContext:context]; + if ( [UITraitCollection instancesRespondToSelector:@selector(performAsCurrentTraitCollection:)] ) { + UITraitCollection *traitCollection = ((UIView *)self.hostingView).traitCollection; + if ( traitCollection ) { + [traitCollection performAsCurrentTraitCollection:^{ + [super layoutAndRenderInContext:context]; + }]; + } else { + [super layoutAndRenderInContext:context]; + } + } + else { + [super layoutAndRenderInContext:context]; + } #endif } diff --git a/framework/Source/CPTLayer.m b/framework/Source/CPTLayer.m index 02f38f6f8..4d1f065da 100644 --- a/framework/Source/CPTLayer.m +++ b/framework/Source/CPTLayer.m @@ -339,7 +339,19 @@ -(void)display } #pragma clang diagnostic pop #else - [super display]; + if ( [UITraitCollection instancesRespondToSelector:@selector(performAsCurrentTraitCollection:)] ) { + UITraitCollection *traitCollection = ((UIView *)self.graph.hostingView).traitCollection; + if ( traitCollection ) { + [traitCollection performAsCurrentTraitCollection:^{ + [super display]; + }]; + } else { + [super display]; + } + } + else { + [super display]; + } #endif } } diff --git a/framework/iPhoneOnly/CPTPlatformSpecificCategories.m b/framework/iPhoneOnly/CPTPlatformSpecificCategories.m index b9e492726..ea53bc38f 100644 --- a/framework/iPhoneOnly/CPTPlatformSpecificCategories.m +++ b/framework/iPhoneOnly/CPTPlatformSpecificCategories.m @@ -7,16 +7,6 @@ @implementation CPTColor(CPTPlatformSpecificColorExtensions) -/** @property uiColor - * @brief Gets the color value as a UIColor. - **/ -@dynamic uiColor; - --(nonnull UIColor *)uiColor -{ - return [UIColor colorWithCGColor:self.cgColor]; -} - @end #pragma mark - CPTLayer From a33f68ee8f74a23bf495572c7bdac78ef8389e1f Mon Sep 17 00:00:00 2001 From: Petro Rovenskyy Date: Thu, 22 Aug 2019 18:43:58 +0300 Subject: [PATCH 097/160] fixed Xcode 10.3 build for generic iOS build. Should fixed Carthage framework. --- framework/Source/CPTLegend.m | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/framework/Source/CPTLegend.m b/framework/Source/CPTLegend.m index 02c8716d8..9709af33e 100644 --- a/framework/Source/CPTLegend.m +++ b/framework/Source/CPTLegend.m @@ -581,12 +581,13 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context CGFloat padRight = self.entryPaddingRight; CGFloat padBottom = self.entryPaddingBottom; + CGFloat zero = 0.0; for ( NSUInteger col = 0; col < columnCount; col++ ) { NSNumber *colWidth = computedColumnWidths[col]; CGFloat width = [colWidth cgFloatValue]; actualColumnWidths[col] = width; if ( col < columnCount - 1 ) { - columnPositions[col + 1] = columnPositions[col] + padLeft + width + padRight + (isHorizontalLayout ? theOffset + theSwatchSize.width : 0.0) + theColumnMargin; + columnPositions[col + 1] = columnPositions[col] + padLeft + width + padRight + (isHorizontalLayout ? theOffset + theSwatchSize.width : zero) + theColumnMargin; } } @@ -605,7 +606,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context CGFloat height = [rowHeight cgFloatValue]; actualRowHeights[row] = height; if ( row < rowCount - 1 ) { - rowPositions[row] = rowPositions[row + 1] + padBottom + lastRowHeight + padTop + (isHorizontalLayout ? 0.0 : theOffset + theSwatchSize.height) + theRowMargin; + rowPositions[row] = rowPositions[row + 1] + padBottom + lastRowHeight + padTop + (isHorizontalLayout ? zero : theOffset + theSwatchSize.height) + theRowMargin; } lastRowHeight = height; } From e7c0b4e19df6042c94430efcf4dda4f3ea1613b5 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 25 Aug 2019 14:53:34 -0400 Subject: [PATCH 098/160] Use CPTFloat() literal value instead of a variable to satisfy CGFloat type checking. --- framework/Source/CPTLegend.m | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/framework/Source/CPTLegend.m b/framework/Source/CPTLegend.m index 9709af33e..15f06c82e 100644 --- a/framework/Source/CPTLegend.m +++ b/framework/Source/CPTLegend.m @@ -581,13 +581,12 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context CGFloat padRight = self.entryPaddingRight; CGFloat padBottom = self.entryPaddingBottom; - CGFloat zero = 0.0; for ( NSUInteger col = 0; col < columnCount; col++ ) { NSNumber *colWidth = computedColumnWidths[col]; CGFloat width = [colWidth cgFloatValue]; actualColumnWidths[col] = width; if ( col < columnCount - 1 ) { - columnPositions[col + 1] = columnPositions[col] + padLeft + width + padRight + (isHorizontalLayout ? theOffset + theSwatchSize.width : zero) + theColumnMargin; + columnPositions[col + 1] = columnPositions[col] + padLeft + width + padRight + (isHorizontalLayout ? theOffset + theSwatchSize.width : CPTFloat(0.0)) + theColumnMargin; } } @@ -606,7 +605,7 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context CGFloat height = [rowHeight cgFloatValue]; actualRowHeights[row] = height; if ( row < rowCount - 1 ) { - rowPositions[row] = rowPositions[row + 1] + padBottom + lastRowHeight + padTop + (isHorizontalLayout ? zero : theOffset + theSwatchSize.height) + theRowMargin; + rowPositions[row] = rowPositions[row + 1] + padBottom + lastRowHeight + padTop + (isHorizontalLayout ? CPTFloat(0.0) : theOffset + theSwatchSize.height) + theRowMargin; } lastRowHeight = height; } From 47e0af94b4416ed93a6f5b9a58a718e12471502a Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 25 Aug 2019 16:09:09 -0400 Subject: [PATCH 099/160] Removed dead code and standardized code formatting. --- framework/MacOnly/CPTPlatformSpecificCategories.h | 11 ----------- framework/Source/CPTColor.h | 2 ++ framework/Source/CPTColor.m | 11 ++++++++++- framework/Source/CPTGraph.m | 9 +++++---- framework/Source/CPTLayer.m | 9 +++++---- framework/iPhoneOnly/CPTPlatformSpecificCategories.h | 11 ----------- framework/iPhoneOnly/CPTPlatformSpecificCategories.m | 6 ------ 7 files changed, 22 insertions(+), 37 deletions(-) diff --git a/framework/MacOnly/CPTPlatformSpecificCategories.h b/framework/MacOnly/CPTPlatformSpecificCategories.h index f47f00e94..2102bc1bf 100644 --- a/framework/MacOnly/CPTPlatformSpecificCategories.h +++ b/framework/MacOnly/CPTPlatformSpecificCategories.h @@ -16,17 +16,6 @@ @end -#pragma mark - CPTColor - -/** @category CPTColor(CPTPlatformSpecificColorExtensions) - * @brief Platform-specific extensions to CPTColor. - **/ -@interface CPTColor(CPTPlatformSpecificColorExtensions) - -@property (nonatomic, readonly, nonnull) NSColor *nsColor; - -@end - #pragma mark - NSAttributedString /** @category NSAttributedString(CPTPlatformSpecificAttributedStringExtensions) diff --git a/framework/Source/CPTColor.h b/framework/Source/CPTColor.h index 8d8e7ecc8..034a6bad7 100644 --- a/framework/Source/CPTColor.h +++ b/framework/Source/CPTColor.h @@ -47,6 +47,8 @@ #if TARGET_OS_OSX -(nonnull instancetype)initWithNSColor:(nonnull NSColor *)newNSColor NS_DESIGNATED_INITIALIZER; +#elif TARGET_OS_SIMULATOR || TARGET_OS_IOS +-(nonnull instancetype)initWithUIColor:(nonnull UIColor *)newUIColor NS_DESIGNATED_INITIALIZER; #endif -(nonnull instancetype)colorWithAlphaComponent:(CGFloat)alpha; diff --git a/framework/Source/CPTColor.m b/framework/Source/CPTColor.m index 4b3b57773..b12d5dab4 100644 --- a/framework/Source/CPTColor.m +++ b/framework/Source/CPTColor.m @@ -53,7 +53,9 @@ -(NSColor *)nsColor return [NSColor colorWithCIColor:[CIColor colorWithCGColor:self.cgColor]]; } } + #elif TARGET_OS_SIMULATOR || TARGET_OS_IOS + /** @internal * @property nullable UIColor *uiColorCache * @brief The UIColor to wrap around. @@ -76,6 +78,7 @@ -(UIColor *)uiColor return [UIColor colorWithCGColor:self.cgColor]; } } + #endif /** @property nonnull CGColorRef cgColor @@ -411,7 +414,9 @@ +(nonnull instancetype)colorWithNSColor:(nonnull NSColor *)newNSColor { return [[self alloc] initWithNSColor:newNSColor]; } + #elif TARGET_OS_SIMULATOR || TARGET_OS_IOS + /** @brief Creates and returns a new CPTColor instance initialized with the provided UIColor. * * UIColor can be a dynamic system color or catalog color. This adds support for dark mode in iOS13. @@ -423,6 +428,7 @@ +(nonnull instancetype)colorWithUIColor:(nonnull UIColor *)newUIColor { return [[self alloc] initWithUIColor:newUIColor]; } + #endif #pragma mark - @@ -480,7 +486,9 @@ -(nonnull instancetype)initWithNSColor:(nonnull NSColor *)newNSColor } return self; } + #elif TARGET_OS_SIMULATOR || TARGET_OS_IOS + /** @brief Initializes a newly allocated CPTColor object with the provided UIColor. * * UIColor can be a dynamic system color or catalog color. This adds support for dark mode in iOS13. @@ -490,11 +498,12 @@ -(nonnull instancetype)initWithNSColor:(nonnull NSColor *)newNSColor **/ -(nonnull instancetype)initWithUIColor:(nonnull UIColor *)newUIColor { - if ((self = [self init])) { + if ((self = [super init])) { uiColorCache = newUIColor; } return self; } + #endif /// @cond diff --git a/framework/Source/CPTGraph.m b/framework/Source/CPTGraph.m index 067e19db2..76aa311cd 100644 --- a/framework/Source/CPTGraph.m +++ b/framework/Source/CPTGraph.m @@ -380,9 +380,9 @@ -(void)layoutAndRenderInContext:(nonnull CGContextRef)context [self reloadDataIfNeeded]; [self.axisSet.axes makeObjectsPerformSelector:@selector(relabel)]; -#if TARGET_OS_OSX #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wundeclared-selector" +#if TARGET_OS_OSX // Workaround since @available macro is not there if ( [NSView instancesRespondToSelector:@selector(effectiveAppearance)] ) { NSAppearance *oldAppearance = NSAppearance.currentAppearance; @@ -394,15 +394,15 @@ -(void)layoutAndRenderInContext:(nonnull CGContextRef)context else { [super layoutAndRenderInContext:context]; } -#pragma clang diagnostic pop #else if ( [UITraitCollection instancesRespondToSelector:@selector(performAsCurrentTraitCollection:)] ) { UITraitCollection *traitCollection = ((UIView *)self.hostingView).traitCollection; if ( traitCollection ) { - [traitCollection performAsCurrentTraitCollection:^{ + [traitCollection performAsCurrentTraitCollection: ^{ [super layoutAndRenderInContext:context]; }]; - } else { + } + else { [super layoutAndRenderInContext:context]; } } @@ -410,6 +410,7 @@ -(void)layoutAndRenderInContext:(nonnull CGContextRef)context [super layoutAndRenderInContext:context]; } #endif +#pragma clang diagnostic pop } /// @endcond diff --git a/framework/Source/CPTLayer.m b/framework/Source/CPTLayer.m index 4d1f065da..794cb771a 100644 --- a/framework/Source/CPTLayer.m +++ b/framework/Source/CPTLayer.m @@ -323,9 +323,9 @@ -(void)display return; } else { -#if TARGET_OS_OSX #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wundeclared-selector" +#if TARGET_OS_OSX // Workaround since @available macro is not there if ( [NSView instancesRespondToSelector:@selector(effectiveAppearance)] ) { @@ -337,15 +337,15 @@ -(void)display else { [super display]; } -#pragma clang diagnostic pop #else if ( [UITraitCollection instancesRespondToSelector:@selector(performAsCurrentTraitCollection:)] ) { UITraitCollection *traitCollection = ((UIView *)self.graph.hostingView).traitCollection; if ( traitCollection ) { - [traitCollection performAsCurrentTraitCollection:^{ + [traitCollection performAsCurrentTraitCollection: ^{ [super display]; }]; - } else { + } + else { [super display]; } } @@ -353,6 +353,7 @@ -(void)display [super display]; } #endif +#pragma clang diagnostic pop } } diff --git a/framework/iPhoneOnly/CPTPlatformSpecificCategories.h b/framework/iPhoneOnly/CPTPlatformSpecificCategories.h index 9132da000..efa9ffffc 100644 --- a/framework/iPhoneOnly/CPTPlatformSpecificCategories.h +++ b/framework/iPhoneOnly/CPTPlatformSpecificCategories.h @@ -2,17 +2,6 @@ #import "CPTLayer.h" #import "CPTPlatformSpecificDefines.h" -#pragma mark CPTColor - -/** @category CPTColor(CPTPlatformSpecificColorExtensions) - * @brief Platform-specific extensions to CPTColor. - **/ -@interface CPTColor(CPTPlatformSpecificColorExtensions) - -@property (nonatomic, readonly, nonnull) UIColor *uiColor; - -@end - #pragma mark - CPTLayer /** @category CPTLayer(CPTPlatformSpecificLayerExtensions) diff --git a/framework/iPhoneOnly/CPTPlatformSpecificCategories.m b/framework/iPhoneOnly/CPTPlatformSpecificCategories.m index ea53bc38f..cad04a6f3 100644 --- a/framework/iPhoneOnly/CPTPlatformSpecificCategories.m +++ b/framework/iPhoneOnly/CPTPlatformSpecificCategories.m @@ -3,12 +3,6 @@ #import "CPTPlatformSpecificFunctions.h" #import "tgmath.h" -#pragma mark CPTColor - -@implementation CPTColor(CPTPlatformSpecificColorExtensions) - -@end - #pragma mark - CPTLayer @implementation CPTLayer(CPTPlatformSpecificLayerExtensions) From 5f56876d6b43d7bb580ec59fa25f48b8b07a23cf Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 22 Sep 2019 10:28:52 -0400 Subject: [PATCH 100/160] Encode/decode CGColorRenderingIntent as Int32, matching its definition. --- framework/Source/NSCoderExtensions.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/framework/Source/NSCoderExtensions.m b/framework/Source/NSCoderExtensions.m index f8b927103..6884d24f6 100644 --- a/framework/Source/NSCoderExtensions.m +++ b/framework/Source/NSCoderExtensions.m @@ -237,7 +237,7 @@ -(void)encodeCGImage:(nullable CGImageRef)image forKey:(nonnull NSString *)key [self encodeBool:CGImageGetShouldInterpolate(image) forKey:newKey]; newKey = [[NSString alloc] initWithFormat:@"%@.renderingIntent", key]; - [self encodeInt:CGImageGetRenderingIntent(image) forKey:newKey]; + [self encodeInt32:CGImageGetRenderingIntent(image) forKey:newKey]; } /** @brief Encodes an @ref NSDecimal and associates it with the string @par{key}. @@ -484,7 +484,7 @@ -(nullable CGImageRef)newCGImageDecodeForKey:(nonnull NSString *)key bool shouldInterpolate = [self decodeBoolForKey:newKey]; newKey = [[NSString alloc] initWithFormat:@"%@.renderingIntent", key]; - CGColorRenderingIntent intent = (CGColorRenderingIntent)[self decodeIntForKey:newKey]; + CGColorRenderingIntent intent = (CGColorRenderingIntent)[self decodeInt32ForKey:newKey]; CGImageRef newImage = CGImageCreate(width, height, From 56bf2aa4cb50d5d5a51618f67efaf934af56fb8b Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 22 Sep 2019 11:33:02 -0400 Subject: [PATCH 101/160] Added arm64e as a valid build architecture. --- framework/xcconfig/CorePlot.xcconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/xcconfig/CorePlot.xcconfig b/framework/xcconfig/CorePlot.xcconfig index e0d2957dc..cb645b667 100644 --- a/framework/xcconfig/CorePlot.xcconfig +++ b/framework/xcconfig/CorePlot.xcconfig @@ -1,7 +1,7 @@ #include "CorePlotWarnings.xcconfig" ARCHS = $(ARCHS_STANDARD) -VALID_ARCHS[sdk=iphoneos*] = arm64 armv7 armv7s +VALID_ARCHS[sdk=iphoneos*] = arm64 arm64e armv7 armv7s VALID_ARCHS[sdk=iphonesimulator*] = i386 x86_64 VALID_ARCHS[sdk=macosx*] = i386 x86_64 VALID_ARCHS[sdk=appletvos*] = arm64 From c0df39dedec81e72a95063798f443adaaa499635 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 22 Sep 2019 11:33:45 -0400 Subject: [PATCH 102/160] Added a build scheme for the tvOS framework. --- .../Universal tvOS Framework.xcscheme | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 framework/CorePlot.xcodeproj/xcshareddata/xcschemes/Universal tvOS Framework.xcscheme diff --git a/framework/CorePlot.xcodeproj/xcshareddata/xcschemes/Universal tvOS Framework.xcscheme b/framework/CorePlot.xcodeproj/xcshareddata/xcschemes/Universal tvOS Framework.xcscheme new file mode 100644 index 000000000..c45a23509 --- /dev/null +++ b/framework/CorePlot.xcodeproj/xcshareddata/xcschemes/Universal tvOS Framework.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + From a6195abe49239875f0a438bdddeb505f04689b8a Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 22 Sep 2019 11:34:45 -0400 Subject: [PATCH 103/160] Changed the QCPlugin outputImage property image to use a strong reference. --- QCPlugin/CorePlotQCPlugin.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/QCPlugin/CorePlotQCPlugin.h b/QCPlugin/CorePlotQCPlugin.h index e0ec5811c..99354c2d5 100644 --- a/QCPlugin/CorePlotQCPlugin.h +++ b/QCPlugin/CorePlotQCPlugin.h @@ -5,7 +5,7 @@ @property (readwrite, strong, nullable) CPTGraph *graph; -@property (readwrite, assign, nonnull) id outputImage; +@property (readwrite, strong, nonnull) id outputImage; @property (readwrite, assign) NSUInteger numberOfPlots; From e8c07f5fc7910e01cbc2b0c00e98e2e613034ec7 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 22 Sep 2019 11:47:10 -0400 Subject: [PATCH 104/160] Changed all references to TARGET_OS_IOS to TARGET_OS_IPHONE to match the rest of Core Plot. --- framework/Source/CPTColor.h | 6 +++--- framework/Source/CPTColor.m | 18 +++++++++--------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/framework/Source/CPTColor.h b/framework/Source/CPTColor.h index 034a6bad7..f8a6fd678 100644 --- a/framework/Source/CPTColor.h +++ b/framework/Source/CPTColor.h @@ -5,7 +5,7 @@ #if TARGET_OS_OSX @property (nonatomic, readonly, nonnull) NSColor *nsColor; -#elif TARGET_OS_SIMULATOR || TARGET_OS_IOS +#elif TARGET_OS_SIMULATOR || TARGET_OS_IPHONE @property (nonatomic, readonly, nonnull) UIColor *uiColor; #endif @@ -33,7 +33,7 @@ #if TARGET_OS_OSX +(nonnull instancetype)colorWithNSColor:(nonnull NSColor *)newNSColor; -#elif TARGET_OS_SIMULATOR || TARGET_OS_IOS +#elif TARGET_OS_SIMULATOR || TARGET_OS_IPHONE +(nonnull instancetype)colorWithUIColor:(nonnull UIColor *)newUIColor; #endif @@ -47,7 +47,7 @@ #if TARGET_OS_OSX -(nonnull instancetype)initWithNSColor:(nonnull NSColor *)newNSColor NS_DESIGNATED_INITIALIZER; -#elif TARGET_OS_SIMULATOR || TARGET_OS_IOS +#elif TARGET_OS_SIMULATOR || TARGET_OS_IPHONE -(nonnull instancetype)initWithUIColor:(nonnull UIColor *)newUIColor NS_DESIGNATED_INITIALIZER; #endif diff --git a/framework/Source/CPTColor.m b/framework/Source/CPTColor.m index b12d5dab4..a45090e10 100644 --- a/framework/Source/CPTColor.m +++ b/framework/Source/CPTColor.m @@ -11,7 +11,7 @@ @interface CPTColor() #if TARGET_OS_OSX @property (nonatomic, readonly, nullable) NSColor *nsColorCache; -#elif TARGET_OS_SIMULATOR || TARGET_OS_IOS +#elif TARGET_OS_SIMULATOR || TARGET_OS_IPHONE @property (nonatomic, readonly, nullable) UIColor *uiColorCache; #endif @end @@ -54,7 +54,7 @@ -(NSColor *)nsColor } } -#elif TARGET_OS_SIMULATOR || TARGET_OS_IOS +#elif TARGET_OS_SIMULATOR || TARGET_OS_IPHONE /** @internal * @property nullable UIColor *uiColorCache @@ -93,7 +93,7 @@ -(CGColorRef)cgColor if ( theNSColor ) { return theNSColor.CGColor; } -#elif TARGET_OS_SIMULATOR || TARGET_OS_IOS +#elif TARGET_OS_SIMULATOR || TARGET_OS_IPHONE UIColor *theUIColor = self.uiColorCache; if ( theUIColor ) { return theUIColor.CGColor; @@ -415,7 +415,7 @@ +(nonnull instancetype)colorWithNSColor:(nonnull NSColor *)newNSColor return [[self alloc] initWithNSColor:newNSColor]; } -#elif TARGET_OS_SIMULATOR || TARGET_OS_IOS +#elif TARGET_OS_SIMULATOR || TARGET_OS_IPHONE /** @brief Creates and returns a new CPTColor instance initialized with the provided UIColor. * @@ -487,7 +487,7 @@ -(nonnull instancetype)initWithNSColor:(nonnull NSColor *)newNSColor return self; } -#elif TARGET_OS_SIMULATOR || TARGET_OS_IOS +#elif TARGET_OS_SIMULATOR || TARGET_OS_IPHONE /** @brief Initializes a newly allocated CPTColor object with the provided UIColor. * @@ -536,7 +536,7 @@ -(nonnull instancetype)colorWithAlphaComponent:(CGFloat)alpha NSColor *newNSColor = [theNSColor colorWithAlphaComponent:alpha]; return [[self class] colorWithNSColor:newNSColor]; } -#elif TARGET_OS_SIMULATOR || TARGET_OS_IOS +#elif TARGET_OS_SIMULATOR || TARGET_OS_IPHONE UIColor *theUIColor = self.uiColorCache; if ( theUIColor ) { UIColor *newUIColor = [theUIColor colorWithAlphaComponent:alpha]; @@ -571,7 +571,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder { #if TARGET_OS_OSX [coder encodeConditionalObject:self.nsColorCache forKey:@"CPTColor.nsColorCache"]; -#elif TARGET_OS_SIMULATOR || TARGET_OS_IOS +#elif TARGET_OS_SIMULATOR || TARGET_OS_IPHONE [coder encodeConditionalObject:self.uiColorCache forKey:@"CPTColor.uiColorCache"]; #endif @@ -605,7 +605,7 @@ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder if ( decodedNSColor ) { nsColorCache = decodedNSColor; } -#elif TARGET_OS_SIMULATOR || TARGET_OS_IOS +#elif TARGET_OS_SIMULATOR || TARGET_OS_IPHONE UIColor *decodedUIColor = [coder decodeObjectOfClass:[UIColor class] forKey:@"CPTColor.uiColorCache"]; if ( decodedUIColor ) { @@ -657,7 +657,7 @@ -(nonnull id)copyWithZone:(nullable NSZone *)zone CPTColor *colorCopy = [[[self class] allocWithZone:zone] initWithNSColor:nsColorCopy]; return colorCopy; } -#elif TARGET_OS_SIMULATOR || TARGET_OS_IOS +#elif TARGET_OS_SIMULATOR || TARGET_OS_IPHONE UIColor *uiColorCopy = [self.uiColorCache copyWithZone:zone]; if ( uiColorCopy ) { CPTColor *colorCopy = [[[self class] allocWithZone:zone] initWithUIColor:uiColorCopy]; From 40f6fe93381d84226ace62b8e33437a697b1f443 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 22 Sep 2019 11:48:59 -0400 Subject: [PATCH 105/160] Only clean the first build in the universal library and framework build scripts. Otherwise, the new Xcode build system wipes out the previous built products. --- framework/CorePlot.xcodeproj/project.pbxproj | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/framework/CorePlot.xcodeproj/project.pbxproj b/framework/CorePlot.xcodeproj/project.pbxproj index a57dc8338..bc9f52bf7 100644 --- a/framework/CorePlot.xcodeproj/project.pbxproj +++ b/framework/CorePlot.xcodeproj/project.pbxproj @@ -2586,7 +2586,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\nUFW_TARGET=\"CorePlot tvOS\"\nUFW_BUILD_DIR=\"${PROJECT_DIR}/../build\"\n\nif [ -z ${SDK_NAME} ]; then\n# Use the latest tvOS SDK available\nUFW_GREP_RESULT=$(xcodebuild -showsdks | grep -o \"appletvos.*$\")\nwhile read -r line; do\nUFW_SDK_VERSION=\"${line}\"\ndone <<< \"${UFW_GREP_RESULT}\"\nelse\n# Use the SDK specified by XCode\nUFW_SDK_VERSION=\"${SDK_NAME}\"\nfi\n\nFRAMEWORK_NAME=\"${PROJECT_NAME}\"\nUFW_SDK_VERSION=$(echo \"${UFW_SDK_VERSION}\" | grep -o \"[0-9].*$\")\nUFW_IPHONE_PATH=\"${UFW_BUILD_DIR}/Release-appletvos/${FRAMEWORK_NAME}.framework\"\nUFW_SIMULATOR_PATH=\"${UFW_BUILD_DIR}/Release-appletvsimulator/${FRAMEWORK_NAME}.framework\"\nUFW_UNIVERSAL_DIR=\"${UFW_BUILD_DIR}/Release-appletvuniversal\"\nUFW_FRAMEWORK=\"${UFW_UNIVERSAL_DIR}/${FRAMEWORK_NAME}.framework\"\n\n# Build Framework\n\nrm -rf \"${UFW_UNIVERSAL_DIR}\"\n\nxcodebuild -target \"${UFW_TARGET}\" -project CorePlot.xcodeproj -configuration Release -sdk appletvos${UFW_SDK_VERSION} clean build\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: xcodebuild failed\"; exit 1; fi\nxcodebuild -target \"${UFW_TARGET}\" -project CorePlot.xcodeproj -configuration Release -sdk appletvsimulator${UFW_SDK_VERSION} clean build\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: xcodebuild failed\"; exit 1; fi\n\nmkdir -p \"${UFW_UNIVERSAL_DIR}\"\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: mkdir failed\"; exit 1; fi\n\ncp -r \"${UFW_IPHONE_PATH}/.\" \"${UFW_FRAMEWORK}\"\n\nlipo -create -output \"${UFW_FRAMEWORK}/${FRAMEWORK_NAME}\" \"${UFW_SIMULATOR_PATH}/${FRAMEWORK_NAME}\" \"${UFW_IPHONE_PATH}/${FRAMEWORK_NAME}\"\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: lipo failed\"; exit 1; fi\n"; + shellScript = "\nUFW_TARGET=\"CorePlot tvOS\"\nUFW_BUILD_DIR=\"${PROJECT_DIR}/../build\"\n\nif [ -z ${SDK_NAME} ]; then\n# Use the latest tvOS SDK available\nUFW_GREP_RESULT=$(xcodebuild -showsdks | grep -o \"appletvos.*$\")\nwhile read -r line; do\nUFW_SDK_VERSION=\"${line}\"\ndone <<< \"${UFW_GREP_RESULT}\"\nelse\n# Use the SDK specified by XCode\nUFW_SDK_VERSION=\"${SDK_NAME}\"\nfi\n\nFRAMEWORK_NAME=\"${PROJECT_NAME}\"\nUFW_SDK_VERSION=$(echo \"${UFW_SDK_VERSION}\" | grep -o \"[0-9].*$\")\nUFW_IPHONE_PATH=\"${UFW_BUILD_DIR}/Release-appletvos/${FRAMEWORK_NAME}.framework\"\nUFW_SIMULATOR_PATH=\"${UFW_BUILD_DIR}/Release-appletvsimulator/${FRAMEWORK_NAME}.framework\"\nUFW_UNIVERSAL_DIR=\"${UFW_BUILD_DIR}/Release-appletvuniversal\"\nUFW_FRAMEWORK=\"${UFW_UNIVERSAL_DIR}/${FRAMEWORK_NAME}.framework\"\n\n# Build Framework\n\nrm -rf \"${UFW_UNIVERSAL_DIR}\"\n\nxcodebuild -target \"${UFW_TARGET}\" -project CorePlot.xcodeproj -configuration Release -sdk appletvos${UFW_SDK_VERSION} clean build\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: xcodebuild failed\"; exit 1; fi\nxcodebuild -target \"${UFW_TARGET}\" -project CorePlot.xcodeproj -configuration Release -sdk appletvsimulator${UFW_SDK_VERSION} build\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: xcodebuild failed\"; exit 1; fi\n\nmkdir -p \"${UFW_UNIVERSAL_DIR}\"\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: mkdir failed\"; exit 1; fi\n\ncp -r \"${UFW_IPHONE_PATH}/.\" \"${UFW_FRAMEWORK}\"\n\nlipo -create -output \"${UFW_FRAMEWORK}/${FRAMEWORK_NAME}\" \"${UFW_SIMULATOR_PATH}/${FRAMEWORK_NAME}\" \"${UFW_IPHONE_PATH}/${FRAMEWORK_NAME}\"\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: lipo failed\"; exit 1; fi\n"; }; C38A09921A4618B600D45436 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; @@ -2612,7 +2612,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\nUFW_TARGET=\"CorePlot-CocoaTouch\"\nUFW_BUILD_DIR=\"${PROJECT_DIR}/../build\"\n\nif [ -z ${SDK_NAME} ]; then\n# Use the latest iphoneos SDK available\nUFW_GREP_RESULT=$(xcodebuild -showsdks | grep -o \"iphoneos.*$\")\nwhile read -r line; do\nUFW_SDK_VERSION=\"${line}\"\ndone <<< \"${UFW_GREP_RESULT}\"\nelse\n# Use the SDK specified by XCode\nUFW_SDK_VERSION=\"${SDK_NAME}\"\nfi\n\nUFW_SDK_VERSION=$(echo \"${UFW_SDK_VERSION}\" | grep -o \"[0-9].*$\")\nUFW_IPHONE_DIR=\"${UFW_BUILD_DIR}/Release-iphoneos\"\nUFW_SIMULATOR_DIR=\"${UFW_BUILD_DIR}/Release-iphonesimulator\"\nUFW_UNIVERSAL_DIR=\"${UFW_BUILD_DIR}/Release-universal\"\nUFW_HEADER_DIR=\"${UFW_UNIVERSAL_DIR}/CorePlotHeaders\"\nUFW_EXE_PATH=\"libCorePlot-CocoaTouch.a\"\n\n# Build Framework\n\nrm -rf \"${UFW_UNIVERSAL_DIR}\"\n\nxcodebuild -target \"${UFW_TARGET}\" -project CorePlot.xcodeproj -configuration Release -sdk iphoneos${UFW_SDK_VERSION} clean build\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: xcodebuild failed\"; exit 1; fi\nxcodebuild -target \"${UFW_TARGET}\" -project CorePlot.xcodeproj -configuration Release -sdk iphonesimulator${UFW_SDK_VERSION} clean build\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: xcodebuild failed\"; exit 1; fi\n\nmkdir -p \"${UFW_UNIVERSAL_DIR}\"\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: mkdir failed\"; exit 1; fi\n\nlipo -create -output \"${UFW_UNIVERSAL_DIR}/${UFW_EXE_PATH}\" \"${UFW_IPHONE_DIR}/${UFW_EXE_PATH}\" \"${UFW_SIMULATOR_DIR}/${UFW_EXE_PATH}\"\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: lipo failed\"; exit 1; fi\n\n# copy header files\nmkdir -p \"${UFW_HEADER_DIR}\"\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: mkdir failed\"; exit 1; fi\n\ncp \"${SOURCE_ROOT}/CorePlot-CocoaTouch.h\" \"${UFW_HEADER_DIR}\"\ncp \"${SOURCE_ROOT}/iPhoneOnly/\"[!_]*.h \"${UFW_HEADER_DIR}/\"\ncp \"${SOURCE_ROOT}/Source/\"[!_]*.h \"${UFW_HEADER_DIR}/\"\n\nrm \"${UFW_HEADER_DIR}/\"*Tests.*"; + shellScript = "\nUFW_TARGET=\"CorePlot-CocoaTouch\"\nUFW_BUILD_DIR=\"${PROJECT_DIR}/../build\"\n\nif [ -z ${SDK_NAME} ]; then\n# Use the latest iphoneos SDK available\nUFW_GREP_RESULT=$(xcodebuild -showsdks | grep -o \"iphoneos.*$\")\nwhile read -r line; do\nUFW_SDK_VERSION=\"${line}\"\ndone <<< \"${UFW_GREP_RESULT}\"\nelse\n# Use the SDK specified by XCode\nUFW_SDK_VERSION=\"${SDK_NAME}\"\nfi\n\nUFW_SDK_VERSION=$(echo \"${UFW_SDK_VERSION}\" | grep -o \"[0-9].*$\")\nUFW_IPHONE_DIR=\"${UFW_BUILD_DIR}/Release-iphoneos\"\nUFW_SIMULATOR_DIR=\"${UFW_BUILD_DIR}/Release-iphonesimulator\"\nUFW_UNIVERSAL_DIR=\"${UFW_BUILD_DIR}/Release-universal\"\nUFW_HEADER_DIR=\"${UFW_UNIVERSAL_DIR}/CorePlotHeaders\"\nUFW_EXE_PATH=\"libCorePlot-CocoaTouch.a\"\n\n# Build Framework\n\nrm -rf \"${UFW_UNIVERSAL_DIR}\"\n\nxcodebuild -target \"${UFW_TARGET}\" -project CorePlot.xcodeproj -configuration Release -sdk iphoneos${UFW_SDK_VERSION} clean build\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: xcodebuild failed\"; exit 1; fi\nxcodebuild -target \"${UFW_TARGET}\" -project CorePlot.xcodeproj -configuration Release -sdk iphonesimulator${UFW_SDK_VERSION} build\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: xcodebuild failed\"; exit 1; fi\n\nmkdir -p \"${UFW_UNIVERSAL_DIR}\"\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: mkdir failed\"; exit 1; fi\n\nlipo -create -output \"${UFW_UNIVERSAL_DIR}/${UFW_EXE_PATH}\" \"${UFW_IPHONE_DIR}/${UFW_EXE_PATH}\" \"${UFW_SIMULATOR_DIR}/${UFW_EXE_PATH}\"\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: lipo failed\"; exit 1; fi\n\n# copy header files\nmkdir -p \"${UFW_HEADER_DIR}\"\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: mkdir failed\"; exit 1; fi\n\ncp \"${SOURCE_ROOT}/CorePlot-CocoaTouch.h\" \"${UFW_HEADER_DIR}\"\ncp \"${SOURCE_ROOT}/iPhoneOnly/\"[!_]*.h \"${UFW_HEADER_DIR}/\"\ncp \"${SOURCE_ROOT}/Source/\"[!_]*.h \"${UFW_HEADER_DIR}/\"\n\nrm \"${UFW_HEADER_DIR}/\"*Tests.*\n"; }; C3A546801BC1A817005C1BBC /* ShellScript */ = { isa = PBXShellScriptBuildPhase; @@ -2625,7 +2625,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\nUFW_TARGET=\"CorePlot iOS\"\nUFW_BUILD_DIR=\"${PROJECT_DIR}/../build\"\n\nif [ -z ${SDK_NAME} ]; then\n# Use the latest iphoneos SDK available\nUFW_GREP_RESULT=$(xcodebuild -showsdks | grep -o \"iphoneos.*$\")\nwhile read -r line; do\nUFW_SDK_VERSION=\"${line}\"\ndone <<< \"${UFW_GREP_RESULT}\"\nelse\n# Use the SDK specified by XCode\nUFW_SDK_VERSION=\"${SDK_NAME}\"\nfi\n\nFRAMEWORK_NAME=\"${PROJECT_NAME}\"\nUFW_SDK_VERSION=$(echo \"${UFW_SDK_VERSION}\" | grep -o \"[0-9].*$\")\nUFW_IPHONE_PATH=\"${UFW_BUILD_DIR}/Release-iphoneos/${FRAMEWORK_NAME}.framework\"\nUFW_SIMULATOR_PATH=\"${UFW_BUILD_DIR}/Release-iphonesimulator/${FRAMEWORK_NAME}.framework\"\nUFW_UNIVERSAL_DIR=\"${UFW_BUILD_DIR}/Release-iphoneuniversal\"\nUFW_FRAMEWORK=\"${UFW_UNIVERSAL_DIR}/${FRAMEWORK_NAME}.framework\"\n\n# Build Framework\n\nrm -rf \"${UFW_UNIVERSAL_DIR}\"\n\nxcodebuild -target \"${UFW_TARGET}\" -project CorePlot.xcodeproj -configuration Release -sdk iphoneos${UFW_SDK_VERSION} clean build\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: xcodebuild failed\"; exit 1; fi\nxcodebuild -target \"${UFW_TARGET}\" -project CorePlot.xcodeproj -configuration Release -sdk iphonesimulator${UFW_SDK_VERSION} clean build\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: xcodebuild failed\"; exit 1; fi\n\nmkdir -p \"${UFW_UNIVERSAL_DIR}\"\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: mkdir failed\"; exit 1; fi\n\ncp -r \"${UFW_IPHONE_PATH}/.\" \"${UFW_FRAMEWORK}\"\n\nlipo -create -output \"${UFW_FRAMEWORK}/${FRAMEWORK_NAME}\" \"${UFW_SIMULATOR_PATH}/${FRAMEWORK_NAME}\" \"${UFW_IPHONE_PATH}/${FRAMEWORK_NAME}\"\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: lipo failed\"; exit 1; fi\n"; + shellScript = "\nUFW_TARGET=\"CorePlot iOS\"\nUFW_BUILD_DIR=\"${PROJECT_DIR}/../build\"\n\nif [ -z ${SDK_NAME} ]; then\n# Use the latest iphoneos SDK available\nUFW_GREP_RESULT=$(xcodebuild -showsdks | grep -o \"iphoneos.*$\")\nwhile read -r line; do\nUFW_SDK_VERSION=\"${line}\"\ndone <<< \"${UFW_GREP_RESULT}\"\nelse\n# Use the SDK specified by XCode\nUFW_SDK_VERSION=\"${SDK_NAME}\"\nfi\n\nFRAMEWORK_NAME=\"${PROJECT_NAME}\"\nUFW_SDK_VERSION=$(echo \"${UFW_SDK_VERSION}\" | grep -o \"[0-9].*$\")\nUFW_IPHONE_PATH=\"${UFW_BUILD_DIR}/Release-iphoneos/${FRAMEWORK_NAME}.framework\"\nUFW_SIMULATOR_PATH=\"${UFW_BUILD_DIR}/Release-iphonesimulator/${FRAMEWORK_NAME}.framework\"\nUFW_UNIVERSAL_DIR=\"${UFW_BUILD_DIR}/Release-iphoneuniversal\"\nUFW_FRAMEWORK=\"${UFW_UNIVERSAL_DIR}/${FRAMEWORK_NAME}.framework\"\n\n# Build Framework\n\nrm -rf \"${UFW_UNIVERSAL_DIR}\"\n\nxcodebuild -target \"${UFW_TARGET}\" -project CorePlot.xcodeproj -configuration Release -sdk iphoneos${UFW_SDK_VERSION} clean build\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: xcodebuild failed\"; exit 1; fi\nxcodebuild -target \"${UFW_TARGET}\" -project CorePlot.xcodeproj -configuration Release -sdk iphonesimulator${UFW_SDK_VERSION} build\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: xcodebuild failed\"; exit 1; fi\n\nmkdir -p \"${UFW_UNIVERSAL_DIR}\"\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: mkdir failed\"; exit 1; fi\n\ncp -r \"${UFW_IPHONE_PATH}/.\" \"${UFW_FRAMEWORK}\"\n\nlipo -create -output \"${UFW_FRAMEWORK}/${FRAMEWORK_NAME}\" \"${UFW_SIMULATOR_PATH}/${FRAMEWORK_NAME}\" \"${UFW_IPHONE_PATH}/${FRAMEWORK_NAME}\"\nif [ \"$?\" != \"0\" ]; then echo >&2 \"Error: lipo failed\"; exit 1; fi\n"; }; /* End PBXShellScriptBuildPhase section */ From 9c2edaece9331acaf15a63ff2e564e5854267d48 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 22 Sep 2019 20:54:20 -0400 Subject: [PATCH 106/160] Added @available checks around the -performAsCurrentTraitCollection: method. Fixed issue #411. --- framework/Source/CPTGraph.m | 21 +++++++++++++-------- framework/Source/CPTLayer.m | 15 ++++++++++----- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/framework/Source/CPTGraph.m b/framework/Source/CPTGraph.m index 76aa311cd..0b740002a 100644 --- a/framework/Source/CPTGraph.m +++ b/framework/Source/CPTGraph.m @@ -395,19 +395,24 @@ -(void)layoutAndRenderInContext:(nonnull CGContextRef)context [super layoutAndRenderInContext:context]; } #else - if ( [UITraitCollection instancesRespondToSelector:@selector(performAsCurrentTraitCollection:)] ) { - UITraitCollection *traitCollection = ((UIView *)self.hostingView).traitCollection; - if ( traitCollection ) { - [traitCollection performAsCurrentTraitCollection: ^{ - [super layoutAndRenderInContext:context]; - }]; + if ( @available(iOS 13, *)) { + if ( [UITraitCollection instancesRespondToSelector:@selector(performAsCurrentTraitCollection:)] ) { + UITraitCollection *traitCollection = ((UIView *)self.graph.hostingView).traitCollection; + if ( traitCollection ) { + [traitCollection performAsCurrentTraitCollection: ^{ + [super display]; + }]; + } + else { + [super display]; + } } else { - [super layoutAndRenderInContext:context]; + [super display]; } } else { - [super layoutAndRenderInContext:context]; + [super display]; } #endif #pragma clang diagnostic pop diff --git a/framework/Source/CPTLayer.m b/framework/Source/CPTLayer.m index 794cb771a..29732265b 100644 --- a/framework/Source/CPTLayer.m +++ b/framework/Source/CPTLayer.m @@ -338,12 +338,17 @@ -(void)display [super display]; } #else - if ( [UITraitCollection instancesRespondToSelector:@selector(performAsCurrentTraitCollection:)] ) { - UITraitCollection *traitCollection = ((UIView *)self.graph.hostingView).traitCollection; - if ( traitCollection ) { - [traitCollection performAsCurrentTraitCollection: ^{ + if ( @available(iOS 13, *)) { + if ( [UITraitCollection instancesRespondToSelector:@selector(performAsCurrentTraitCollection:)] ) { + UITraitCollection *traitCollection = ((UIView *)self.graph.hostingView).traitCollection; + if ( traitCollection ) { + [traitCollection performAsCurrentTraitCollection: ^{ + [super display]; + }]; + } + else { [super display]; - }]; + } } else { [super display]; From 018652ee82e6d83a90d3c44d3cbf983fa60578ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aure=CC=81lien=20HUGELE?= Date: Mon, 30 Sep 2019 16:22:12 +0200 Subject: [PATCH 107/160] iOS13 UIFont major change as using font name to create a font is deprecated. --- .../MacOnly/CPTTextStylePlatformSpecific.m | 10 +++--- framework/Source/CPTMutableTextStyle.h | 5 +++ framework/Source/CPTMutableTextStyle.m | 5 +++ framework/Source/CPTTextStyle.h | 6 ++++ framework/Source/CPTTextStyle.m | 36 +++++++++++++++++++ .../iPhoneOnly/CPTTextStylePlatformSpecific.m | 15 +++++--- 6 files changed, 68 insertions(+), 9 deletions(-) diff --git a/framework/MacOnly/CPTTextStylePlatformSpecific.m b/framework/MacOnly/CPTTextStylePlatformSpecific.m index 6f59bce78..28f52cc19 100644 --- a/framework/MacOnly/CPTTextStylePlatformSpecific.m +++ b/framework/MacOnly/CPTTextStylePlatformSpecific.m @@ -40,6 +40,7 @@ +(nonnull instancetype)textStyleWithAttributes:(nullable CPTDictionary *)attribu NSFont *styleFont = attributes[NSFontAttributeName]; if ( styleFont ) { + newStyle.font = styleFont; newStyle.fontName = styleFont.fontName; newStyle.fontSize = styleFont.pointSize; } @@ -87,10 +88,10 @@ -(nonnull CPTDictionary *)attributes CPTMutableDictionary *myAttributes = [NSMutableDictionary dictionary]; // Font - NSFont *styleFont = nil; + NSFont *styleFont = self.font; NSString *fontName = self.fontName; - if ( fontName ) { + if ( styleFont == nil && fontName ) { styleFont = [NSFont fontWithName:fontName size:self.fontSize]; } @@ -146,6 +147,7 @@ +(nonnull instancetype)textStyleWithAttributes:(nullable CPTDictionary *)attribu NSFont *styleFont = attributes[NSFontAttributeName]; if ( styleFont ) { + newStyle.font = styleFont; newStyle.fontName = styleFont.fontName; newStyle.fontSize = styleFont.pointSize; } @@ -241,10 +243,10 @@ -(void)drawInRect:(CGRect)rect withTextStyle:(nullable CPTTextStyle *)style inCo CPTPushCGContext(context); - NSFont *theFont = nil; + NSFont *theFont = style.font; NSString *fontName = style.fontName; - if ( fontName ) { + if ( theFont == nil && fontName ) { theFont = [NSFont fontWithName:fontName size:style.fontSize]; } diff --git a/framework/Source/CPTMutableTextStyle.h b/framework/Source/CPTMutableTextStyle.h index 471a79bb0..04d13cd7e 100644 --- a/framework/Source/CPTMutableTextStyle.h +++ b/framework/Source/CPTMutableTextStyle.h @@ -4,6 +4,11 @@ @interface CPTMutableTextStyle : CPTTextStyle +#if TARGET_OS_SIMULATOR || TARGET_OS_IPHONE || TARGET_OS_TV +@property (readwrite, strong, nonatomic, nullable) UIFont *font; +#else +@property (readwrite, strong, nonatomic, nullable) NSFont *font; +#endif @property (readwrite, copy, nonatomic, nullable) NSString *fontName; @property (readwrite, assign, nonatomic) CGFloat fontSize; @property (readwrite, copy, nonatomic, nullable) CPTColor *color; diff --git a/framework/Source/CPTMutableTextStyle.m b/framework/Source/CPTMutableTextStyle.m index 0d63a221f..f08ff06bc 100644 --- a/framework/Source/CPTMutableTextStyle.m +++ b/framework/Source/CPTMutableTextStyle.m @@ -7,6 +7,11 @@ @implementation CPTMutableTextStyle +/** @property UIFont* or NSFont* font + * @brief The font. Default is nil + **/ +@synthesize font; + /** @property CGFloat fontSize * @brief The font size. Default is @num{12.0}. **/ diff --git a/framework/Source/CPTTextStyle.h b/framework/Source/CPTTextStyle.h index b9163364c..f5dbf6eb4 100644 --- a/framework/Source/CPTTextStyle.h +++ b/framework/Source/CPTTextStyle.h @@ -16,6 +16,12 @@ typedef NSMutableArray CPTMutableTextStyleArray; @interface CPTTextStyle : NSObject +// font would override fontName/fontSize if not nil +#if TARGET_OS_SIMULATOR || TARGET_OS_IPHONE || TARGET_OS_TV +@property (readonly, strong, nonatomic, nullable) UIFont *font; +#else +@property (readonly, strong, nonatomic, nullable) NSFont *font; +#endif @property (readonly, copy, nonatomic, nullable) NSString *fontName; @property (readonly, nonatomic) CGFloat fontSize; @property (readonly, copy, nonatomic, nullable) CPTColor *color; diff --git a/framework/Source/CPTTextStyle.m b/framework/Source/CPTTextStyle.m index f1b7452be..d23304a30 100644 --- a/framework/Source/CPTTextStyle.m +++ b/framework/Source/CPTTextStyle.m @@ -7,6 +7,12 @@ /// @cond @interface CPTTextStyle() +// font would override fontName/fontSize if not nil +#if TARGET_OS_SIMULATOR || TARGET_OS_IPHONE || TARGET_OS_TV +@property (readwrite, strong, nonatomic, nullable) UIFont *font; +#else +@property (readwrite, strong, nonatomic, nullable) NSFont *font; +#endif @property (readwrite, copy, nonatomic, nullable) NSString *fontName; @property (readwrite, assign, nonatomic) CGFloat fontSize; @property (readwrite, copy, nonatomic, nullable) CPTColor *color; @@ -26,6 +32,11 @@ @interface CPTTextStyle() @implementation CPTTextStyle +/** @property UIFont* or NSFont* font + * @brief The font. Default is nil + **/ +@synthesize font; + /** @property CGFloat fontSize * @brief The font size. Default is @num{12.0}. **/ @@ -73,6 +84,7 @@ +(nonnull instancetype)textStyleWithStyle:(nullable CPTTextStyle *)textStyle { CPTTextStyle *newTextStyle = [[self alloc] init]; + newTextStyle.font = textStyle.font; newTextStyle.color = textStyle.color; newTextStyle.fontName = textStyle.fontName; newTextStyle.fontSize = textStyle.fontSize; @@ -91,6 +103,7 @@ +(nonnull instancetype)textStyleWithStyle:(nullable CPTTextStyle *)textStyle /** @brief Initializes a newly allocated CPTTextStyle object. * * The initialized object will have the following properties: + * - @ref font = nil * - @ref fontName = Helvetica * - @ref fontSize = @num{12.0} * - @ref color = opaque black @@ -102,6 +115,7 @@ +(nonnull instancetype)textStyleWithStyle:(nullable CPTTextStyle *)textStyle -(nonnull instancetype)init { if ((self = [super init])) { + font = nil; fontName = @"Helvetica"; fontSize = CPTFloat(12.0); color = [CPTColor blackColor]; @@ -120,6 +134,16 @@ -(nonnull instancetype)init -(void)encodeWithCoder:(nonnull NSCoder *)coder { + #if TARGET_OS_SIMULATOR || TARGET_OS_IPHONE || TARGET_OS_TV + if(self.font) { + //UIFont does not support NSCoding :( + [coder encodeObject:[self.font fontDescriptor] forKey:@"CPTTextStyle.font+descriptor"]; + } + #else + // NSFont supports NSCoding :) + [coder encodeObject:self.font forKey:@"CPTTextStyle.font"]; + #endif + [coder encodeObject:self.fontName forKey:@"CPTTextStyle.fontName"]; [coder encodeCGFloat:self.fontSize forKey:@"CPTTextStyle.fontSize"]; [coder encodeObject:self.color forKey:@"CPTTextStyle.color"]; @@ -130,6 +154,16 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { if ((self = [super init])) { + + #if TARGET_OS_SIMULATOR || TARGET_OS_IPHONE || TARGET_OS_TV + //UIFont does not support NSCoding :( + UIFontDescriptor *fontDescriptor = [coder decodeObjectOfClass:[UIFontDescriptor class] forKey:@"CPTTextStyle.font+descriptor"]; + font = [UIFont fontWithDescriptor:fontDescriptor size:0]; // 0 will keep the same font size + #else + // NSFont supports NSCoding :) + font = [coder decodeObjectOfClass:[NSFont class] forKey:@"CPTTextStyle.font"]; + #endif + fontName = [[coder decodeObjectOfClass:[NSString class] forKey:@"CPTTextStyle.fontName"] copy]; fontSize = [coder decodeCGFloatForKey:@"CPTTextStyle.fontSize"]; @@ -164,6 +198,7 @@ -(nonnull id)copyWithZone:(nullable NSZone *)zone { CPTTextStyle *newCopy = [[CPTTextStyle allocWithZone:zone] init]; + newCopy.font = self.font; newCopy.fontName = self.fontName; newCopy.color = self.color; newCopy.fontSize = self.fontSize; @@ -184,6 +219,7 @@ -(nonnull id)mutableCopyWithZone:(nullable NSZone *)zone { CPTTextStyle *newCopy = [[CPTMutableTextStyle allocWithZone:zone] init]; + newCopy.font = self.font; newCopy.fontName = self.fontName; newCopy.color = self.color; newCopy.fontSize = self.fontSize; diff --git a/framework/iPhoneOnly/CPTTextStylePlatformSpecific.m b/framework/iPhoneOnly/CPTTextStylePlatformSpecific.m index 8ecca165a..27fb83cc0 100644 --- a/framework/iPhoneOnly/CPTTextStylePlatformSpecific.m +++ b/framework/iPhoneOnly/CPTTextStylePlatformSpecific.m @@ -42,6 +42,7 @@ +(nonnull instancetype)textStyleWithAttributes:(nullable CPTDictionary *)attribu UIFont *styleFont = attributes[NSFontAttributeName]; if ( styleFont ) { + newStyle.font = styleFont; newStyle.fontName = styleFont.fontName; newStyle.fontSize = styleFont.pointSize; } @@ -72,10 +73,10 @@ -(nonnull CPTDictionary *)attributes CPTMutableDictionary *myAttributes = [NSMutableDictionary dictionary]; // Font - UIFont *styleFont = nil; + UIFont *styleFont = self.font; NSString *fontName = self.fontName; - if ( fontName ) { + if ( styleFont == nil && fontName ) { styleFont = [UIFont fontWithName:fontName size:self.fontSize]; } @@ -132,6 +133,7 @@ +(nonnull instancetype)textStyleWithAttributes:(nullable CPTDictionary *)attribu UIFont *styleFont = attributes[NSFontAttributeName]; if ( styleFont ) { + newStyle.font = styleFont; newStyle.fontName = styleFont.fontName; newStyle.fontSize = styleFont.pointSize; } @@ -222,10 +224,10 @@ -(void)drawInRect:(CGRect)rect withTextStyle:(nullable CPTTextStyle *)style inCo UIColor *styleColor = style.attributes[NSForegroundColorAttributeName]; [styleColor set]; - UIFont *theFont = nil; + UIFont *theFont = style.font; NSString *fontName = style.fontName; - if ( fontName ) { + if (theFont == nil && fontName ) { theFont = [UIFont fontWithName:fontName size:style.fontSize]; } @@ -241,7 +243,10 @@ -(void)drawInRect:(CGRect)rect withTextStyle:(nullable CPTTextStyle *)style inCo UIColor *styleColor = style.attributes[NSForegroundColorAttributeName]; [styleColor set]; - UIFont *theFont = [UIFont fontWithName:style.fontName size:style.fontSize]; + UIFont *theFont = self.font; + if (theFont == nil) { + theFont = [UIFont fontWithName:style.fontName size:style.fontSize]; + } [self drawInRect:rect withFont:theFont From 6daccd0f4e33cf3d879f03c5014f43ced91749ab Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 6 Oct 2019 10:30:50 -0400 Subject: [PATCH 108/160] Defined CPTNativeFont to eliminate some conditional compilation blocks. Updated documentation comments and standardized code formatting. --- .../CorePlotGallery/src/plots/FunctionPlot.m | 14 ++--- .../MacOnly/CPTPlatformSpecificDefines.h | 1 + .../MacOnly/CPTTextStylePlatformSpecific.m | 8 +-- framework/Source/CPTMutableTextStyle.h | 6 +- framework/Source/CPTMutableTextStyle.m | 10 ++-- framework/Source/CPTTextStyle.h | 7 +-- framework/Source/CPTTextStyle.m | 55 ++++++++++--------- .../iPhoneOnly/CPTPlatformSpecificDefines.h | 1 + .../iPhoneOnly/CPTTextStylePlatformSpecific.m | 12 ++-- 9 files changed, 53 insertions(+), 61 deletions(-) diff --git a/examples/CorePlotGallery/src/plots/FunctionPlot.m b/examples/CorePlotGallery/src/plots/FunctionPlot.m index 73cffc8c7..398fad0e3 100644 --- a/examples/CorePlotGallery/src/plots/FunctionPlot.m +++ b/examples/CorePlotGallery/src/plots/FunctionPlot.m @@ -6,13 +6,7 @@ @interface FunctionPlot() @property (nonatomic, readwrite, strong) NSMutableSet *dataSources; -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE -typedef UIFont CPTFont; -#else -typedef NSFont CPTFont; -#endif - --(nullable CPTFont *)italicFontForFont:(nonnull CPTFont *)oldFont; +-(nullable CPTNativeFont *)italicFontForFont:(nonnull CPTNativeFont *)oldFont; @end @@ -146,9 +140,9 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT NSMutableAttributedString *title = [[NSMutableAttributedString alloc] initWithString:titleString attributes:textAttributes]; - CPTFont *fontAttribute = textAttributes[NSFontAttributeName]; + CPTNativeFont *fontAttribute = textAttributes[NSFontAttributeName]; if ( fontAttribute ) { - CPTFont *italicFont = [self italicFontForFont:fontAttribute]; + CPTNativeFont *italicFont = [self italicFontForFont:fontAttribute]; [title addAttribute:NSFontAttributeName value:italicFont @@ -158,7 +152,7 @@ -(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withT range:NSMakeRange(8, 1)]; } - CPTFont *labelFont = [CPTFont fontWithName:@"Helvetica" size:self.titleSize * CPTFloat(0.5)]; + CPTNativeFont *labelFont = [CPTNativeFont fontWithName:@"Helvetica" size:self.titleSize * CPTFloat(0.5)]; [title addAttribute:NSFontAttributeName value:labelFont range:NSMakeRange(0, title.length)]; diff --git a/framework/MacOnly/CPTPlatformSpecificDefines.h b/framework/MacOnly/CPTPlatformSpecificDefines.h index 354989f9f..8c9421476 100644 --- a/framework/MacOnly/CPTPlatformSpecificDefines.h +++ b/framework/MacOnly/CPTPlatformSpecificDefines.h @@ -2,3 +2,4 @@ typedef NSImage CPTNativeImage; ///< Platform-native image format. typedef NSEvent CPTNativeEvent; ///< Platform-native OS event. +typedef NSFont CPTNativeFont; ///< Platform-native font. diff --git a/framework/MacOnly/CPTTextStylePlatformSpecific.m b/framework/MacOnly/CPTTextStylePlatformSpecific.m index 28f52cc19..21af2ac93 100644 --- a/framework/MacOnly/CPTTextStylePlatformSpecific.m +++ b/framework/MacOnly/CPTTextStylePlatformSpecific.m @@ -40,7 +40,7 @@ +(nonnull instancetype)textStyleWithAttributes:(nullable CPTDictionary *)attribu NSFont *styleFont = attributes[NSFontAttributeName]; if ( styleFont ) { - newStyle.font = styleFont; + newStyle.font = styleFont; newStyle.fontName = styleFont.fontName; newStyle.fontSize = styleFont.pointSize; } @@ -91,7 +91,7 @@ -(nonnull CPTDictionary *)attributes NSFont *styleFont = self.font; NSString *fontName = self.fontName; - if ( styleFont == nil && fontName ) { + if ((styleFont == nil) && fontName ) { styleFont = [NSFont fontWithName:fontName size:self.fontSize]; } @@ -147,7 +147,7 @@ +(nonnull instancetype)textStyleWithAttributes:(nullable CPTDictionary *)attribu NSFont *styleFont = attributes[NSFontAttributeName]; if ( styleFont ) { - newStyle.font = styleFont; + newStyle.font = styleFont; newStyle.fontName = styleFont.fontName; newStyle.fontSize = styleFont.pointSize; } @@ -246,7 +246,7 @@ -(void)drawInRect:(CGRect)rect withTextStyle:(nullable CPTTextStyle *)style inCo NSFont *theFont = style.font; NSString *fontName = style.fontName; - if ( theFont == nil && fontName ) { + if ((theFont == nil) && fontName ) { theFont = [NSFont fontWithName:fontName size:style.fontSize]; } diff --git a/framework/Source/CPTMutableTextStyle.h b/framework/Source/CPTMutableTextStyle.h index 04d13cd7e..e63ec361f 100644 --- a/framework/Source/CPTMutableTextStyle.h +++ b/framework/Source/CPTMutableTextStyle.h @@ -4,11 +4,7 @@ @interface CPTMutableTextStyle : CPTTextStyle -#if TARGET_OS_SIMULATOR || TARGET_OS_IPHONE || TARGET_OS_TV -@property (readwrite, strong, nonatomic, nullable) UIFont *font; -#else -@property (readwrite, strong, nonatomic, nullable) NSFont *font; -#endif +@property (readwrite, strong, nonatomic, nullable) CPTNativeFont *font; @property (readwrite, copy, nonatomic, nullable) NSString *fontName; @property (readwrite, assign, nonatomic) CGFloat fontSize; @property (readwrite, copy, nonatomic, nullable) CPTColor *color; diff --git a/framework/Source/CPTMutableTextStyle.m b/framework/Source/CPTMutableTextStyle.m index f08ff06bc..81c3b211b 100644 --- a/framework/Source/CPTMutableTextStyle.m +++ b/framework/Source/CPTMutableTextStyle.m @@ -7,18 +7,20 @@ @implementation CPTMutableTextStyle -/** @property UIFont* or NSFont* font - * @brief The font. Default is nil +/** @property CPTNativeFont* font + * @brief The font. Default is nil. + * + * Font will override fontName and fontSize if not @nil. **/ @synthesize font; /** @property CGFloat fontSize - * @brief The font size. Default is @num{12.0}. + * @brief The font size. Default is @num{12.0}. Ignored if font is not @nil. **/ @dynamic fontSize; /** @property nullable NSString *fontName - * @brief The font name. Default is Helvetica. + * @brief The font name. Default is Helvetica. Ignored if font is not @nil. **/ @dynamic fontName; diff --git a/framework/Source/CPTTextStyle.h b/framework/Source/CPTTextStyle.h index f5dbf6eb4..df94cd374 100644 --- a/framework/Source/CPTTextStyle.h +++ b/framework/Source/CPTTextStyle.h @@ -1,4 +1,5 @@ #import "CPTDefinitions.h" +#import "CPTPlatformSpecificDefines.h" #import "CPTTextStylePlatformSpecific.h" @class CPTColor; @@ -17,11 +18,7 @@ typedef NSMutableArray CPTMutableTextStyleArray; @interface CPTTextStyle : NSObject // font would override fontName/fontSize if not nil -#if TARGET_OS_SIMULATOR || TARGET_OS_IPHONE || TARGET_OS_TV -@property (readonly, strong, nonatomic, nullable) UIFont *font; -#else -@property (readonly, strong, nonatomic, nullable) NSFont *font; -#endif +@property (readonly, strong, nonatomic, nullable) CPTNativeFont *font; @property (readonly, copy, nonatomic, nullable) NSString *fontName; @property (readonly, nonatomic) CGFloat fontSize; @property (readonly, copy, nonatomic, nullable) CPTColor *color; diff --git a/framework/Source/CPTTextStyle.m b/framework/Source/CPTTextStyle.m index d23304a30..42507263b 100644 --- a/framework/Source/CPTTextStyle.m +++ b/framework/Source/CPTTextStyle.m @@ -8,11 +8,7 @@ @interface CPTTextStyle() // font would override fontName/fontSize if not nil -#if TARGET_OS_SIMULATOR || TARGET_OS_IPHONE || TARGET_OS_TV -@property (readwrite, strong, nonatomic, nullable) UIFont *font; -#else -@property (readwrite, strong, nonatomic, nullable) NSFont *font; -#endif +@property (readwrite, strong, nonatomic, nullable) CPTNativeFont *font; @property (readwrite, copy, nonatomic, nullable) NSString *fontName; @property (readwrite, assign, nonatomic) CGFloat fontSize; @property (readwrite, copy, nonatomic, nullable) CPTColor *color; @@ -32,18 +28,20 @@ @interface CPTTextStyle() @implementation CPTTextStyle -/** @property UIFont* or NSFont* font - * @brief The font. Default is nil +/** @property CPTNativeFont* font + * @brief The font. Default is nil. + * + * Font will override fontName and fontSize if not @nil. **/ @synthesize font; /** @property CGFloat fontSize - * @brief The font size. Default is @num{12.0}. + * @brief The font size. Default is @num{12.0}. Ignored if font is not @nil. **/ @synthesize fontSize; /** @property nullable NSString *fontName - * @brief The font name. Default is Helvetica. + * @brief The font name. Default is Helvetica. Ignored if font is not @nil. **/ @synthesize fontName; @@ -84,7 +82,7 @@ +(nonnull instancetype)textStyleWithStyle:(nullable CPTTextStyle *)textStyle { CPTTextStyle *newTextStyle = [[self alloc] init]; - newTextStyle.font = textStyle.font; + newTextStyle.font = textStyle.font; newTextStyle.color = textStyle.color; newTextStyle.fontName = textStyle.fontName; newTextStyle.fontSize = textStyle.fontSize; @@ -115,7 +113,7 @@ +(nonnull instancetype)textStyleWithStyle:(nullable CPTTextStyle *)textStyle -(nonnull instancetype)init { if ((self = [super init])) { - font = nil; + font = nil; fontName = @"Helvetica"; fontSize = CPTFloat(12.0); color = [CPTColor blackColor]; @@ -134,16 +132,16 @@ -(nonnull instancetype)init -(void)encodeWithCoder:(nonnull NSCoder *)coder { - #if TARGET_OS_SIMULATOR || TARGET_OS_IPHONE || TARGET_OS_TV - if(self.font) { - //UIFont does not support NSCoding :( +#if TARGET_OS_SIMULATOR || TARGET_OS_IPHONE || TARGET_OS_TV + if ( self.font ) { + // UIFont does not support NSCoding :( [coder encodeObject:[self.font fontDescriptor] forKey:@"CPTTextStyle.font+descriptor"]; } - #else +#else // NSFont supports NSCoding :) - [coder encodeObject:self.font forKey:@"CPTTextStyle.font"]; - #endif - + [coder encodeObject:self.font forKey:@"CPTTextStyle.font"]; +#endif + [coder encodeObject:self.fontName forKey:@"CPTTextStyle.fontName"]; [coder encodeCGFloat:self.fontSize forKey:@"CPTTextStyle.fontSize"]; [coder encodeObject:self.color forKey:@"CPTTextStyle.color"]; @@ -154,16 +152,19 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { if ((self = [super init])) { - - #if TARGET_OS_SIMULATOR || TARGET_OS_IPHONE || TARGET_OS_TV - //UIFont does not support NSCoding :( - UIFontDescriptor *fontDescriptor = [coder decodeObjectOfClass:[UIFontDescriptor class] forKey:@"CPTTextStyle.font+descriptor"]; - font = [UIFont fontWithDescriptor:fontDescriptor size:0]; // 0 will keep the same font size - #else +#if TARGET_OS_SIMULATOR || TARGET_OS_IPHONE || TARGET_OS_TV + // UIFont does not support NSCoding :( + UIFontDescriptor *fontDescriptor = [coder decodeObjectOfClass:[UIFontDescriptor class] + forKey:@"CPTTextStyle.font+descriptor"]; + if ( fontDescriptor ) { + font = [UIFont fontWithDescriptor:fontDescriptor size:0]; // 0 will keep the same font size + } +#else // NSFont supports NSCoding :) - font = [coder decodeObjectOfClass:[NSFont class] forKey:@"CPTTextStyle.font"]; - #endif - + font = [coder decodeObjectOfClass:[NSFont class] + forKey:@"CPTTextStyle.font"]; +#endif + fontName = [[coder decodeObjectOfClass:[NSString class] forKey:@"CPTTextStyle.fontName"] copy]; fontSize = [coder decodeCGFloatForKey:@"CPTTextStyle.fontSize"]; diff --git a/framework/iPhoneOnly/CPTPlatformSpecificDefines.h b/framework/iPhoneOnly/CPTPlatformSpecificDefines.h index 9b84d0d86..985ed3b6f 100644 --- a/framework/iPhoneOnly/CPTPlatformSpecificDefines.h +++ b/framework/iPhoneOnly/CPTPlatformSpecificDefines.h @@ -2,3 +2,4 @@ typedef UIImage CPTNativeImage; ///< Platform-native image format. typedef UIEvent CPTNativeEvent; ///< Platform-native OS event. +typedef UIFont CPTNativeFont; ///< Platform-native font. diff --git a/framework/iPhoneOnly/CPTTextStylePlatformSpecific.m b/framework/iPhoneOnly/CPTTextStylePlatformSpecific.m index 27fb83cc0..c2602bbc6 100644 --- a/framework/iPhoneOnly/CPTTextStylePlatformSpecific.m +++ b/framework/iPhoneOnly/CPTTextStylePlatformSpecific.m @@ -42,7 +42,7 @@ +(nonnull instancetype)textStyleWithAttributes:(nullable CPTDictionary *)attribu UIFont *styleFont = attributes[NSFontAttributeName]; if ( styleFont ) { - newStyle.font = styleFont; + newStyle.font = styleFont; newStyle.fontName = styleFont.fontName; newStyle.fontSize = styleFont.pointSize; } @@ -76,7 +76,7 @@ -(nonnull CPTDictionary *)attributes UIFont *styleFont = self.font; NSString *fontName = self.fontName; - if ( styleFont == nil && fontName ) { + if ((styleFont == nil) && fontName ) { styleFont = [UIFont fontWithName:fontName size:self.fontSize]; } @@ -133,7 +133,7 @@ +(nonnull instancetype)textStyleWithAttributes:(nullable CPTDictionary *)attribu UIFont *styleFont = attributes[NSFontAttributeName]; if ( styleFont ) { - newStyle.font = styleFont; + newStyle.font = styleFont; newStyle.fontName = styleFont.fontName; newStyle.fontSize = styleFont.pointSize; } @@ -227,7 +227,7 @@ -(void)drawInRect:(CGRect)rect withTextStyle:(nullable CPTTextStyle *)style inCo UIFont *theFont = style.font; NSString *fontName = style.fontName; - if (theFont == nil && fontName ) { + if ((theFont == nil) && fontName ) { theFont = [UIFont fontWithName:fontName size:style.fontSize]; } @@ -243,8 +243,8 @@ -(void)drawInRect:(CGRect)rect withTextStyle:(nullable CPTTextStyle *)style inCo UIColor *styleColor = style.attributes[NSForegroundColorAttributeName]; [styleColor set]; - UIFont *theFont = self.font; - if (theFont == nil) { + UIFont *theFont = self.font; + if ( theFont == nil ) { theFont = [UIFont fontWithName:style.fontName size:style.fontSize]; } From 5c82084a2006bb0f82ed9153d81e6136dcaeb723 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 6 Oct 2019 10:32:43 -0400 Subject: [PATCH 109/160] =?UTF-8?q?Added=20Aur=C3=A9lien=20Hugel=C3=A9=20t?= =?UTF-8?q?o=20the=20license=20file.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- License.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/License.txt b/License.txt index 0cf1dfdfd..8372ff9de 100644 --- a/License.txt +++ b/License.txt @@ -1,4 +1,4 @@ -Copyright (c) 2019, Drew McCormack, Brad Larson, Eric Skroch, Barry Wark, Dirkjan Krijnders, Rick Maddy, Vijay Kalusani, Caleb Cannon, Jeff Buck, Thomas Elstner, Jeroen Leenarts, Craig Hockenberry, Hartwig Wiesmann, Koen van der Drift, Nino Ag, Mike Lischke, Trevor Harmon, Travis Fischer, Graham Mueller, Rafał Wójcik, Mike Rossetti, Michael Merickel, Lane Roathe, Ingmar Stein, Sean Holbert, Victor Martin Garcia, Jérôme Morissard, Demitri Muna, Tim Monzures, Kirill Yakimovich, Tom Izaks, Pascal Freiburghaus, and Fred Potter. +Copyright (c) 2019, Drew McCormack, Brad Larson, Eric Skroch, Barry Wark, Dirkjan Krijnders, Rick Maddy, Vijay Kalusani, Caleb Cannon, Jeff Buck, Thomas Elstner, Jeroen Leenarts, Craig Hockenberry, Hartwig Wiesmann, Koen van der Drift, Nino Ag, Mike Lischke, Trevor Harmon, Travis Fischer, Graham Mueller, Rafał Wójcik, Mike Rossetti, Michael Merickel, Lane Roathe, Ingmar Stein, Sean Holbert, Victor Martin Garcia, Jérôme Morissard, Demitri Muna, Tim Monzures, Kirill Yakimovich, Tom Izaks, Pascal Freiburghaus, Fred Potter, and Aurélien Hugelé. All rights reserved. From fe94a3d05462a121235b1eef22a4a6d860432ce3 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 6 Oct 2019 10:51:15 -0400 Subject: [PATCH 110/160] Use CPTNativeFont to avoid conditional compilation. --- examples/CorePlotGallery/src/plots/SimplePieChart.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/CorePlotGallery/src/plots/SimplePieChart.m b/examples/CorePlotGallery/src/plots/SimplePieChart.m index 1e1cd8579..b035b891d 100644 --- a/examples/CorePlotGallery/src/plots/SimplePieChart.m +++ b/examples/CorePlotGallery/src/plots/SimplePieChart.m @@ -191,11 +191,11 @@ -(NSAttributedString *)attributedLegendTitleForPieChart:(nonnull CPTPieChart *)p { #if TARGET_OS_SIMULATOR || TARGET_OS_IPHONE UIColor *sliceColor = [CPTPieChart defaultPieSliceColorForIndex:index].uiColor; - UIFont *labelFont = [UIFont fontWithName:@"Helvetica" size:self.titleSize * CPTFloat(0.5)]; #else NSColor *sliceColor = [CPTPieChart defaultPieSliceColorForIndex:index].nsColor; - NSFont *labelFont = [NSFont fontWithName:@"Helvetica" size:self.titleSize * CPTFloat(0.5)]; #endif + CPTNativeFont *labelFont = [CPTNativeFont fontWithName:@"Helvetica" + size:self.titleSize * CPTFloat(0.5)]; NSMutableAttributedString *title = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"Pie Slice %lu", (unsigned long)index]]; [title addAttribute:NSForegroundColorAttributeName From 6aec78e11f2588fadca041773ee55600f6fa90ee Mon Sep 17 00:00:00 2001 From: Pascal Freiburghaus Date: Mon, 14 Oct 2019 15:01:54 +0200 Subject: [PATCH 111/160] Fixing issue introduced with checkin 9c2edaece9331acaf15a63ff2e564e5854267d48. Probably caused by copying and pasting code. Generating an image of the context led to an empty graph. --- framework/Source/CPTGraph.m | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/framework/Source/CPTGraph.m b/framework/Source/CPTGraph.m index 0b740002a..9255efe02 100644 --- a/framework/Source/CPTGraph.m +++ b/framework/Source/CPTGraph.m @@ -397,22 +397,22 @@ -(void)layoutAndRenderInContext:(nonnull CGContextRef)context #else if ( @available(iOS 13, *)) { if ( [UITraitCollection instancesRespondToSelector:@selector(performAsCurrentTraitCollection:)] ) { - UITraitCollection *traitCollection = ((UIView *)self.graph.hostingView).traitCollection; + UITraitCollection *traitCollection = ((UIView *)self.hostingView).traitCollection; if ( traitCollection ) { [traitCollection performAsCurrentTraitCollection: ^{ - [super display]; + [super layoutAndRenderInContext:context]; }]; } else { - [super display]; + [super layoutAndRenderInContext:context]; } } else { - [super display]; + [super layoutAndRenderInContext:context]; } } else { - [super display]; + [super layoutAndRenderInContext:context]; } #endif #pragma clang diagnostic pop From 4422adec51bc1d482aeb754ac3ea5764c84e0b02 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Wed, 16 Oct 2019 09:42:18 -0400 Subject: [PATCH 112/160] Removed deprecated launch images from the iOS example apps. --- .../AAPLot/AAPLot.xcodeproj/project.pbxproj | 2 - .../AAPLot/Images.xcassets/Contents.json | 6 + .../LaunchImage.launchimage/Contents.json | 142 ------------------ .../StockPlot.xcodeproj/project.pbxproj | 2 - .../LaunchImage.launchimage/Contents.json | 66 -------- 5 files changed, 6 insertions(+), 212 deletions(-) create mode 100644 examples/AAPLot/AAPLot/Images.xcassets/Contents.json delete mode 100644 examples/AAPLot/AAPLot/Images.xcassets/LaunchImage.launchimage/Contents.json delete mode 100644 examples/StockPlot/StockPlot/Images.xcassets/LaunchImage.launchimage/Contents.json diff --git a/examples/AAPLot/AAPLot.xcodeproj/project.pbxproj b/examples/AAPLot/AAPLot.xcodeproj/project.pbxproj index d7f4398f2..da23a666c 100644 --- a/examples/AAPLot/AAPLot.xcodeproj/project.pbxproj +++ b/examples/AAPLot/AAPLot.xcodeproj/project.pbxproj @@ -467,7 +467,6 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; CLANG_ENABLE_OBJC_ARC = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -493,7 +492,6 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; CLANG_ENABLE_OBJC_ARC = YES; CODE_SIGN_IDENTITY = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; diff --git a/examples/AAPLot/AAPLot/Images.xcassets/Contents.json b/examples/AAPLot/AAPLot/Images.xcassets/Contents.json new file mode 100644 index 000000000..da4a164c9 --- /dev/null +++ b/examples/AAPLot/AAPLot/Images.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/examples/AAPLot/AAPLot/Images.xcassets/LaunchImage.launchimage/Contents.json b/examples/AAPLot/AAPLot/Images.xcassets/LaunchImage.launchimage/Contents.json deleted file mode 100644 index 3dd8aa5b6..000000000 --- a/examples/AAPLot/AAPLot/Images.xcassets/LaunchImage.launchimage/Contents.json +++ /dev/null @@ -1,142 +0,0 @@ -{ - "images" : [ - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "minimum-system-version" : "8.0", - "subtype" : "736h", - "scale" : "3x" - }, - { - "orientation" : "landscape", - "idiom" : "iphone", - "extent" : "full-screen", - "minimum-system-version" : "8.0", - "subtype" : "736h", - "scale" : "3x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "minimum-system-version" : "8.0", - "subtype" : "667h", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "subtype" : "retina4", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "1x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "1x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "2x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "scale" : "1x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "subtype" : "retina4", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "to-status-bar", - "scale" : "1x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "full-screen", - "scale" : "1x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "to-status-bar", - "scale" : "1x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "full-screen", - "scale" : "1x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "to-status-bar", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "full-screen", - "scale" : "2x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "to-status-bar", - "scale" : "2x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "full-screen", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/examples/StockPlot/StockPlot.xcodeproj/project.pbxproj b/examples/StockPlot/StockPlot.xcodeproj/project.pbxproj index 2887c434b..b3f6867bd 100644 --- a/examples/StockPlot/StockPlot.xcodeproj/project.pbxproj +++ b/examples/StockPlot/StockPlot.xcodeproj/project.pbxproj @@ -440,7 +440,6 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; CLANG_ENABLE_OBJC_ARC = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -462,7 +461,6 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; CLANG_ENABLE_OBJC_ARC = YES; CODE_SIGN_IDENTITY = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; diff --git a/examples/StockPlot/StockPlot/Images.xcassets/LaunchImage.launchimage/Contents.json b/examples/StockPlot/StockPlot/Images.xcassets/LaunchImage.launchimage/Contents.json deleted file mode 100644 index e6c8ec6a6..000000000 --- a/examples/StockPlot/StockPlot/Images.xcassets/LaunchImage.launchimage/Contents.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "images" : [ - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "minimum-system-version" : "8.0", - "subtype" : "736h", - "scale" : "3x" - }, - { - "orientation" : "landscape", - "idiom" : "iphone", - "extent" : "full-screen", - "minimum-system-version" : "8.0", - "subtype" : "736h", - "scale" : "3x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "minimum-system-version" : "8.0", - "subtype" : "667h", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "subtype" : "retina4", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "scale" : "1x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "subtype" : "retina4", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file From 5f0bb54ade5795c60542b30675ed9498f85759f7 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Wed, 16 Oct 2019 09:49:25 -0400 Subject: [PATCH 113/160] Removed deprecated launch images from the iOS example apps. --- .../Images.xcassets/Contents.json | 6 + .../LaunchImage.launchimage/Contents.json | 142 ------------------ 2 files changed, 6 insertions(+), 142 deletions(-) create mode 100644 examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/Contents.json delete mode 100644 examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/LaunchImage.launchimage/Contents.json diff --git a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/Contents.json b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/Contents.json new file mode 100644 index 000000000..da4a164c9 --- /dev/null +++ b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/LaunchImage.launchimage/Contents.json b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/LaunchImage.launchimage/Contents.json deleted file mode 100644 index 3dd8aa5b6..000000000 --- a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/LaunchImage.launchimage/Contents.json +++ /dev/null @@ -1,142 +0,0 @@ -{ - "images" : [ - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "minimum-system-version" : "8.0", - "subtype" : "736h", - "scale" : "3x" - }, - { - "orientation" : "landscape", - "idiom" : "iphone", - "extent" : "full-screen", - "minimum-system-version" : "8.0", - "subtype" : "736h", - "scale" : "3x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "minimum-system-version" : "8.0", - "subtype" : "667h", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "subtype" : "retina4", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "1x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "1x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "2x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "full-screen", - "minimum-system-version" : "7.0", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "scale" : "1x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "extent" : "full-screen", - "subtype" : "retina4", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "to-status-bar", - "scale" : "1x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "full-screen", - "scale" : "1x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "to-status-bar", - "scale" : "1x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "full-screen", - "scale" : "1x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "to-status-bar", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "ipad", - "extent" : "full-screen", - "scale" : "2x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "to-status-bar", - "scale" : "2x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", - "extent" : "full-screen", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file From 6cf6b7581f903fcdc06dbaacb2df7b56077bc2f5 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Wed, 16 Oct 2019 09:50:07 -0400 Subject: [PATCH 114/160] Fixed code signing warning in the iOS CPTTestApp example apps. --- .../CPTTestApp-iPad.xcodeproj/project.pbxproj | 7 +++++++ .../CPTTestApp-iPhone.xcodeproj/project.pbxproj | 5 +++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/examples/CPTTestApp-iPad/CPTTestApp-iPad.xcodeproj/project.pbxproj b/examples/CPTTestApp-iPad/CPTTestApp-iPad.xcodeproj/project.pbxproj index c58beb82c..08fe16ad4 100644 --- a/examples/CPTTestApp-iPad/CPTTestApp-iPad.xcodeproj/project.pbxproj +++ b/examples/CPTTestApp-iPad/CPTTestApp-iPad.xcodeproj/project.pbxproj @@ -235,6 +235,11 @@ isa = PBXProject; attributes = { LastUpgradeCheck = 0900; + TargetAttributes = { + 1D6058900D05DD3D006BFB54 = { + DevelopmentTeam = 28ZA45DE7D; + }; + }; }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "CPTTestApp-iPad" */; compatibilityVersion = "Xcode 6.3"; @@ -397,6 +402,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; + DEVELOPMENT_TEAM = 28ZA45DE7D; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -419,6 +425,7 @@ CODE_SIGN_IDENTITY = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=*]" = "iPhone Distribution"; COPY_PHASE_STRIP = YES; + DEVELOPMENT_TEAM = 28ZA45DE7D; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = CPTTestApp_iPad_Prefix.pch; HEADER_SEARCH_PATHS = ""; diff --git a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj index 266632a6c..1cb2ca9d1 100644 --- a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj +++ b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj @@ -249,6 +249,7 @@ LastUpgradeCheck = 0930; TargetAttributes = { 1D6058900D05DD3D006BFB54 = { + DevelopmentTeam = 28ZA45DE7D; LastSwiftMigration = 1020; }; }; @@ -430,10 +431,10 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; CLANG_ENABLE_OBJC_ARC = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; + DEVELOPMENT_TEAM = 28ZA45DE7D; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -459,10 +460,10 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; CLANG_ENABLE_OBJC_ARC = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; COPY_PHASE_STRIP = YES; + DEVELOPMENT_TEAM = 28ZA45DE7D; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = CPTTestApp_iPhone_Prefix.pch; HEADER_SEARCH_PATHS = ""; From ccca1d9b1c0280892065663b3cbaa0a160accfa5 Mon Sep 17 00:00:00 2001 From: Christian Tietze Date: Mon, 28 Oct 2019 09:55:45 +0100 Subject: [PATCH 115/160] remove bridging header in favor of pure Swift imports --- examples/DatePlot/DatePlot-Bridging-Header.h | 1 - examples/DatePlot/DatePlot.xcodeproj/project.pbxproj | 4 ---- examples/DatePlot/Source/DateController.swift | 1 + 3 files changed, 1 insertion(+), 5 deletions(-) delete mode 100644 examples/DatePlot/DatePlot-Bridging-Header.h diff --git a/examples/DatePlot/DatePlot-Bridging-Header.h b/examples/DatePlot/DatePlot-Bridging-Header.h deleted file mode 100644 index cde174e4f..000000000 --- a/examples/DatePlot/DatePlot-Bridging-Header.h +++ /dev/null @@ -1 +0,0 @@ -#import diff --git a/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj b/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj index 769512b3e..b33640023 100644 --- a/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj +++ b/examples/DatePlot/DatePlot.xcodeproj/project.pbxproj @@ -111,7 +111,6 @@ C33E19A7198330CA00182AF2 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = Source/AppDelegate.swift; sourceTree = ""; }; C37A409820E030B500C4FF48 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Base; path = Base.lproj/Info.plist; sourceTree = ""; }; C385066522A9CC740086BAD5 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - C3A1443E197DE35F0048F1FF /* DatePlot-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "DatePlot-Bridging-Header.h"; sourceTree = ""; }; C3A1443F197DE35F0048F1FF /* DateController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = DateController.swift; path = Source/DateController.swift; sourceTree = ""; }; C3C3CBBF19EA07F600A0296A /* CorePlotWarnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = CorePlotWarnings.xcconfig; path = ../../framework/xcconfig/CorePlotWarnings.xcconfig; sourceTree = ""; }; C3D0A1B620E0184100BA2921 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/DatePlot.xib; sourceTree = ""; }; @@ -150,7 +149,6 @@ 080E96DDFE201D6D7F000001 /* Classes */ = { isa = PBXGroup; children = ( - C3A1443E197DE35F0048F1FF /* DatePlot-Bridging-Header.h */, C33E19A7198330CA00182AF2 /* AppDelegate.swift */, C3A1443F197DE35F0048F1FF /* DateController.swift */, ); @@ -437,7 +435,6 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @loader_path/../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "org.CorePlot.${PRODUCT_NAME:identifier}"; PRODUCT_NAME = DatePlot; - SWIFT_OBJC_BRIDGING_HEADER = "DatePlot-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; }; @@ -463,7 +460,6 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @loader_path/../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "org.CorePlot.${PRODUCT_NAME:identifier}"; PRODUCT_NAME = DatePlot; - SWIFT_OBJC_BRIDGING_HEADER = "DatePlot-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_VERSION = 5.0; }; diff --git a/examples/DatePlot/Source/DateController.swift b/examples/DatePlot/Source/DateController.swift index e82b00087..416caa3dc 100644 --- a/examples/DatePlot/Source/DateController.swift +++ b/examples/DatePlot/Source/DateController.swift @@ -1,5 +1,6 @@ import Foundation import Cocoa +import CorePlot class DateController : NSObject, CPTPlotDataSource { private let oneDay : Double = 24 * 60 * 60; From 9aec3d1a87257f4773b7e35ab053f8124b28b630 Mon Sep 17 00:00:00 2001 From: Christian Tietze Date: Mon, 28 Oct 2019 09:55:58 +0100 Subject: [PATCH 116/160] fix the graph now showing in the window at all --- examples/DatePlot/Source/DateController.swift | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/DatePlot/Source/DateController.swift b/examples/DatePlot/Source/DateController.swift index 416caa3dc..feb5470cd 100644 --- a/examples/DatePlot/Source/DateController.swift +++ b/examples/DatePlot/Source/DateController.swift @@ -73,6 +73,8 @@ class DateController : NSObject, CPTPlotDataSource { newGraph.add(dataSourceLinePlot) self.graph = newGraph + + newGraph.reloadData() } func newPlotData() -> [Double] From 68f5e2f705121064f0a5de54998ead709162b6bb Mon Sep 17 00:00:00 2001 From: Christian Tietze Date: Mon, 28 Oct 2019 10:55:54 +0100 Subject: [PATCH 117/160] revert graph reloading because that was not the cause --- examples/DatePlot/Source/DateController.swift | 2 -- 1 file changed, 2 deletions(-) diff --git a/examples/DatePlot/Source/DateController.swift b/examples/DatePlot/Source/DateController.swift index feb5470cd..416caa3dc 100644 --- a/examples/DatePlot/Source/DateController.swift +++ b/examples/DatePlot/Source/DateController.swift @@ -73,8 +73,6 @@ class DateController : NSObject, CPTPlotDataSource { newGraph.add(dataSourceLinePlot) self.graph = newGraph - - newGraph.reloadData() } func newPlotData() -> [Double] From bdb09b944d04920133c627aed1907b0d5e586dfe Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Fri, 15 Nov 2019 16:17:20 -0500 Subject: [PATCH 118/160] Added fillDirection property to the range plot. --- framework/Source/CPTRangePlot.h | 9 +++ framework/Source/CPTRangePlot.m | 117 +++++++++++++++++++++++--------- 2 files changed, 93 insertions(+), 33 deletions(-) diff --git a/framework/Source/CPTRangePlot.h b/framework/Source/CPTRangePlot.h index 538d06f12..11a96b061 100644 --- a/framework/Source/CPTRangePlot.h +++ b/framework/Source/CPTRangePlot.h @@ -33,6 +33,14 @@ typedef NS_ENUM (NSInteger, CPTRangePlotField) { CPTRangePlotFieldRight ///< relative Right values. }; +/** + * @brief Enumeration of range plot data fill directions + **/ +typedef NS_ENUM (NSInteger, CPTRangePlotFillDirection) { + CPTRangePlotFillHorizontal, ///< Fill between the high and low values in a horizontal direction. + CPTRangePlotFillVertical ///< Fill between the left and right values in a vertical direction. +}; + #pragma mark - /** @@ -159,6 +167,7 @@ typedef NS_ENUM (NSInteger, CPTRangePlotField) { /// @name Drawing /// @{ +@property (nonatomic, readwrite) CPTRangePlotFillDirection fillDirection; @property (nonatomic, copy, nullable) CPTFill *areaFill; @property (nonatomic, readwrite, copy, nullable) CPTLineStyle *areaBorderLineStyle; /// @} diff --git a/framework/Source/CPTRangePlot.m b/framework/Source/CPTRangePlot.m index 60249e1f2..0a108f428 100644 --- a/framework/Source/CPTRangePlot.m +++ b/framework/Source/CPTRangePlot.m @@ -89,6 +89,12 @@ @implementation CPTRangePlot @dynamic rightValues; @dynamic barLineStyles; +/** @property CPTRangePlotFillDirection fillDirection + * @brief Fill the range in a horizontal or vertical direction. + * Default is CPTRangePlotFillHorizontal. + **/ +@synthesize fillDirection; + /** @property CPTFill *areaFill * @brief The fill used to render the area. * Set to @nil to have no fill. Default is @nil. @@ -174,6 +180,7 @@ -(nonnull instancetype)initWithFrame:(CGRect)newFrame { if ((self = [super initWithFrame:newFrame])) { barLineStyle = [[CPTLineStyle alloc] init]; + fillDirection = CPTRangePlotFillHorizontal; areaFill = nil; areaBorderLineStyle = nil; @@ -194,6 +201,7 @@ -(nonnull instancetype)initWithLayer:(nonnull id)layer CPTRangePlot *theLayer = (CPTRangePlot *)layer; barLineStyle = theLayer->barLineStyle; + fillDirection = theLayer->fillDirection; areaFill = theLayer->areaFill; areaBorderLineStyle = theLayer->areaBorderLineStyle; @@ -217,6 +225,7 @@ -(void)encodeWithCoder:(nonnull NSCoder *)coder [coder encodeCGFloat:self.barWidth forKey:@"CPTRangePlot.barWidth"]; [coder encodeCGFloat:self.gapHeight forKey:@"CPTRangePlot.gapHeight"]; [coder encodeCGFloat:self.gapWidth forKey:@"CPTRangePlot.gapWidth"]; + [coder encodeInteger:self.fillDirection forKey:@"CPTRangePlot.fillDirection"]; [coder encodeObject:self.areaFill forKey:@"CPTRangePlot.areaFill"]; [coder encodeObject:self.areaBorderLineStyle forKey:@"CPTRangePlot.areaBorderLineStyle"]; @@ -229,11 +238,12 @@ -(nullable instancetype)initWithCoder:(nonnull NSCoder *)coder if ((self = [super initWithCoder:coder])) { barLineStyle = [[coder decodeObjectOfClass:[CPTLineStyle class] forKey:@"CPTRangePlot.barLineStyle"] copy]; - barWidth = [coder decodeCGFloatForKey:@"CPTRangePlot.barWidth"]; - gapHeight = [coder decodeCGFloatForKey:@"CPTRangePlot.gapHeight"]; - gapWidth = [coder decodeCGFloatForKey:@"CPTRangePlot.gapWidth"]; - areaFill = [[coder decodeObjectOfClass:[CPTFill class] - forKey:@"CPTRangePlot.areaFill"] copy]; + barWidth = [coder decodeCGFloatForKey:@"CPTRangePlot.barWidth"]; + gapHeight = [coder decodeCGFloatForKey:@"CPTRangePlot.gapHeight"]; + gapWidth = [coder decodeCGFloatForKey:@"CPTRangePlot.gapWidth"]; + fillDirection = [coder decodeIntegerForKey:@"CPTRangePlot.fillDirection"]; + areaFill = [[coder decodeObjectOfClass:[CPTFill class] + forKey:@"CPTRangePlot.areaFill"] copy]; areaBorderLineStyle = [[coder decodeObjectOfClass:[CPTLineStyle class] forKey:@"CPTRangePlot.areaBorderLineStyle"] copy]; @@ -669,39 +679,80 @@ -(void)renderAsVectorInContext:(nonnull CGContextRef)context if ( self.areaFill ) { CGMutablePathRef fillPath = CGPathCreateMutable(); - // First do the top points - for ( NSUInteger i = (NSUInteger)firstDrawnPointIndex; i <= (NSUInteger)lastDrawnPointIndex; i++ ) { - CGFloat x = viewPoints[i].x; - CGFloat y = viewPoints[i].high; - if ( isnan(y)) { - y = viewPoints[i].y; - } - - if ( !isnan(x) && !isnan(y)) { - if ( i == (NSUInteger)firstDrawnPointIndex ) { - CGPathMoveToPoint(fillPath, NULL, x, y); + switch ( self.fillDirection ) { + case CPTRangePlotFillHorizontal: + // First do the top points + for ( NSUInteger i = (NSUInteger)firstDrawnPointIndex; i <= (NSUInteger)lastDrawnPointIndex; i++ ) { + CGFloat x = viewPoints[i].x; + CGFloat y = viewPoints[i].high; + if ( isnan(y)) { + y = viewPoints[i].y; + } + + if ( !isnan(x) && !isnan(y)) { + if ( i == (NSUInteger)firstDrawnPointIndex ) { + CGPathMoveToPoint(fillPath, NULL, x, y); + } + else { + CGPathAddLineToPoint(fillPath, NULL, x, y); + } + } } - else { - CGPathAddLineToPoint(fillPath, NULL, x, y); + + // Then reverse over bottom points + for ( NSUInteger j = (NSUInteger)lastDrawnPointIndex; j >= (NSUInteger)firstDrawnPointIndex; j-- ) { + CGFloat x = viewPoints[j].x; + CGFloat y = viewPoints[j].low; + if ( isnan(y)) { + y = viewPoints[j].y; + } + + if ( !isnan(x) && !isnan(y)) { + CGPathAddLineToPoint(fillPath, NULL, x, y); + } + if ( j == (NSUInteger)firstDrawnPointIndex ) { + // This could be done a bit more elegant + break; + } } - } - } + break; - // Then reverse over bottom points - for ( NSUInteger j = (NSUInteger)lastDrawnPointIndex; j >= (NSUInteger)firstDrawnPointIndex; j-- ) { - CGFloat x = viewPoints[j].x; - CGFloat y = viewPoints[j].low; - if ( isnan(y)) { - y = viewPoints[j].y; - } + case CPTRangePlotFillVertical: + // First do the left points + for ( NSUInteger i = (NSUInteger)firstDrawnPointIndex; i <= (NSUInteger)lastDrawnPointIndex; i++ ) { + CGFloat x = viewPoints[i].left; + CGFloat y = viewPoints[i].y; + if ( isnan(x)) { + y = viewPoints[i].x; + } + + if ( !isnan(x) && !isnan(y)) { + if ( i == (NSUInteger)firstDrawnPointIndex ) { + CGPathMoveToPoint(fillPath, NULL, x, y); + } + else { + CGPathAddLineToPoint(fillPath, NULL, x, y); + } + } + } - if ( !isnan(x) && !isnan(y)) { - CGPathAddLineToPoint(fillPath, NULL, x, y); - } - if ( j == (NSUInteger)firstDrawnPointIndex ) { - // This could be done a bit more elegant + // Then reverse over right points + for ( NSUInteger j = (NSUInteger)lastDrawnPointIndex; j >= (NSUInteger)firstDrawnPointIndex; j-- ) { + CGFloat x = viewPoints[j].right; + CGFloat y = viewPoints[j].y; + if ( isnan(x)) { + y = viewPoints[j].x; + } + + if ( !isnan(x) && !isnan(y)) { + CGPathAddLineToPoint(fillPath, NULL, x, y); + } + if ( j == (NSUInteger)firstDrawnPointIndex ) { + // This could be done a bit more elegant + break; + } + } break; - } } // Close the path to have a closed loop From 8fd6a9f5fdc0e784214c5a56371dc31ed4990161 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 17 Nov 2019 08:51:51 -0500 Subject: [PATCH 119/160] Removed unnecessary semicolons from Swift code to standardize code formatting. --- examples/DatePlot/Source/DateController.swift | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/DatePlot/Source/DateController.swift b/examples/DatePlot/Source/DateController.swift index 416caa3dc..fa77a2a96 100644 --- a/examples/DatePlot/Source/DateController.swift +++ b/examples/DatePlot/Source/DateController.swift @@ -3,7 +3,7 @@ import Cocoa import CorePlot class DateController : NSObject, CPTPlotDataSource { - private let oneDay : Double = 24 * 60 * 60; + private let oneDay : Double = 24 * 60 * 60 @IBOutlet var hostView : CPTGraphHostingView? = nil @@ -29,7 +29,7 @@ class DateController : NSObject, CPTPlotDataSource { newGraph.apply(theme) if let host = self.hostView { - host.hostedGraph = newGraph; + host.hostedGraph = newGraph } // Setup scatter plot space @@ -43,12 +43,12 @@ class DateController : NSObject, CPTPlotDataSource { if let x = axisSet.xAxis { x.majorIntervalLength = oneDay as NSNumber x.orthogonalPosition = 2.0 - x.minorTicksPerInterval = 0; + x.minorTicksPerInterval = 0 let dateFormatter = DateFormatter() dateFormatter.dateStyle = .short let timeFormatter = CPTTimeFormatter(dateFormatter:dateFormatter) - timeFormatter.referenceDate = refDate; - x.labelFormatter = timeFormatter; + timeFormatter.referenceDate = refDate + x.labelFormatter = timeFormatter } if let y = axisSet.yAxis { From 1cd597b6fa266af545ec1b54a3fcd9861c8d0e7d Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Thu, 28 Nov 2019 09:03:50 -0500 Subject: [PATCH 120/160] Updated code formatting with Uncrustify 0.70.1. --- examples/CPTTestApp/Source/RotationView.h | 1 + .../src/plots/SteppedScatterPlot.h | 1 + .../src/plots/VerticalBarChart.m | 1 + framework/Source/CPTColor.m | 1 + framework/Source/CPTDefinitions.h | 2 +- framework/Source/CPTNumericDataType.h | 2 +- framework/Source/CPTPieChart.h | 2 +- framework/Source/CPTPlotRange.h | 2 +- scripts/uncrustify.cfg | 47 +++++++++++++++++-- 9 files changed, 51 insertions(+), 8 deletions(-) diff --git a/examples/CPTTestApp/Source/RotationView.h b/examples/CPTTestApp/Source/RotationView.h index 80f9a40eb..0ec33c63c 100644 --- a/examples/CPTTestApp/Source/RotationView.h +++ b/examples/CPTTestApp/Source/RotationView.h @@ -17,4 +17,5 @@ @protocol CPTRotationDelegate -(void)rotateObjectUsingTransform:(CATransform3D)rotationTransform; + @end diff --git a/examples/CorePlotGallery/src/plots/SteppedScatterPlot.h b/examples/CorePlotGallery/src/plots/SteppedScatterPlot.h index 00d6bf568..4d8d78d2e 100644 --- a/examples/CorePlotGallery/src/plots/SteppedScatterPlot.h +++ b/examples/CorePlotGallery/src/plots/SteppedScatterPlot.h @@ -8,4 +8,5 @@ @interface SteppedScatterPlot : PlotItem + @end diff --git a/examples/CorePlotGallery/src/plots/VerticalBarChart.m b/examples/CorePlotGallery/src/plots/VerticalBarChart.m index 1d725736e..a61bf7fee 100644 --- a/examples/CorePlotGallery/src/plots/VerticalBarChart.m +++ b/examples/CorePlotGallery/src/plots/VerticalBarChart.m @@ -10,6 +10,7 @@ @interface VerticalBarChart() @property (nonatomic, readwrite, strong, nullable) CPTPlotSpaceAnnotation *symbolTextAnnotation; + @end @implementation VerticalBarChart diff --git a/framework/Source/CPTColor.m b/framework/Source/CPTColor.m index a45090e10..3157f9a4c 100644 --- a/framework/Source/CPTColor.m +++ b/framework/Source/CPTColor.m @@ -14,6 +14,7 @@ @interface CPTColor() #elif TARGET_OS_SIMULATOR || TARGET_OS_IPHONE @property (nonatomic, readonly, nullable) UIColor *uiColorCache; #endif + @end /// @endcond diff --git a/framework/Source/CPTDefinitions.h b/framework/Source/CPTDefinitions.h index f282f88b3..61e4648aa 100644 --- a/framework/Source/CPTDefinitions.h +++ b/framework/Source/CPTDefinitions.h @@ -168,7 +168,7 @@ CPTRGBAColor; /** * @brief Enumeration of label positioning offset directions **/ -typedef NS_CLOSED_ENUM (NSInteger, CPTSign) { +typedef NS_CLOSED_ENUM(NSInteger, CPTSign) { CPTSignNone = 0, ///< No offset CPTSignPositive = +1, ///< Positive offset CPTSignNegative = -1 ///< Negative offset diff --git a/framework/Source/CPTNumericDataType.h b/framework/Source/CPTNumericDataType.h index bee60899c..0898f7b60 100644 --- a/framework/Source/CPTNumericDataType.h +++ b/framework/Source/CPTNumericDataType.h @@ -16,7 +16,7 @@ typedef NS_ENUM (NSInteger, CPTDataTypeFormat) { * @brief Enumeration of memory arrangements for multi-dimensional data arrays. * @see See Wikipedia for more information. **/ -typedef NS_CLOSED_ENUM (NSInteger, CPTDataOrder) { +typedef NS_CLOSED_ENUM(NSInteger, CPTDataOrder) { CPTDataOrderRowsFirst, ///< Numeric data is arranged in row-major order. CPTDataOrderColumnsFirst ///< Numeric data is arranged in column-major order. }; diff --git a/framework/Source/CPTPieChart.h b/framework/Source/CPTPieChart.h index 079cac20b..3d568bb59 100644 --- a/framework/Source/CPTPieChart.h +++ b/framework/Source/CPTPieChart.h @@ -33,7 +33,7 @@ typedef NS_ENUM (NSInteger, CPTPieChartField) { /** * @brief Enumeration of pie slice drawing directions. **/ -typedef NS_CLOSED_ENUM (NSInteger, CPTPieDirection) { +typedef NS_CLOSED_ENUM(NSInteger, CPTPieDirection) { CPTPieDirectionClockwise, ///< Pie slices are drawn in a clockwise direction. CPTPieDirectionCounterClockwise ///< Pie slices are drawn in a counter-clockwise direction. }; diff --git a/framework/Source/CPTPlotRange.h b/framework/Source/CPTPlotRange.h index ce6fbb8f7..9a3460e96 100644 --- a/framework/Source/CPTPlotRange.h +++ b/framework/Source/CPTPlotRange.h @@ -7,7 +7,7 @@ /** * @brief Enumeration of possible results of a plot range comparison. **/ -typedef NS_CLOSED_ENUM (NSInteger, CPTPlotRangeComparisonResult) { +typedef NS_CLOSED_ENUM(NSInteger, CPTPlotRangeComparisonResult) { CPTPlotRangeComparisonResultNumberBelowRange, ///< Number is below the range. CPTPlotRangeComparisonResultNumberInRange, ///< Number is in the range. CPTPlotRangeComparisonResultNumberAboveRange, ///< Number is above the range. diff --git a/scripts/uncrustify.cfg b/scripts/uncrustify.cfg index 4def42781..adf13c0dd 100644 --- a/scripts/uncrustify.cfg +++ b/scripts/uncrustify.cfg @@ -1,4 +1,4 @@ -# Uncrustify-0.69.0 +# Uncrustify_d-0.70.1 newlines = auto input_tab_size = 4 output_tab_size = 4 @@ -12,11 +12,17 @@ enable_digraphs = false utf8_bom = remove utf8_byte = false utf8_force = false +sp_do_brace_open = ignore +sp_brace_close_while = ignore +sp_while_paren_open = ignore sp_arith = force sp_arith_additive = ignore sp_assign = force sp_cpp_lambda_assign = ignore -sp_cpp_lambda_paren = ignore +sp_cpp_lambda_square_paren = ignore +sp_cpp_lambda_square_brace = ignore +sp_cpp_lambda_paren_brace = ignore +sp_cpp_lambda_fparen = ignore sp_assign_default = force sp_before_assign = ignore sp_after_assign = ignore @@ -80,6 +86,8 @@ sp_after_semi = force sp_after_semi_for = force sp_after_semi_for_empty = force sp_before_square = remove +sp_before_vardef_square = remove +sp_before_square_asm_block = ignore sp_before_squares = remove sp_cpp_before_struct_binding = remove sp_inside_square = remove @@ -120,10 +128,12 @@ sp_before_type_brace_init_lst_close = ignore sp_inside_type_brace_init_lst = ignore sp_inside_braces = force sp_inside_braces_empty = remove +sp_trailing_return = remove sp_type_func = force sp_type_brace_init_lst = ignore sp_func_proto_paren = remove sp_func_proto_paren_empty = remove +sp_func_type_paren = remove sp_func_def_paren = remove sp_func_def_paren_empty = remove sp_inside_fparens = remove @@ -262,6 +272,7 @@ indent_shift = false indent_func_def_force_col1 = false indent_func_call_param = false indent_func_def_param = false +indent_func_def_param_paren_pos_threshold = 0 indent_func_proto_param = false indent_func_class_param = false indent_func_ctor_var_param = false @@ -269,11 +280,13 @@ indent_template_param = false indent_func_param_double = false indent_func_const = 1 indent_func_throw = 1 +indent_macro_brace = true indent_member = 1 indent_member_single = false indent_sing_line_comments = 0 indent_relative_single_line_comments = true indent_switch_case = 4 +indent_switch_break_with_case = false indent_switch_pp = true indent_case_shift = 0 indent_case_brace = 0 @@ -328,6 +341,9 @@ nl_for_leave_one_liners = false nl_oc_msg_leave_one_liner = false nl_oc_mdef_brace = force nl_oc_block_brace = remove +nl_oc_before_interface = force +nl_oc_before_implementation = force +nl_oc_before_end = force nl_oc_interface_brace = force nl_oc_implementation_brace = force nl_start_of_file = remove @@ -374,6 +390,8 @@ nl_brace_while = force nl_switch_brace = remove nl_synchronized_brace = remove nl_multi_line_cond = false +nl_multi_line_sparen_open = ignore +nl_multi_line_sparen_close = ignore nl_multi_line_define = false nl_before_case = true nl_after_case = true @@ -381,6 +399,17 @@ nl_case_colon_brace = force nl_before_throw = force nl_namespace_brace = force nl_template_class = force +nl_template_class_decl = force +nl_template_class_decl_special = force +nl_template_class_def = force +nl_template_class_def_special = force +nl_template_func = force +nl_template_func_decl = ignore +nl_template_func_decl_special = ignore +nl_template_func_def = force +nl_template_func_def_special = force +nl_template_var = ignore +nl_template_using = ignore nl_class_brace = force nl_class_init_args = force nl_constr_init_args = ignore @@ -419,6 +448,9 @@ nl_func_call_start = ignore nl_func_call_start_multi_line = false nl_func_call_args_multi_line = false nl_func_call_end_multi_line = false +nl_template_start = false +nl_template_args = false +nl_template_end = false nl_oc_msg_args = false nl_fdef_brace = force nl_fdef_brace_cond = force @@ -454,6 +486,8 @@ nl_before_do = ignore nl_after_do = ignore nl_before_return = false nl_after_return = true +nl_before_member = ignore +nl_after_member = ignore nl_ds_struct_enum_cmt = false nl_ds_struct_enum_close_brace = false nl_class_colon = remove @@ -463,6 +497,7 @@ nl_create_if_one_liner = true nl_create_for_one_liner = false nl_create_while_one_liner = false nl_create_func_def_one_liner = false +nl_create_list_one_liner = false nl_split_if_one_liner = false nl_split_for_one_liner = false nl_split_while_one_liner = false @@ -495,6 +530,9 @@ nl_after_label_colon = false nl_after_struct = 0 nl_before_class = 0 nl_after_class = 0 +nl_before_namespace = 0 +nl_inside_namespace = 0 +nl_after_namespace = 0 nl_before_access_spec = 2 nl_after_access_spec = 1 nl_comment_func_def = 1 @@ -502,7 +540,6 @@ nl_after_try_catch_finally = 1 nl_around_cs_property = 1 nl_between_get_set = 1 nl_property_brace = ignore -nl_inside_namespace = 0 eat_blanks_after_open_brace = true eat_blanks_before_close_brace = true nl_remove_extra_newlines = 0 @@ -632,6 +669,7 @@ mod_add_long_class_closebrace_comment = 0 mod_add_long_switch_closebrace_comment = 0 mod_add_long_ifdef_endif_comment = 0 mod_add_long_ifdef_else_comment = 0 +mod_sort_case_sensitive = false mod_sort_import = true mod_sort_using = false mod_sort_include = true @@ -668,7 +706,8 @@ include_category_2 = "" use_indent_func_call_param = true use_indent_continue_only_once = false indent_cpp_lambda_only_once = false +use_sp_after_angle_always = false use_options_overriding_for_qt_macros = true warn_level_tabs_found_in_verbatim_string_literals = 2 -# option(s) with 'not default' value: 320 +# option(s) with 'not default' value: 332 # From c47d4f1090b607830e3e6ffd0477c21b0fd62ac8 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Thu, 28 Nov 2019 15:23:46 -0500 Subject: [PATCH 121/160] Removed the -awakeFromNib method from the Mac hosting view because the instance initialization was redundant. --- framework/MacOnly/CPTGraphHostingView.m | 7 ------- 1 file changed, 7 deletions(-) diff --git a/framework/MacOnly/CPTGraphHostingView.m b/framework/MacOnly/CPTGraphHostingView.m index 54a92ae1d..93d2c619f 100644 --- a/framework/MacOnly/CPTGraphHostingView.m +++ b/framework/MacOnly/CPTGraphHostingView.m @@ -91,13 +91,6 @@ -(nonnull CALayer *)makeBackingLayer return [[CPTLayer alloc] initWithFrame:NSRectToCGRect(self.bounds)]; } --(void)awakeFromNib -{ - [super awakeFromNib]; - - [self commonInit]; -} - -(void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; From 0295141c5bbf14cd52e46beb1b1db4e1a5712a5d Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Thu, 5 Dec 2019 19:18:09 -0500 Subject: [PATCH 122/160] Call super in -viewDidChangeBackingProperties in the Mac hosting view. --- framework/MacOnly/CPTGraphHostingView.m | 2 ++ 1 file changed, 2 insertions(+) diff --git a/framework/MacOnly/CPTGraphHostingView.m b/framework/MacOnly/CPTGraphHostingView.m index 93d2c619f..174bd0816 100644 --- a/framework/MacOnly/CPTGraphHostingView.m +++ b/framework/MacOnly/CPTGraphHostingView.m @@ -412,6 +412,8 @@ -(void)scrollWheel:(nonnull NSEvent *)theEvent -(void)viewDidChangeBackingProperties { + [super viewDidChangeBackingProperties]; + NSWindow *myWindow = self.window; if ( myWindow ) { From b8cc8ed590be8bef2bbe96ea27f1fbfec8490ed3 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Thu, 5 Dec 2019 20:10:48 -0500 Subject: [PATCH 123/160] Ensure the image scale is >= 1.0 when rendering layers to an image on the Mac. --- framework/MacOnly/CPTPlatformSpecificCategories.m | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/framework/MacOnly/CPTPlatformSpecificCategories.m b/framework/MacOnly/CPTPlatformSpecificCategories.m index 71ddd9ce1..8b6229cc5 100644 --- a/framework/MacOnly/CPTPlatformSpecificCategories.m +++ b/framework/MacOnly/CPTPlatformSpecificCategories.m @@ -21,7 +21,10 @@ -(nonnull CPTNativeImage *)imageOfLayer if ( [self respondsToSelector:@selector(hostingView)] ) { scale = ((CPTGraph *)self).hostingView.window.backingScaleFactor; } - else { + if ((scale == 0.0) && [CALayer instancesRespondToSelector:@selector(contentsScale)] ) { + scale = self.contentsScale; + } + if ( scale == 0.0 ) { NSWindow *myWindow = self.graph.hostingView.window; if ( myWindow ) { @@ -31,6 +34,7 @@ -(nonnull CPTNativeImage *)imageOfLayer scale = [NSScreen mainScreen].backingScaleFactor; } } + scale = MAX(scale, CPTFloat(1.0)); NSBitmapImageRep *layerImage = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL From 179e0e46d0c2befaa4eda5a0e8c3aa1d79a5ba43 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Thu, 5 Dec 2019 20:12:31 -0500 Subject: [PATCH 124/160] Use numbers for plot identifiers in the plot symbol test in the Mac CPTTestApp example app. --- examples/CPTTestApp/Source/CPTPlotSymbolTestController.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/CPTTestApp/Source/CPTPlotSymbolTestController.m b/examples/CPTTestApp/Source/CPTPlotSymbolTestController.m index 472c6806d..2726d76ae 100644 --- a/examples/CPTTestApp/Source/CPTPlotSymbolTestController.m +++ b/examples/CPTTestApp/Source/CPTPlotSymbolTestController.m @@ -50,7 +50,7 @@ -(void)awakeFromNib // Create a series of plots that uses the data source method for ( NSUInteger i = CPTPlotSymbolTypeNone; i <= CPTPlotSymbolTypeCustom; i++ ) { CPTScatterPlot *dataSourceLinePlot = [[CPTScatterPlot alloc] initWithFrame:newGraph.bounds]; - dataSourceLinePlot.identifier = [NSString stringWithFormat:@"%lu", (unsigned long)i]; + dataSourceLinePlot.identifier = @(i); dataSourceLinePlot.shadow = lineShadow; CPTMutableLineStyle *lineStyle = [dataSourceLinePlot.dataLineStyle mutableCopy]; @@ -82,7 +82,7 @@ -(nullable id)numberForPlot:(nonnull CPTPlot *)plot field:(NSUInteger)fieldEnum break; case CPTScatterPlotFieldY: - num = @(((NSString *)plot.identifier).integerValue); + num = (NSNumber *)plot.identifier; break; default: From 45b7668e009b68fda474122c41a25a8e87294f35 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sat, 21 Dec 2019 12:18:00 -0500 Subject: [PATCH 125/160] Fixed memory management issues with the demo windows in the Mac CPTTestApp example app. --- .../Resources/Base.lproj/AxisDemo.xib | 15 +++-- .../Resources/Base.lproj/CPTTestApp.xib | 48 ++++++++-------- .../Resources/Base.lproj/PlotSymbolDemo.xib | 15 +++-- .../Resources/Base.lproj/SelectionDemo.xib | 15 +++-- examples/CPTTestApp/Source/Controller.m | 56 ++++++++++++++++++- 5 files changed, 105 insertions(+), 44 deletions(-) diff --git a/examples/CPTTestApp/Resources/Base.lproj/AxisDemo.xib b/examples/CPTTestApp/Resources/Base.lproj/AxisDemo.xib index 943805a61..27d0611f4 100644 --- a/examples/CPTTestApp/Resources/Base.lproj/AxisDemo.xib +++ b/examples/CPTTestApp/Resources/Base.lproj/AxisDemo.xib @@ -1,26 +1,29 @@ - - + + - + + + - - + + - + + diff --git a/examples/CPTTestApp/Resources/Base.lproj/CPTTestApp.xib b/examples/CPTTestApp/Resources/Base.lproj/CPTTestApp.xib index 8bec09504..485f2536c 100644 --- a/examples/CPTTestApp/Resources/Base.lproj/CPTTestApp.xib +++ b/examples/CPTTestApp/Resources/Base.lproj/CPTTestApp.xib @@ -1,13 +1,14 @@ - - + + - + + - +

    @@ -558,18 +559,19 @@ + - + - + - - - + - + - - + + - + @@ -657,13 +659,12 @@ - - - + - + @@ -688,7 +689,7 @@ - + @@ -696,7 +697,7 @@ - + @@ -704,15 +705,15 @@ - + - + - - + diff --git a/examples/CPTTestApp/Resources/Base.lproj/PlotSymbolDemo.xib b/examples/CPTTestApp/Resources/Base.lproj/PlotSymbolDemo.xib index bffdf5c16..ce94cac6a 100644 --- a/examples/CPTTestApp/Resources/Base.lproj/PlotSymbolDemo.xib +++ b/examples/CPTTestApp/Resources/Base.lproj/PlotSymbolDemo.xib @@ -1,26 +1,29 @@ - - + + - + + + - - + + - + + diff --git a/examples/CPTTestApp/Resources/Base.lproj/SelectionDemo.xib b/examples/CPTTestApp/Resources/Base.lproj/SelectionDemo.xib index 9dee883b9..c79ae2d56 100644 --- a/examples/CPTTestApp/Resources/Base.lproj/SelectionDemo.xib +++ b/examples/CPTTestApp/Resources/Base.lproj/SelectionDemo.xib @@ -1,26 +1,29 @@ - - + + - + + + - - + + - + + diff --git a/examples/CPTTestApp/Source/Controller.m b/examples/CPTTestApp/Source/Controller.m index 56c4e9371..dc5233bd7 100644 --- a/examples/CPTTestApp/Source/Controller.m +++ b/examples/CPTTestApp/Source/Controller.m @@ -1,5 +1,9 @@ #import "Controller.h" +#import "AxisDemoController.h" +#import "CPTPlotSymbolTestController.h" +#import "SelectionDemoController.h" + static const CGFloat kZDistanceBetweenLayers = 20.0; static NSString *const bindingsPlot = @"Bindings Plot"; @@ -9,10 +13,20 @@ @interface Controller() +-(void)plotSymbolWindowClosed; +-(void)axisDemoWindowClosed; +-(void)selectionDemoWindowClosed; + @property (nonatomic, readwrite, strong, nullable) IBOutlet CPTGraphHostingView *hostView; -@property (nonatomic, readwrite, weak, nullable) IBOutlet NSWindow *plotSymbolWindow; -@property (nonatomic, readwrite, weak, nullable) IBOutlet NSWindow *axisDemoWindow; -@property (nonatomic, readwrite, weak, nullable) IBOutlet NSWindow *selectionDemoWindow; + +@property (nonatomic, readwrite, strong, nullable) IBOutlet NSWindow *plotSymbolWindow; +@property (nonatomic, readwrite, strong, nullable) IBOutlet CPTPlotSymbolTestController *plotSymbolTestController; + +@property (nonatomic, readwrite, strong, nullable) IBOutlet NSWindow *axisDemoWindow; +@property (nonatomic, readwrite, strong, nullable) IBOutlet AxisDemoController *axisDemoController; + +@property (nonatomic, readwrite, strong, nullable) IBOutlet NSWindow *selectionDemoWindow; +@property (nonatomic, readwrite, strong, nullable) IBOutlet SelectionDemoController *selectionDemoController; @property (nonatomic, readwrite, strong, nonnull) CPTXYGraph *graph; @property (nonatomic, readwrite, strong, nullable) RotationView *overlayRotationView; @@ -32,8 +46,11 @@ @implementation Controller @synthesize hostView; @synthesize plotSymbolWindow; +@synthesize plotSymbolTestController; @synthesize axisDemoWindow; +@synthesize axisDemoController; @synthesize selectionDemoWindow; +@synthesize selectionDemoController; @synthesize graph; @synthesize overlayRotationView; @@ -716,6 +733,11 @@ -(IBAction)plotSymbolDemo:(nullable id)sender NSWindow *window = self.plotSymbolWindow; [window makeKeyAndOrderFront:sender]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(plotSymbolWindowClosed) + name:NSWindowWillCloseNotification + object:window]; } -(IBAction)axisDemo:(nullable id)sender @@ -728,6 +750,11 @@ -(IBAction)axisDemo:(nullable id)sender NSWindow *window = self.axisDemoWindow; [window makeKeyAndOrderFront:sender]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(axisDemoWindowClosed) + name:NSWindowWillCloseNotification + object:window]; } -(IBAction)selectionDemo:(nullable id)sender @@ -740,6 +767,29 @@ -(IBAction)selectionDemo:(nullable id)sender NSWindow *window = self.selectionDemoWindow; [window makeKeyAndOrderFront:sender]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(selectionDemoWindowClosed) + name:NSWindowWillCloseNotification + object:window]; +} + +-(void)plotSymbolWindowClosed +{ + self.plotSymbolWindow = nil; + self.plotSymbolTestController = nil; +} + +-(void)axisDemoWindowClosed +{ + self.axisDemoWindow = nil; + self.axisDemoController = nil; +} + +-(void)selectionDemoWindowClosed +{ + self.selectionDemoWindow = nil; + self.selectionDemoController = nil; } #pragma mark - From bb3c62cf4bc17cb81562c74ee03c3ad666e4bec0 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 22 Dec 2019 09:34:22 -0500 Subject: [PATCH 126/160] Added platform-native color init methods to CPTColor. --- .../MacOnly/CPTPlatformSpecificDefines.h | 1 + framework/Source/CPTColor.h | 9 +++- framework/Source/CPTColor.m | 45 ++++++++++++++++--- .../iPhoneOnly/CPTPlatformSpecificDefines.h | 1 + 4 files changed, 50 insertions(+), 6 deletions(-) diff --git a/framework/MacOnly/CPTPlatformSpecificDefines.h b/framework/MacOnly/CPTPlatformSpecificDefines.h index 8c9421476..24d77c3c6 100644 --- a/framework/MacOnly/CPTPlatformSpecificDefines.h +++ b/framework/MacOnly/CPTPlatformSpecificDefines.h @@ -1,5 +1,6 @@ /// @file +typedef NSColor CPTNativeColor; ///< Platform-native color. typedef NSImage CPTNativeImage; ///< Platform-native image format. typedef NSEvent CPTNativeEvent; ///< Platform-native OS event. typedef NSFont CPTNativeFont; ///< Platform-native font. diff --git a/framework/Source/CPTColor.h b/framework/Source/CPTColor.h index f8a6fd678..b290cb1de 100644 --- a/framework/Source/CPTColor.h +++ b/framework/Source/CPTColor.h @@ -1,3 +1,5 @@ +#import "CPTPlatformSpecificDefines.h" + @interface CPTColor : NSObject @property (nonatomic, readonly, nonnull) CGColorRef cgColor; @@ -9,7 +11,7 @@ @property (nonatomic, readonly, nonnull) UIColor *uiColor; #endif -/// @name Factory Methods +/// @name Standard Colors /// @{ +(nonnull instancetype)clearColor; +(nonnull instancetype)whiteColor; @@ -26,7 +28,10 @@ +(nonnull instancetype)orangeColor; +(nonnull instancetype)purpleColor; +(nonnull instancetype)brownColor; +/// @} +/// @name Factory Methods +/// @{ +(nonnull instancetype)colorWithCGColor:(nonnull CGColorRef)newCGColor; +(nonnull instancetype)colorWithComponentRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha; +(nonnull instancetype)colorWithGenericGray:(CGFloat)gray; @@ -36,6 +41,7 @@ #elif TARGET_OS_SIMULATOR || TARGET_OS_IPHONE +(nonnull instancetype)colorWithUIColor:(nonnull UIColor *)newUIColor; #endif ++(nonnull instancetype)colorWithNativeColor:(nonnull CPTNativeColor *)newColor; /// @} @@ -50,6 +56,7 @@ #elif TARGET_OS_SIMULATOR || TARGET_OS_IPHONE -(nonnull instancetype)initWithUIColor:(nonnull UIColor *)newUIColor NS_DESIGNATED_INITIALIZER; #endif +-(nonnull instancetype)initWithNativeColor:(nonnull CPTNativeColor *)newColor; -(nonnull instancetype)colorWithAlphaComponent:(CGFloat)alpha; /// @} diff --git a/framework/Source/CPTColor.m b/framework/Source/CPTColor.m index 3157f9a4c..e9173e326 100644 --- a/framework/Source/CPTColor.m +++ b/framework/Source/CPTColor.m @@ -109,7 +109,7 @@ -(CGColorRef)cgColor @dynamic opaque; #pragma mark - -#pragma mark Factory Methods +#pragma mark Standard Colors /** @brief Returns a shared instance of CPTColor initialized with a fully transparent color. * @@ -367,6 +367,9 @@ +(nonnull instancetype)brownColor return color; } +#pragma mark - +#pragma mark Factory Methods + /** @brief Creates and returns a new CPTColor instance initialized with the provided @ref CGColorRef. * @param newCGColor The color to wrap. * @return A new CPTColor instance initialized with the provided @ref CGColorRef. @@ -406,7 +409,7 @@ +(nonnull instancetype)colorWithGenericGray:(CGFloat)gray /** @brief Creates and returns a new CPTColor instance initialized with the provided NSColor. * - * NSColor can be a dynamic system color or catalog color. This adds support for dark mode in macOS 10.14. + * The NSColor can be a dynamic system color or catalog color. This adds support for Dark Mode in macOS 10.14. * * @param newNSColor The color to wrap. * @return A new CPTColor instance initialized with the provided NSColor. @@ -420,7 +423,7 @@ +(nonnull instancetype)colorWithNSColor:(nonnull NSColor *)newNSColor /** @brief Creates and returns a new CPTColor instance initialized with the provided UIColor. * - * UIColor can be a dynamic system color or catalog color. This adds support for dark mode in iOS13. + * The UIColor can be a dynamic system color or catalog color. This adds support for Dark Mode in iOS 13. * * @param newUIColor The color to wrap. * @return A new CPTColor instance initialized with the provided UIColor. @@ -432,6 +435,22 @@ +(nonnull instancetype)colorWithUIColor:(nonnull UIColor *)newUIColor #endif +/** @brief Creates and returns a new CPTColor instance initialized with the provided platform-native color. + * + * The color can be a dynamic system color or catalog color. This adds support for Dark Mode in iOS13. + * + * @param newColor The color to wrap. + * @return A new CPTColor instance initialized with the provided platform-native color. + **/ ++(nonnull instancetype)colorWithNativeColor:(nonnull CPTNativeColor *)newColor +{ +#if TARGET_OS_OSX + return [[self alloc] initWithNSColor:newColor]; +#elif TARGET_OS_SIMULATOR || TARGET_OS_IPHONE + return [[self alloc] initWithUIColor:newColor]; +#endif +} + #pragma mark - #pragma mark Init/Dealloc @@ -475,7 +494,7 @@ -(nonnull instancetype)initWithComponentRed:(CGFloat)red green:(CGFloat)green bl /** @brief Initializes a newly allocated CPTColor object with the provided NSColor. * - * NSColor can be a dynamic system color or catalog color. This adds support for dark mode in macOS 10.14. + * The NSColor can be a dynamic system color or catalog color. This adds support for Dark Mode in macOS 10.14. * * @param newNSColor The color to wrap. * @return The initialized CPTColor object. @@ -492,7 +511,7 @@ -(nonnull instancetype)initWithNSColor:(nonnull NSColor *)newNSColor /** @brief Initializes a newly allocated CPTColor object with the provided UIColor. * - * UIColor can be a dynamic system color or catalog color. This adds support for dark mode in iOS13. + * The UIColor can be a dynamic system color or catalog color. This adds support for Dark Mode in iOS 13. * * @param newUIColor The color to wrap. * @return The initialized CPTColor object. @@ -507,6 +526,22 @@ -(nonnull instancetype)initWithUIColor:(nonnull UIColor *)newUIColor #endif +/** @brief Initializes a newly allocated CPTColor object with the provided platform-native color. + * + * The color can be a dynamic system color or catalog color. This adds support for Dark Mode in macOS 10.14 and iOS 13. + * + * @param newColor The color to wrap. + * @return The initialized CPTColor object. + **/ +-(nonnull instancetype)initWithNativeColor:(nonnull CPTNativeColor *)newColor +{ +#if TARGET_OS_OSX + return [self initWithNSColor:newColor]; +#elif TARGET_OS_SIMULATOR || TARGET_OS_IPHONE + return [self initWithUIColor:newColor]; +#endif +} + /// @cond -(nonnull instancetype)init diff --git a/framework/iPhoneOnly/CPTPlatformSpecificDefines.h b/framework/iPhoneOnly/CPTPlatformSpecificDefines.h index 985ed3b6f..471ca99d5 100644 --- a/framework/iPhoneOnly/CPTPlatformSpecificDefines.h +++ b/framework/iPhoneOnly/CPTPlatformSpecificDefines.h @@ -1,5 +1,6 @@ /// @file +typedef UIColor CPTNativeColor; ///< Platform-native color. typedef UIImage CPTNativeImage; ///< Platform-native image format. typedef UIEvent CPTNativeEvent; ///< Platform-native OS event. typedef UIFont CPTNativeFont; ///< Platform-native font. From 0c7230017eab98bddfcf63c86d8051c057294403 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 22 Dec 2019 09:37:07 -0500 Subject: [PATCH 127/160] Refactored themes to ensure all axes are updated with the same property values. --- framework/Source/_CPTDarkGradientTheme.m | 40 +++++++-------------- framework/Source/_CPTPlainBlackTheme.m | 46 +++++++++--------------- framework/Source/_CPTPlainWhiteTheme.m | 45 ++++++++--------------- framework/Source/_CPTSlateTheme.m | 40 +++++++-------------- framework/Source/_CPTStocksTheme.m | 45 ++++++++--------------- 5 files changed, 72 insertions(+), 144 deletions(-) diff --git a/framework/Source/_CPTDarkGradientTheme.m b/framework/Source/_CPTDarkGradientTheme.m index 1f2801e84..e15eaf091 100644 --- a/framework/Source/_CPTDarkGradientTheme.m +++ b/framework/Source/_CPTDarkGradientTheme.m @@ -14,15 +14,6 @@ CPTThemeName const kCPTDarkGradientTheme = @"Dark Gradients"; -/// @cond -@interface _CPTDarkGradientTheme() - --(void)applyThemeToAxis:(CPTXYAxis *)axis usingMajorLineStyle:(nonnull CPTLineStyle *)majorLineStyle minorLineStyle:(nonnull CPTLineStyle *)minorLineStyle textStyle:(nonnull CPTMutableTextStyle *)textStyle minorTickTextStyle:(nonnull CPTMutableTextStyle *)minorTickTextStyle; - -@end - -/// @endcond - #pragma mark - /** @@ -42,23 +33,6 @@ +(nonnull NSString *)name #pragma mark - --(void)applyThemeToAxis:(CPTXYAxis *)axis usingMajorLineStyle:(nonnull CPTLineStyle *)majorLineStyle minorLineStyle:(nonnull CPTLineStyle *)minorLineStyle textStyle:(nonnull CPTMutableTextStyle *)textStyle minorTickTextStyle:(nonnull CPTMutableTextStyle *)minorTickTextStyle -{ - axis.labelingPolicy = CPTAxisLabelingPolicyFixedInterval; - axis.majorIntervalLength = @0.5; - axis.orthogonalPosition = @0.0; - axis.tickDirection = CPTSignNone; - axis.minorTicksPerInterval = 4; - axis.majorTickLineStyle = majorLineStyle; - axis.minorTickLineStyle = minorLineStyle; - axis.axisLineStyle = majorLineStyle; - axis.majorTickLength = CPTFloat(7.0); - axis.minorTickLength = CPTFloat(5.0); - axis.labelTextStyle = textStyle; - axis.minorTickLabelTextStyle = minorTickTextStyle; - axis.titleTextStyle = textStyle; -} - -(void)applyThemeToBackground:(nonnull CPTGraph *)graph { CPTColor *endColor = [CPTColor colorWithGenericGray:CPTFloat(0.1)]; @@ -108,7 +82,19 @@ -(void)applyThemeToAxisSet:(nonnull CPTAxisSet *)axisSet whiteMinorTickTextStyle.fontSize = CPTFloat(12.0); for ( CPTXYAxis *axis in axisSet.axes ) { - [self applyThemeToAxis:axis usingMajorLineStyle:majorLineStyle minorLineStyle:minorLineStyle textStyle:whiteTextStyle minorTickTextStyle:whiteMinorTickTextStyle]; + axis.labelingPolicy = CPTAxisLabelingPolicyFixedInterval; + axis.majorIntervalLength = @0.5; + axis.orthogonalPosition = @0.0; + axis.tickDirection = CPTSignNone; + axis.minorTicksPerInterval = 4; + axis.majorTickLineStyle = majorLineStyle; + axis.minorTickLineStyle = minorLineStyle; + axis.axisLineStyle = majorLineStyle; + axis.majorTickLength = CPTFloat(7.0); + axis.minorTickLength = CPTFloat(5.0); + axis.labelTextStyle = whiteTextStyle; + axis.minorTickLabelTextStyle = whiteMinorTickTextStyle; + axis.titleTextStyle = whiteTextStyle; } } diff --git a/framework/Source/_CPTPlainBlackTheme.m b/framework/Source/_CPTPlainBlackTheme.m index 0bff8bb06..05783b4f1 100644 --- a/framework/Source/_CPTPlainBlackTheme.m +++ b/framework/Source/_CPTPlainBlackTheme.m @@ -49,7 +49,6 @@ -(void)applyThemeToPlotArea:(nonnull CPTPlotAreaFrame *)plotAreaFrame -(void)applyThemeToAxisSet:(nonnull CPTAxisSet *)axisSet { - CPTXYAxisSet *xyAxisSet = (CPTXYAxisSet *)axisSet; CPTMutableLineStyle *majorLineStyle = [CPTMutableLineStyle lineStyle]; majorLineStyle.lineCap = kCGLineCapRound; @@ -60,42 +59,29 @@ -(void)applyThemeToAxisSet:(nonnull CPTAxisSet *)axisSet minorLineStyle.lineColor = [CPTColor whiteColor]; minorLineStyle.lineWidth = CPTFloat(3.0); - CPTXYAxis *x = xyAxisSet.xAxis; CPTMutableTextStyle *whiteTextStyle = [[CPTMutableTextStyle alloc] init]; whiteTextStyle.color = [CPTColor whiteColor]; whiteTextStyle.fontSize = CPTFloat(14.0); + CPTMutableTextStyle *minorTickWhiteTextStyle = [[CPTMutableTextStyle alloc] init]; minorTickWhiteTextStyle.color = [CPTColor whiteColor]; minorTickWhiteTextStyle.fontSize = CPTFloat(12.0); - x.labelingPolicy = CPTAxisLabelingPolicyFixedInterval; - x.majorIntervalLength = @0.5; - x.orthogonalPosition = @0.0; - x.tickDirection = CPTSignNone; - x.minorTicksPerInterval = 4; - x.majorTickLineStyle = majorLineStyle; - x.minorTickLineStyle = minorLineStyle; - x.axisLineStyle = majorLineStyle; - x.majorTickLength = CPTFloat(7.0); - x.minorTickLength = CPTFloat(5.0); - x.labelTextStyle = whiteTextStyle; - x.minorTickLabelTextStyle = whiteTextStyle; - x.titleTextStyle = whiteTextStyle; - - CPTXYAxis *y = xyAxisSet.yAxis; - y.labelingPolicy = CPTAxisLabelingPolicyFixedInterval; - y.majorIntervalLength = @0.5; - y.minorTicksPerInterval = 4; - y.orthogonalPosition = @0.0; - y.tickDirection = CPTSignNone; - y.majorTickLineStyle = majorLineStyle; - y.minorTickLineStyle = minorLineStyle; - y.axisLineStyle = majorLineStyle; - y.majorTickLength = CPTFloat(7.0); - y.minorTickLength = CPTFloat(5.0); - y.labelTextStyle = whiteTextStyle; - y.minorTickLabelTextStyle = minorTickWhiteTextStyle; - y.titleTextStyle = whiteTextStyle; + for ( CPTXYAxis *axis in axisSet.axes ) { + axis.labelingPolicy = CPTAxisLabelingPolicyFixedInterval; + axis.majorIntervalLength = @0.5; + axis.orthogonalPosition = @0.0; + axis.tickDirection = CPTSignNone; + axis.minorTicksPerInterval = 4; + axis.majorTickLineStyle = majorLineStyle; + axis.minorTickLineStyle = minorLineStyle; + axis.axisLineStyle = majorLineStyle; + axis.majorTickLength = CPTFloat(7.0); + axis.minorTickLength = CPTFloat(5.0); + axis.labelTextStyle = whiteTextStyle; + axis.minorTickLabelTextStyle = whiteTextStyle; + axis.titleTextStyle = whiteTextStyle; + } } #pragma mark - diff --git a/framework/Source/_CPTPlainWhiteTheme.m b/framework/Source/_CPTPlainWhiteTheme.m index aa2f1fd10..5a8ed24f2 100644 --- a/framework/Source/_CPTPlainWhiteTheme.m +++ b/framework/Source/_CPTPlainWhiteTheme.m @@ -49,7 +49,6 @@ -(void)applyThemeToPlotArea:(nonnull CPTPlotAreaFrame *)plotAreaFrame -(void)applyThemeToAxisSet:(nonnull CPTAxisSet *)axisSet { - CPTXYAxisSet *xyAxisSet = (CPTXYAxisSet *)axisSet; CPTMutableLineStyle *majorLineStyle = [CPTMutableLineStyle lineStyle]; majorLineStyle.lineCap = kCGLineCapButt; @@ -69,35 +68,21 @@ -(void)applyThemeToAxisSet:(nonnull CPTAxisSet *)axisSet minorTickBlackTextStyle.color = [CPTColor blackColor]; minorTickBlackTextStyle.fontSize = CPTFloat(12.0); - CPTXYAxis *x = xyAxisSet.xAxis; - x.labelingPolicy = CPTAxisLabelingPolicyFixedInterval; - x.majorIntervalLength = @0.5; - x.orthogonalPosition = @0.0; - x.tickDirection = CPTSignNone; - x.minorTicksPerInterval = 4; - x.majorTickLineStyle = majorLineStyle; - x.minorTickLineStyle = minorLineStyle; - x.axisLineStyle = majorLineStyle; - x.majorTickLength = CPTFloat(7.0); - x.minorTickLength = CPTFloat(5.0); - x.labelTextStyle = blackTextStyle; - x.minorTickLabelTextStyle = blackTextStyle; - x.titleTextStyle = blackTextStyle; - - CPTXYAxis *y = xyAxisSet.yAxis; - y.labelingPolicy = CPTAxisLabelingPolicyFixedInterval; - y.majorIntervalLength = @0.5; - y.minorTicksPerInterval = 4; - y.orthogonalPosition = @0.0; - y.tickDirection = CPTSignNone; - y.majorTickLineStyle = majorLineStyle; - y.minorTickLineStyle = minorLineStyle; - y.axisLineStyle = majorLineStyle; - y.majorTickLength = CPTFloat(7.0); - y.minorTickLength = CPTFloat(5.0); - y.labelTextStyle = blackTextStyle; - y.minorTickLabelTextStyle = minorTickBlackTextStyle; - y.titleTextStyle = blackTextStyle; + for ( CPTXYAxis *axis in axisSet.axes ) { + axis.labelingPolicy = CPTAxisLabelingPolicyFixedInterval; + axis.majorIntervalLength = @0.5; + axis.orthogonalPosition = @0.0; + axis.tickDirection = CPTSignNone; + axis.minorTicksPerInterval = 4; + axis.majorTickLineStyle = majorLineStyle; + axis.minorTickLineStyle = minorLineStyle; + axis.axisLineStyle = majorLineStyle; + axis.majorTickLength = CPTFloat(7.0); + axis.minorTickLength = CPTFloat(5.0); + axis.labelTextStyle = blackTextStyle; + axis.minorTickLabelTextStyle = blackTextStyle; + axis.titleTextStyle = blackTextStyle; + } } #pragma mark - diff --git a/framework/Source/_CPTSlateTheme.m b/framework/Source/_CPTSlateTheme.m index 92f34f922..c357e48a9 100644 --- a/framework/Source/_CPTSlateTheme.m +++ b/framework/Source/_CPTSlateTheme.m @@ -14,15 +14,6 @@ CPTThemeName const kCPTSlateTheme = @"Slate"; -/// @cond -@interface _CPTSlateTheme() - --(void)applyThemeToAxis:(CPTXYAxis *)axis usingMajorLineStyle:(nonnull CPTLineStyle *)majorLineStyle minorLineStyle:(nonnull CPTLineStyle *)minorLineStyle textStyle:(nonnull CPTMutableTextStyle *)textStyle minorTickTextStyle:(nonnull CPTMutableTextStyle *)minorTickTextStyle; - -@end - -/// @endcond - #pragma mark - /** @@ -42,23 +33,6 @@ +(nonnull NSString *)name #pragma mark - --(void)applyThemeToAxis:(CPTXYAxis *)axis usingMajorLineStyle:(nonnull CPTLineStyle *)majorLineStyle minorLineStyle:(nonnull CPTLineStyle *)minorLineStyle textStyle:(nonnull CPTMutableTextStyle *)textStyle minorTickTextStyle:(nonnull CPTMutableTextStyle *)minorTickTextStyle -{ - axis.labelingPolicy = CPTAxisLabelingPolicyFixedInterval; - axis.majorIntervalLength = @0.5; - axis.orthogonalPosition = @0.0; - axis.tickDirection = CPTSignNone; - axis.minorTicksPerInterval = 4; - axis.majorTickLineStyle = majorLineStyle; - axis.minorTickLineStyle = minorLineStyle; - axis.axisLineStyle = majorLineStyle; - axis.majorTickLength = CPTFloat(7.0); - axis.minorTickLength = CPTFloat(5.0); - axis.labelTextStyle = textStyle; - axis.minorTickLabelTextStyle = minorTickTextStyle; - axis.titleTextStyle = textStyle; -} - -(void)applyThemeToBackground:(nonnull CPTGraph *)graph { CPTGradient *gradient = [CPTGradient gradientWithBeginningColor:[CPTColor colorWithComponentRed:CPTFloat(0.43) green:CPTFloat(0.51) blue:CPTFloat(0.63) alpha:CPTFloat(1.0)] @@ -107,7 +81,19 @@ -(void)applyThemeToAxisSet:(nonnull CPTAxisSet *)axisSet minorTickBlackTextStyle.fontSize = CPTFloat(12.0); for ( CPTXYAxis *axis in axisSet.axes ) { - [self applyThemeToAxis:axis usingMajorLineStyle:majorLineStyle minorLineStyle:minorLineStyle textStyle:blackTextStyle minorTickTextStyle:minorTickBlackTextStyle]; + axis.labelingPolicy = CPTAxisLabelingPolicyFixedInterval; + axis.majorIntervalLength = @0.5; + axis.orthogonalPosition = @0.0; + axis.tickDirection = CPTSignNone; + axis.minorTicksPerInterval = 4; + axis.majorTickLineStyle = majorLineStyle; + axis.minorTickLineStyle = minorLineStyle; + axis.axisLineStyle = majorLineStyle; + axis.majorTickLength = CPTFloat(7.0); + axis.minorTickLength = CPTFloat(5.0); + axis.labelTextStyle = blackTextStyle; + axis.minorTickLabelTextStyle = minorTickBlackTextStyle; + axis.titleTextStyle = blackTextStyle; } } diff --git a/framework/Source/_CPTStocksTheme.m b/framework/Source/_CPTStocksTheme.m index b807cfe38..4e3dcf0bc 100644 --- a/framework/Source/_CPTStocksTheme.m +++ b/framework/Source/_CPTStocksTheme.m @@ -62,7 +62,6 @@ -(void)applyThemeToPlotArea:(nonnull CPTPlotAreaFrame *)plotAreaFrame -(void)applyThemeToAxisSet:(nonnull CPTAxisSet *)axisSet { - CPTXYAxisSet *xyAxisSet = (CPTXYAxisSet *)axisSet; CPTMutableLineStyle *majorLineStyle = [CPTMutableLineStyle lineStyle]; majorLineStyle.lineCap = kCGLineCapRound; @@ -81,35 +80,21 @@ -(void)applyThemeToAxisSet:(nonnull CPTAxisSet *)axisSet minorTickWhiteTextStyle.color = [CPTColor whiteColor]; minorTickWhiteTextStyle.fontSize = CPTFloat(12.0); - CPTXYAxis *x = xyAxisSet.xAxis; - x.labelingPolicy = CPTAxisLabelingPolicyFixedInterval; - x.majorIntervalLength = @0.5; - x.orthogonalPosition = @0.0; - x.tickDirection = CPTSignNone; - x.minorTicksPerInterval = 4; - x.majorTickLineStyle = majorLineStyle; - x.minorTickLineStyle = minorLineStyle; - x.axisLineStyle = majorLineStyle; - x.majorTickLength = CPTFloat(7.0); - x.minorTickLength = CPTFloat(5.0); - x.labelTextStyle = whiteTextStyle; - x.minorTickLabelTextStyle = minorTickWhiteTextStyle; - x.titleTextStyle = whiteTextStyle; - - CPTXYAxis *y = xyAxisSet.yAxis; - y.labelingPolicy = CPTAxisLabelingPolicyFixedInterval; - y.majorIntervalLength = @0.5; - y.minorTicksPerInterval = 4; - y.orthogonalPosition = @0.0; - y.tickDirection = CPTSignNone; - y.majorTickLineStyle = majorLineStyle; - y.minorTickLineStyle = minorLineStyle; - y.axisLineStyle = majorLineStyle; - y.majorTickLength = CPTFloat(7.0); - y.minorTickLength = CPTFloat(5.0); - y.labelTextStyle = whiteTextStyle; - y.minorTickLabelTextStyle = minorTickWhiteTextStyle; - y.titleTextStyle = whiteTextStyle; + for ( CPTXYAxis *axis in axisSet.axes ) { + axis.labelingPolicy = CPTAxisLabelingPolicyFixedInterval; + axis.majorIntervalLength = @0.5; + axis.orthogonalPosition = @0.0; + axis.tickDirection = CPTSignNone; + axis.minorTicksPerInterval = 4; + axis.majorTickLineStyle = majorLineStyle; + axis.minorTickLineStyle = minorLineStyle; + axis.axisLineStyle = majorLineStyle; + axis.majorTickLength = CPTFloat(7.0); + axis.minorTickLength = CPTFloat(5.0); + axis.labelTextStyle = whiteTextStyle; + axis.minorTickLabelTextStyle = minorTickWhiteTextStyle; + axis.titleTextStyle = whiteTextStyle; + } } #pragma mark - From 142977a4c04ec77199b0e16a8f4508b89463b676 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 22 Dec 2019 11:17:29 -0500 Subject: [PATCH 128/160] Fixed a crashing bug with animating NSNumber values. --- framework/Source/CPTAnimation.m | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/framework/Source/CPTAnimation.m b/framework/Source/CPTAnimation.m index 4ef62d18f..f938fd2fd 100644 --- a/framework/Source/CPTAnimation.m +++ b/framework/Source/CPTAnimation.m @@ -407,6 +407,13 @@ -(void)updateOnMainThreadWithParameters:(nonnull CPTDictionary *)parameters SetterType setterMethod = (SetterType)[boundObject methodForSelector:boundSetter]; setterMethod(boundObject, boundSetter, buffer); } + else if ( [tweenedValue isKindOfClass:[NSNumber class]] ) { + NSNumber *value = (NSNumber *)tweenedValue; + + typedef void (*NumberSetterType)(id, SEL, NSNumber *); + NumberSetterType setterMethod = (NumberSetterType)[boundObject methodForSelector:boundSetter]; + setterMethod(boundObject, boundSetter, value); + } else if ( [tweenedValue isKindOfClass:[CPTPlotRange class]] ) { CPTPlotRange *range = (CPTPlotRange *)tweenedValue; From 4f2ad5a4f06510112e37db4015d315cdf9122064 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 22 Dec 2019 12:37:00 -0500 Subject: [PATCH 129/160] Force redrawing of the graph on appearance change. Fixed issue #418. --- framework/MacOnly/CPTGraphHostingView.m | 10 ++++++++++ framework/Source/CPTLayer.h | 1 + framework/Source/CPTLayer.m | 17 +++++++++++++++++ framework/iPhoneOnly/CPTGraphHostingView.m | 7 +++++++ 4 files changed, 35 insertions(+) diff --git a/framework/MacOnly/CPTGraphHostingView.m b/framework/MacOnly/CPTGraphHostingView.m index 174bd0816..ca013d5f7 100644 --- a/framework/MacOnly/CPTGraphHostingView.m +++ b/framework/MacOnly/CPTGraphHostingView.m @@ -73,6 +73,11 @@ -(void)commonInit self.locationInWindow = NSZeroPoint; self.scrollOffset = CGPointZero; + [self addObserver:self + forKeyPath:@"effectiveAppearance" + options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld | NSKeyValueObservingOptionInitial + context:CPTGraphHostingViewKVOContext]; + if ( !self.superview.wantsLayer ) { self.layer = [self makeBackingLayer]; } @@ -102,6 +107,8 @@ -(void)dealloc [space removeObserver:self forKeyPath:@"isDragging" context:CPTGraphHostingViewKVOContext]; } + [self removeObserver:self forKeyPath:@"effectiveAppearance" context:CPTGraphHostingViewKVOContext]; + [hostedGraph removeFromSuperlayer]; } @@ -572,6 +579,9 @@ -(void)observeValueForKeyPath:(nullable NSString *)keyPath ofObject:(nullable id object:newPlotArea]; } } + else if ( [keyPath isEqualToString:@"effectiveAppearance"] && (object == self)) { + [self.hostedGraph setNeedsDisplayAllLayers]; + } } else { [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; diff --git a/framework/Source/CPTLayer.h b/framework/Source/CPTLayer.h index 18cf5b9c3..4cca2d8b4 100644 --- a/framework/Source/CPTLayer.h +++ b/framework/Source/CPTLayer.h @@ -131,6 +131,7 @@ typedef NSMutableSet CPTMutableSublayerSet; /// @name Drawing /// @{ +-(void)setNeedsDisplayAllLayers; -(void)renderAsVectorInContext:(nonnull CGContextRef)context; -(void)recursivelyRenderInContext:(nonnull CGContextRef)context; -(void)layoutAndRenderInContext:(nonnull CGContextRef)context; diff --git a/framework/Source/CPTLayer.m b/framework/Source/CPTLayer.m index 29732265b..77311006b 100644 --- a/framework/Source/CPTLayer.m +++ b/framework/Source/CPTLayer.m @@ -376,6 +376,23 @@ -(void)drawInContext:(nonnull CGContextRef)context /// @endcond +/** + * @brief Recursively marks this layer and all sublayers as needing to be redrawn. + **/ +-(void)setNeedsDisplayAllLayers +{ + [self setNeedsDisplay]; + + for ( CPTLayer *subLayer in self.sublayers ) { + if ( [subLayer respondsToSelector:@selector(setNeedsDisplayAllLayers)] ) { + [subLayer setNeedsDisplayAllLayers]; + } + else { + [subLayer setNeedsDisplay]; + } + } +} + /** @brief Draws layer content into the provided graphics context. * * This method replaces the CALayer @link CALayer::drawInContext: -drawInContext: @endlink method diff --git a/framework/iPhoneOnly/CPTGraphHostingView.m b/framework/iPhoneOnly/CPTGraphHostingView.m index 0efa0939e..fd27f232c 100644 --- a/framework/iPhoneOnly/CPTGraphHostingView.m +++ b/framework/iPhoneOnly/CPTGraphHostingView.m @@ -352,6 +352,13 @@ -(void)graphNeedsRedraw:(nonnull NSNotification *)notification [self setNeedsDisplay]; } +-(void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection +{ + [super traitCollectionDidChange:previousTraitCollection]; + + [self.hostedGraph setNeedsDisplayAllLayers]; +} + /// @endcond #pragma mark - From c280cb3c2e9f52ac25213e46ca44117950213b58 Mon Sep 17 00:00:00 2001 From: Eric Skroch Date: Sun, 22 Dec 2019 12:38:30 -0500 Subject: [PATCH 130/160] Updated the Mac CPTTestApp example app to support Dark Mode. --- .../CPTTestApp.xcodeproj/project.pbxproj | 4 - .../Resources/Base.lproj/CPTTestApp.xib | 14 +-- examples/CPTTestApp/Resources/BlueTexture.png | Bin 368382 -> 0 bytes examples/CPTTestApp/Source/Controller.m | 87 ++++++++++-------- 4 files changed, 55 insertions(+), 50 deletions(-) delete mode 100644 examples/CPTTestApp/Resources/BlueTexture.png diff --git a/examples/CPTTestApp/CPTTestApp.xcodeproj/project.pbxproj b/examples/CPTTestApp/CPTTestApp.xcodeproj/project.pbxproj index 81b524cf9..b92e4d395 100644 --- a/examples/CPTTestApp/CPTTestApp.xcodeproj/project.pbxproj +++ b/examples/CPTTestApp/CPTTestApp.xcodeproj/project.pbxproj @@ -8,7 +8,6 @@ /* Begin PBXBuildFile section */ 077382B10F3DC1FB002F10E2 /* Controller.m in Sources */ = {isa = PBXBuildFile; fileRef = 077382B00F3DC1FB002F10E2 /* Controller.m */; }; - 07C13BBB0FF9322A00BEE616 /* BlueTexture.png in Resources */ = {isa = PBXBuildFile; fileRef = 07C13BBA0FF9322A00BEE616 /* BlueTexture.png */; }; 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; 8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; @@ -118,7 +117,6 @@ 0761854B0F3CB3CB00A89A76 /* CorePlot.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = CorePlot.framework; path = ../../../../framework/build/Debug/CorePlot.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 077382AF0F3DC1FB002F10E2 /* Controller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Controller.h; path = Source/Controller.h; sourceTree = ""; }; 077382B00F3DC1FB002F10E2 /* Controller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Controller.m; path = Source/Controller.m; sourceTree = ""; }; - 07C13BBA0FF9322A00BEE616 /* BlueTexture.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = BlueTexture.png; path = Resources/BlueTexture.png; sourceTree = ""; }; 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Source/main.m; sourceTree = ""; }; @@ -250,7 +248,6 @@ children = ( C3D3935B19FD653300148319 /* Images.xcassets */, C37A40A720E030C000C4FF48 /* Info.plist */, - 07C13BBA0FF9322A00BEE616 /* BlueTexture.png */, 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, C3D0A18D20E017C500BA2921 /* AxisDemo.xib */, C3D0A19C20E017CC00BA2921 /* CPTTestApp.xib */, @@ -395,7 +392,6 @@ 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */, C3D3935C19FD653300148319 /* Images.xcassets in Resources */, C3D0A19A20E017CC00BA2921 /* CPTTestApp.xib in Resources */, - 07C13BBB0FF9322A00BEE616 /* BlueTexture.png in Resources */, C3D0A19D20E017D100BA2921 /* PlotSymbolDemo.xib in Resources */, C3D0A18B20E017C500BA2921 /* AxisDemo.xib in Resources */, C3D0A1A020E017D600BA2921 /* SelectionDemo.xib in Resources */, diff --git a/examples/CPTTestApp/Resources/Base.lproj/CPTTestApp.xib b/examples/CPTTestApp/Resources/Base.lproj/CPTTestApp.xib index 485f2536c..4b7d3ae17 100644 --- a/examples/CPTTestApp/Resources/Base.lproj/CPTTestApp.xib +++ b/examples/CPTTestApp/Resources/Base.lproj/CPTTestApp.xib @@ -1,8 +1,8 @@ - + - + @@ -673,15 +673,9 @@ - + - - - - - - @@ -747,7 +741,7 @@ y - + diff --git a/examples/CPTTestApp/Resources/BlueTexture.png b/examples/CPTTestApp/Resources/BlueTexture.png deleted file mode 100644 index ea004c70dd4a013e8a6a3c980b709ca8060dd803..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368382 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

    gB8qroM)c_F@;I-O{KwPL9CaH(Ob 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 literal 191272 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ℜiG^a;t#cW|MdaB-k|Ml1Vae$2y_hu*SNveFZ~ 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π2sR?}=6d0iFDZR>HXkQ1Rb?eYr4 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 Y${Huk8TgamWaQVi-IpPVsudHLVr9A&9kq>0NZc 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�^{2w&cgxq5NqX8>ae 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∓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