diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 000000000..8e45d030f
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1 @@
+*.pbxproj merge=union
diff --git a/documentation/Coding Style.markdown b/.github/CONTRIBUTING.md
similarity index 99%
rename from documentation/Coding Style.markdown
rename to .github/CONTRIBUTING.md
index d60557277..1165a8b3d 100644
--- a/documentation/Coding Style.markdown
+++ b/.github/CONTRIBUTING.md
@@ -300,7 +300,7 @@ Comments are used in Core Plot headers to group related methods, in much the sam
// Organizing plots
-(void)addPlot:(CPTPlot *)plot;
- -(void)addPlot:(CPTPlot *)plot toPlotSpace:(CPPlotSpace *)space;
+ -(void)addPlot:(CPTPlot *)plot toPlotSpace:(CPTPlotSpace *)space;
-(void)removePlot:(CPTPlot *)plot;
-(void)insertPlot:(CPTPlot*)plot atIndex:(NSUInteger)index;
-(void)insertPlot:(CPTPlot*)plot atIndex:(NSUInteger)index intoPlotSpace:(CPTPlotSpace *)space;
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 000000000..4e7381cd7
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,6 @@
+Please consider the following issues before submitting a pull request:
+
+-[] Support all platforms (Mac, iOS, and tvOS)
+-[] Pass Travis build validation
+-[] Include unit tests where appropriate
+-[] If adding a new feature, consider including a demo in the *Plot Gallery* example app
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 3c964370d..000599f11 100644
--- a/.gitignore
+++ b/.gitignore
@@ -28,6 +28,8 @@ build/*
**.xcuserstate
**.xccheckout
**/xcuserdata/*
+**.xcbaseline
+**.xcscmblueprint
# AppCode settings
**/.idea/*
diff --git a/.travis.yml b/.travis.yml
index 067d42d10..1df945ce3 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,18 +1,28 @@
language: objective-c
+osx_image: xcode11
-env:
+ios_env:
SDK:iphonesimulator
SDK:iphoneos
+tvos_env:
+ TVSDK:appletvsimulator
+ TVSDK:appletvos
+
# Framework builds
-script: xcodebuild -project framework/CorePlot.xcodeproj -target CorePlot -configuration Release
-script: xcodebuild -project framework/CorePlot-CocoaTouch.xcodeproj -target CorePlot-CocoaTouch -sdk ${SDK} -configuration Release
+script: xcodebuild -project framework/CorePlot.xcodeproj -target "CorePlot Mac" -configuration Release
+script: xcodebuild -project framework/CorePlot.xcodeproj -target "CorePlot iOS" -sdk ${SDK} -configuration Release
+script: xcodebuild -project framework/CorePlot.xcodeproj -target "CorePlot tvOS" -sdk ${TVSDK} -configuration Release
+script: xcodebuild -project framework/CorePlot.xcodeproj -target "CorePlot-CocoaTouch" -sdk ${SDK} -configuration Release
# Unit tests
-script: xcodebuild -project framework/CorePlot.xcodeproj -target UnitTests -configuration Release
+script: xcodebuild -project framework/CorePlot.xcodeproj -target "UnitTests Mac" -configuration Release
+script: xcodebuild -project framework/CorePlot.xcodeproj -target "UnitTests iOS" -sdk ${SDK} -configuration Release
+script: xcodebuild -project framework/CorePlot.xcodeproj -target "UnitTests tvOS" -sdk ${TVSDK} -configuration Release
+script: xcodebuild -project framework/CorePlot.xcodeproj -target "CorePlot-CocoaTouchTests" -sdk ${SDK} -configuration Release
# Mac examples
-script: xcodebuild -project examples/CorePlotGallery/Plot_Gallery_Mac.xcodeproj -target "Plot Gallery-Mac" -configuration Release
+script: xcodebuild -project examples/CorePlotGallery/Plot_Gallery.xcodeproj -target "Plot Gallery-Mac" -configuration Release
script: xcodebuild -project examples/CPTTestApp/CPTTestApp.xcodeproj -target CPTTestApp -configuration Release
script: xcodebuild -project examples/DatePlot/DatePlot.xcodeproj -target DatePlot -configuration Release
script: xcodebuild -project examples/DropPlot/DropPlot.xcodeproj -target DropPlot -configuration Release
@@ -20,12 +30,15 @@ script: xcodebuild -project examples/MinorTickLabels/minorTickFormatter.xcodepro
script: xcodebuild -project examples/RangePlot/RangePlot.xcodeproj -target RangePlot -configuration Release
# iOS examples
-script: xcodebuild -project examples/CorePlotGallery/Plot_Gallery_iOS.xcodeproj -target "Plot Gallery-iOS" -sdk ${SDK} -configuration Release
+script: xcodebuild -project examples/CorePlotGallery/Plot_Gallery.xcodeproj -target "Plot Gallery-iOS" -sdk ${SDK} -configuration Release
script: xcodebuild -project examples/AAPLot/AAPLot.xcodeproj -target AAPLot -sdk ${SDK} -configuration Release
script: xcodebuild -project examples/CPTTestApp-iPad/CPTTestApp-iPad.xcodeproj -target CPTTestApp-iPad -sdk ${SDK} -configuration Release
script: xcodebuild -project examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj -target CPTTestApp-iPhone -sdk ${SDK} -configuration Release
script: xcodebuild -project examples/CPTTestApp-iPhone-SpeedTest/CPTTestApp-iPhone.xcodeproj -CPTTestApp-iPhone AAPLot -sdk ${SDK} -configuration Release
script: xcodebuild -project examples/StockPlot/StockPlot.xcodeproj -target StockPlot -sdk ${SDK} -configuration Release
+# tvOS examples
+script: xcodebuild -project examples/CorePlotGallery/Plot_Gallery.xcodeproj -target "Plot Gallery-tvOS" -sdk ${TVSDK} -configuration Release
+
# Quartz Composer plugin
script: xcodebuild -project QCPlugin/CorePlotQCPlugin.xcodeproj -target CorePlotQCPlugin -configuration Release
diff --git a/CorePlot-latest.podspec b/CorePlot-latest.podspec
new file mode 100644
index 000000000..3b958f7e4
--- /dev/null
+++ b/CorePlot-latest.podspec
@@ -0,0 +1,45 @@
+Pod::Spec.new do |s|
+ s.name = 'CorePlot'
+ s.version = '99.99.99'
+ s.license = 'BSD'
+ s.summary = 'Cocoa plotting framework for macOS, iOS, and tvOS.'
+ s.homepage = 'https://github.com/core-plot'
+ s.social_media_url = 'https://twitter.com/CorePlot'
+ s.documentation_url = 'http://core-plot.github.io'
+
+ s.authors = { 'Drew McCormack' => 'drewmccormack@mac.com',
+ 'Brad Larson' => 'larson@sunsetlakesoftware.com',
+ 'Eric Skroch' => 'eskroch@mac.com',
+ 'Barry Wark' => 'barrywark@gmail.com' }
+
+ s.source = { :git => 'https://github.com/core-plot/core-plot.git' }
+
+ s.description = 'Core Plot is a plotting framework for macOS, iOS, and tvOS. It provides 2D visualization ' \
+ 'of data, and is tightly integrated with Apple technologies like Core Animation, ' \
+ 'Core Data, and Cocoa Bindings.'
+
+ s.ios.deployment_target = '8.0'
+ s.osx.deployment_target = '10.8'
+ s.tvos.deployment_target = '9.0'
+
+ s.ios.header_dir = 'ios'
+ s.osx.header_dir = 'osx'
+ s.tvos.header_dir = 'tvos'
+
+ 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'
+
+ s.requires_arc = true
+ 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"' }
+
+ s.frameworks = 'QuartzCore'
+ s.ios.frameworks = 'UIKit', 'Foundation'
+ s.tvos.frameworks = 'UIKit', 'Foundation'
+ s.osx.frameworks = 'Cocoa'
+end
\ No newline at end of file
diff --git a/CorePlot.podspec b/CorePlot.podspec
index 2ffd11294..d6906a089 100644
--- a/CorePlot.podspec
+++ b/CorePlot.podspec
@@ -1,31 +1,45 @@
Pod::Spec.new do |s|
s.name = 'CorePlot'
- s.version = '1.5.1'
+ s.version = '2.3'
s.license = 'BSD'
- s.summary = 'Cocoa plotting framework for Mac OS X and iOS.'
+ s.summary = 'Cocoa plotting framework for macOS, iOS, and tvOS.'
s.homepage = 'https://github.com/core-plot'
- s.social_media_url = 'https://twitter.com/CorePlot'
+ s.social_media_url = 'https://twitter.com/CorePlot'
+ s.documentation_url = 'http://core-plot.github.io'
+
s.authors = { 'Drew McCormack' => 'drewmccormack@mac.com',
'Brad Larson' => 'larson@sunsetlakesoftware.com',
'Eric Skroch' => 'eskroch@mac.com',
'Barry Wark' => 'barrywark@gmail.com' }
- s.source = { :git => 'https://github.com/core-plot/core-plot.git', :tag => "release_1.5.1" }
- s.description = 'Core Plot is a plotting framework for OS X and iOS. It provides 2D visualization ' \
+ s.source = { :git => 'https://github.com/core-plot/core-plot.git', :tag => 'release_2.3'}
+
+ s.description = 'Core Plot is a plotting framework for macOS, iOS, and tvOS. It provides 2D visualization ' \
'of data, and is tightly integrated with Apple technologies like Core Animation, ' \
'Core Data, and Cocoa Bindings.'
- s.ios.deployment_target = '3.1.3'
- s.osx.deployment_target = '10.5'
+ s.ios.deployment_target = '8.0'
+ s.osx.deployment_target = '10.8'
+ s.tvos.deployment_target = '9.0'
+
+ s.ios.header_dir = 'ios'
+ s.osx.header_dir = 'osx'
+ s.tvos.header_dir = 'tvos'
- s.source_files = 'framework/Source/*.{h,m}'
- s.exclude_files = '**/*{TestCase,Tests}.{h,m}'
+ 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.osx.source_files = 'framework/CorePlot.h', 'framework/MacOnly/*.{h,m}'
+ s.tvos.source_files = 'framework/iPhoneOnly/*.{h,m}'
+ s.osx.source_files = 'framework/MacOnly/*.{h,m}'
+ s.private_header_files = '**/_*.h'
- s.framework = 'QuartzCore'
+ s.requires_arc = true
+ 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"' }
- s.prepare_command = <<-CMD
- dtrace -h -s framework/TestResources/CorePlotProbes.d -o framework/Source/CorePlotProbes.h
- CMD
+ s.frameworks = 'QuartzCore'
+ s.ios.frameworks = 'UIKit', 'Foundation'
+ s.tvos.frameworks = 'UIKit', 'Foundation'
+ s.osx.frameworks = 'Cocoa'
end
\ No newline at end of file
diff --git a/License.txt b/License.txt
index 2ba9ec636..fbd7853fe 100644
--- a/License.txt
+++ b/License.txt
@@ -1,9 +1,13 @@
-Copyright (c) 2014, 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, and Rafał Wójcik.
+Copyright (c) 2020, 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.
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.
diff --git a/QCPlugin/Info.plist b/QCPlugin/Base.lproj/Info.plist
similarity index 82%
rename from QCPlugin/Info.plist
rename to QCPlugin/Base.lproj/Info.plist
index 71533e1a9..27bfe3460 100644
--- a/QCPlugin/Info.plist
+++ b/QCPlugin/Base.lproj/Info.plist
@@ -9,7 +9,7 @@
CFBundleGetInfoStringCorePlotQCPlugin version 1.0, Copyright YourCompany.CFBundleIdentifier
- com.yourcompany.${PRODUCT_NAME:identifier}
+ $(PRODUCT_BUNDLE_IDENTIFIER)CFBundleInfoDictionaryVersion6.0CFBundleName
@@ -22,9 +22,9 @@
1.0QCPlugInClasses
- CPBarPlotPlugIn
- CPScatterPlotPlugIn
- CPPieChartPlugIn
+ CPTBarPlotPlugIn
+ CPTScatterPlotPlugIn
+ CPTPieChartPlugIn
diff --git a/QCPlugin/Base.lproj/Settings.xib b/QCPlugin/Base.lproj/Settings.xib
new file mode 100644
index 000000000..fa3c596e5
--- /dev/null
+++ b/QCPlugin/Base.lproj/Settings.xib
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/QCPlugin/CPBarPlotPlugin.h b/QCPlugin/CPBarPlotPlugin.h
deleted file mode 100644
index 0704819fe..000000000
--- a/QCPlugin/CPBarPlotPlugin.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#import "CorePlotQCPlugIn.h"
-#import
-
-@interface CPBarPlotPlugIn : CorePlotQCPlugIn {
-}
-
-@property (assign) double inputBaseValue;
-@property (assign) double inputBarWidth;
-@property (assign) double inputBarOffset;
-@property (assign) BOOL inputHorizontalBars;
-
-@end
diff --git a/QCPlugin/CPPieChartPlugin.h b/QCPlugin/CPPieChartPlugin.h
deleted file mode 100644
index 845c6f6db..000000000
--- a/QCPlugin/CPPieChartPlugin.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#import "CorePlotQCPlugIn.h"
-#import
-
-@interface CPPieChartPlugIn : CorePlotQCPlugIn {
-}
-
-@property (assign) double inputPieRadius;
-@property (assign) double inputSliceLabelOffset;
-@property (assign) double inputStartAngle;
-@property (assign) NSUInteger inputSliceDirection;
-@property (assign) double inputBorderWidth;
-@property (assign) CGColorRef inputBorderColor;
-@property (assign) CGColorRef inputLabelColor;
-
-@end
diff --git a/QCPlugin/CPScatterPlotPlugin.h b/QCPlugin/CPScatterPlotPlugin.h
deleted file mode 100644
index ccc503f41..000000000
--- a/QCPlugin/CPScatterPlotPlugin.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#import "CorePlotQCPlugIn.h"
-#import
-
-@interface CPScatterPlotPlugIn : CorePlotQCPlugIn {
-}
-
-@end
diff --git a/QCPlugin/CPTBarPlotPlugin.h b/QCPlugin/CPTBarPlotPlugin.h
new file mode 100644
index 000000000..e5fbb2bce
--- /dev/null
+++ b/QCPlugin/CPTBarPlotPlugin.h
@@ -0,0 +1,11 @@
+#import "CorePlotQCPlugin.h"
+#import
+
+@interface CPTBarPlotPlugIn : CorePlotQCPlugIn
+
+@property (readwrite, assign) double inputBaseValue;
+@property (readwrite, assign) double inputBarWidth;
+@property (readwrite, assign) double inputBarOffset;
+@property (readwrite, assign) BOOL inputHorizontalBars;
+
+@end
diff --git a/QCPlugin/CPBarPlotPlugin.m b/QCPlugin/CPTBarPlotPlugin.m
similarity index 64%
rename from QCPlugin/CPBarPlotPlugin.m
rename to QCPlugin/CPTBarPlotPlugin.m
index 5fb581500..77d6fc9fc 100644
--- a/QCPlugin/CPBarPlotPlugin.m
+++ b/QCPlugin/CPTBarPlotPlugin.m
@@ -1,6 +1,6 @@
-#import "CPBarPlotPlugIn.h"
+#import "CPTBarPlotPlugin.h"
-@implementation CPBarPlotPlugIn
+@implementation CPTBarPlotPlugIn
/*
* NOTE: It seems that QC plugins don't inherit dynamic input ports which is
@@ -27,72 +27,72 @@ @implementation CPBarPlotPlugIn
*/
@dynamic inputBaseValue, inputBarOffset, inputBarWidth, inputHorizontalBars;
-+(NSDictionary *)attributes
++(nonnull NSDictionary *)attributes
{
return @{
- QCPlugInAttributeNameKey: @"Core Plot Bar Chart",
- QCPlugInAttributeDescriptionKey: @"Bar chart"
+ QCPlugInAttributeNameKey: @"Core Plot Bar Chart",
+ QCPlugInAttributeDescriptionKey: @"Bar chart"
};
}
-+(NSDictionary *)attributesForPropertyPortWithKey:(NSString *)key
++(nullable CPTDictionary *)attributesForPropertyPortWithKey:(nullable NSString *)key
{
// A few additional ports for the bar plot chart type ...
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
};
}
@@ -114,18 +114,16 @@ -(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: (id)lineColor }
+ QCPortAttributeDefaultValueKey: (id)CFBridgingRelease(lineColor) }
];
- CGColorRelease(lineColor);
CGColorRef fillColor = [self newDefaultColorForPlot:index alpha:0.25];
[self addInputPortWithType:QCPortTypeColor
forKey:[NSString stringWithFormat:@"plotFillColor%lu", (unsigned long)index]
withAttributes:@{ QCPortAttributeNameKey: [NSString stringWithFormat:@"Plot Fill Color %lu", (unsigned long)(index + 1)],
QCPortAttributeTypeKey: QCPortTypeColor,
- QCPortAttributeDefaultValueKey: (id)fillColor }
+ QCPortAttributeDefaultValueKey: (id)CFBridgingRelease(fillColor) }
];
- CGColorRelease(fillColor);
[self addInputPortWithType:QCPortTypeNumber
forKey:[NSString stringWithFormat:@"plotDataLineWidth%lu", (unsigned long)index]
@@ -139,42 +137,50 @@ -(void)addPlotWithIndex:(NSUInteger)index
CPTBarPlot *barPlot = [CPTBarPlot tubularBarPlotWithColor:[CPTColor greenColor] horizontalBars:NO];
barPlot.identifier = [NSString stringWithFormat:@"Bar Plot %lu", (unsigned long)(index + 1)];
barPlot.dataSource = self;
- [graph addPlot:barPlot];
+ [self.graph addPlot:barPlot];
}
-(void)removePlots:(NSUInteger)count
{
// Clean up a deleted plot
+ CPTGraph *theGraph = self.graph;
- for ( int i = numberOfPlots; i > numberOfPlots - count; i-- ) {
- [self removeInputPortForKey:[NSString stringWithFormat:@"plotNumbers%i", i - 1]];
- [self removeInputPortForKey:[NSString stringWithFormat:@"plotDataLineColor%i", i - 1]];
- [self removeInputPortForKey:[NSString stringWithFormat:@"plotFillColor%i", i - 1]];
- [self removeInputPortForKey:[NSString stringWithFormat:@"plotDataLineWidth%i", i - 1]];
+ NSUInteger plotCount = self.numberOfPlots;
- [graph removePlot:[[graph allPlots] lastObject]];
+ for ( NSUInteger i = plotCount; i > plotCount - count; i-- ) {
+ [self removeInputPortForKey:[NSString stringWithFormat:@"plotNumbers%lu", (unsigned long)(i - 1)]];
+ [self removeInputPortForKey:[NSString stringWithFormat:@"plotDataLineColor%lu", (unsigned long)(i - 1)]];
+ [self removeInputPortForKey:[NSString stringWithFormat:@"plotFillColor%lu", (unsigned long)(i - 1)]];
+ [self removeInputPortForKey:[NSString stringWithFormat:@"plotDataLineWidth%lu", (unsigned long)(i - 1)]];
+
+ [theGraph removePlot:[theGraph allPlots].lastObject];
}
}
-(BOOL)configurePlots
{
+ CPTGraph *theGraph = self.graph;
+
// The pixel width of a single plot unit (1..2) along the x axis of the plot
- double count = (double)[[graph allPlots] count];
- double unitWidth = graph.plotAreaFrame.bounds.size.width / (self.inputXMax - self.inputXMin);
+ double count = (double)[theGraph allPlots].count;
+ double unitWidth = theGraph.plotAreaFrame.bounds.size.width / (self.inputXMax - self.inputXMin);
double barWidth = self.inputBarWidth * unitWidth / count;
// Configure scatter plots for active plot inputs
- for ( CPTBarPlot *plot in [graph allPlots] ) {
- int index = [[graph allPlots] indexOfObject:plot];
+ for ( CPTBarPlot *plot in [theGraph allPlots] ) {
+ NSUInteger index = [[theGraph allPlots] indexOfObject:plot];
CPTMutableLineStyle *lineStyle = [CPTMutableLineStyle lineStyle];
- lineStyle.lineColor = [CPTColor colorWithCGColor:(CGColorRef)[self dataLineColor : index]];
+ lineStyle.lineColor = [CPTColor colorWithCGColor:[self dataLineColor:index]];
lineStyle.lineWidth = [self dataLineWidth:index];
plot.lineStyle = lineStyle;
- plot.baseValue = CPTDecimalFromDouble(self.inputBaseValue);
- plot.barWidth = CPTDecimalFromDouble(barWidth);
- plot.barOffset = CPTDecimalFromDouble(self.inputBarOffset);
+ plot.baseValue = @(self.inputBaseValue);
+ plot.barWidth = @(barWidth);
+ plot.barOffset = @(self.inputBarOffset);
plot.barsAreHorizontal = self.inputHorizontalBars;
- plot.fill = [CPTFill fillWithColor:[CPTColor colorWithCGColor:(CGColorRef)[self areaFillColor : index]]];
+ CGColorRef fillColor = [self areaFillColor:index];
+ if ( fillColor ) {
+ plot.fill = [CPTFill fillWithColor:[CPTColor colorWithCGColor:fillColor]];
+ }
[plot reloadData];
}
@@ -185,44 +191,41 @@ -(BOOL)configurePlots
#pragma mark -
#pragma mark Data source methods
--(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot
+-(NSUInteger)numberOfRecordsForPlot:(nonnull CPTPlot *)plot
{
- NSUInteger plotIndex = [[graph allPlots] indexOfObject:plot];
+ NSUInteger plotIndex = [[self.graph allPlots] indexOfObject:plot];
NSString *key = [NSString stringWithFormat:@"plotNumbers%lu", (unsigned long)plotIndex];
- if ( ![self valueForInputKey:key] ) {
- return 0;
- }
-
return [[self valueForInputKey:key] count];
}
--(NSArray *)numbersForPlot:(CPTBarPlot *)plot field:(NSUInteger)fieldEnum recordIndexRange:(NSRange)indexRange
+-(nullable NSArray *)numbersForPlot:(nonnull CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndexRange:(NSRange __unused)indexRange
{
- NSUInteger plotIndex = [[graph allPlots] indexOfObject:plot];
+ NSUInteger plotIndex = [[self.graph allPlots] indexOfObject:plot];
NSString *key = [NSString stringWithFormat:@"plotNumbers%lu", (unsigned long)plotIndex];
- if ( ![self valueForInputKey:key] ) {
+ CPTDictionary *dict = [self valueForInputKey:key];
+
+ if ( !dict ) {
return nil;
}
- NSDictionary *dict = [self valueForInputKey:key];
- NSUInteger keyCount = [[dict allKeys] count];
- NSMutableArray *array = [NSMutableArray array];
+ NSUInteger keyCount = dict.allKeys.count;
+ CPTMutableNumberArray *array = [NSMutableArray array];
if ( fieldEnum == CPTBarPlotFieldBarLocation ) {
// Calculate horizontal position of bar - nth bar index + barWidth*plotIndex + 0.5
float xpos;
- float plotCount = [[graph allPlots] count];
+ float plotCount = [self.graph allPlots].count;
for ( NSUInteger i = 0; i < keyCount; i++ ) {
xpos = (float)i + (float)plotIndex / (plotCount);
- [array addObject:[NSDecimalNumber decimalNumberWithString:[NSString stringWithFormat:@"%f", xpos]]];
+ [array addObject:[NSDecimalNumber decimalNumberWithString:[NSString stringWithFormat:@"%f", (double)xpos]]];
}
}
else {
for ( NSUInteger i = 0; i < keyCount; i++ ) {
- [array addObject:[NSDecimalNumber decimalNumberWithString:[[dict valueForKey:[NSString stringWithFormat:@"%lu", (unsigned long)i]] stringValue]]];
+ [array addObject:[NSDecimalNumber decimalNumberWithString:[dict[[NSString stringWithFormat:@"%lu", (unsigned long)i]] stringValue]]];
}
}
diff --git a/QCPlugin/CPTPieChartPlugin.h b/QCPlugin/CPTPieChartPlugin.h
new file mode 100644
index 000000000..844715ba9
--- /dev/null
+++ b/QCPlugin/CPTPieChartPlugin.h
@@ -0,0 +1,14 @@
+#import "CorePlotQCPlugin.h"
+#import
+
+@interface CPTPieChartPlugIn : CorePlotQCPlugIn
+
+@property (readwrite, assign) double inputPieRadius;
+@property (readwrite, assign) double inputSliceLabelOffset;
+@property (readwrite, assign) double inputStartAngle;
+@property (readwrite, assign) NSUInteger inputSliceDirection;
+@property (readwrite, assign) double inputBorderWidth;
+@property (readwrite, assign, nonnull) CGColorRef inputBorderColor;
+@property (readwrite, assign, nonnull) CGColorRef inputLabelColor;
+
+@end
diff --git a/QCPlugin/CPPieChartPlugin.m b/QCPlugin/CPTPieChartPlugin.m
similarity index 63%
rename from QCPlugin/CPPieChartPlugin.m
rename to QCPlugin/CPTPieChartPlugin.m
index 8d5322a12..99aeb2ede 100644
--- a/QCPlugin/CPPieChartPlugin.m
+++ b/QCPlugin/CPTPieChartPlugin.m
@@ -1,6 +1,6 @@
-#import "CPPieChartPlugin.h"
+#import "CPTPieChartPlugin.h"
-@implementation CPPieChartPlugIn
+@implementation CPTPieChartPlugIn
/*
* NOTE: It seems that QC plugins don't inherit dynamic input ports which is
@@ -25,11 +25,11 @@ @implementation CPPieChartPlugIn
*/
@dynamic inputPieRadius, inputSliceLabelOffset, inputStartAngle, inputSliceDirection;
-+(NSDictionary *)attributes
++(nonnull NSDictionary *)attributes
{
return @{
- QCPlugInAttributeNameKey: @"Core Plot Pie Chart",
- QCPlugInAttributeDescriptionKey: @"Pie chart"
+ QCPlugInAttributeNameKey: @"Core Plot Pie Chart",
+ QCPlugInAttributeDescriptionKey: @"Pie chart"
};
}
@@ -55,71 +55,69 @@ -(double)inputYMin
// Pie charts only support one layer so we override the createViewController method (to hide the number of charts button)
--(QCPlugInViewController *)createViewController
+-(nullable QCPlugInViewController *)createViewController
{
return nil;
}
-+(NSArray *)sortedPropertyPortKeys
++(nonnull CPTStringArray *)sortedPropertyPortKeys
{
- NSArray *pieChartPropertyPortKeys = @[@"inputPieRadius", @"inputSliceLabelOffset", @"inputStartAngle", @"inputSliceDirection", @"inputBorderColor", @"inputBorderWidth"];
+ CPTStringArray *pieChartPropertyPortKeys = @[@"inputPieRadius", @"inputSliceLabelOffset", @"inputStartAngle", @"inputSliceDirection", @"inputBorderColor", @"inputBorderWidth"];
return [[super sortedPropertyPortKeys] arrayByAddingObjectsFromArray:pieChartPropertyPortKeys];
}
-+(NSDictionary *)attributesForPropertyPortWithKey:(NSString *)key
++(nullable CPTDictionary *)attributesForPropertyPortWithKey:(nullable NSString *)key
{
// 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);
- NSDictionary *result = @{
- QCPortAttributeNameKey: @"Border Color",
- QCPortAttributeDefaultValueKey: (id)grayColor
+ CGColorRef grayColor = CGColorCreateGenericGray(0.0, 1.0);
+ CPTDictionary *result = @{
+ QCPortAttributeNameKey: @"Border Color",
+ QCPortAttributeDefaultValueKey: (id)CFBridgingRelease(grayColor)
};
- CGColorRelease(grayColor);
return result;
}
else if ( [key isEqualToString:@"inputLabelColor"] ) {
- CGColorRef grayColor = CGColorCreateGenericGray(1.0, 1.0);
- NSDictionary *result = @{
- QCPortAttributeNameKey: @"Label Color",
- QCPortAttributeDefaultValueKey: (id)grayColor
+ CGColorRef grayColor = CGColorCreateGenericGray(1.0, 1.0);
+ CPTDictionary *result = @{
+ QCPortAttributeNameKey: @"Label Color",
+ QCPortAttributeDefaultValueKey: (id)CFBridgingRelease(grayColor)
};
- CGColorRelease(grayColor);
return result;
}
else {
@@ -149,16 +147,15 @@ -(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: (id)grayColor }
+ QCPortAttributeDefaultValueKey: (id)CFBridgingRelease(grayColor) }
];
- CGColorRelease(grayColor);
// Add the new plot to the graph
- CPTPieChart *pieChart = [[[CPTPieChart alloc] init] autorelease];
+ CPTPieChart *pieChart = [[CPTPieChart alloc] init];
pieChart.identifier = [NSString stringWithFormat:@"Pie Chart %lu", (unsigned long)(index + 1)];
pieChart.dataSource = self;
- [graph addPlot:pieChart];
+ [self.graph addPlot:pieChart];
}
}
@@ -167,26 +164,29 @@ -(void)addPlotWithIndex:(NSUInteger)index
-(void)createGraph
{
- if ( !graph ) {
+ if ( !self.graph ) {
// Create graph from theme
CPTTheme *theme = [CPTTheme themeNamed:kCPTPlainWhiteTheme];
- graph = (CPTXYGraph *)[theme newGraph];
- graph.axisSet = nil;
+ self.graph = (CPTXYGraph *)[theme newGraph];
+
+ self.graph.axisSet = nil;
}
}
-(BOOL)configureAxis
{
// We use no axis for the pie chart
- graph.axisSet = nil;
- graph.plotAreaFrame.plotArea.borderLineStyle = nil;
+ self.graph.axisSet = nil;
+
+ self.graph.plotAreaFrame.plotArea.borderLineStyle = nil;
+
return YES;
}
-(BOOL)configurePlots
{
// Configure the pie chart
- for ( CPTPieChart *pieChart in [graph allPlots] ) {
+ for ( CPTPieChart *pieChart in [self.graph allPlots] ) {
pieChart.plotArea.borderLineStyle = nil;
pieChart.pieRadius = self.inputPieRadius * MIN(self.inputPixelsWide, self.inputPixelsHigh) / 2.0;
@@ -216,35 +216,33 @@ -(BOOL)configurePlots
#pragma mark -
#pragma mark Data source methods
--(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot
+-(NSUInteger)numberOfRecordsForPlot:(nonnull CPTPlot *)plot
{
- NSUInteger plotIndex = [[graph allPlots] indexOfObject:plot];
+ NSUInteger plotIndex = [[self.graph allPlots] indexOfObject:plot];
NSString *key = [NSString stringWithFormat:@"plotNumbers%lu", (unsigned long)plotIndex];
- if ( ![self valueForInputKey:key] ) {
- return 0;
- }
-
return [[self valueForInputKey:key] count];
}
--(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index
+-(nullable id)numberForPlot:(nonnull CPTPlot *)plot field:(NSUInteger __unused)fieldEnum recordIndex:(NSUInteger)index
{
- NSUInteger plotIndex = [[graph allPlots] indexOfObject:plot];
+ NSUInteger plotIndex = [[self.graph allPlots] indexOfObject:plot];
NSString *key = [NSString stringWithFormat:@"plotNumbers%lu", (unsigned long)plotIndex];
- if ( ![self valueForInputKey:key] ) {
+ CPTDictionary *dict = [self valueForInputKey:key];
+
+ if ( dict ) {
+ return [NSDecimalNumber decimalNumberWithString:[dict[[NSString stringWithFormat:@"%lu", (unsigned long)index]] stringValue]];
+ }
+ else {
return nil;
}
-
- NSDictionary *dict = [self valueForInputKey:key];
- return [NSDecimalNumber decimalNumberWithString:[[dict valueForKey:[NSString stringWithFormat:@"%lu", (unsigned long)index]] stringValue]];
}
--(CPTFill *)sliceFillForPieChart:(CPTPieChart *)pieChart recordIndex:(NSUInteger)index
+-(nullable CPTFill *)sliceFillForPieChart:(nonnull CPTPieChart *__unused)pieChart recordIndex:(NSUInteger)index
{
- CGColorRef plotFillColor = [[CPTPieChart defaultPieSliceColorForIndex:index] cgColor];
- CGColorRef inputFillColor = (CGColorRef)[self areaFillColor : 0];
+ CGColorRef plotFillColor = [CPTPieChart defaultPieSliceColorForIndex:index].cgColor;
+ CGColorRef inputFillColor = (CGColorRef)[self areaFillColor:0];
const CGFloat *plotColorComponents = CGColorGetComponents(plotFillColor);
const CGFloat *inputColorComponents = CGColorGetComponents(inputFillColor);
@@ -258,23 +256,23 @@ -(CPTFill *)sliceFillForPieChart:(CPTPieChart *)pieChart recordIndex:(NSUInteger
CGColorRelease(fillColor);
- return [[[CPTFill alloc] initWithColor:fillCPColor] autorelease];
+ return [[CPTFill alloc] initWithColor:fillCPColor];
}
--(CPTTextLayer *)sliceLabelForPieChart:(CPTPieChart *)pieChart recordIndex:(NSUInteger)index
+-(nullable CPTTextLayer *)sliceLabelForPieChart:(nonnull CPTPieChart *)pieChart recordIndex:(NSUInteger)index
{
- NSUInteger plotIndex = [[graph allPlots] indexOfObject:pieChart];
+ NSUInteger plotIndex = [[self.graph allPlots] indexOfObject:pieChart];
NSString *key = [NSString stringWithFormat:@"plotLabels%lu", (unsigned long)plotIndex];
- if ( ![self valueForInputKey:key] ) {
+ CPTDictionary *dict = [self valueForInputKey:key];
+
+ if ( !dict ) {
return nil;
}
- NSDictionary *dict = [self valueForInputKey:key];
-
- NSString *label = [dict valueForKey:[NSString stringWithFormat:@"%lu", (unsigned long)index]];
+ NSString *label = dict[[NSString stringWithFormat:@"%lu", (unsigned long)index]];
- CPTTextLayer *layer = [[[CPTTextLayer alloc] initWithText:label] autorelease];
+ CPTTextLayer *layer = [[CPTTextLayer alloc] initWithText:label];
[layer sizeToFit];
CPTMutableTextStyle *style = [CPTMutableTextStyle textStyle];
diff --git a/QCPlugin/CPTScatterPlotPlugin.h b/QCPlugin/CPTScatterPlotPlugin.h
new file mode 100644
index 000000000..aaad42138
--- /dev/null
+++ b/QCPlugin/CPTScatterPlotPlugin.h
@@ -0,0 +1,6 @@
+#import "CorePlotQCPlugin.h"
+#import
+
+@interface CPTScatterPlotPlugIn : CorePlotQCPlugIn
+
+@end
diff --git a/QCPlugin/CPScatterPlotPlugin.m b/QCPlugin/CPTScatterPlotPlugin.m
similarity index 75%
rename from QCPlugin/CPScatterPlotPlugin.m
rename to QCPlugin/CPTScatterPlotPlugin.m
index df5f74a20..023a890db 100644
--- a/QCPlugin/CPScatterPlotPlugin.m
+++ b/QCPlugin/CPTScatterPlotPlugin.m
@@ -1,6 +1,6 @@
-#import "CPScatterPlotPlugIn.h"
+#import "CPTScatterPlotPlugin.h"
-@implementation CPScatterPlotPlugIn
+@implementation CPTScatterPlotPlugIn
/*
* NOTE: It seems that QC plugins don't inherit dynamic input ports which is
@@ -22,11 +22,11 @@ @implementation CPScatterPlotPlugIn
@dynamic inputXMin, inputXMax, inputYMin, inputYMax;
@dynamic inputXMajorIntervals, inputYMajorIntervals, inputXMinorIntervals, inputYMinorIntervals;
-+(NSDictionary *)attributes
++(nonnull NSDictionary *)attributes
{
return @{
- QCPlugInAttributeNameKey: @"Core Plot Scatter Plot",
- QCPlugInAttributeDescriptionKey: @"Scatter plot"
+ QCPlugInAttributeNameKey: @"Core Plot Scatter Plot",
+ QCPlugInAttributeDescriptionKey: @"Scatter plot"
};
}
@@ -51,18 +51,16 @@ -(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: (id)lineColor }
+ QCPortAttributeDefaultValueKey: (id)CFBridgingRelease(lineColor) }
];
- CGColorRelease(lineColor);
CGColorRef fillColor = [self newDefaultColorForPlot:index alpha:0.25];
[self addInputPortWithType:QCPortTypeColor
forKey:[NSString stringWithFormat:@"plotFillColor%lu", (unsigned long)index]
withAttributes:@{ QCPortAttributeNameKey: [NSString stringWithFormat:@"Plot Fill Color %lu", (unsigned long)(index + 1)],
QCPortAttributeTypeKey: QCPortTypeColor,
- QCPortAttributeDefaultValueKey: (id)fillColor }
+ QCPortAttributeDefaultValueKey: (id)CFBridgingRelease(fillColor) }
];
- CGColorRelease(fillColor);
[self addInputPortWithType:QCPortTypeNumber
forKey:[NSString stringWithFormat:@"plotDataLineWidth%lu", (unsigned long)index]
@@ -87,12 +85,11 @@ -(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: (id)symbolColor }
+ QCPortAttributeDefaultValueKey: (id)CFBridgingRelease(symbolColor) }
];
- CGColorRelease(symbolColor);
// Add the new plot to the graph
- CPTScatterPlot *scatterPlot = [[[CPTScatterPlot alloc] init] autorelease];
+ CPTScatterPlot *scatterPlot = [[CPTScatterPlot alloc] init];
scatterPlot.identifier = [NSString stringWithFormat:@"Data Source Plot %lu", (unsigned long)(index + 1)];
// Line Style
@@ -104,7 +101,7 @@ -(void)addPlotWithIndex:(NSUInteger)index
scatterPlot.dataLineStyle = lineStyle;
scatterPlot.areaFill = [CPTFill fillWithColor:[CPTColor colorWithCGColor:fillColor]];
scatterPlot.dataSource = self;
- [graph addPlot:scatterPlot];
+ [self.graph addPlot:scatterPlot];
CGColorRelease(lineColor);
CGColorRelease(fillColor);
@@ -113,24 +110,27 @@ -(void)addPlotWithIndex:(NSUInteger)index
-(void)removePlots:(NSUInteger)count
{
// Clean up a deleted plot
+ CPTGraph *theGraph = self.graph;
+
+ NSUInteger plotCount = self.numberOfPlots;
- for ( int i = numberOfPlots; i > numberOfPlots - count; i-- ) {
- [self removeInputPortForKey:[NSString stringWithFormat:@"plotXNumbers%i", i - 1]];
- [self removeInputPortForKey:[NSString stringWithFormat:@"plotYNumbers%i", i - 1]];
- [self removeInputPortForKey:[NSString stringWithFormat:@"plotDataLineColor%i", i - 1]];
- [self removeInputPortForKey:[NSString stringWithFormat:@"plotFillColor%i", i - 1]];
- [self removeInputPortForKey:[NSString stringWithFormat:@"plotDataLineWidth%i", i - 1]];
- [self removeInputPortForKey:[NSString stringWithFormat:@"plotDataSymbols%i", i - 1]];
- [self removeInputPortForKey:[NSString stringWithFormat:@"plotDataSymbolColor%i", i - 1]];
+ for ( NSUInteger i = plotCount; i > plotCount - count; i-- ) {
+ [self removeInputPortForKey:[NSString stringWithFormat:@"plotXNumbers%lu", (unsigned long)(i - 1)]];
+ [self removeInputPortForKey:[NSString stringWithFormat:@"plotYNumbers%lu", (unsigned long)(i - 1)]];
+ [self removeInputPortForKey:[NSString stringWithFormat:@"plotDataLineColor%lu", (unsigned long)(i - 1)]];
+ [self removeInputPortForKey:[NSString stringWithFormat:@"plotFillColor%lu", (unsigned long)(i - 1)]];
+ [self removeInputPortForKey:[NSString stringWithFormat:@"plotDataLineWidth%lu", (unsigned long)(i - 1)]];
+ [self removeInputPortForKey:[NSString stringWithFormat:@"plotDataSymbols%lu", (unsigned long)(i - 1)]];
+ [self removeInputPortForKey:[NSString stringWithFormat:@"plotDataSymbolColor%lu", (unsigned long)(i - 1)]];
- [graph removePlot:[[graph allPlots] lastObject]];
+ [theGraph removePlot:[theGraph allPlots].lastObject];
}
}
--(CPTPlotSymbol *)plotSymbol:(NSUInteger)index
+-(nullable CPTPlotSymbol *)plotSymbol:(NSUInteger)index
{
NSString *key = [NSString stringWithFormat:@"plotDataSymbols%lu", (unsigned long)index];
- NSUInteger value = [[self valueForInputKey:key] unsignedIntValue];
+ NSUInteger value = [[self valueForInputKey:key] unsignedIntegerValue];
switch ( value ) {
case 1:
@@ -168,22 +168,23 @@ -(CPTPlotSymbol *)plotSymbol:(NSUInteger)index
}
}
--(CGColorRef)dataSymbolColor:(NSUInteger)index
+-(nonnull CGColorRef)dataSymbolColor:(NSUInteger)index
{
NSString *key = [NSString stringWithFormat:@"plotDataSymbolColor%lu", (unsigned long)index];
- return (CGColorRef)[self valueForInputKey : key];
+ return (__bridge CGColorRef)[self valueForInputKey:key];
}
-(BOOL)configurePlots
{
// Adjust the plots configuration using the QC input ports
+ CPTGraph *theGraph = self.graph;
- for ( CPTScatterPlot *plot in [graph allPlots] ) {
- int index = [[graph allPlots] indexOfObject:plot];
+ for ( CPTScatterPlot *plot in [theGraph allPlots] ) {
+ NSUInteger index = [[theGraph allPlots] indexOfObject:plot];
CPTMutableLineStyle *lineStyle = [CPTMutableLineStyle lineStyle];
- lineStyle.lineColor = [CPTColor colorWithCGColor:(CGColorRef)[self dataLineColor : index]];
+ lineStyle.lineColor = [CPTColor colorWithCGColor:[self dataLineColor:index]];
lineStyle.lineWidth = [self dataLineWidth:index];
plot.dataLineStyle = lineStyle;
@@ -192,8 +193,11 @@ -(BOOL)configurePlots
plot.plotSymbol.lineStyle = lineStyle;
plot.plotSymbol.fill = [CPTFill fillWithColor:[CPTColor colorWithCGColor:[self dataSymbolColor:index]]];
plot.plotSymbol.size = CGSizeMake(10.0, 10.0);
- plot.areaFill = [CPTFill fillWithColor:[CPTColor colorWithCGColor:(CGColorRef)[self areaFillColor : index]]];
- plot.areaBaseValue = CPTDecimalFromFloat( MAX( self.inputYMin, MIN(self.inputYMax, 0.0) ) );
+ CGColorRef fillColor = [self areaFillColor:index];
+ if ( fillColor ) {
+ plot.areaFill = [CPTFill fillWithColor:[CPTColor colorWithCGColor:fillColor]];
+ }
+ plot.areaBaseValue = @(MAX(self.inputYMin, MIN(self.inputYMax, 0.0)));
[plot reloadData];
}
@@ -203,42 +207,46 @@ -(BOOL)configurePlots
#pragma mark -
#pragma mark Data source methods
--(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot
+-(NSUInteger)numberOfRecordsForPlot:(nonnull CPTPlot *)plot
{
- NSUInteger plotIndex = [[graph allPlots] indexOfObject:plot];
+ NSUInteger plotIndex = [[self.graph allPlots] indexOfObject:plot];
NSString *xKey = [NSString stringWithFormat:@"plotXNumbers%lu", (unsigned long)plotIndex];
NSString *yKey = [NSString stringWithFormat:@"plotYNumbers%lu", (unsigned long)plotIndex];
- if ( ![self valueForInputKey:xKey] || ![self valueForInputKey:yKey] ) {
+ CPTDictionary *xVals = [self valueForInputKey:xKey];
+ CPTDictionary *yVals = [self valueForInputKey:yKey];
+
+ if ( !xVals || !yVals ) {
return 0;
}
- else if ( [[self valueForInputKey:xKey] count] != [[self valueForInputKey:yKey] count] ) {
+ else if ( xVals.count != yVals.count ) {
return 0;
}
- return [[self valueForInputKey:xKey] count];
+ return xVals.count;
}
--(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index
+-(nullable id)numberForPlot:(nonnull CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index
{
- NSUInteger plotIndex = [[graph allPlots] indexOfObject:plot];
+ NSUInteger plotIndex = [[self.graph allPlots] indexOfObject:plot];
NSString *xKey = [NSString stringWithFormat:@"plotXNumbers%lu", (unsigned long)plotIndex];
NSString *yKey = [NSString stringWithFormat:@"plotYNumbers%lu", (unsigned long)plotIndex];
- if ( ![self valueForInputKey:xKey] || ![self valueForInputKey:yKey] ) {
+ CPTDictionary *xVals = [self valueForInputKey:xKey];
+ CPTDictionary *yVals = [self valueForInputKey:yKey];
+
+ if ( !xVals || !yVals ) {
return nil;
}
- else if ( [[self valueForInputKey:xKey] count] != [[self valueForInputKey:yKey] count] ) {
+ else if ( xVals.count != yVals.count ) {
return nil;
}
- NSString *key = (fieldEnum == CPTScatterPlotFieldX) ? xKey : yKey;
-
- NSDictionary *dict = [self valueForInputKey:key];
+ CPTDictionary *dict = (fieldEnum == CPTScatterPlotFieldX) ? xVals : yVals;
NSString *dictionaryKey = [NSString stringWithFormat:@"%lu", (unsigned long)index];
- NSNumber *number = [dict valueForKey:dictionaryKey];
+ NSNumber *number = dict[dictionaryKey];
if ( number == nil ) {
NSLog(@"No value for key: %@", dictionaryKey);
diff --git a/QCPlugin/Compositions/Bar Chart.qtz b/QCPlugin/Compositions/Bar Chart.qtz
index 09d959b1d..d3366575d 100644
Binary files a/QCPlugin/Compositions/Bar Chart.qtz and b/QCPlugin/Compositions/Bar Chart.qtz differ
diff --git a/QCPlugin/Compositions/Layers.qtz b/QCPlugin/Compositions/Layers.qtz
index 5169a3d46..336285607 100644
Binary files a/QCPlugin/Compositions/Layers.qtz and b/QCPlugin/Compositions/Layers.qtz differ
diff --git a/QCPlugin/Compositions/Pie Chart.qtz b/QCPlugin/Compositions/Pie Chart.qtz
index 9574e45db..93307ed1d 100644
Binary files a/QCPlugin/Compositions/Pie Chart.qtz and b/QCPlugin/Compositions/Pie Chart.qtz differ
diff --git a/QCPlugin/Compositions/Scatter Plot.qtz b/QCPlugin/Compositions/Scatter Plot.qtz
index 91c2227d1..349c95950 100644
Binary files a/QCPlugin/Compositions/Scatter Plot.qtz and b/QCPlugin/Compositions/Scatter Plot.qtz differ
diff --git a/QCPlugin/CorePlotQCPlugin.h b/QCPlugin/CorePlotQCPlugin.h
index f692edb75..99354c2d5 100644
--- a/QCPlugin/CorePlotQCPlugin.h
+++ b/QCPlugin/CorePlotQCPlugin.h
@@ -2,50 +2,36 @@
#import
@interface CorePlotQCPlugIn : QCPlugIn
-{
- NSUInteger numberOfPlots;
- BOOL configurationCheck;
- void *imageData;
- CGContextRef bitmapContext;
- id imageProvider;
- CPTGraph *graph;
-}
+@property (readwrite, strong, nullable) CPTGraph *graph;
-/*
- * Declare here the Obj-C 2.0 properties to be used as input and output ports for the plug-in e.g.
- * @property double inputFoo;
- * @property(assign) NSString* outputBar;
- * You can access their values in the appropriate plug-in methods using self.inputFoo or self.inputBar
- */
+@property (readwrite, strong, nonnull) id outputImage;
-@property (assign) id outputImage;
+@property (readwrite, assign) NSUInteger numberOfPlots;
-@property (assign) NSUInteger numberOfPlots;
+@property (readwrite, assign) NSUInteger inputPixelsWide;
+@property (readwrite, assign) NSUInteger inputPixelsHigh;
-@property (assign) NSUInteger inputPixelsWide;
-@property (assign) NSUInteger inputPixelsHigh;
+@property (readwrite, assign, nonnull) CGColorRef inputPlotAreaColor;
-@property (assign) CGColorRef inputPlotAreaColor;
+@property (readwrite, assign, nonnull) CGColorRef inputAxisColor;
+@property (readwrite, assign) double inputAxisLineWidth;
+@property (readwrite, assign) double inputAxisMajorTickWidth;
+@property (readwrite, assign) double inputAxisMinorTickWidth;
+@property (readwrite, assign) double inputAxisMajorTickLength;
+@property (readwrite, assign) double inputAxisMinorTickLength;
+@property (readwrite, assign) double inputMajorGridLineWidth;
+@property (readwrite, assign) double inputMinorGridLineWidth;
-@property (assign) CGColorRef inputAxisColor;
-@property (assign) double inputAxisLineWidth;
-@property (assign) double inputAxisMajorTickWidth;
-@property (assign) double inputAxisMinorTickWidth;
-@property (assign) double inputAxisMajorTickLength;
-@property (assign) double inputAxisMinorTickLength;
-@property (assign) double inputMajorGridLineWidth;
-@property (assign) double inputMinorGridLineWidth;
+@property (readwrite, assign) NSUInteger inputXMajorIntervals;
+@property (readwrite, assign) NSUInteger inputYMajorIntervals;
+@property (readwrite, assign) NSUInteger inputXMinorIntervals;
+@property (readwrite, assign) NSUInteger inputYMinorIntervals;
-@property (assign) NSUInteger inputXMajorIntervals;
-@property (assign) NSUInteger inputYMajorIntervals;
-@property (assign) NSUInteger inputXMinorIntervals;
-@property (assign) NSUInteger inputYMinorIntervals;
-
-@property (assign) double inputXMin;
-@property (assign) double inputXMax;
-@property (assign) double inputYMin;
-@property (assign) double inputYMax;
+@property (readwrite, assign) double inputXMin;
+@property (readwrite, assign) double inputXMax;
+@property (readwrite, assign) double inputYMin;
+@property (readwrite, assign) double inputYMax;
-(void)createGraph;
-(void)addPlots:(NSUInteger)count;
@@ -55,14 +41,14 @@
-(BOOL)configurePlots;
-(BOOL)configureAxis;
--(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot;
--(CGColorRef)newDefaultColorForPlot:(NSUInteger)index alpha:(CGFloat)alpha;
+-(NSUInteger)numberOfRecordsForPlot:(nonnull CPTPlot *)plot;
+-(nonnull CGColorRef)newDefaultColorForPlot:(NSUInteger)index alpha:(CGFloat)alpha;
-(void)freeResources;
--(id)dataLineColor:(NSUInteger)index;
+-(nonnull CGColorRef)dataLineColor:(NSUInteger)index;
-(CGFloat)dataLineWidth:(NSUInteger)index;
--(id)areaFillColor:(NSUInteger)index;
--(CGImageRef)newAreaFillImage:(NSUInteger)index;
+-(nullable CGColorRef)areaFillColor:(NSUInteger)index;
+-(nullable CGImageRef)newAreaFillImage:(NSUInteger)index;
@end
diff --git a/QCPlugin/CorePlotQCPlugin.m b/QCPlugin/CorePlotQCPlugin.m
index bf4826080..3aa3ef332 100644
--- a/QCPlugin/CorePlotQCPlugin.m
+++ b/QCPlugin/CorePlotQCPlugin.m
@@ -1,14 +1,26 @@
-#import "CorePlotQCPlugIn.h"
+#import "CorePlotQCPlugin.h"
#import
#define kQCPlugIn_Name @"CorePlotQCPlugIn"
#define kQCPlugIn_Description @"CorePlotQCPlugIn base plugin."
+#pragma mark -
+
+@interface CorePlotQCPlugIn()
+
+@property (nonatomic, readwrite, strong, nullable) NSMutableData *imageData;
+@property (nonatomic, readwrite, assign, nullable) CGContextRef bitmapContext;
+@property (nonatomic, readwrite, strong, nullable) id imageProvider;
+
+void drawErrorText(CGContextRef __nonnull context, CGRect rect);
+
+@end
+
+#pragma mark -
+
// Draws the string "ERROR" in the given context in big red letters
-void drawErrorText(CGContextRef context, CGRect rect)
+void drawErrorText(CGContextRef __nonnull context, CGRect rect)
{
- // :'(
-
CGContextSaveGState(context);
CGFloat w = rect.size.width;
@@ -44,6 +56,11 @@ void drawErrorText(CGContextRef context, CGRect rect)
@implementation CorePlotQCPlugIn
+@synthesize graph;
+@synthesize imageData;
+@synthesize bitmapContext;
+@synthesize imageProvider;
+
// TODO: Make the port accessors dynamic, that way certain inputs can be removed based on settings and subclasses won't need the @dynamic declarations
/*
@@ -64,17 +81,17 @@ @implementation CorePlotQCPlugIn
/*
* Synthesized accessors for internal PlugIn settings
*/
-@dynamic numberOfPlots;
+@synthesize numberOfPlots;
-+(NSDictionary *)attributes
++(nonnull NSDictionary *)attributes
{
/*
* Return a dictionary of attributes describing the plug-in (QCPlugInAttributeNameKey, QCPlugInAttributeDescriptionKey...).
*/
return @{
- QCPlugInAttributeNameKey: kQCPlugIn_Name,
- QCPlugInAttributeDescriptionKey: kQCPlugIn_Description
+ QCPlugInAttributeNameKey: kQCPlugIn_Name,
+ QCPlugInAttributeDescriptionKey: kQCPlugIn_Description
};
}
@@ -96,21 +113,20 @@ +(QCPlugInTimeMode)timeMode
return kQCPlugInTimeModeNone;
}
--(id)init
+-(nonnull instancetype)init
{
- if ( (self = [super init]) ) {
+ if ((self = [super init])) {
/*
* Allocate any permanent resource required by the plug-in.
*/
[self createGraph];
- numberOfPlots = 0;
- [self setNumberOfPlots:1];
+ self.numberOfPlots = 1;
imageData = nil;
imageProvider = nil;
- bitmapContext = nil;
+ bitmapContext = NULL;
}
return self;
@@ -118,37 +134,22 @@ -(id)init
-(void)dealloc
{
- /*
- * Release any resources created in -init.
- */
-
[self freeResources];
-
- [super dealloc];
}
-(void)freeImageResources
{
- if ( bitmapContext ) {
- CGContextRelease(bitmapContext);
- bitmapContext = nil;
- }
- if ( imageData ) {
- free(imageData);
- imageData = nil;
- }
+ self.bitmapContext = NULL;
+ self.imageData = nil;
}
-(void)freeResources
{
[self freeImageResources];
- if ( graph ) {
- [graph release];
- graph = nil;
- }
+ self.graph = nil;
}
--(QCPlugInViewController *)createViewController
+-(nullable QCPlugInViewController *)createViewController
{
/*
* Return a new QCPlugInViewController to edit the internal settings of this plug-in instance.
@@ -161,7 +162,7 @@ -(QCPlugInViewController *)createViewController
#pragma mark -
#pragma mark Input and output port configuration
-+(NSArray *)sortedPropertyPortKeys
++(nonnull CPTStringArray *)sortedPropertyPortKeys
{
return @[@"inputPixelsWide",
@"inputPixelsHigh",
@@ -185,7 +186,7 @@ +(NSArray *)sortedPropertyPortKeys
@"inputAxisMinorTickWidth"];
}
-+(NSDictionary *)attributesForPropertyPortWithKey:(NSString *)key
++(nullable CPTDictionary *)attributesForPropertyPortWithKey:(nullable NSString *)key
{
/*
* Specify the optional attributes for property based ports (QCPortAttributeNameKey, QCPortAttributeDefaultValueKey...).
@@ -193,159 +194,157 @@ +(NSDictionary *)attributesForPropertyPortWithKey:(NSString *)key
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);
- NSDictionary *result = @{
- QCPortAttributeNameKey: @"Axis Color",
- QCPortAttributeDefaultValueKey: (id)axisColor
+ CGColorRef axisColor = CGColorCreateGenericRGB(1.0, 1.0, 1.0, 1.0);
+ CPTDictionary *result = @{
+ QCPortAttributeNameKey: @"Axis Color",
+ QCPortAttributeDefaultValueKey: (id)CFBridgingRelease(axisColor)
};
- CGColorRelease(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);
- NSDictionary *result = @{
- QCPortAttributeNameKey: @"Plot Area Color",
- QCPortAttributeDefaultValueKey: (id)plotAreaColor
+ CPTDictionary *result = @{
+ QCPortAttributeNameKey: @"Plot Area Color",
+ QCPortAttributeDefaultValueKey: (id)CFBridgingRelease(plotAreaColor)
};
- CGColorRelease(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"
};
}
@@ -357,30 +356,31 @@ +(NSDictionary *)attributesForPropertyPortWithKey:(NSString *)key
-(void)createGraph
{
- if ( !graph ) {
+ if ( !self.graph ) {
// Create graph from theme
- CPTTheme *theme = [CPTTheme themeNamed:kCPTPlainBlackTheme];
- graph = (CPTXYGraph *)[theme newGraph];
+ CPTTheme *theme = [CPTTheme themeNamed:kCPTPlainBlackTheme];
+ CPTXYGraph *newGraph = (CPTXYGraph *)[theme newGraph];
+ self.graph = newGraph;
// Setup scatter plot space
- CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace;
- plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(1.0) length:CPTDecimalFromFloat(1.0)];
- plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(-1.0) length:CPTDecimalFromFloat(1.0)];
+ CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)newGraph.defaultPlotSpace;
+ plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:@1.0 length:@1.0];
+ plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:@(-1.0) length:@1.0];
// Axes
- CPTXYAxisSet *axisSet = (CPTXYAxisSet *)graph.axisSet;
+ CPTXYAxisSet *axisSet = (CPTXYAxisSet *)newGraph.axisSet;
CPTXYAxis *x = axisSet.xAxis;
- x.majorIntervalLength = CPTDecimalFromFloat(0.5);
+ x.majorIntervalLength = @0.5;
x.minorTicksPerInterval = 2;
CPTXYAxis *y = axisSet.yAxis;
- y.majorIntervalLength = CPTDecimalFromFloat(0.5);
+ y.majorIntervalLength = @0.5;
y.minorTicksPerInterval = 5;
}
}
--(CGColorRef)newDefaultColorForPlot:(NSUInteger)index alpha:(CGFloat)alpha
+-(nonnull CGColorRef)newDefaultColorForPlot:(NSUInteger)index alpha:(CGFloat)alpha
{
CGColorRef color;
@@ -419,8 +419,10 @@ -(CGColorRef)newDefaultColorForPlot:(NSUInteger)index alpha:(CGFloat)alpha
-(void)addPlots:(NSUInteger)count
{
- for ( int i = 0; i < count; i++ ) {
- [self addPlotWithIndex:i + numberOfPlots];
+ NSUInteger plotCount = self.numberOfPlots;
+
+ for ( NSUInteger i = 0; i < count; i++ ) {
+ [self addPlotWithIndex:i + plotCount];
}
}
@@ -428,7 +430,7 @@ -(BOOL)configureAxis
{
CPTColor *axisColor = [CPTColor colorWithCGColor:self.inputAxisColor];
- CPTXYAxisSet *set = (CPTXYAxisSet *)graph.axisSet;
+ CPTXYAxisSet *set = (CPTXYAxisSet *)self.graph.axisSet;
CPTMutableLineStyle *lineStyle = [CPTMutableLineStyle lineStyle];
lineStyle.lineColor = axisColor;
@@ -449,11 +451,11 @@ -(BOOL)configureAxis
set.xAxis.labelTextStyle = textStyle;
double xrange = self.inputXMax - self.inputXMin;
- set.xAxis.majorIntervalLength = CPTDecimalFromDouble( xrange / (self.inputXMajorIntervals) );
+ set.xAxis.majorIntervalLength = @(xrange / (self.inputXMajorIntervals));
set.xAxis.minorTicksPerInterval = self.inputXMinorIntervals;
double yrange = self.inputYMax - self.inputYMin;
- set.yAxis.majorIntervalLength = CPTDecimalFromDouble( yrange / (self.inputYMajorIntervals) );
+ set.yAxis.majorIntervalLength = @(yrange / (self.inputYMajorIntervals));
set.yAxis.minorTicksPerInterval = self.inputYMinorIntervals;
set.xAxis.minorTickLength = self.inputAxisMinorTickLength;
@@ -495,32 +497,35 @@ -(BOOL)configureAxis
return YES;
}
--(id)dataLineColor:(NSUInteger)index
+-(nonnull CGColorRef)dataLineColor:(NSUInteger)index
{
NSString *key = [NSString stringWithFormat:@"plotDataLineColor%lu", (unsigned long)index];
- return [self valueForInputKey:key];
+ return (__bridge CGColorRef)([self valueForInputKey:key]);
}
-(CGFloat)dataLineWidth:(NSUInteger)index
{
NSString *key = [NSString stringWithFormat:@"plotDataLineWidth%lu", (unsigned long)index];
- return [[self valueForInputKey:key] floatValue];
+ NSNumber *inputValue = [self valueForInputKey:key];
+
+ return inputValue.doubleValue;
}
--(id)areaFillColor:(NSUInteger)index
+-(nullable CGColorRef)areaFillColor:(NSUInteger)index
{
NSString *key = [NSString stringWithFormat:@"plotFillColor%lu", (unsigned long)index];
- return [self valueForInputKey:key];
+ return (__bridge CGColorRef)([self valueForInputKey:key]);
}
--(CGImageRef)newAreaFillImage:(NSUInteger)index
+-(nullable CGImageRef)newAreaFillImage:(NSUInteger)index
{
NSString *key = [NSString stringWithFormat:@"plotFillImage%lu", (unsigned long)index];
id img = [self valueForInputKey:key];
+
if ( !img ) {
return nil;
}
@@ -534,20 +539,26 @@ -(CGImageRef)newAreaFillImage:(NSUInteger)index
CGColorSpaceRef rgbColorSpace = CGColorSpaceCreateDeviceRGB();
[img lockBufferRepresentationWithPixelFormat:pixelFormat colorSpace:rgbColorSpace forBounds:[img imageBounds]];
CGColorSpaceRelease(rgbColorSpace);
- void *baseAddress = (void *)[img bufferBaseAddress];
+
+ const void *baseAddress = [img bufferBaseAddress];
NSUInteger pixelsWide = [img bufferPixelsWide];
NSUInteger pixelsHigh = [img bufferPixelsHigh];
NSUInteger bitsPerComponent = 8;
NSUInteger bytesPerRow = [img bufferBytesPerRow];
CGColorSpaceRef colorSpace = [img bufferColorSpace];
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wincompatible-pointer-types-discards-qualifiers"
+
CGContextRef imgContext = CGBitmapContextCreate(baseAddress,
pixelsWide,
pixelsHigh,
bitsPerComponent,
bytesPerRow,
colorSpace,
- kCGImageAlphaNoneSkipLast);
+ (CGBitmapInfo)kCGImageAlphaNoneSkipLast);
+
+#pragma clang diagnostic pop
CGImageRef imageRef = CGBitmapContextCreateImage(imgContext);
@@ -558,80 +569,88 @@ -(CGImageRef)newAreaFillImage:(NSUInteger)index
return imageRef;
}
-static void _BufferReleaseCallback(const void *address, void *context)
+static void _BufferReleaseCallback(const void *__nonnull __unused address, void *__nonnull __unused context)
{
// Don't do anything. We release the buffer manually when it's recreated or during dealloc
}
--(void)createImageResourcesWithContext:(id)context
+-(void)createImageResourcesWithContext:(nonnull id)context
{
// Create a CG bitmap for drawing. The image data is released when QC calls _BufferReleaseCallback
- CGSize boundsSize = graph.bounds.size;
+ CGSize boundsSize = self.graph.bounds.size;
NSUInteger bitsPerComponent = 8;
- NSUInteger rowBytes = (NSInteger)boundsSize.width * 4;
+ size_t rowBytes = (size_t)boundsSize.width * 4;
if ( rowBytes % 16 ) {
- rowBytes = ( (rowBytes / 16) + 1 ) * 16;
+ rowBytes = ((rowBytes / 16) + 1) * 16;
}
- if ( !imageData ) {
- imageData = valloc(rowBytes * boundsSize.height);
- bitmapContext = CGBitmapContextCreate(imageData,
- boundsSize.width,
- boundsSize.height,
- bitsPerComponent,
- rowBytes,
- [context colorSpace],
- kCGImageAlphaPremultipliedFirst);
- }
- if ( !imageData ) {
- NSLog(@"Couldn't allocate memory for image data");
- return;
+ if ( !self.imageData ) {
+ size_t bufferLength = rowBytes * (size_t)boundsSize.height;
+ void *buffer = valloc(bufferLength);
+
+ if ( !buffer ) {
+ NSLog(@"Couldn't allocate memory for image data");
+ return;
+ }
+
+ self.imageData = [NSMutableData dataWithBytesNoCopy:buffer length:bufferLength];
}
- if ( !bitmapContext ) {
- free(imageData);
- imageData = nil;
+
+ CGContextRef newContext = CGBitmapContextCreate(self.imageData.mutableBytes,
+ (size_t)boundsSize.width,
+ (size_t)boundsSize.height,
+ bitsPerComponent,
+ rowBytes,
+ [context colorSpace],
+ (CGBitmapInfo)kCGImageAlphaPremultipliedFirst);
+ self.bitmapContext = newContext;
+
+ if ( !newContext ) {
+ self.imageData = nil;
NSLog(@"Couldn't create bitmap context");
return;
}
+ 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
#if __BIG_ENDIAN__
- imageProvider = [context outputImageProviderFromBufferWithPixelFormat:QCPlugInPixelFormatBGRA8
- pixelsWide:(NSInteger)boundsSize.width
- pixelsHigh:(NSInteger)boundsSize.height
- baseAddress:imageData
- bytesPerRow:rowBytes
- releaseCallback:_BufferReleaseCallback
- releaseContext:NULL
- colorSpace:[context colorSpace]
- shouldColorMatch:YES];
+ self.imageProvider = [context outputImageProviderFromBufferWithPixelFormat:QCPlugInPixelFormatBGRA8
+ pixelsWide:(NSUInteger)boundsSize.width
+ pixelsHigh:(NSUInteger)boundsSize.height
+ baseAddress:self.imageData.bytes
+ bytesPerRow:rowBytes
+ releaseCallback:_BufferReleaseCallback
+ releaseContext:NULL
+ colorSpace:[context colorSpace]
+ shouldColorMatch:YES];
#else
- imageProvider = [context outputImageProviderFromBufferWithPixelFormat:QCPlugInPixelFormatARGB8
- pixelsWide:(NSInteger)boundsSize.width
- pixelsHigh:(NSInteger)boundsSize.height
- baseAddress:imageData
- bytesPerRow:rowBytes
- releaseCallback:_BufferReleaseCallback
- releaseContext:NULL
- colorSpace:[context colorSpace]
- shouldColorMatch:YES];
+ self.imageProvider = [context outputImageProviderFromBufferWithPixelFormat:QCPlugInPixelFormatARGB8
+ pixelsWide:(NSUInteger)boundsSize.width
+ pixelsHigh:(NSUInteger)boundsSize.height
+ baseAddress:self.imageData.bytes
+ bytesPerRow:rowBytes
+ releaseCallback:_BufferReleaseCallback
+ releaseContext:NULL
+ colorSpace:[context colorSpace]
+ shouldColorMatch:YES];
#endif
}
#pragma mark -
#pragma mark Data source methods
--(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot
+-(NSUInteger)numberOfRecordsForPlot:(nonnull CPTPlot *__unused)plot
{
return 0;
}
--(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index
+-(nullable id)numberForPlot:(nonnull CPTPlot *__unused)plot field:(NSUInteger __unused)fieldEnum recordIndex:(NSUInteger __unused)index
{
return @0;
}
@@ -658,12 +677,12 @@ -(void)setNumberOfPlots:(NSUInteger)number
numberOfPlots = number;
}
-+(NSArray *)plugInKeys
++(nonnull CPTStringArray *)plugInKeys
{
return @[@"numberOfPlots"];
}
--(id)serializedValueForKey:(NSString *)key;
+-(nonnull id)serializedValueForKey:(nonnull NSString *)key
{
/*
* Provide custom serialization for the plug-in internal settings that are not values complying to the protocol.
@@ -678,7 +697,7 @@ -(id)serializedValueForKey:(NSString *)key;
}
}
--(void)setSerializedValue:(id)serializedValue forKey:(NSString *)key
+-(void)setSerializedValue:(nonnull id)serializedValue forKey:(nonnull NSString *)key
{
/*
* Provide deserialization for the plug-in internal settings that were custom serialized in -serializedValueForKey.
@@ -686,24 +705,35 @@ -(void)setSerializedValue:(id)serializedValue forKey:(NSString *)key
*/
if ( [key isEqualToString:@"numberOfPlots"] ) {
- [self setNumberOfPlots:MAX(1, [serializedValue intValue])];
+ [self setNumberOfPlots:MAX(1, [(NSNumber *) serializedValue unsignedIntegerValue])];
}
else {
[super setSerializedValue:serializedValue forKey:key];
}
}
+#pragma mark -
+#pragma mark Accessors
+
+-(void)setBitmapContext:(nullable CGContextRef)newContext
+{
+ if ( newContext != bitmapContext ) {
+ CGContextRelease(bitmapContext);
+ bitmapContext = CGContextRetain(newContext);
+ }
+}
+
#pragma mark -
#pragma mark Subclass methods
--(void)addPlotWithIndex:(NSUInteger)index
+-(void)addPlotWithIndex:(NSUInteger __unused)index
{
/*
* Subclasses should override this method to create their own ports, plots, and add the plots to the graph
*/
}
--(void)removePlots:(NSUInteger)count
+-(void)removePlots:(NSUInteger __unused)count
{
/*
* Subclasses should override this method to remove plots and their ports
@@ -726,44 +756,41 @@ -(BOOL)configureGraph
*/
// Configure the graph area
- CGRect frame = CGRectMake( 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));
- [graph setBounds:frame];
+ self.graph.bounds = frame;
- graph.paddingLeft = 0.0;
- graph.paddingRight = 0.0;
- graph.paddingTop = 0.0;
- graph.paddingBottom = 0.0;
+ self.graph.paddingLeft = 0.0;
+ self.graph.paddingRight = 0.0;
+ self.graph.paddingTop = 0.0;
+ 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;
}
- [graph layoutSublayers];
- [graph layoutIfNeeded];
-
- graph.fill = nil;
- graph.plotAreaFrame.fill = [CPTFill fillWithColor:[CPTColor colorWithCGColor:self.inputPlotAreaColor]];
+ self.graph.fill = nil;
+ self.graph.plotAreaFrame.fill = [CPTFill fillWithColor:[CPTColor colorWithCGColor:self.inputPlotAreaColor]];
if ( self.inputAxisLineWidth > 0.0 ) {
CPTMutableLineStyle *lineStyle = [CPTMutableLineStyle lineStyle];
- lineStyle.lineWidth = self.inputAxisLineWidth;
- lineStyle.lineColor = [CPTColor colorWithCGColor:self.inputAxisColor];
- graph.plotAreaFrame.borderLineStyle = lineStyle;
+ lineStyle.lineWidth = self.inputAxisLineWidth;
+ lineStyle.lineColor = [CPTColor colorWithCGColor:self.inputAxisColor];
+ self.graph.plotAreaFrame.borderLineStyle = lineStyle;
}
else {
- graph.plotAreaFrame.borderLineStyle = nil;
+ self.graph.plotAreaFrame.borderLineStyle = nil;
}
// Configure the plot space and axis sets
- CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace;
- plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(self.inputXMin) length:CPTDecimalFromFloat(self.inputXMax - self.inputXMin)];
- plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(self.inputYMin) length:CPTDecimalFromFloat(self.inputYMax - self.inputYMin)];
+ CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)self.graph.defaultPlotSpace;
+ plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:@(self.inputXMin) length:@(self.inputXMax - self.inputXMin)];
+ plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:@(self.inputYMin) length:@(self.inputYMax - self.inputYMin)];
[self configureAxis];
- [graph layoutSublayers];
- [graph setNeedsDisplay];
+ [self.graph layoutIfNeeded];
+ [self.graph setNeedsDisplay];
return YES;
}
@@ -774,13 +801,13 @@ -(BOOL)configureGraph
@implementation CorePlotQCPlugIn(Execution)
--(BOOL)execute:(id)context atTime:(NSTimeInterval)time withArguments:(NSDictionary *)arguments
+-(BOOL)execute:(nonnull id)context atTime:(NSTimeInterval __unused)time withArguments:(nullable CPTDictionary *__unused)arguments
{
// Configure the plot for drawing
- configurationCheck = [self configureGraph];
+ BOOL configurationCheck = [self configureGraph];
// If the output image dimensions change recreate the image resources
- if ( [self didValueForInputKeyChange:@"inputPixelsWide"] || [self didValueForInputKeyChange:@"inputPixelsHigh"] || !imageProvider ) {
+ if ( [self didValueForInputKeyChange:@"inputPixelsWide"] || [self didValueForInputKeyChange:@"inputPixelsHigh"] || !self.imageProvider ) {
[self freeImageResources];
}
@@ -788,27 +815,33 @@ -(BOOL)execute:(id)context atTime:(NSTimeInterval)time withArgu
[self createImageResourcesWithContext:context];
// Draw the plot ...
- CGSize boundsSize = graph.bounds.size;
- CGContextClearRect( bitmapContext, CGRectMake(0.0, 0.0, boundsSize.width, boundsSize.height) );
- CGContextSetRGBFillColor(bitmapContext, 0.0, 0.0, 0.0, 0.0);
- CGContextFillRect( bitmapContext, CGRectMake(0, 0, boundsSize.width, boundsSize.height) );
- CGContextSetAllowsAntialiasing(bitmapContext, true);
+ CGSize boundsSize = self.graph.bounds.size;
+ CGContextRef bmContext = self.bitmapContext;
+ 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));
+ CGContextSetAllowsAntialiasing(bmContext, true);
if ( configurationCheck ) {
[self configurePlots];
- [graph recursivelyRenderInContext:bitmapContext];
+ [self.graph recursivelyRenderInContext:bmContext];
}
else {
- drawErrorText( bitmapContext, CGRectMake(0, 0, self.inputPixelsWide, self.inputPixelsHigh) );
+ drawErrorText(bmContext, CPTRectMake(0, 0, self.inputPixelsWide, self.inputPixelsHigh));
}
- //CGContextSetAllowsAntialiasing(bitmapContext, false);
- CGContextFlush(bitmapContext);
+ // CGContextSetAllowsAntialiasing(bitmapContext, false);
+ CGContextFlush(bmContext);
// ... and put it on the output port
- self.outputImage = imageProvider;
-
- return YES;
+ id provider = self.imageProvider;
+ if ( provider ) {
+ self.outputImage = provider;
+ return YES;
+ }
+ else {
+ return NO;
+ }
}
@end
diff --git a/QCPlugin/CorePlotQCPlugin.xcodeproj/project.pbxproj b/QCPlugin/CorePlotQCPlugin.xcodeproj/project.pbxproj
index 3060699dc..e07788d06 100644
--- a/QCPlugin/CorePlotQCPlugin.xcodeproj/project.pbxproj
+++ b/QCPlugin/CorePlotQCPlugin.xcodeproj/project.pbxproj
@@ -3,7 +3,7 @@
archiveVersion = 1;
classes = {
};
- objectVersion = 46;
+ objectVersion = 47;
objects = {
/* Begin PBXAggregateTarget section */
@@ -26,11 +26,11 @@
16BA96310A7EB9AC001E4983 /* Quartz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16BA96300A7EB9AC001E4983 /* Quartz.framework */; };
7238D5520DB6988600E9A42D /* Settings.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7238D5500DB6988600E9A42D /* Settings.xib */; };
8D5B49B4048680CD000E48DA /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */; };
- A819AA3E11FD450D006D1C2D /* CPPieChartPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = A819AA0411FD3F23006D1C2D /* CPPieChartPlugin.m */; };
- A8FC1816102CBADE00CF2266 /* CPScatterPlotPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = A8FC1815102CBADE00CF2266 /* CPScatterPlotPlugin.m */; };
- A8FC1819102CBAEA00CF2266 /* CPBarPlotPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = A8FC1818102CBAEA00CF2266 /* CPBarPlotPlugin.m */; };
+ A819AA3E11FD450D006D1C2D /* CPTPieChartPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = A819AA0411FD3F23006D1C2D /* CPTPieChartPlugin.m */; };
+ A8FC1816102CBADE00CF2266 /* CPTScatterPlotPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = A8FC1815102CBADE00CF2266 /* CPTScatterPlotPlugin.m */; };
+ A8FC1819102CBAEA00CF2266 /* CPTBarPlotPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = A8FC1818102CBAEA00CF2266 /* CPTBarPlotPlugin.m */; };
BC21A98B1035BEC100FED2A4 /* CorePlot.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC21A97F1035BEAF00FED2A4 /* CorePlot.framework */; };
- BC21A99A1035BF6F00FED2A4 /* CorePlot.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = BC21A97F1035BEAF00FED2A4 /* CorePlot.framework */; };
+ BC21A99A1035BF6F00FED2A4 /* CorePlot.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = BC21A97F1035BEAF00FED2A4 /* CorePlot.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -62,6 +62,48 @@
remoteGlobalIDString = 8DC2EF4F0486A6940098B216;
remoteInfo = CorePlot;
};
+ C31D02421D10F531008C1EF2 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = A89BAB3B1027EFBD004B2FE1 /* CorePlot.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = C37EA6921BC83F2A0091C8F7;
+ remoteInfo = "CorePlot tvOS";
+ };
+ C31D02441D10F531008C1EF2 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = A89BAB3B1027EFBD004B2FE1 /* CorePlot.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = C37EA6B71BC83F2D0091C8F7;
+ remoteInfo = "UnitTests tvOS";
+ };
+ C3B925EA1ADF1CBE00C67086 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = A89BAB3B1027EFBD004B2FE1 /* CorePlot.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = C38A09781A46185200D45436;
+ remoteInfo = CorePlot_iOS;
+ };
+ C3B925EC1ADF1CBE00C67086 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = A89BAB3B1027EFBD004B2FE1 /* CorePlot.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = C38A09821A46185300D45436;
+ remoteInfo = CorePlot_iOSTests;
+ };
+ C3B925EE1ADF1CBE00C67086 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = A89BAB3B1027EFBD004B2FE1 /* CorePlot.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = C38A09BA1A4619A900D45436;
+ remoteInfo = "CorePlot-CocoaTouch";
+ };
+ C3B925F01ADF1CBE00C67086 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = A89BAB3B1027EFBD004B2FE1 /* CorePlot.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = C38A09C41A4619A900D45436;
+ remoteInfo = "CorePlot-CocoaTouchTests";
+ };
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
@@ -81,18 +123,19 @@
1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; };
16AA5C440A7EEE7300888E31 /* CorePlotQCPlugin_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CorePlotQCPlugin_Prefix.pch; sourceTree = ""; };
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; path = CorePlotQCPlugin.m; 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 /* CPPieChartPlugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPPieChartPlugin.h; sourceTree = ""; };
- A819AA0411FD3F23006D1C2D /* CPPieChartPlugin.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CPPieChartPlugin.m; 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; };
- A8FC1814102CBADE00CF2266 /* CPScatterPlotPlugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPScatterPlotPlugin.h; sourceTree = ""; };
- A8FC1815102CBADE00CF2266 /* CPScatterPlotPlugin.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CPScatterPlotPlugin.m; sourceTree = ""; };
- A8FC1817102CBAEA00CF2266 /* CPBarPlotPlugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPBarPlotPlugin.h; sourceTree = ""; };
- A8FC1818102CBAEA00CF2266 /* CPBarPlotPlugin.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CPBarPlotPlugin.m; sourceTree = ""; };
+ A8FC1814102CBADE00CF2266 /* CPTScatterPlotPlugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPTScatterPlotPlugin.h; sourceTree = ""; };
+ 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 */
@@ -138,7 +181,7 @@
isa = PBXGroup;
children = (
7238D5500DB6988600E9A42D /* Settings.xib */,
- 8D5B49B7048680CD000E48DA /* Info.plist */,
+ C37A410F20E0326C00C4FF48 /* Info.plist */,
);
name = Resources;
sourceTree = "";
@@ -148,12 +191,12 @@
children = (
16BA95400A7EB2EB001E4983 /* CorePlotQCPlugin.h */,
16BA95410A7EB2EB001E4983 /* CorePlotQCPlugin.m */,
- A8FC1814102CBADE00CF2266 /* CPScatterPlotPlugin.h */,
- A8FC1815102CBADE00CF2266 /* CPScatterPlotPlugin.m */,
- A8FC1817102CBAEA00CF2266 /* CPBarPlotPlugin.h */,
- A8FC1818102CBAEA00CF2266 /* CPBarPlotPlugin.m */,
- A819AA0311FD3F23006D1C2D /* CPPieChartPlugin.h */,
- A819AA0411FD3F23006D1C2D /* CPPieChartPlugin.m */,
+ A8FC1814102CBADE00CF2266 /* CPTScatterPlotPlugin.h */,
+ A8FC1815102CBADE00CF2266 /* CPTScatterPlotPlugin.m */,
+ A8FC1817102CBAEA00CF2266 /* CPTBarPlotPlugin.h */,
+ A8FC1818102CBAEA00CF2266 /* CPTBarPlotPlugin.m */,
+ A819AA0311FD3F23006D1C2D /* CPTPieChartPlugin.h */,
+ A819AA0411FD3F23006D1C2D /* CPTPieChartPlugin.m */,
);
name = Classes;
sourceTree = "";
@@ -170,6 +213,7 @@
isa = PBXGroup;
children = (
16AA5C440A7EEE7300888E31 /* CorePlotQCPlugin_Prefix.pch */,
+ C3C8CFF619E9504C007E0BCB /* CorePlotWarnings.xcconfig */,
);
name = "Other Sources";
sourceTree = "";
@@ -178,7 +222,13 @@
isa = PBXGroup;
children = (
BC21A97F1035BEAF00FED2A4 /* CorePlot.framework */,
- A8F18CF511FA634B00B2C42F /* UnitTests.octest */,
+ A8F18CF511FA634B00B2C42F /* UnitTests.xctest */,
+ C3B925EB1ADF1CBE00C67086 /* CorePlot.framework */,
+ C3B925ED1ADF1CBE00C67086 /* UnitTests iOS.xctest */,
+ C3B925EF1ADF1CBE00C67086 /* libCorePlot-CocoaTouch.a */,
+ C3B925F11ADF1CBE00C67086 /* CorePlot-CocoaTouchTests.xctest */,
+ C31D02431D10F531008C1EF2 /* CorePlot.framework */,
+ C31D02451D10F531008C1EF2 /* UnitTests tvOS.xctest */,
);
name = Products;
sourceTree = "";
@@ -212,17 +262,18 @@
089C1669FE841209C02AAC07 /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 0500;
+ LastUpgradeCheck = 0930;
};
buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "CorePlotQCPlugin" */;
- compatibilityVersion = "Xcode 3.2";
- developmentRegion = English;
+ compatibilityVersion = "Xcode 6.3";
+ developmentRegion = en;
hasScannedForEncodings = 1;
knownRegions = (
- English,
- Japanese,
- French,
- German,
+ Base,
+ en,
+ ja,
+ fr,
+ de,
);
mainGroup = 089C166AFE841209C02AAC07 /* Quartz Composer Plug In */;
projectDirPath = "";
@@ -241,10 +292,10 @@
/* End PBXProject section */
/* Begin PBXReferenceProxy section */
- A8F18CF511FA634B00B2C42F /* UnitTests.octest */ = {
+ A8F18CF511FA634B00B2C42F /* UnitTests.xctest */ = {
isa = PBXReferenceProxy;
fileType = wrapper.cfbundle;
- path = UnitTests.octest;
+ path = UnitTests.xctest;
remoteRef = A8F18CF411FA634B00B2C42F /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
@@ -255,6 +306,48 @@
remoteRef = BC21A97E1035BEAF00FED2A4 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
+ C31D02431D10F531008C1EF2 /* CorePlot.framework */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.framework;
+ path = CorePlot.framework;
+ remoteRef = C31D02421D10F531008C1EF2 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ C31D02451D10F531008C1EF2 /* UnitTests tvOS.xctest */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = "UnitTests tvOS.xctest";
+ remoteRef = C31D02441D10F531008C1EF2 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ C3B925EB1ADF1CBE00C67086 /* CorePlot.framework */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.framework;
+ path = CorePlot.framework;
+ remoteRef = C3B925EA1ADF1CBE00C67086 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ C3B925ED1ADF1CBE00C67086 /* UnitTests iOS.xctest */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = "UnitTests iOS.xctest";
+ remoteRef = C3B925EC1ADF1CBE00C67086 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ C3B925EF1ADF1CBE00C67086 /* libCorePlot-CocoaTouch.a */ = {
+ isa = PBXReferenceProxy;
+ fileType = archive.ar;
+ path = "libCorePlot-CocoaTouch.a";
+ remoteRef = C3B925EE1ADF1CBE00C67086 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ C3B925F11ADF1CBE00C67086 /* CorePlot-CocoaTouchTests.xctest */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = "CorePlot-CocoaTouchTests.xctest";
+ remoteRef = C3B925F01ADF1CBE00C67086 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
/* End PBXReferenceProxy section */
/* Begin PBXResourcesBuildPhase section */
@@ -290,9 +383,9 @@
buildActionMask = 2147483647;
files = (
16BA95420A7EB2EB001E4983 /* CorePlotQCPlugin.m in Sources */,
- A8FC1816102CBADE00CF2266 /* CPScatterPlotPlugin.m in Sources */,
- A8FC1819102CBAEA00CF2266 /* CPBarPlotPlugin.m in Sources */,
- A819AA3E11FD450D006D1C2D /* CPPieChartPlugin.m in Sources */,
+ A8FC1816102CBADE00CF2266 /* CPTScatterPlotPlugin.m in Sources */,
+ A8FC1819102CBAEA00CF2266 /* CPTBarPlotPlugin.m in Sources */,
+ A819AA3E11FD450D006D1C2D /* CPTPieChartPlugin.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -315,29 +408,39 @@
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 */
1DEB913B08733D840010E9CD /* Debug */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = C3C8CFF619E9504C007E0BCB /* CorePlotWarnings.xcconfig */;
buildSettings = {
ADDITIONAL_SDKS = "";
+ CLANG_ENABLE_OBJC_ARC = YES;
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
- FRAMEWORK_SEARCH_PATHS = "$(inherited)";
GCC_DYNAMIC_NO_PIC = NO;
GCC_MODEL_TUNING = G5;
- 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 = "";
+ PRODUCT_BUNDLE_IDENTIFIER = "org.CorePlot.${PRODUCT_NAME:identifier}";
PRODUCT_NAME = CorePlotQCPlugin;
SDKROOT = macosx;
WRAPPER_EXTENSION = plugin;
@@ -347,17 +450,20 @@
};
1DEB913C08733D840010E9CD /* Release */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = C3C8CFF619E9504C007E0BCB /* CorePlotWarnings.xcconfig */;
buildSettings = {
ADDITIONAL_SDKS = "";
+ CLANG_ENABLE_OBJC_ARC = YES;
COMBINE_HIDPI_IMAGES = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- FRAMEWORK_SEARCH_PATHS = "$(inherited)";
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 = "";
+ PRODUCT_BUNDLE_IDENTIFIER = "org.CorePlot.${PRODUCT_NAME:identifier}";
PRODUCT_NAME = CorePlotQCPlugin;
SDKROOT = macosx;
WRAPPER_EXTENSION = plugin;
@@ -367,13 +473,16 @@
};
1DEB913F08733D840010E9CD /* Debug */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = C3C8CFF619E9504C007E0BCB /* CorePlotWarnings.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
- FRAMEWORK_SEARCH_PATHS = "";
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
+ ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = c99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- MACOSX_DEPLOYMENT_TARGET = 10.7;
+ MACOSX_DEPLOYMENT_TARGET = 10.8;
ONLY_ACTIVE_ARCH = YES;
SYMROOT = "$(PROJECT_DIR)/../build";
};
@@ -381,13 +490,15 @@
};
1DEB914008733D840010E9CD /* Release */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = C3C8CFF619E9504C007E0BCB /* CorePlotWarnings.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
- FRAMEWORK_SEARCH_PATHS = "";
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
GCC_C_LANGUAGE_STANDARD = c99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = s;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- MACOSX_DEPLOYMENT_TARGET = 10.7;
+ MACOSX_DEPLOYMENT_TARGET = 10.8;
OTHER_LDFLAGS = "";
SYMROOT = "$(PROJECT_DIR)/../build";
};
@@ -396,6 +507,7 @@
233E2D8A0A83C7AC005A62DF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ CLANG_ENABLE_OBJC_WEAK = YES;
COMBINE_HIDPI_IMAGES = YES;
PRODUCT_NAME = "Build & Install";
};
@@ -404,6 +516,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
new file mode 100644
index 000000000..7afa5ea4a
--- /dev/null
+++ b/QCPlugin/CorePlotQCPlugin.xcodeproj/xcshareddata/xcschemes/Build & Copy.xcscheme
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/QCPlugin/CorePlotQCPlugin.xcodeproj/xcshareddata/xcschemes/CorePlotQCPlugin.xcscheme b/QCPlugin/CorePlotQCPlugin.xcodeproj/xcshareddata/xcschemes/CorePlotQCPlugin.xcscheme
new file mode 100644
index 000000000..d1baaa5f3
--- /dev/null
+++ b/QCPlugin/CorePlotQCPlugin.xcodeproj/xcshareddata/xcschemes/CorePlotQCPlugin.xcscheme
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/QCPlugin/English.lproj/Settings.xib b/QCPlugin/English.lproj/Settings.xib
deleted file mode 100644
index a2ce340ec..000000000
--- a/QCPlugin/English.lproj/Settings.xib
+++ /dev/null
@@ -1,490 +0,0 @@
-
-
-
- 1050
- 9J61
- 677
- 949.46
- 353.00
-
-
-
-
- YES
-
- QCPlugInViewController
-
-
- FirstResponder
-
-
-
- 256
-
- YES
-
-
- 268
- {{17, 363}, {94, 14}}
-
- YES
-
- 68288064
- 272761856
- Number of Plots:
-
- LucidaGrande
- 1.100000e+01
- 3100
-
-
-
- 6
- System
- controlColor
-
- 3
- MC42NjY2NjY2OQA
-
-
-
- 6
- System
- controlTextColor
-
- 3
- MAA
-
-
-
-
-
-
- 268
- {{116, 361}, {34, 19}}
-
- YES
-
- -1804468671
- 272761856
-
-
-
-
- YES
-
- YES
- allowsFloats
- formatterBehavior
- minimum
- negativeFormat
- numberStyle
- positiveFormat
-
-
- YES
-
-
-
- ###0
-
- ###0
-
-
- ###0
- ###0
-
-
-
-
-
-
-
-
-
- NaN
-
- YES
-
- YES
-
-
- YES
-
-
-
-
-
- 0
- 0
- YES
- NO
- 1
- AAAAAAAAAAAAAAAAAAAAAA
-
-
- 3
- YES
- YES
- YES
-
- .
- ,
- NO
- YES
- YES
-
-
- YES
-
- 6
- System
- textBackgroundColor
-
- 3
- MQA
-
-
-
- 6
- System
- textColor
-
-
-
-
-
-
- 268
- {{155, 359}, {15, 22}}
-
- YES
-
- 68025888
- 131072
-
-
- 1.000000e+02
- 1.000000e+00
- YES
- YES
-
-
-
-
- 36
-
- YES
-
-
- 256
-
- YES
-
-
- 268
- {{15, 14}, {234, 28}}
-
- YES
-
- 67239424
- 272760832
- Use the up and down arrows to select the number of plots.
-
-
-
-
-
-
-
- {{1, 1}, {264, 54}}
-
-
-
- {{17, 299}, {266, 56}}
-
- {0, 0}
-
- 67239424
- 0
- Box
-
-
-
- 3
- MCAwLjgwMDAwMDAxAA
-
-
-
- 1
- 0
- 0
- NO
-
-
- {300, 400}
-
-
- NSView
-
- NSResponder
-
-
- NSApplication
-
-
- YES
-
-
-
-
- YES
-
-
- view
-
-
-
- 10
-
-
-
- value: plugIn.numberOfPlots
-
-
-
-
-
- value: plugIn.numberOfPlots
- value
- plugIn.numberOfPlots
- 2
-
-
- 34
-
-
-
- value: plugIn.numberOfPlots
-
-
-
-
-
- value: plugIn.numberOfPlots
- value
- plugIn.numberOfPlots
- 2
-
-
- 35
-
-
-
-
- YES
-
- 0
-
- YES
-
-
-
-
-
- -2
-
-
- RmlsZSdzIE93bmVyA
-
-
- -1
-
-
- First Responder
-
-
- 5
-
-
- YES
-
-
-
-
-
-
- View
-
-
- -3
-
-
- Application
-
-
- 20
-
-
-
-
- 27
-
-
- YES
-
-
-
-
-
- 28
-
-
-
-
- 29
-
-
- YES
-
-
-
-
-
- 30
-
-
- YES
-
-
-
-
-
- 31
-
-
- YES
-
-
-
-
-
- 32
-
-
-
-
- 33
-
-
-
-
- 38
-
-
- YES
-
-
-
-
-
- 36
-
-
- YES
-
-
-
-
-
- 37
-
-
-
-
-
-
- YES
-
- YES
- -1.IBPluginDependency
- -2.IBPluginDependency
- -3.IBPluginDependency
- 20.IBPluginDependency
- 27.IBPluginDependency
- 28.IBPluginDependency
- 29.IBPluginDependency
- 30.IBPluginDependency
- 31.IBPluginDependency
- 32.IBPluginDependency
- 33.IBPluginDependency
- 36.IBPluginDependency
- 37.IBPluginDependency
- 5.IBEditorWindowLastContentRect
- 5.IBPluginDependency
- 5.ImportedFromIB2
- 5.editorWindowContentRectSynchronizationRect
-
-
- YES
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- {{430, 228}, {300, 400}}
- com.apple.InterfaceBuilder.CocoaPlugin
-
- {{0, 1145}, {300, 400}}
-
-
-
- YES
-
- YES
-
-
- YES
-
-
-
-
- YES
-
- YES
-
-
- YES
-
-
-
- 38
-
-
- 0
- ../CorePlotQCPlugin.xcodeproj
- 3
-
-
diff --git a/README.md b/README.md
index a7f06d994..b0b803087 100644
--- a/README.md
+++ b/README.md
@@ -1,19 +1,29 @@
+
+
+# Core Plot
+
+*Cocoa plotting framework for macOS, iOS, and tvOS.*
+
+[](https://core-plot.github.io) [](https://github.com/core-plot/core-plot/actions/workflows/ci.yml)
+[](https://cocoapods.org/pods/CorePlot) [](https://github.com/Carthage/Carthage) [](https://github.com/apple/swift-package-manager)
+[](https://opensource.org/licenses/BSD-3-Clause)
+
# Introduction
-Core Plot is a 2D plotting framework for Mac OS X and iOS. It is highly customizable and capable of drawing many types of plots. See the [Example Graphs](https://github.com/core-plot/core-plot/wiki/Example-Graphs) wiki page and the [example applications](https://github.com/core-plot/core-plot/tree/master/examples) for examples of some of its capabilities.
+Core Plot is a 2D plotting framework for macOS, iOS, and tvOS. It is highly customizable and capable of drawing many types of plots. See the [Example Graphs](https://github.com/core-plot/core-plot/wiki/Example-Graphs) wiki page and the [example applications](https://github.com/core-plot/core-plot/tree/master/examples) for examples of some of its capabilities.
# Getting Started
-See the [High Level Design Overview](https://github.com/core-plot/core-plot/wiki/High-Level-Design-Overview) wiki for an overview of Core Plot's architecture and the [Using Core Plot in an Application](http://code.google.com/p/core-plot/wiki/UsingCorePlotInApplications) wiki for information on how to use Core Plot in your own application.
+See the [High Level Design Overview](https://github.com/core-plot/core-plot/wiki/High-Level-Design-Overview) wiki for an overview of Core Plot's architecture and the [Using Core Plot in an Application](https://github.com/core-plot/core-plot/wiki/Using-Core-Plot-in-an-Application) wiki for information on how to use Core Plot in your own application.
# Documentation
Documentation of the Core Plot API and high-level architecture can be found in the following places:
* [Change log](https://github.com/core-plot/core-plot/blob/master/documentation/changelog.markdown)
- * [API documentation](http://core-plot.github.io/MacOS/index.html) for Mac
- * [API documentation](http://core-plot.github.io/iOS/index.html) for iOS
- * API documentation built with [Doxygen](http://www.doxygen.org/) and installed locally in Xcode (see the [instructions](https://github.com/core-plot/core-plot/blob/master/READMEs/README%20for%20Docs%20Install.md) in the **READMEs** folder for details)
+ * [API documentation](https://core-plot.github.io/MacOS/index.html) for Mac
+ * [API documentation](https://core-plot.github.io/iOS/index.html) for iOS and tvOS
+ * API documentation built with [Doxygen](https://www.doxygen.nl/) and installed locally in Xcode (see the [instructions](https://github.com/core-plot/core-plot/blob/master/READMEs/README%20for%20Docs%20Install.md) in the **READMEs** folder for details)
* [Project Wiki](https://github.com/core-plot/core-plot/wiki) on GitHub
* [Documentation](https://github.com/core-plot/core-plot/tree/master/documentation) folder in the code repository
@@ -21,13 +31,12 @@ Documentation of the Core Plot API and high-level architecture can be found in t
## Q&A Sites
- * [Core Plot](http://groups.google.com/group/coreplot-discuss) Google Group
- * Stackoverflow.com [core-plot tag](http://stackoverflow.com/questions/tagged/core-plot)
+ * [Core Plot](https://groups.google.com/group/coreplot-discuss) Google Group
+ * Stackoverflow.com [core-plot tag](https://stackoverflow.com/questions/tagged/core-plot)
## Social Networks
* [Twitter](https://twitter.com/CorePlot)
- * [App.net](https://alpha.app.net/coreplot); Subscribe to the [Announcements](https://app.net/c/2rw2) broadcast.
# Contributing to Core Plot
@@ -35,16 +44,12 @@ Core Plot is an open source project hosted on [GitHub](https://github.com/core-p
* [core-plot](https://github.com/core-plot/core-plot): This is main code repository with the framework and all examples. This is where you will find the release packages, wiki pages, and issue tracker.
- * [core-plot.github.io](https://github.com/core-plot/core-plot.github.io): This is the HTML API documentation. You can view the pages online at [http://core-plot.github.io](http://core-plot.github.io).
+ * [core-plot.github.io](https://github.com/core-plot/core-plot.github.io): This is the HTML API documentation. You can view the pages online at [https://core-plot.github.io](https://core-plot.github.io).
## Coding Standards
-Everyone has a their own preferred coding style, and no one way can be considered right. Nonetheless, in a project like Core Plot, with many developers contributing, it is worthwhile defining a set of basic coding standards to prevent a mishmash of different styles which can become frustrating when navigating the code base. See the file [Coding Style.markdown](https://github.com/core-plot/core-plot/blob/master/documentation/Coding%20Style.markdown) found in the [documentation](https://github.com/core-plot/core-plot/tree/master/documentation) directory of the project source for specific guidelines.
+Everyone has a their own preferred coding style, and no one way can be considered right. Nonetheless, in a project like Core Plot, with many developers contributing, it is worthwhile defining a set of basic coding standards to prevent a mishmash of different styles which can become frustrating when navigating the code base. See the file [CONTRIBUTING.md](https://github.com/core-plot/core-plot/blob/master/.github/CONTRIBUTING.md) found in the [.github](https://github.com/core-plot/core-plot/tree/master/.github) directory of the project source for specific guidelines.
-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.
+Core Plot includes a [script](https://github.com/core-plot/core-plot/blob/master/scripts/format_core_plot.sh) to run [Uncrustify](https://github.com/uncrustify/uncrustify) 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.
-
-# Support Core Plot
-
-
+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.
diff --git a/READMEs/README for Docs Install.md b/READMEs/README for Docs Install.md
index 01cf04a82..57c19c0bd 100644
--- a/READMEs/README for Docs Install.md
+++ b/READMEs/README for Docs Install.md
@@ -8,10 +8,10 @@
# To Build the Documentation From Source
-1. Install [Doxygen]([http://www.stack.nl/~dimitri/doxygen/download.html#latestsrc) in **/Applications**. Core Plot requires Doxygen 1.8.6 or later.
+1. Install [Doxygen]([http://www.stack.nl/~dimitri/doxygen/download.html#latestsrc) in **/Applications**. Core Plot requires Doxygen 1.8.11 or later.
-2. Install [Graphviz](http://www.graphviz.org/Download_macos.php). Core Plot requires Graphviz 2.34.0 or later.
+2. Install [Graphviz](http://www.graphviz.org/Download_macos.php). Core Plot requires Graphviz 2.36.0 or later.
-3. Open the **CorePlot** or **CorePlot-CocoaTouch** project in Xcode.
+3. Open the **CorePlot** project in Xcode.
-4. Build the "Documentation" target.
\ No newline at end of file
+4. Build the "Documentation-Mac" and/or "Documentation-iOS" targets.
\ No newline at end of file
diff --git a/READMEs/README for Static Library Install.md b/READMEs/README for Static Library Install.md
index 286d1e38a..ece0cccd7 100644
--- a/READMEs/README for Static Library Install.md
+++ b/READMEs/README for Static Library Install.md
@@ -5,8 +5,8 @@
2. Copy **libCorePlotCocoaTouch.a** to your Xcode project
3. Add the following flags to "Other Linker Flags" in your target build settings:
- `-ObjC -all_load`
+ `-ObjC`
-4. Add the **QuartzCore** framework to the project.
+4. Add the **QuartzCore** and **Accelerate** frameworks to the project.
5. Add a `CPTGraph` to your application. See the example apps in Source Code to see how, or read the documentation.
\ No newline at end of file
diff --git a/documentation/changelog.markdown b/documentation/changelog.markdown
index 4a4953879..ed231ffeb 100644
--- a/documentation/changelog.markdown
+++ b/documentation/changelog.markdown
@@ -1,21 +1,124 @@
-# Release 2.0 (TBD)
+# Release 2.3 (January 10, 2020)
## Release Notes
-To be determined.
+This release updates Core Plot to be compatible with Xcode 11 and Swift 5. It adds support for platform-native fonts and colors, including dynamic system colors.
+
+The Mac deployment target remains OS X 10.8. The iOS deployment target remains iOS 8.0 for both the framework and the static library. The tvOS deployment target remains tvOS 9.0.
+
+## Details
+- **New**: Added support for platform native fonts (`NSFont` and `UIFont`).
+- **New**: Added support for platform native colors (`NSColor` and `UIColor`), including dynamic system colors.
+- **New**: Added support for variable bar widths in bar, range, and trading range plots.
+- **Changed**: Updated the Core Plot project to prefer the new Xcode build system introduced with Xcode 9.
+- **Changed**: Updated all framework and example code to be compatible with Xcode 11 and the latest SDKs on all platforms.
+- **Changed**: Updated all Swift example apps to Swift 5.
+- **Changed**: Added arm64e as a valid build architecture on iOS.
+- **Changed**: Miscellaneous bug fixes and cleanup.
+- **Removed**: Removed DTrace probing to support Xcode's New Build System.
+- **Removed**: Removed docset generation. Docsets are no longer supported under Xcode 9.3.
+- **Removed**: Removed the AAPLot and StockPlot example apps because the Yahoo finance API that both relied for data is no longer available.
+
+
+
+# Release 2.2 (September 18, 2016)
+
+## Release Notes
+
+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. 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.
+
+
+
+# Release 2.1 (April 16, 2016)
+
+## Release Notes
+
+This release adds a tvOS framework and removes the deprecated `CorePlot-CocoaTouch.xcodeproj` project file. All Core Plot build targets for Mac, iOS, tvOS, and the documentation are in the `CorePlot.xcodeproj` project file. Annotated type definitions (e.g., `CPTNumberArray`) were changed to exclude the pointer star ("*") so they can be used interchangeably with class names.
+
+Curved scatter plots received several improvements. This release adds options to use Catmull-Rom and Hermite cubic splines to draw curved scatter plot lines. When a Hermite spline is used to draw a monotonic data series, the curved line will be monotonic as well. Plot spaces have new methods to scale the plot space to fit entire plots.
+
+The Mac deployment target has increased to OS X 10.8. The iOS deployment target remains iOS 6.0 for the static library and iOS 8.0 for the framework. The tvOS deployment target is tvOS 9.0.
+
+## Details
+- **New**: Increased the Mac deployment target to OS X 10.8.
+- **New**: Added a tvOS framework.
+- **New**: Added an option to anchor alternating band fills to a specific starting value.
+- **New**: Added support for animating `NSNumber` properties with `CPTAnimation`.
+- **New**: Added support for `NSSecureCoding`.
+- **New**: Added an option to draw legend swatches to the left or right side of the title.
+- **New**: Added options to use Catmull-Rom and Hermite cubic splines to draw curved scatter plot lines.
+- **New**: Added a method to automatically scale the plot space to fit the entire plot.
+- **Changed**: Changed the annotated type definitions to exclude the pointer star ("*").
+- **Changed**: Miscellaneous bug fixes and cleanup.
+- **Removed**: Removed the deprecated `CorePlot-CocoaTouch.xcodeproj` project file.
+
+
+
+# Release 2.0 (October 4, 2015)
+
+## Release Notes
+
+This release contains changes that will break apps built against earlier Core Plot
+versions. For a cleaner public API and ease of use from Swift, all public properties and methods that take `NSDecimal` values have been changed to take `NSNumber` values instead. See the [Release 2.0 API Changes](https://github.com/core-plot/core-plot/wiki/Core-Plot-API-Changes-Between-Versions-1.x-and-2.x) wiki page for a detailed list of the API changes.
+
+The Mac and iOS projects have been combined into one project file. The `CorePlot-CocoaTouch.xcodeproj` project file is deprecated and will be removed in a future release. There is now an iOS framework target in addition to the static library in the `CorePlot.xcodeproj` project file.
+
+The deployment target has increased to iOS 6.0 for the static library and iOS 8.0 for the framework. The Mac deployment target remains OS X 10.7.
+
+## Details
+- **New**: Combined the Mac and iOS projects and added an iOS framework target. The `CorePlot-CocoaTouch.xcodeproj` project file is deprecated.
+- **New**: Added histogram style options to `CPTScatterPlot`.
+- **New**: Added iOS unit tests.
+- **New**: Added plot space point conversion methods that take an `NSArray` of coordinate values.
+- **New**: Added nullability annotations to all property and method declarations.
+- **New**: Added type annotations to all arrays, sets, and dictionaries.
+- **New**: Added the log-modulus scale type.
+- **Changed**: Increased the deployment target to iOS 6.0 and Mac OS X 10.7. The iOS framework requires iOS 8 or higher.
+- **Changed**: Changed the Installation Directory for the Mac framework to "@rpath" and updated the Runpath Search Path in each Mac example app.
+- **Changed**: Changed all public properties and methods that take `NSDecimal` values to take `NSNumber` values instead. Use `NSDecimalNumber` to maintain full decimal precision.
+- **Changed**: Added properties to `CPTPlotRange` and `CPTMutablePlotRange` to read and write all range properties as `NSNumber`, `NSDecimal`, or `double`.
+- **Changed**: Renamed the `CPTXYAxis.orthogonalCoordinateDecimal` property to `CPTXYAxis.orthogonalPosition`.
+- **Changed**: Miscellaneous bug fixes and cleanup.
+
+
+
+# Release 1.6 (May 9, 2015)
+
+## Release Notes
+
+This release adds support for @3x and stretchable images, plot area fill bands, new axis and plot delegate methods, and trackpad and scroll wheel gestures on the Mac. The behavior of all axis and plot xxxWasSelected delegate methods changed to require both a down and up event on the same element instead of only the down event. The deployment target has increased to iOS 5.0 and Mac OS X 10.7 and all iOS clients must now link against the Accelerate framework.
## Details
- **New**: Added hand cursors to the Mac hosting view to indicate when user interaction is enabled and when dragging is in progress.
- **New**: Added two additional initialization methods to `CPTImage`.
- **New**: Added a dependency on the Accelerate framework. All iOS clients must now link against this framework.
+- **New**: Added a shared header file for apps using Core Plot with CocoaPods.
- **New**: Added support for pinch zoom gestures on the Mac.
- **New**: Added support for trackpad and mouse wheel scrolling gestures on the Mac.
- **New**: Added a scroll wheel event to ``.
- **New**: Added axis and plot delegate methods for touch down and up events on labels.
+- **New**: Added scatter plot data line selection delegate methods.
+- **New**: Added scatter plot area fill bands.
+- **New**: Added new methods to all plots to allow labels, styles, and plot symbols to be updated independent of the plot data.
+- **New**: Added support for stretchable images.
+- **New**: Added support for @3x images.
+- **New**: Added support for using an Objective-C block to calculate plot values in the function datasource class.
+- **New**: Added support for categorical plot data.
+- **New**: Added `showBarBorder` property to `CPTTradingRangePlot`.
- **Changed**: Increased the deployment target to iOS 5.0 and Mac OS X 10.7.
- **Changed**: Enabled automatic reference counting (ARC) in the framework projects.
- **Changed**: Updated `CPTImage` to automatically handle switching between Retina and non-Retina displays.
- **Changed**: Changed the behavior of all axis and plot xxxWasSelected delegate methods to require both a down and up event on the same element instead of only the down event.
+- **Changed**: Changed the class prefix for the Quartz Composer plug-ins from "CP" to "CPT".
- **Changed**: Miscellaneous bug fixes and cleanup.
- **Removed**: Removed the deprecated plot space methods.
diff --git a/documentation/doxygen/doxygen touch.config b/documentation/doxygen/doxygen touch.config
index c727d0090..01d4c0b2d 100644
--- a/documentation/doxygen/doxygen touch.config
+++ b/documentation/doxygen/doxygen touch.config
@@ -1,4 +1,4 @@
-# Doxyfile 1.8.6
+# 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
@@ -32,7 +32,7 @@ DOXYFILE_ENCODING = UTF-8
# title of most generated pages and in a few other places.
# The default value is: My Project.
-PROJECT_NAME = "Core Plot (iOS)"
+PROJECT_NAME = "Core Plot (iOS and tvOS)"
# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
# could be handy for archiving the generated documentation or if some version
@@ -44,12 +44,12 @@ PROJECT_NUMBER =
# for a project that appears at the top of each page and should give viewer a
# quick idea about the purpose of the project. Keep the description short.
-PROJECT_BRIEF = "Cocoa plotting framework for Mac OS X and iOS"
+PROJECT_BRIEF = "Cocoa plotting framework for macOS, iOS, and tvOS"
-# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
-# the documentation. The maximum height of the logo should not exceed 55 pixels
-# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo
-# to the output directory.
+# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
+# in the documentation. The maximum height of the logo should not exceed 55
+# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
+# the logo to the output directory.
PROJECT_LOGO = "$(SOURCE_ROOT)/../documentation/core-plot-logo.png"
@@ -60,7 +60,7 @@ PROJECT_LOGO = "$(SOURCE_ROOT)/../documentation/core-plot-logo.png"
OUTPUT_DIRECTORY = "$(SOURCE_ROOT)/CorePlotTouchDocs.docset"
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
+# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
# directories (in 2 levels) under the output directory of each output format and
# will distribute the generated files over these directories. Enabling this
# option can be useful when feeding doxygen a huge amount of source files, where
@@ -70,6 +70,14 @@ OUTPUT_DIRECTORY = "$(SOURCE_ROOT)/CorePlotTouchDocs.docset"
CREATE_SUBDIRS = NO
+# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
+# characters to appear in the names of generated files. If set to NO, non-ASCII
+# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
+# U+3044.
+# The default value is: NO.
+
+ALLOW_UNICODE_NAMES = NO
+
# The OUTPUT_LANGUAGE tag is used to specify the language in which all
# documentation generated by doxygen is written. Doxygen will use this
# information to generate all constant output in the proper language.
@@ -85,14 +93,14 @@ CREATE_SUBDIRS = NO
OUTPUT_LANGUAGE = English
-# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member
+# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
# descriptions after the members that are listed in the file and class
# documentation (similar to Javadoc). Set to NO to disable this.
# The default value is: YES.
BRIEF_MEMBER_DESC = YES
-# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief
+# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief
# description of a member or function before the detailed description
#
# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
@@ -127,7 +135,7 @@ ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
-# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path
+# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path
# before files name in the file list and in the header files. If set to NO the
# shortest path that makes the file name unique will be used
# The default value is: YES.
@@ -197,9 +205,9 @@ MULTILINE_CPP_IS_BRIEF = NO
INHERIT_DOCS = YES
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a
-# new page for each member. If set to NO, the documentation of a member will be
-# part of the file/class/namespace that contains it.
+# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new
+# page for each member. If set to NO, the documentation of a member will be part
+# of the file/class/namespace that contains it.
# The default value is: NO.
SEPARATE_MEMBER_PAGES = NO
@@ -218,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" \
@@ -280,11 +289,14 @@ OPTIMIZE_OUTPUT_VHDL = NO
# extension. Doxygen has a built-in mapping, but you can override or extend it
# using this tag. The format is ext=language, where ext is a file extension, and
# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
-# C#, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL. For instance to make
-# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
-# (default is Fortran), use: inc=Fortran f=C.
+# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
+# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
+# Fortran. In the later case the parser tries to guess whether the code is fixed
+# or free formatted code, this is the default for Fortran type files), VHDL. For
+# instance to make doxygen treat .inc files as Fortran files (default is PHP),
+# and .f files as C (default is Fortran), use: inc=Fortran f=C.
#
-# Note For files without extension you can use no_extension as a placeholder.
+# Note: For files without extension you can use no_extension as a placeholder.
#
# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
# the files are not read by doxygen.
@@ -301,10 +313,19 @@ EXTENSION_MAPPING =
MARKDOWN_SUPPORT = NO
+# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up
+# to that level are automatically included in the table of contents, even if
+# they do not have an id attribute.
+# Note: This feature currently applies only to Markdown headings.
+# Minimum value: 0, maximum value: 99, default value: 0.
+# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
+
+TOC_INCLUDE_HEADINGS = 0
+
# When enabled doxygen tries to link words that correspond to documented
# classes, or namespaces to their corresponding documentation. Such a link can
-# be prevented in individual cases by by putting a % sign in front of the word
-# or globally by setting AUTOLINK_SUPPORT to NO.
+# be prevented in individual cases by putting a % sign in front of the word or
+# globally by setting AUTOLINK_SUPPORT to NO.
# The default value is: YES.
AUTOLINK_SUPPORT = YES
@@ -326,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.
@@ -344,13 +365,20 @@ SIP_SUPPORT = NO
IDL_PROPERTY_SUPPORT = YES
# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
+# tag is set to YES then doxygen will reuse the documentation of the first
# member in the group (if any) for the other members of the group. By default
# all members of a group must be documented explicitly.
# The default value is: NO.
DISTRIBUTE_GROUP_DOC = NO
+# If one adds a struct or class to a group and this option is enabled, then also
+# any nested class or struct is added to the same group. By default this option
+# is disabled and one has to add nested compounds explicitly via \ingroup.
+# The default value is: NO.
+
+GROUP_NESTED_COMPOUNDS = NO
+
# Set the SUBGROUPING tag to YES to allow class member groups of the same type
# (for instance a group of public functions) to be put as a subgroup of that
# type (e.g. under the Public Functions section). Set it to NO to prevent
@@ -409,7 +437,7 @@ LOOKUP_CACHE_SIZE = 0
# Build related configuration options
#---------------------------------------------------------------------------
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in
# documentation are documented, even if no documentation was available. Private
# class members and static file members will be hidden unless the
# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
@@ -419,35 +447,35 @@ LOOKUP_CACHE_SIZE = 0
EXTRACT_ALL = YES
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will
+# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
# be included in the documentation.
# The default value is: NO.
EXTRACT_PRIVATE = NO
-# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
+# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
# scope will be included in the documentation.
# The default value is: NO.
EXTRACT_PACKAGE = NO
-# If the EXTRACT_STATIC tag is set to YES all static members of a file will be
+# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
# included in the documentation.
# The default value is: NO.
EXTRACT_STATIC = NO
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined
-# locally in source files will be included in the documentation. If set to NO
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
+# locally in source files will be included in the documentation. If set to NO,
# only classes defined in header files are included. Does not have any effect
# for Java sources.
# The default value is: YES.
EXTRACT_LOCAL_CLASSES = YES
-# This flag is only useful for Objective-C code. When set to YES local methods,
+# This flag is only useful for Objective-C code. If set to YES, local methods,
# which are defined in the implementation section but not in the interface are
-# included in the documentation. If set to NO only methods in the interface are
+# included in the documentation. If set to NO, only methods in the interface are
# included.
# The default value is: NO.
@@ -472,21 +500,21 @@ HIDE_UNDOC_MEMBERS = YES
# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
# undocumented classes that are normally visible in the class hierarchy. If set
-# to NO these classes will be included in the various overviews. This option has
-# no effect if EXTRACT_ALL is enabled.
+# to NO, these classes will be included in the various overviews. This option
+# has no effect if EXTRACT_ALL is enabled.
# The default value is: NO.
HIDE_UNDOC_CLASSES = NO
# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
-# (class|struct|union) declarations. If set to NO these declarations will be
+# (class|struct|union) declarations. If set to NO, these declarations will be
# included in the documentation.
# The default value is: NO.
HIDE_FRIEND_COMPOUNDS = NO
# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
-# documentation blocks found inside the body of a function. If set to NO these
+# documentation blocks found inside the body of a function. If set to NO, these
# blocks will be appended to the function's detailed documentation block.
# The default value is: NO.
@@ -500,7 +528,7 @@ HIDE_IN_BODY_DOCS = NO
INTERNAL_DOCS = NO
# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
-# names in lower-case letters. If set to YES upper-case letters are also
+# names in lower-case letters. If set to YES, upper-case letters are also
# allowed. This is useful if you have classes or files whose names only differ
# in case and if your file system supports case sensitive file names. Windows
# and Mac users are advised to set this option to NO.
@@ -509,12 +537,19 @@ INTERNAL_DOCS = NO
CASE_SENSE_NAMES = NO
# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
-# their full class and namespace scopes in the documentation. If set to YES the
+# their full class and namespace scopes in the documentation. If set to YES, the
# scope will be hidden.
# The default value is: NO.
HIDE_SCOPE_NAMES = NO
+# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will
+# append additional text to a page's title, such as Class Reference. If set to
+# YES the compound reference will be hidden.
+# The default value is: NO.
+
+HIDE_COMPOUND_REFERENCE= NO
+
# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
# the files that are included by a file in the documentation of that file.
# The default value is: YES.
@@ -542,14 +577,14 @@ INLINE_INFO = YES
# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
# (detailed) documentation of file and class members alphabetically by member
-# name. If set to NO the members will appear in declaration order.
+# name. If set to NO, the members will appear in declaration order.
# The default value is: YES.
SORT_MEMBER_DOCS = YES
# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
# descriptions of file, namespace and class members alphabetically by member
-# name. If set to NO the members will appear in declaration order. Note that
+# name. If set to NO, the members will appear in declaration order. Note that
# this will also influence the order of the classes in the class list.
# The default value is: NO.
@@ -594,27 +629,25 @@ SORT_BY_SCOPE_NAME = NO
STRICT_PROTO_MATCHING = NO
-# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the
-# todo list. This list is created by putting \todo commands in the
-# documentation.
+# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo
+# list. This list is created by putting \todo commands in the documentation.
# The default value is: YES.
GENERATE_TODOLIST = YES
-# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the
-# test list. This list is created by putting \test commands in the
-# documentation.
+# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
+# list. This list is created by putting \test commands in the documentation.
# The default value is: YES.
GENERATE_TESTLIST = YES
-# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug
+# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
# list. This list is created by putting \bug commands in the documentation.
# The default value is: YES.
GENERATE_BUGLIST = YES
-# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO)
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
# the deprecated list. This list is created by putting \deprecated commands in
# the documentation.
# The default value is: YES.
@@ -639,8 +672,8 @@ ENABLED_SECTIONS = iOSOnly
MAX_INITIALIZER_LINES = 30
# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
-# the bottom of the documentation of classes and structs. If set to YES the list
-# will mention the files that were used to generate the documentation.
+# the bottom of the documentation of classes and structs. If set to YES, the
+# list will mention the files that were used to generate the documentation.
# The default value is: YES.
SHOW_USED_FILES = YES
@@ -685,11 +718,10 @@ 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. Do not use file names with spaces, bibtex cannot handle them. See
-# also \cite for info how to create references.
+# search path. See also \cite for info how to create references.
CITE_BIB_FILES =
@@ -705,7 +737,7 @@ CITE_BIB_FILES =
QUIET = NO
# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
+# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
# this implies that the warnings are on.
#
# Tip: Turn warnings on while writing the documentation.
@@ -713,7 +745,7 @@ QUIET = NO
WARNINGS = YES
-# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate
+# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate
# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
# will automatically be disabled.
# The default value is: YES.
@@ -730,12 +762,18 @@ WARN_IF_DOC_ERROR = YES
# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
# are documented, but have no documentation for their parameters or return
-# value. If set to NO doxygen will only warn about wrong or incomplete parameter
-# documentation, but not about the absence of documentation.
+# value. If set to NO, doxygen will only warn about wrong or incomplete
+# parameter documentation, but not about the absence of documentation.
# The default value is: NO.
WARN_NO_PARAMDOC = YES
+# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when
+# a warning is encountered.
+# The default value is: NO.
+
+WARN_AS_ERROR = NO
+
# The WARN_FORMAT tag determines the format of the warning messages that doxygen
# can produce. The string should contain the $file, $line, and $text tags, which
# will be replaced by the file and line number from which the warning originated
@@ -759,7 +797,7 @@ WARN_LOGFILE =
# The INPUT tag is used to specify the files and/or directories that contain
# documented source files. You may enter file names like myfile.cpp or
# directories like /usr/src/myproject. Separate the files or directories with
-# spaces.
+# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
# Note: If this tag is empty the current directory is searched.
INPUT = "$(SOURCE_ROOT)/CorePlot-CocoaTouch.h" \
@@ -769,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.
@@ -777,12 +815,17 @@ INPUT_ENCODING = UTF-8
# If the value of the INPUT tag contains directories, you can use the
# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank the
-# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
-# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
-# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
-# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
-# *.qsf, *.as and *.js.
+# *.h) to filter out the source-files in the directories.
+#
+# Note that for custom extensions or not directly supported extensions you also
+# need to set EXTENSION_MAPPING for the extension otherwise the files are not
+# read by doxygen.
+#
+# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,
+# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,
+# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc,
+# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08,
+# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf and *.qsf.
FILE_PATTERNS =
@@ -872,6 +915,10 @@ IMAGE_PATH = "$(SOURCE_ROOT)/../documentation/"
# Note that the filter must not add or remove lines; it is applied before the
# code is scanned, but not when the output code is generated. If lines are added
# or removed, the anchors will not be placed correctly.
+#
+# Note that for custom extensions or not directly supported extensions you also
+# need to set EXTENSION_MAPPING for the extension otherwise the files are not
+# properly processed by doxygen.
INPUT_FILTER =
@@ -881,11 +928,15 @@ INPUT_FILTER =
# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
# patterns match the file name, INPUT_FILTER is applied.
+#
+# Note that for custom extensions or not directly supported extensions you also
+# need to set EXTENSION_MAPPING for the extension otherwise the files are not
+# properly processed by doxygen.
FILTER_PATTERNS =
# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER ) will also be used to filter the input files that are used for
+# INPUT_FILTER) will also be used to filter the input files that are used for
# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
# The default value is: NO.
@@ -945,7 +996,7 @@ REFERENCED_BY_RELATION = NO
REFERENCES_RELATION = NO
# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
-# to YES, then the hyperlinks from functions in REFERENCES_RELATION and
+# to YES then the hyperlinks from functions in REFERENCES_RELATION and
# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
# link to the documentation.
# The default value is: YES.
@@ -965,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:
@@ -992,13 +1043,13 @@ USE_HTAGS = NO
VERBATIM_HEADERS = YES
-# If the CLANG_ASSISTED_PARSING tag is set to YES, then doxygen will use the
-# clang parser (see: http://clang.llvm.org/) for more acurate parsing at the
+# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the
+# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the
# cost of reduced performance. This can be particularly helpful with template
# rich C++ code for which doxygen's built-in parser lacks the necessary type
# information.
# Note: The availability of this option depends on whether or not doxygen was
-# compiled with the --with-libclang option.
+# generated with the -Duse-libclang=ON option for CMake.
# The default value is: NO.
CLANG_ASSISTED_PARSING = NO
@@ -1011,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
#---------------------------------------------------------------------------
@@ -1042,7 +1104,7 @@ IGNORE_PREFIX = CPT \
# Configuration options related to the HTML output
#---------------------------------------------------------------------------
-# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output
+# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
# The default value is: YES.
GENERATE_HTML = YES
@@ -1104,13 +1166,15 @@ HTML_FOOTER =
HTML_STYLESHEET =
-# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-
-# defined cascading style sheet that is included after the standard style sheets
+# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
+# cascading style sheets that are included after the standard style sheets
# created by doxygen. Using this option one can overrule certain style aspects.
# This is preferred over using HTML_STYLESHEET since it does not replace the
-# standard style sheet and is therefor more robust against future updates.
-# Doxygen will copy the style sheet file to the output directory. For an example
-# see the documentation.
+# standard style sheet and is therefore more robust against future updates.
+# Doxygen will copy the style sheet files to the output directory.
+# Note: The order of the extra style sheet files is of importance (e.g. the last
+# style sheet in the list overrules the setting of the previous ones in the
+# list). For an example see the documentation.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_EXTRA_STYLESHEET =
@@ -1126,9 +1190,9 @@ HTML_EXTRA_STYLESHEET =
HTML_EXTRA_FILES =
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
-# will adjust the colors in the stylesheet and background images according to
+# 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.
@@ -1157,12 +1221,24 @@ HTML_COLORSTYLE_GAMMA = 80
# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
# page will contain the date and time when the page was generated. Setting this
-# to NO can help when comparing the output of multiple runs.
-# The default value is: YES.
+# to YES can help to show when doxygen was last run and thus if the
+# documentation is up to date.
+# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
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.
@@ -1186,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.
@@ -1254,28 +1330,29 @@ GENERATE_HTMLHELP = NO
CHM_FILE =
# The HHC_LOCATION tag can be used to specify the location (absolute path
-# including file name) of the HTML help compiler ( hhc.exe). If non-empty
+# including file name) of the HTML help compiler (hhc.exe). If non-empty,
# doxygen will try to run the HTML help compiler on the generated index.hhp.
# The file has to be specified with full path.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
HHC_LOCATION =
-# The GENERATE_CHI flag controls if a separate .chi index file is generated (
-# YES) or that it should be included in the master .chm file ( NO).
+# The GENERATE_CHI flag controls if a separate .chi index file is generated
+# (YES) or that it should be included in the master .chm file (NO).
# The default value is: NO.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
GENERATE_CHI = NO
-# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc)
+# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)
# and project file content.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
CHM_INDEX_ENCODING =
-# The BINARY_TOC flag controls whether a binary table of contents is generated (
-# YES) or a normal table of contents ( NO) in the .chm file.
+# The BINARY_TOC flag controls whether a binary table of contents is generated
+# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it
+# enables the Previous and Next buttons.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
@@ -1306,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.
@@ -1314,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.
@@ -1323,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 =
@@ -1388,7 +1462,7 @@ DISABLE_INDEX = NO
# index structure (just like the one that is generated for HTML Help). For this
# to work a browser that supports JavaScript, DHTML, CSS and frames is required
# (i.e. any modern browser). Windows users are probably better off using the
-# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can
+# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can
# further fine-tune the look of the index. As an example, the default style
# sheet generated by doxygen has an example that shows how to put an image at
# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
@@ -1416,7 +1490,7 @@ ENUM_VALUES_PER_LINE = 4
TREEVIEW_WIDTH = 250
-# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to
+# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
# external symbols imported via tag files in a separate window.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
@@ -1432,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.
#
@@ -1444,8 +1518,8 @@ 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
-# instead of using prerendered bitmaps. Use this if you do not have LaTeX
+# 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
# to it using the MATHJAX_RELPATH option.
@@ -1471,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
@@ -1515,11 +1589,11 @@ SEARCHENGINE = NO
# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
# implemented using a web server instead of a web client using Javascript. There
-# are two flavours of web server based searching depending on the
-# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
-# searching and an index file used by the script. When EXTERNAL_SEARCH is
-# enabled the indexing and searching needs to be provided by external tools. See
-# the section "External Indexing and Searching" for details.
+# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
+# setting. When disabled, doxygen will generate a PHP script for searching and
+# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
+# and searching needs to be provided by external tools. See the section
+# "External Indexing and Searching" for details.
# The default value is: NO.
# This tag requires that the tag SEARCHENGINE is set to YES.
@@ -1531,9 +1605,9 @@ SERVER_BASED_SEARCH = NO
# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
# search results.
#
-# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# 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.
@@ -1544,9 +1618,9 @@ EXTERNAL_SEARCH = NO
# The SEARCHENGINE_URL should point to a search engine hosted by a web server
# which will return the search results when EXTERNAL_SEARCH is enabled.
#
-# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# 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.
@@ -1582,7 +1656,7 @@ EXTRA_SEARCH_MAPPINGS =
# Configuration options related to the LaTeX output
#---------------------------------------------------------------------------
-# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output.
+# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
# The default value is: YES.
GENERATE_LATEX = NO
@@ -1613,7 +1687,7 @@ LATEX_CMD_NAME = latex
MAKEINDEX_CMD_NAME = makeindex
-# If the COMPACT_LATEX tag is set to YES doxygen generates more compact LaTeX
+# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
# documents. This may be useful for small projects and may help to save some
# trees in general.
# The default value is: NO.
@@ -1631,9 +1705,12 @@ COMPACT_LATEX = NO
PAPER_TYPE = letter
# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
-# that should be included in the LaTeX output. To get the times font for
-# instance you can specify
-# EXTRA_PACKAGES=times
+# that should be included in the LaTeX output. The package can be specified just
+# by its name or with the correct syntax as to be used with the LaTeX
+# \usepackage command. To get the times font for instance you can specify :
+# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times}
+# To use the option intlimits with the amsmath package you can specify:
+# EXTRA_PACKAGES=[intlimits]{amsmath}
# If left blank no extra packages will be included.
# This tag requires that the tag GENERATE_LATEX is set to YES.
@@ -1647,23 +1724,36 @@ EXTRA_PACKAGES =
#
# Note: Only use a user-defined header if you know what you are doing! The
# following commands have a special meaning inside the header: $title,
-# $datetime, $date, $doxygenversion, $projectname, $projectnumber. Doxygen will
-# replace them by respectively the title of the page, the current date and time,
-# only the current date, the version number of doxygen, the project name (see
-# PROJECT_NAME), or the project number (see PROJECT_NUMBER).
+# $datetime, $date, $doxygenversion, $projectname, $projectnumber,
+# $projectbrief, $projectlogo. Doxygen will replace $title with the empty
+# string, for the replacement values of the other commands the user is referred
+# to HTML_HEADER.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_HEADER =
# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
# generated LaTeX document. The footer should contain everything after the last
-# chapter. If it is left blank doxygen will generate a standard footer.
+# chapter. If it is left blank doxygen will generate a standard footer. See
+# LATEX_HEADER for more information on how to generate a default footer and what
+# special commands can be used inside the footer.
#
# Note: Only use a user-defined footer if you know what you are doing!
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_FOOTER =
+# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined
+# LaTeX style sheets that are included after the standard style sheets created
+# by doxygen. Using this option one can overrule certain style aspects. Doxygen
+# will copy the style sheet files to the output directory.
+# Note: The order of the extra style sheet files is of importance (e.g. the last
+# style sheet in the list overrules the setting of the previous ones in the
+# list).
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_EXTRA_STYLESHEET =
+
# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the LATEX_OUTPUT output
# directory. Note that the files will be copied as-is; there are no commands or
@@ -1681,8 +1771,8 @@ LATEX_EXTRA_FILES =
PDF_HYPERLINKS = YES
-# If the LATEX_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
-# the PDF file directly from the LaTeX files. Set this option to YES to get a
+# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
+# the PDF file directly from the LaTeX files. Set this option to YES, to get a
# higher quality PDF documentation.
# The default value is: YES.
# This tag requires that the tag GENERATE_LATEX is set to YES.
@@ -1717,17 +1807,25 @@ 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.
LATEX_BIB_STYLE = plain
+# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated
+# page will contain the date and time when the page was generated. Setting this
+# to NO can help when comparing the output of multiple runs.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_TIMESTAMP = NO
+
#---------------------------------------------------------------------------
# Configuration options related to the RTF output
#---------------------------------------------------------------------------
-# If the GENERATE_RTF tag is set to YES doxygen will generate RTF output. The
+# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The
# RTF output is optimized for Word 97 and may not look too pretty with other RTF
# readers/editors.
# The default value is: NO.
@@ -1742,7 +1840,7 @@ GENERATE_RTF = NO
RTF_OUTPUT = rtf
-# If the COMPACT_RTF tag is set to YES doxygen generates more compact RTF
+# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF
# documents. This may be useful for small projects and may help to save some
# trees in general.
# The default value is: NO.
@@ -1779,11 +1877,21 @@ RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE =
+# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code
+# with syntax highlighting in the RTF output.
+#
+# Note that which sources are shown also depends on other settings such as
+# SOURCE_BROWSER.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_SOURCE_CODE = NO
+
#---------------------------------------------------------------------------
# Configuration options related to the man page output
#---------------------------------------------------------------------------
-# If the GENERATE_MAN tag is set to YES doxygen will generate man pages for
+# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for
# classes and files.
# The default value is: NO.
@@ -1807,6 +1915,13 @@ MAN_OUTPUT = man
MAN_EXTENSION = .3
+# The MAN_SUBDIR tag determines the name of the directory created within
+# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
+# MAN_EXTENSION with the initial . removed.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_SUBDIR =
+
# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
# will generate one additional man file for each entity documented in the real
# man page(s). These additional files only source the real man page, but without
@@ -1820,7 +1935,7 @@ MAN_LINKS = NO
# Configuration options related to the XML output
#---------------------------------------------------------------------------
-# If the GENERATE_XML tag is set to YES doxygen will generate an XML file that
+# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that
# captures the structure of the code including all documentation.
# The default value is: NO.
@@ -1834,19 +1949,7 @@ GENERATE_XML = NO
XML_OUTPUT = xml
-# The XML_SCHEMA tag can be used to specify a XML schema, which can be used by a
-# validating XML parser to check the syntax of the XML files.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_SCHEMA =
-
-# The XML_DTD tag can be used to specify a XML DTD, which can be used by a
-# validating XML parser to check the syntax of the XML files.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_DTD =
-
-# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program
+# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program
# listings (including syntax highlighting and cross-referencing information) to
# the XML output. Note that enabling this will significantly increase the size
# of the XML output.
@@ -1859,7 +1962,7 @@ XML_PROGRAMLISTING = YES
# Configuration options related to the DOCBOOK output
#---------------------------------------------------------------------------
-# If the GENERATE_DOCBOOK tag is set to YES doxygen will generate Docbook files
+# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files
# that can be used to generate PDF.
# The default value is: NO.
@@ -1873,14 +1976,23 @@ GENERATE_DOCBOOK = NO
DOCBOOK_OUTPUT = docbook
+# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the
+# program listings (including syntax highlighting and cross-referencing
+# information) to the DOCBOOK output. Note that enabling this will significantly
+# increase the size of the DOCBOOK output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
+
+DOCBOOK_PROGRAMLISTING = NO
+
#---------------------------------------------------------------------------
# Configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
-# 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.
+# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
+# 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
@@ -1889,7 +2001,7 @@ GENERATE_AUTOGEN_DEF = NO
# Configuration options related to the Perl module output
#---------------------------------------------------------------------------
-# If the GENERATE_PERLMOD tag is set to YES doxygen will generate a Perl module
+# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module
# file that captures the structure of the code including all documentation.
#
# Note that this feature is still experimental and incomplete at the moment.
@@ -1897,7 +2009,7 @@ GENERATE_AUTOGEN_DEF = NO
GENERATE_PERLMOD = NO
-# If the PERLMOD_LATEX tag is set to YES doxygen will generate the necessary
+# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary
# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
# output from the Perl module output.
# The default value is: NO.
@@ -1905,9 +2017,9 @@ GENERATE_PERLMOD = NO
PERLMOD_LATEX = NO
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be nicely
+# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely
# formatted so it can be parsed by a human reader. This is useful if you want to
-# understand what is going on. On the other hand, if this tag is set to NO the
+# understand what is going on. On the other hand, if this tag is set to NO, the
# size of the Perl module output will be much smaller and Perl will parse it
# just the same.
# The default value is: YES.
@@ -1927,14 +2039,14 @@ PERLMOD_MAKEVAR_PREFIX =
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
-# If the ENABLE_PREPROCESSING tag is set to YES doxygen will evaluate all
+# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all
# C-preprocessor directives found in the sources and include files.
# The default value is: YES.
ENABLE_PREPROCESSING = YES
-# If the MACRO_EXPANSION tag is set to YES doxygen will expand all macro names
-# in the source code. If set to NO only conditional compilation will be
+# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names
+# in the source code. If set to NO, only conditional compilation will be
# performed. Macro expansion can be done in a controlled way by setting
# EXPAND_ONLY_PREDEF to YES.
# The default value is: NO.
@@ -1950,7 +2062,7 @@ MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
-# If the SEARCH_INCLUDES tag is set to YES the includes files in the
+# If the SEARCH_INCLUDES tag is set to YES, the include files in the
# INCLUDE_PATH will be searched if a #include is found.
# The default value is: YES.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
@@ -1981,9 +2093,17 @@ INCLUDE_FILE_PATTERNS =
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
PREDEFINED = TARGET_OS_IPHONE, \
- TARGET_IPHONE_SIMULATOR, \
- NS_ENUM(_type,_name):="enum _name : _type _name; enum _name : _type" \
- NS_OPTIONS(_type,_name):="enum _name : _type _name; enum _name : _type"
+ TARGET_OS_TV, \
+ TARGET_OS_SIMULATOR, \
+ "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:= " \
+ "cpt_swift_enum:= " \
+ "cpt_swift_struct:= "
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
# tag can be used to specify a list of macro names that should be expanded. The
@@ -1995,9 +2115,9 @@ PREDEFINED = TARGET_OS_IPHONE, \
EXPAND_AS_DEFINED =
# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
-# remove all refrences to function-like macros that are alone on a line, have an
-# all uppercase name, and do not end with a semicolon. Such function macros are
-# typically used for boiler-plate code, and will confuse the parser if not
+# remove all references to function-like macros that are alone on a line, have
+# an all uppercase name, and do not end with a semicolon. Such function macros
+# are typically used for boiler-plate code, and will confuse the parser if not
# removed.
# The default value is: YES.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
@@ -2017,7 +2137,7 @@ SKIP_FUNCTION_MACROS = YES
# where loc1 and loc2 can be relative or absolute paths or URLs. See the
# section "Linking to external documentation" for more information about the use
# of tag files.
-# Note: Each tag file must have an unique name (where the name does NOT include
+# Note: Each tag file must have a unique name (where the name does NOT include
# the path). If a tag file is not located in the directory in which doxygen is
# run, you must also specify the path to the tagfile here.
@@ -2029,20 +2149,21 @@ TAGFILES = "$(SOURCE_ROOT)/../documentation/doxygen/doxygen-cocoa-
GENERATE_TAGFILE = "$(SOURCE_ROOT)/../documentation/doxygen/core-plot-touch-tags.xml"
-# If the ALLEXTERNALS tag is set to YES all external class will be listed in the
-# class index. If set to NO only the inherited external classes will be listed.
+# If the ALLEXTERNALS tag is set to YES, all external class will be listed in
+# the class index. If set to NO, only the inherited external classes will be
+# listed.
# The default value is: NO.
ALLEXTERNALS = NO
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed in
-# the modules index. If set to NO, only the current project's groups will be
+# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will be
# listed.
# The default value is: YES.
EXTERNAL_GROUPS = YES
-# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in
+# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in
# the related pages index. If set to NO, only the current project's pages will
# be listed.
# The default value is: YES.
@@ -2059,7 +2180,7 @@ PERL_PATH = /usr/bin/perl
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
-# If the CLASS_DIAGRAMS tag is set to YES doxygen will generate a class diagram
+# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram
# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
# NO turns the diagrams off. Note that this option also works with HAVE_DOT
# disabled, but it is recommended to install and use dot, since it yields more
@@ -2084,7 +2205,7 @@ MSCGEN_PATH =
DIA_PATH =
-# If set to YES, the inheritance and collaboration graphs will hide inheritance
+# If set to YES the inheritance and collaboration graphs will hide inheritance
# and usage relations if the target is undocumented or is not a class.
# The default value is: YES.
@@ -2109,7 +2230,7 @@ HAVE_DOT = YES
DOT_NUM_THREADS = 0
-# When you want a differently looking font n the dot files that doxygen
+# When you want a differently looking font in the dot files that doxygen
# generates you can specify the font name using DOT_FONTNAME. You need to make
# sure dot is able to find the font, which can be done by putting it in a
# standard location or by setting the DOTFONTPATH environment variable or by
@@ -2157,7 +2278,7 @@ COLLABORATION_GRAPH = YES
GROUP_GRAPHS = YES
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and
# collaboration diagrams in a style similar to the OMG's Unified Modeling
# Language.
# The default value is: NO.
@@ -2209,7 +2330,8 @@ INCLUDED_BY_GRAPH = YES
#
# Note that enabling this option will significantly increase the time of a run.
# So in most cases it will be better to enable call graphs for selected
-# functions only using the \callgraph command.
+# functions only using the \callgraph command. Disabling a call graph can be
+# accomplished by means of the command \hidecallgraph.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
@@ -2220,7 +2342,8 @@ CALL_GRAPH = NO
#
# Note that enabling this option will significantly increase the time of a run.
# So in most cases it will be better to enable caller graphs for selected
-# functions only using the \callergraph command.
+# functions only using the \callergraph command. Disabling a caller graph can be
+# accomplished by means of the command \hidecallergraph.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
@@ -2243,11 +2366,15 @@ GRAPHICAL_HIERARCHY = YES
DIRECTORY_GRAPH = YES
# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot.
+# generated by dot. For an explanation of the image formats see the section
+# output formats in the documentation of the dot tool (Graphviz (see:
+# http://www.graphviz.org/)).
# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
# to make the SVG files visible in IE 9+ (other browsers do not have this
# requirement).
-# Possible values are: png, jpg, gif and svg.
+# Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo,
+# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and
+# png:gdiplus:gdiplus.
# The default value is: png.
# This tag requires that the tag HAVE_DOT is set to YES.
@@ -2290,6 +2417,24 @@ MSCFILE_DIRS =
DIAFILE_DIRS =
+# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the
+# path where java can find the plantuml.jar file. If left blank, it is assumed
+# PlantUML is not used or called during a preprocessing step. Doxygen will
+# generate a warning when it encounters a \startuml command in this case and
+# will not generate output for the diagram.
+
+PLANTUML_JAR_PATH =
+
+# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a
+# configuration file for plantuml.
+
+PLANTUML_CFG_FILE =
+
+# When using plantuml, the specified paths are searched for files specified by
+# the !include statement in a plantuml block.
+
+PLANTUML_INCLUDE_PATH =
+
# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
# that will be shown in the graph. If the number of nodes in a graph becomes
# larger than this value, doxygen will truncate the graph, which is visualized
@@ -2326,7 +2471,7 @@ MAX_DOT_GRAPH_DEPTH = 0
DOT_TRANSPARENT = YES
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
# files in one run (i.e. multiple -o and -T options on the command line). This
# makes dot run faster, but since only newer versions of dot (>1.8.10) support
# this, this feature is disabled by default.
@@ -2343,7 +2488,7 @@ DOT_MULTI_TARGETS = YES
GENERATE_LEGEND = YES
-# If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot
+# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot
# files that are used to generate the various graphs.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
diff --git a/documentation/doxygen/doxygen-cocoa-tags.xml b/documentation/doxygen/doxygen-cocoa-tags.xml
index 956632492..1578dd526 100644
--- a/documentation/doxygen/doxygen-cocoa-tags.xml
+++ b/documentation/doxygen/doxygen-cocoa-tags.xml
@@ -258,6 +258,15 @@
NSFastEnumeration-p
NSMutableCopying-p
+
+ NSMutableDictionary
+ https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSMutableDictionary_Class/Reference/Reference.html
+ NSObject
+ NSCoding-p
+ NSCopying-p
+ NSFastEnumeration-p
+ NSMutableCopying-p
+ NSEventhttps://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSEvent_Class/Reference/Reference.html
@@ -511,6 +520,24 @@
NSFastEnumeration-p
NSMutableCopying-p
+
+ NSMutableSet
+ https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSMutableSet_Class/Reference/Reference.html
+ NSObject
+ NSCoding-p
+ NSCopying-p
+ NSFastEnumeration-p
+ NSMutableCopying-p
+
+
+ NSSecureCoding
+ https://developer.apple.com/library/mac/documentation/Foundation/Reference/NSSecureCoding_Protocol_Ref/
+
+ BOOL
+ supportsSecureCoding:
+ //apple_ref/occ/intfcm/NSSecureCoding/supportsSecureCoding
+
+ NSStringhttps://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html
@@ -731,6 +758,21 @@
+
+ CAAnimationDelegate
+ https://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/CAAnimationDelegate_protocol/Introduction/Introduction.html/
+ NSObject-p
+
+ void
+ animationDidStart:
+ //apple_ref/occ/intfcm/CAAnimationDelegate/animationDidStart
+
+
+ void
+ animationDidStop:finished:
+ //apple_ref/occ/intfcm/CAAnimationDelegate/animationDidStopfinished
+
+ CALayerhttps://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/CALayer_class/Introduction/Introduction.html
@@ -833,6 +875,36 @@
//apple_ref/occ/instm/CALayer/setNeedsLayout
+
+ CALayerDelegate
+ https://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/CALayerDelegate_protocol/Introduction/Introduction.html/
+ NSObject-p
+
+ id
+ actionForLayer:forKey:
+ //apple_ref/occ/intfcm/CALayerDelegate/actionForLayerforKey
+
+
+ void
+ displayLayer:
+ //apple_ref/occ/intfcm/CALayerDelegate/displayLayer
+
+
+ void
+ drawLayer:inContext:
+ //apple_ref/occ/intfcm/CALayerDelegate/drawLayerinContext
+
+
+ void
+ layerWillDraw:
+ //apple_ref/occ/intfcm/CALayerDelegate/layerWillDraw
+
+
+ void
+ layoutSublayersOfLayer:
+ //apple_ref/occ/intfcm/CALayerDelegate/layoutSublayersOfLayer
+
+ CAMediaTiminghttps://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/CAMediaTiming_protocol/Introduction/Introduction.html
diff --git a/documentation/doxygen/doxygen-cocoa-touch-tags.xml b/documentation/doxygen/doxygen-cocoa-touch-tags.xml
index 7b10f8fa8..1de3c13d3 100644
--- a/documentation/doxygen/doxygen-cocoa-touch-tags.xml
+++ b/documentation/doxygen/doxygen-cocoa-touch-tags.xml
@@ -241,6 +241,15 @@
NSFastEnumeration-p
NSMutableCopying-p
+
+ NSMutableDictionary
+ https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSMutableDictionary_Class/Reference/Reference.html
+ NSObject
+ NSCoding-p
+ NSCopying-p
+ NSFastEnumeration-p
+ NSMutableCopying-p
+ UIEventhttps://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIEvent_Class/Reference/Reference.html
@@ -440,11 +449,29 @@
NSFastEnumeration-p
NSMutableCopying-p
+
+ NSMutableSet
+ https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSMutableSet_Class/Reference/Reference.html
+ NSObject
+ NSCoding-p
+ NSCopying-p
+ NSFastEnumeration-p
+ NSMutableCopying-p
+ UIResponderhttps://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIResponder_Class/Reference/Reference.html#//apple_ref/occ/cl/UIResponderNSObject
+
+ NSSecureCoding
+ https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSSecureCoding_Protocol_Ref/
+
+ BOOL
+ supportsSecureCoding:
+ //apple_ref/occ/intfcm/NSSecureCoding/supportsSecureCoding
+
+ NSStringhttps://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html
@@ -660,6 +687,21 @@
+
+ CAAnimationDelegate
+ https://developer.apple.com/library/ios/documentation/Foundation/Reference/CAAnimationDelegate_Protocol_Ref/
+ NSObject-p
+
+ void
+ animationDidStart:
+ //apple_ref/occ/intfcm/CAAnimationDelegate/animationDidStart
+
+
+ void
+ animationDidStop:finished:
+ //apple_ref/occ/intfcm/CAAnimationDelegate/animationDidStopfinished
+
+ CALayerhttps://developer.apple.com/library/ios/#documentation/GraphicsImaging/Reference/CALayer_class/Introduction/Introduction.html
@@ -761,6 +803,36 @@
//apple_ref/occ/instm/CALayer/setNeedsLayout
+
+ CALayerDelegate
+ https://developer.apple.com/library/ios/documentation/Foundation/Reference/CALayerDelegate_Protocol_Ref/
+ NSObject-p
+
+ id
+ actionForLayer:forKey:
+ //apple_ref/occ/intfcm/CALayerDelegate/actionForLayerforKey
+
+
+ void
+ displayLayer:
+ //apple_ref/occ/intfcm/CALayerDelegate/displayLayer
+
+
+ void
+ drawLayer:inContext:
+ //apple_ref/occ/intfcm/CALayerDelegate/drawLayerinContext
+
+
+ void
+ layerWillDraw:
+ //apple_ref/occ/intfcm/CALayerDelegate/layerWillDraw
+
+
+ void
+ layoutSublayersOfLayer:
+ //apple_ref/occ/intfcm/CALayerDelegate/layoutSublayersOfLayer
+
+ CAMediaTiminghttps://developer.apple.com/library/ios/#documentation/GraphicsImaging/Reference/CAMediaTiming_protocol/Introduction/Introduction.html
@@ -927,4 +999,4 @@
//apple_ref/c/tdef/NSZone
-
\ No newline at end of file
+
diff --git a/documentation/doxygen/doxygen.config b/documentation/doxygen/doxygen.config
index ad9720e64..46ed09de4 100644
--- a/documentation/doxygen/doxygen.config
+++ b/documentation/doxygen/doxygen.config
@@ -1,4 +1,4 @@
-# Doxyfile 1.8.6
+# 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
@@ -32,7 +32,7 @@ DOXYFILE_ENCODING = UTF-8
# title of most generated pages and in a few other places.
# The default value is: My Project.
-PROJECT_NAME = "Core Plot (Mac OS)"
+PROJECT_NAME = "Core Plot (macOS)"
# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
# could be handy for archiving the generated documentation or if some version
@@ -44,12 +44,12 @@ PROJECT_NUMBER =
# for a project that appears at the top of each page and should give viewer a
# quick idea about the purpose of the project. Keep the description short.
-PROJECT_BRIEF = "Cocoa plotting framework for Mac OS X and iOS"
+PROJECT_BRIEF = "Cocoa plotting framework for macOS, iOS, and tvOS"
-# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
-# the documentation. The maximum height of the logo should not exceed 55 pixels
-# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo
-# to the output directory.
+# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
+# in the documentation. The maximum height of the logo should not exceed 55
+# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
+# the logo to the output directory.
PROJECT_LOGO = "$(SOURCE_ROOT)/../documentation/core-plot-logo.png"
@@ -60,7 +60,7 @@ PROJECT_LOGO = "$(SOURCE_ROOT)/../documentation/core-plot-logo.png"
OUTPUT_DIRECTORY = "$(SOURCE_ROOT)/CorePlotDocs.docset"
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
+# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
# directories (in 2 levels) under the output directory of each output format and
# will distribute the generated files over these directories. Enabling this
# option can be useful when feeding doxygen a huge amount of source files, where
@@ -70,6 +70,14 @@ OUTPUT_DIRECTORY = "$(SOURCE_ROOT)/CorePlotDocs.docset"
CREATE_SUBDIRS = NO
+# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
+# characters to appear in the names of generated files. If set to NO, non-ASCII
+# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
+# U+3044.
+# The default value is: NO.
+
+ALLOW_UNICODE_NAMES = NO
+
# The OUTPUT_LANGUAGE tag is used to specify the language in which all
# documentation generated by doxygen is written. Doxygen will use this
# information to generate all constant output in the proper language.
@@ -85,14 +93,14 @@ CREATE_SUBDIRS = NO
OUTPUT_LANGUAGE = English
-# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member
+# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
# descriptions after the members that are listed in the file and class
# documentation (similar to Javadoc). Set to NO to disable this.
# The default value is: YES.
BRIEF_MEMBER_DESC = YES
-# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief
+# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief
# description of a member or function before the detailed description
#
# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
@@ -127,7 +135,7 @@ ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
-# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path
+# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path
# before files name in the file list and in the header files. If set to NO the
# shortest path that makes the file name unique will be used
# The default value is: YES.
@@ -197,9 +205,9 @@ MULTILINE_CPP_IS_BRIEF = NO
INHERIT_DOCS = YES
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a
-# new page for each member. If set to NO, the documentation of a member will be
-# part of the file/class/namespace that contains it.
+# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new
+# page for each member. If set to NO, the documentation of a member will be part
+# of the file/class/namespace that contains it.
# The default value is: NO.
SEPARATE_MEMBER_PAGES = NO
@@ -218,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" \
@@ -280,11 +289,14 @@ OPTIMIZE_OUTPUT_VHDL = NO
# extension. Doxygen has a built-in mapping, but you can override or extend it
# using this tag. The format is ext=language, where ext is a file extension, and
# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
-# C#, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL. For instance to make
-# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
-# (default is Fortran), use: inc=Fortran f=C.
+# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
+# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
+# Fortran. In the later case the parser tries to guess whether the code is fixed
+# or free formatted code, this is the default for Fortran type files), VHDL. For
+# instance to make doxygen treat .inc files as Fortran files (default is PHP),
+# and .f files as C (default is Fortran), use: inc=Fortran f=C.
#
-# Note For files without extension you can use no_extension as a placeholder.
+# Note: For files without extension you can use no_extension as a placeholder.
#
# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
# the files are not read by doxygen.
@@ -301,10 +313,19 @@ EXTENSION_MAPPING =
MARKDOWN_SUPPORT = NO
+# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up
+# to that level are automatically included in the table of contents, even if
+# they do not have an id attribute.
+# Note: This feature currently applies only to Markdown headings.
+# Minimum value: 0, maximum value: 99, default value: 0.
+# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
+
+TOC_INCLUDE_HEADINGS = 0
+
# When enabled doxygen tries to link words that correspond to documented
# classes, or namespaces to their corresponding documentation. Such a link can
-# be prevented in individual cases by by putting a % sign in front of the word
-# or globally by setting AUTOLINK_SUPPORT to NO.
+# be prevented in individual cases by putting a % sign in front of the word or
+# globally by setting AUTOLINK_SUPPORT to NO.
# The default value is: YES.
AUTOLINK_SUPPORT = YES
@@ -326,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.
@@ -344,13 +365,20 @@ SIP_SUPPORT = NO
IDL_PROPERTY_SUPPORT = YES
# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
+# tag is set to YES then doxygen will reuse the documentation of the first
# member in the group (if any) for the other members of the group. By default
# all members of a group must be documented explicitly.
# The default value is: NO.
DISTRIBUTE_GROUP_DOC = NO
+# If one adds a struct or class to a group and this option is enabled, then also
+# any nested class or struct is added to the same group. By default this option
+# is disabled and one has to add nested compounds explicitly via \ingroup.
+# The default value is: NO.
+
+GROUP_NESTED_COMPOUNDS = NO
+
# Set the SUBGROUPING tag to YES to allow class member groups of the same type
# (for instance a group of public functions) to be put as a subgroup of that
# type (e.g. under the Public Functions section). Set it to NO to prevent
@@ -409,7 +437,7 @@ LOOKUP_CACHE_SIZE = 0
# Build related configuration options
#---------------------------------------------------------------------------
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in
# documentation are documented, even if no documentation was available. Private
# class members and static file members will be hidden unless the
# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
@@ -419,35 +447,35 @@ LOOKUP_CACHE_SIZE = 0
EXTRACT_ALL = YES
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will
+# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
# be included in the documentation.
# The default value is: NO.
EXTRACT_PRIVATE = NO
-# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
+# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
# scope will be included in the documentation.
# The default value is: NO.
EXTRACT_PACKAGE = NO
-# If the EXTRACT_STATIC tag is set to YES all static members of a file will be
+# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
# included in the documentation.
# The default value is: NO.
EXTRACT_STATIC = NO
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined
-# locally in source files will be included in the documentation. If set to NO
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
+# locally in source files will be included in the documentation. If set to NO,
# only classes defined in header files are included. Does not have any effect
# for Java sources.
# The default value is: YES.
EXTRACT_LOCAL_CLASSES = YES
-# This flag is only useful for Objective-C code. When set to YES local methods,
+# This flag is only useful for Objective-C code. If set to YES, local methods,
# which are defined in the implementation section but not in the interface are
-# included in the documentation. If set to NO only methods in the interface are
+# included in the documentation. If set to NO, only methods in the interface are
# included.
# The default value is: NO.
@@ -472,21 +500,21 @@ HIDE_UNDOC_MEMBERS = YES
# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
# undocumented classes that are normally visible in the class hierarchy. If set
-# to NO these classes will be included in the various overviews. This option has
-# no effect if EXTRACT_ALL is enabled.
+# to NO, these classes will be included in the various overviews. This option
+# has no effect if EXTRACT_ALL is enabled.
# The default value is: NO.
HIDE_UNDOC_CLASSES = NO
# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
-# (class|struct|union) declarations. If set to NO these declarations will be
+# (class|struct|union) declarations. If set to NO, these declarations will be
# included in the documentation.
# The default value is: NO.
HIDE_FRIEND_COMPOUNDS = NO
# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
-# documentation blocks found inside the body of a function. If set to NO these
+# documentation blocks found inside the body of a function. If set to NO, these
# blocks will be appended to the function's detailed documentation block.
# The default value is: NO.
@@ -500,7 +528,7 @@ HIDE_IN_BODY_DOCS = NO
INTERNAL_DOCS = NO
# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
-# names in lower-case letters. If set to YES upper-case letters are also
+# names in lower-case letters. If set to YES, upper-case letters are also
# allowed. This is useful if you have classes or files whose names only differ
# in case and if your file system supports case sensitive file names. Windows
# and Mac users are advised to set this option to NO.
@@ -509,12 +537,19 @@ INTERNAL_DOCS = NO
CASE_SENSE_NAMES = NO
# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
-# their full class and namespace scopes in the documentation. If set to YES the
+# their full class and namespace scopes in the documentation. If set to YES, the
# scope will be hidden.
# The default value is: NO.
HIDE_SCOPE_NAMES = NO
+# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will
+# append additional text to a page's title, such as Class Reference. If set to
+# YES the compound reference will be hidden.
+# The default value is: NO.
+
+HIDE_COMPOUND_REFERENCE= NO
+
# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
# the files that are included by a file in the documentation of that file.
# The default value is: YES.
@@ -542,14 +577,14 @@ INLINE_INFO = YES
# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
# (detailed) documentation of file and class members alphabetically by member
-# name. If set to NO the members will appear in declaration order.
+# name. If set to NO, the members will appear in declaration order.
# The default value is: YES.
SORT_MEMBER_DOCS = YES
# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
# descriptions of file, namespace and class members alphabetically by member
-# name. If set to NO the members will appear in declaration order. Note that
+# name. If set to NO, the members will appear in declaration order. Note that
# this will also influence the order of the classes in the class list.
# The default value is: NO.
@@ -594,27 +629,25 @@ SORT_BY_SCOPE_NAME = NO
STRICT_PROTO_MATCHING = NO
-# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the
-# todo list. This list is created by putting \todo commands in the
-# documentation.
+# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo
+# list. This list is created by putting \todo commands in the documentation.
# The default value is: YES.
GENERATE_TODOLIST = YES
-# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the
-# test list. This list is created by putting \test commands in the
-# documentation.
+# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
+# list. This list is created by putting \test commands in the documentation.
# The default value is: YES.
GENERATE_TESTLIST = YES
-# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug
+# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
# list. This list is created by putting \bug commands in the documentation.
# The default value is: YES.
GENERATE_BUGLIST = YES
-# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO)
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
# the deprecated list. This list is created by putting \deprecated commands in
# the documentation.
# The default value is: YES.
@@ -639,8 +672,8 @@ ENABLED_SECTIONS = MacOnly
MAX_INITIALIZER_LINES = 30
# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
-# the bottom of the documentation of classes and structs. If set to YES the list
-# will mention the files that were used to generate the documentation.
+# the bottom of the documentation of classes and structs. If set to YES, the
+# list will mention the files that were used to generate the documentation.
# The default value is: YES.
SHOW_USED_FILES = YES
@@ -685,11 +718,10 @@ 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. Do not use file names with spaces, bibtex cannot handle them. See
-# also \cite for info how to create references.
+# search path. See also \cite for info how to create references.
CITE_BIB_FILES =
@@ -705,7 +737,7 @@ CITE_BIB_FILES =
QUIET = NO
# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
+# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
# this implies that the warnings are on.
#
# Tip: Turn warnings on while writing the documentation.
@@ -713,7 +745,7 @@ QUIET = NO
WARNINGS = YES
-# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate
+# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate
# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
# will automatically be disabled.
# The default value is: YES.
@@ -730,12 +762,18 @@ WARN_IF_DOC_ERROR = YES
# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
# are documented, but have no documentation for their parameters or return
-# value. If set to NO doxygen will only warn about wrong or incomplete parameter
-# documentation, but not about the absence of documentation.
+# value. If set to NO, doxygen will only warn about wrong or incomplete
+# parameter documentation, but not about the absence of documentation.
# The default value is: NO.
WARN_NO_PARAMDOC = YES
+# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when
+# a warning is encountered.
+# The default value is: NO.
+
+WARN_AS_ERROR = NO
+
# The WARN_FORMAT tag determines the format of the warning messages that doxygen
# can produce. The string should contain the $file, $line, and $text tags, which
# will be replaced by the file and line number from which the warning originated
@@ -759,7 +797,7 @@ WARN_LOGFILE =
# The INPUT tag is used to specify the files and/or directories that contain
# documented source files. You may enter file names like myfile.cpp or
# directories like /usr/src/myproject. Separate the files or directories with
-# spaces.
+# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
# Note: If this tag is empty the current directory is searched.
INPUT = "$(SOURCE_ROOT)/CorePlot.h" \
@@ -769,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.
@@ -777,12 +815,17 @@ INPUT_ENCODING = UTF-8
# If the value of the INPUT tag contains directories, you can use the
# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank the
-# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
-# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
-# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
-# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
-# *.qsf, *.as and *.js.
+# *.h) to filter out the source-files in the directories.
+#
+# Note that for custom extensions or not directly supported extensions you also
+# need to set EXTENSION_MAPPING for the extension otherwise the files are not
+# read by doxygen.
+#
+# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,
+# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,
+# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc,
+# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08,
+# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf and *.qsf.
FILE_PATTERNS =
@@ -872,6 +915,10 @@ IMAGE_PATH = "$(SOURCE_ROOT)/../documentation/"
# Note that the filter must not add or remove lines; it is applied before the
# code is scanned, but not when the output code is generated. If lines are added
# or removed, the anchors will not be placed correctly.
+#
+# Note that for custom extensions or not directly supported extensions you also
+# need to set EXTENSION_MAPPING for the extension otherwise the files are not
+# properly processed by doxygen.
INPUT_FILTER =
@@ -881,11 +928,15 @@ INPUT_FILTER =
# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
# patterns match the file name, INPUT_FILTER is applied.
+#
+# Note that for custom extensions or not directly supported extensions you also
+# need to set EXTENSION_MAPPING for the extension otherwise the files are not
+# properly processed by doxygen.
FILTER_PATTERNS =
# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER ) will also be used to filter the input files that are used for
+# INPUT_FILTER) will also be used to filter the input files that are used for
# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
# The default value is: NO.
@@ -945,7 +996,7 @@ REFERENCED_BY_RELATION = NO
REFERENCES_RELATION = NO
# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
-# to YES, then the hyperlinks from functions in REFERENCES_RELATION and
+# to YES then the hyperlinks from functions in REFERENCES_RELATION and
# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
# link to the documentation.
# The default value is: YES.
@@ -965,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:
@@ -992,13 +1043,13 @@ USE_HTAGS = NO
VERBATIM_HEADERS = YES
-# If the CLANG_ASSISTED_PARSING tag is set to YES, then doxygen will use the
-# clang parser (see: http://clang.llvm.org/) for more acurate parsing at the
+# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the
+# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the
# cost of reduced performance. This can be particularly helpful with template
# rich C++ code for which doxygen's built-in parser lacks the necessary type
# information.
# Note: The availability of this option depends on whether or not doxygen was
-# compiled with the --with-libclang option.
+# generated with the -Duse-libclang=ON option for CMake.
# The default value is: NO.
CLANG_ASSISTED_PARSING = NO
@@ -1011,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
#---------------------------------------------------------------------------
@@ -1042,7 +1104,7 @@ IGNORE_PREFIX = CPT \
# Configuration options related to the HTML output
#---------------------------------------------------------------------------
-# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output
+# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
# The default value is: YES.
GENERATE_HTML = YES
@@ -1104,13 +1166,15 @@ HTML_FOOTER =
HTML_STYLESHEET =
-# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-
-# defined cascading style sheet that is included after the standard style sheets
+# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
+# cascading style sheets that are included after the standard style sheets
# created by doxygen. Using this option one can overrule certain style aspects.
# This is preferred over using HTML_STYLESHEET since it does not replace the
-# standard style sheet and is therefor more robust against future updates.
-# Doxygen will copy the style sheet file to the output directory. For an example
-# see the documentation.
+# standard style sheet and is therefore more robust against future updates.
+# Doxygen will copy the style sheet files to the output directory.
+# Note: The order of the extra style sheet files is of importance (e.g. the last
+# style sheet in the list overrules the setting of the previous ones in the
+# list). For an example see the documentation.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_EXTRA_STYLESHEET =
@@ -1126,9 +1190,9 @@ HTML_EXTRA_STYLESHEET =
HTML_EXTRA_FILES =
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
-# will adjust the colors in the stylesheet and background images according to
+# 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.
@@ -1157,12 +1221,24 @@ HTML_COLORSTYLE_GAMMA = 80
# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
# page will contain the date and time when the page was generated. Setting this
-# to NO can help when comparing the output of multiple runs.
-# The default value is: YES.
+# to YES can help to show when doxygen was last run and thus if the
+# documentation is up to date.
+# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
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.
@@ -1186,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.
@@ -1254,28 +1330,29 @@ GENERATE_HTMLHELP = NO
CHM_FILE =
# The HHC_LOCATION tag can be used to specify the location (absolute path
-# including file name) of the HTML help compiler ( hhc.exe). If non-empty
+# including file name) of the HTML help compiler (hhc.exe). If non-empty,
# doxygen will try to run the HTML help compiler on the generated index.hhp.
# The file has to be specified with full path.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
HHC_LOCATION =
-# The GENERATE_CHI flag controls if a separate .chi index file is generated (
-# YES) or that it should be included in the master .chm file ( NO).
+# The GENERATE_CHI flag controls if a separate .chi index file is generated
+# (YES) or that it should be included in the master .chm file (NO).
# The default value is: NO.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
GENERATE_CHI = NO
-# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc)
+# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)
# and project file content.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
CHM_INDEX_ENCODING =
-# The BINARY_TOC flag controls whether a binary table of contents is generated (
-# YES) or a normal table of contents ( NO) in the .chm file.
+# The BINARY_TOC flag controls whether a binary table of contents is generated
+# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it
+# enables the Previous and Next buttons.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
@@ -1306,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.
@@ -1314,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.
@@ -1323,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 =
@@ -1388,7 +1462,7 @@ DISABLE_INDEX = NO
# index structure (just like the one that is generated for HTML Help). For this
# to work a browser that supports JavaScript, DHTML, CSS and frames is required
# (i.e. any modern browser). Windows users are probably better off using the
-# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can
+# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can
# further fine-tune the look of the index. As an example, the default style
# sheet generated by doxygen has an example that shows how to put an image at
# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
@@ -1416,7 +1490,7 @@ ENUM_VALUES_PER_LINE = 4
TREEVIEW_WIDTH = 250
-# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to
+# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
# external symbols imported via tag files in a separate window.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
@@ -1432,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.
#
@@ -1444,8 +1518,8 @@ 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
-# instead of using prerendered bitmaps. Use this if you do not have LaTeX
+# 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
# to it using the MATHJAX_RELPATH option.
@@ -1471,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
@@ -1515,11 +1589,11 @@ SEARCHENGINE = NO
# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
# implemented using a web server instead of a web client using Javascript. There
-# are two flavours of web server based searching depending on the
-# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
-# searching and an index file used by the script. When EXTERNAL_SEARCH is
-# enabled the indexing and searching needs to be provided by external tools. See
-# the section "External Indexing and Searching" for details.
+# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
+# setting. When disabled, doxygen will generate a PHP script for searching and
+# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
+# and searching needs to be provided by external tools. See the section
+# "External Indexing and Searching" for details.
# The default value is: NO.
# This tag requires that the tag SEARCHENGINE is set to YES.
@@ -1531,9 +1605,9 @@ SERVER_BASED_SEARCH = NO
# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
# search results.
#
-# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# 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.
@@ -1544,9 +1618,9 @@ EXTERNAL_SEARCH = NO
# The SEARCHENGINE_URL should point to a search engine hosted by a web server
# which will return the search results when EXTERNAL_SEARCH is enabled.
#
-# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# 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.
@@ -1582,7 +1656,7 @@ EXTRA_SEARCH_MAPPINGS =
# Configuration options related to the LaTeX output
#---------------------------------------------------------------------------
-# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output.
+# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
# The default value is: YES.
GENERATE_LATEX = NO
@@ -1613,7 +1687,7 @@ LATEX_CMD_NAME = latex
MAKEINDEX_CMD_NAME = makeindex
-# If the COMPACT_LATEX tag is set to YES doxygen generates more compact LaTeX
+# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
# documents. This may be useful for small projects and may help to save some
# trees in general.
# The default value is: NO.
@@ -1631,9 +1705,12 @@ COMPACT_LATEX = NO
PAPER_TYPE = letter
# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
-# that should be included in the LaTeX output. To get the times font for
-# instance you can specify
-# EXTRA_PACKAGES=times
+# that should be included in the LaTeX output. The package can be specified just
+# by its name or with the correct syntax as to be used with the LaTeX
+# \usepackage command. To get the times font for instance you can specify :
+# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times}
+# To use the option intlimits with the amsmath package you can specify:
+# EXTRA_PACKAGES=[intlimits]{amsmath}
# If left blank no extra packages will be included.
# This tag requires that the tag GENERATE_LATEX is set to YES.
@@ -1647,23 +1724,36 @@ EXTRA_PACKAGES =
#
# Note: Only use a user-defined header if you know what you are doing! The
# following commands have a special meaning inside the header: $title,
-# $datetime, $date, $doxygenversion, $projectname, $projectnumber. Doxygen will
-# replace them by respectively the title of the page, the current date and time,
-# only the current date, the version number of doxygen, the project name (see
-# PROJECT_NAME), or the project number (see PROJECT_NUMBER).
+# $datetime, $date, $doxygenversion, $projectname, $projectnumber,
+# $projectbrief, $projectlogo. Doxygen will replace $title with the empty
+# string, for the replacement values of the other commands the user is referred
+# to HTML_HEADER.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_HEADER =
# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
# generated LaTeX document. The footer should contain everything after the last
-# chapter. If it is left blank doxygen will generate a standard footer.
+# chapter. If it is left blank doxygen will generate a standard footer. See
+# LATEX_HEADER for more information on how to generate a default footer and what
+# special commands can be used inside the footer.
#
# Note: Only use a user-defined footer if you know what you are doing!
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_FOOTER =
+# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined
+# LaTeX style sheets that are included after the standard style sheets created
+# by doxygen. Using this option one can overrule certain style aspects. Doxygen
+# will copy the style sheet files to the output directory.
+# Note: The order of the extra style sheet files is of importance (e.g. the last
+# style sheet in the list overrules the setting of the previous ones in the
+# list).
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_EXTRA_STYLESHEET =
+
# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the LATEX_OUTPUT output
# directory. Note that the files will be copied as-is; there are no commands or
@@ -1681,8 +1771,8 @@ LATEX_EXTRA_FILES =
PDF_HYPERLINKS = YES
-# If the LATEX_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
-# the PDF file directly from the LaTeX files. Set this option to YES to get a
+# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
+# the PDF file directly from the LaTeX files. Set this option to YES, to get a
# higher quality PDF documentation.
# The default value is: YES.
# This tag requires that the tag GENERATE_LATEX is set to YES.
@@ -1717,17 +1807,25 @@ 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.
LATEX_BIB_STYLE = plain
+# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated
+# page will contain the date and time when the page was generated. Setting this
+# to NO can help when comparing the output of multiple runs.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_TIMESTAMP = NO
+
#---------------------------------------------------------------------------
# Configuration options related to the RTF output
#---------------------------------------------------------------------------
-# If the GENERATE_RTF tag is set to YES doxygen will generate RTF output. The
+# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The
# RTF output is optimized for Word 97 and may not look too pretty with other RTF
# readers/editors.
# The default value is: NO.
@@ -1742,7 +1840,7 @@ GENERATE_RTF = NO
RTF_OUTPUT = rtf
-# If the COMPACT_RTF tag is set to YES doxygen generates more compact RTF
+# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF
# documents. This may be useful for small projects and may help to save some
# trees in general.
# The default value is: NO.
@@ -1779,11 +1877,21 @@ RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE =
+# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code
+# with syntax highlighting in the RTF output.
+#
+# Note that which sources are shown also depends on other settings such as
+# SOURCE_BROWSER.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_SOURCE_CODE = NO
+
#---------------------------------------------------------------------------
# Configuration options related to the man page output
#---------------------------------------------------------------------------
-# If the GENERATE_MAN tag is set to YES doxygen will generate man pages for
+# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for
# classes and files.
# The default value is: NO.
@@ -1807,6 +1915,13 @@ MAN_OUTPUT = man
MAN_EXTENSION = .3
+# The MAN_SUBDIR tag determines the name of the directory created within
+# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
+# MAN_EXTENSION with the initial . removed.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_SUBDIR =
+
# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
# will generate one additional man file for each entity documented in the real
# man page(s). These additional files only source the real man page, but without
@@ -1820,7 +1935,7 @@ MAN_LINKS = NO
# Configuration options related to the XML output
#---------------------------------------------------------------------------
-# If the GENERATE_XML tag is set to YES doxygen will generate an XML file that
+# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that
# captures the structure of the code including all documentation.
# The default value is: NO.
@@ -1834,19 +1949,7 @@ GENERATE_XML = NO
XML_OUTPUT = xml
-# The XML_SCHEMA tag can be used to specify a XML schema, which can be used by a
-# validating XML parser to check the syntax of the XML files.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_SCHEMA =
-
-# The XML_DTD tag can be used to specify a XML DTD, which can be used by a
-# validating XML parser to check the syntax of the XML files.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_DTD =
-
-# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program
+# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program
# listings (including syntax highlighting and cross-referencing information) to
# the XML output. Note that enabling this will significantly increase the size
# of the XML output.
@@ -1859,7 +1962,7 @@ XML_PROGRAMLISTING = YES
# Configuration options related to the DOCBOOK output
#---------------------------------------------------------------------------
-# If the GENERATE_DOCBOOK tag is set to YES doxygen will generate Docbook files
+# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files
# that can be used to generate PDF.
# The default value is: NO.
@@ -1873,14 +1976,23 @@ GENERATE_DOCBOOK = NO
DOCBOOK_OUTPUT = docbook
+# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the
+# program listings (including syntax highlighting and cross-referencing
+# information) to the DOCBOOK output. Note that enabling this will significantly
+# increase the size of the DOCBOOK output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
+
+DOCBOOK_PROGRAMLISTING = NO
+
#---------------------------------------------------------------------------
# Configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
-# 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.
+# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
+# 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
@@ -1889,7 +2001,7 @@ GENERATE_AUTOGEN_DEF = NO
# Configuration options related to the Perl module output
#---------------------------------------------------------------------------
-# If the GENERATE_PERLMOD tag is set to YES doxygen will generate a Perl module
+# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module
# file that captures the structure of the code including all documentation.
#
# Note that this feature is still experimental and incomplete at the moment.
@@ -1897,7 +2009,7 @@ GENERATE_AUTOGEN_DEF = NO
GENERATE_PERLMOD = NO
-# If the PERLMOD_LATEX tag is set to YES doxygen will generate the necessary
+# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary
# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
# output from the Perl module output.
# The default value is: NO.
@@ -1905,9 +2017,9 @@ GENERATE_PERLMOD = NO
PERLMOD_LATEX = NO
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be nicely
+# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely
# formatted so it can be parsed by a human reader. This is useful if you want to
-# understand what is going on. On the other hand, if this tag is set to NO the
+# understand what is going on. On the other hand, if this tag is set to NO, the
# size of the Perl module output will be much smaller and Perl will parse it
# just the same.
# The default value is: YES.
@@ -1927,14 +2039,14 @@ PERLMOD_MAKEVAR_PREFIX =
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
-# If the ENABLE_PREPROCESSING tag is set to YES doxygen will evaluate all
+# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all
# C-preprocessor directives found in the sources and include files.
# The default value is: YES.
ENABLE_PREPROCESSING = YES
-# If the MACRO_EXPANSION tag is set to YES doxygen will expand all macro names
-# in the source code. If set to NO only conditional compilation will be
+# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names
+# in the source code. If set to NO, only conditional compilation will be
# performed. Macro expansion can be done in a controlled way by setting
# EXPAND_ONLY_PREDEF to YES.
# The default value is: NO.
@@ -1950,7 +2062,7 @@ MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
-# If the SEARCH_INCLUDES tag is set to YES the includes files in the
+# If the SEARCH_INCLUDES tag is set to YES, the include files in the
# INCLUDE_PATH will be searched if a #include is found.
# The default value is: YES.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
@@ -1980,8 +2092,15 @@ INCLUDE_FILE_PATTERNS =
# recursively expanded use the := operator instead of the = operator.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-PREDEFINED = NS_ENUM(_type,_name):="enum _name : _type _name; enum _name : _type" \
- NS_OPTIONS(_type,_name):="enum _name : _type _name; enum _name : _type"
+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:= " \
+ "cpt_swift_enum:= " \
+ "cpt_swift_struct:= "
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
# tag can be used to specify a list of macro names that should be expanded. The
@@ -1993,9 +2112,9 @@ PREDEFINED = NS_ENUM(_type,_name):="enum _name : _type _name; enum _
EXPAND_AS_DEFINED =
# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
-# remove all refrences to function-like macros that are alone on a line, have an
-# all uppercase name, and do not end with a semicolon. Such function macros are
-# typically used for boiler-plate code, and will confuse the parser if not
+# remove all references to function-like macros that are alone on a line, have
+# an all uppercase name, and do not end with a semicolon. Such function macros
+# are typically used for boiler-plate code, and will confuse the parser if not
# removed.
# The default value is: YES.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
@@ -2015,7 +2134,7 @@ SKIP_FUNCTION_MACROS = YES
# where loc1 and loc2 can be relative or absolute paths or URLs. See the
# section "Linking to external documentation" for more information about the use
# of tag files.
-# Note: Each tag file must have an unique name (where the name does NOT include
+# Note: Each tag file must have a unique name (where the name does NOT include
# the path). If a tag file is not located in the directory in which doxygen is
# run, you must also specify the path to the tagfile here.
@@ -2027,20 +2146,21 @@ TAGFILES = "$(SOURCE_ROOT)/../documentation/doxygen/doxygen-cocoa-
GENERATE_TAGFILE = "$(SOURCE_ROOT)/../documentation/doxygen/core-plot-tags.xml"
-# If the ALLEXTERNALS tag is set to YES all external class will be listed in the
-# class index. If set to NO only the inherited external classes will be listed.
+# If the ALLEXTERNALS tag is set to YES, all external class will be listed in
+# the class index. If set to NO, only the inherited external classes will be
+# listed.
# The default value is: NO.
ALLEXTERNALS = NO
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed in
-# the modules index. If set to NO, only the current project's groups will be
+# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will be
# listed.
# The default value is: YES.
EXTERNAL_GROUPS = YES
-# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in
+# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in
# the related pages index. If set to NO, only the current project's pages will
# be listed.
# The default value is: YES.
@@ -2057,7 +2177,7 @@ PERL_PATH = /usr/bin/perl
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
-# If the CLASS_DIAGRAMS tag is set to YES doxygen will generate a class diagram
+# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram
# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
# NO turns the diagrams off. Note that this option also works with HAVE_DOT
# disabled, but it is recommended to install and use dot, since it yields more
@@ -2082,7 +2202,7 @@ MSCGEN_PATH =
DIA_PATH =
-# If set to YES, the inheritance and collaboration graphs will hide inheritance
+# If set to YES the inheritance and collaboration graphs will hide inheritance
# and usage relations if the target is undocumented or is not a class.
# The default value is: YES.
@@ -2107,7 +2227,7 @@ HAVE_DOT = YES
DOT_NUM_THREADS = 0
-# When you want a differently looking font n the dot files that doxygen
+# When you want a differently looking font in the dot files that doxygen
# generates you can specify the font name using DOT_FONTNAME. You need to make
# sure dot is able to find the font, which can be done by putting it in a
# standard location or by setting the DOTFONTPATH environment variable or by
@@ -2155,7 +2275,7 @@ COLLABORATION_GRAPH = YES
GROUP_GRAPHS = YES
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and
# collaboration diagrams in a style similar to the OMG's Unified Modeling
# Language.
# The default value is: NO.
@@ -2207,7 +2327,8 @@ INCLUDED_BY_GRAPH = YES
#
# Note that enabling this option will significantly increase the time of a run.
# So in most cases it will be better to enable call graphs for selected
-# functions only using the \callgraph command.
+# functions only using the \callgraph command. Disabling a call graph can be
+# accomplished by means of the command \hidecallgraph.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
@@ -2218,7 +2339,8 @@ CALL_GRAPH = NO
#
# Note that enabling this option will significantly increase the time of a run.
# So in most cases it will be better to enable caller graphs for selected
-# functions only using the \callergraph command.
+# functions only using the \callergraph command. Disabling a caller graph can be
+# accomplished by means of the command \hidecallergraph.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
@@ -2241,11 +2363,15 @@ GRAPHICAL_HIERARCHY = YES
DIRECTORY_GRAPH = YES
# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot.
+# generated by dot. For an explanation of the image formats see the section
+# output formats in the documentation of the dot tool (Graphviz (see:
+# http://www.graphviz.org/)).
# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
# to make the SVG files visible in IE 9+ (other browsers do not have this
# requirement).
-# Possible values are: png, jpg, gif and svg.
+# Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo,
+# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and
+# png:gdiplus:gdiplus.
# The default value is: png.
# This tag requires that the tag HAVE_DOT is set to YES.
@@ -2288,6 +2414,24 @@ MSCFILE_DIRS =
DIAFILE_DIRS =
+# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the
+# path where java can find the plantuml.jar file. If left blank, it is assumed
+# PlantUML is not used or called during a preprocessing step. Doxygen will
+# generate a warning when it encounters a \startuml command in this case and
+# will not generate output for the diagram.
+
+PLANTUML_JAR_PATH =
+
+# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a
+# configuration file for plantuml.
+
+PLANTUML_CFG_FILE =
+
+# When using plantuml, the specified paths are searched for files specified by
+# the !include statement in a plantuml block.
+
+PLANTUML_INCLUDE_PATH =
+
# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
# that will be shown in the graph. If the number of nodes in a graph becomes
# larger than this value, doxygen will truncate the graph, which is visualized
@@ -2324,7 +2468,7 @@ MAX_DOT_GRAPH_DEPTH = 0
DOT_TRANSPARENT = YES
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
# files in one run (i.e. multiple -o and -T options on the command line). This
# makes dot run faster, but since only newer versions of dot (>1.8.10) support
# this, this feature is disabled by default.
@@ -2341,7 +2485,7 @@ DOT_MULTI_TARGETS = YES
GENERATE_LEGEND = YES
-# If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot
+# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot
# files that are used to generate the various graphs.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
diff --git a/examples/AAPLot/AAPL.plist b/examples/AAPLot/AAPL.plist
deleted file mode 100644
index b67acc3e4..000000000
--- a/examples/AAPLot/AAPL.plist
+++ /dev/null
@@ -1,963 +0,0 @@
-
-
-
-
- endDate
- 2009-06-19T02:55:22Z
- financalData
-
-
- adjClose
- 144.67
- close
- 144.67
- date
- 2009-06-05T04:00:00Z
- high
- 146.4
- low
- 143.21
- open
- 145.31
- volume
- 22585700
-
-
- adjClose
- 143.74
- close
- 143.74
- date
- 2009-06-04T04:00:00Z
- high
- 144.18
- low
- 140.04
- open
- 140.13
- volume
- 19537200
-
-
- adjClose
- 140.95
- close
- 140.95
- date
- 2009-06-03T04:00:00Z
- high
- 141.11
- low
- 139.07
- open
- 140
- volume
- 20171800
-
-
- adjClose
- 139.49
- close
- 139.49
- date
- 2009-06-02T04:00:00Z
- high
- 141.34
- low
- 138.35
- open
- 138.99
- volume
- 16199500
-
-
- adjClose
- 139.35
- close
- 139.35
- date
- 2009-06-01T04:00:00Z
- high
- 139.99
- low
- 136
- open
- 136.47
- volume
- 16160700
-
-
- adjClose
- 135.81
- close
- 135.81
- date
- 2009-05-29T04:00:00Z
- high
- 135.9
- low
- 133.85
- open
- 135.39
- volume
- 16304800
-
-
- adjClose
- 135.07
- close
- 135.07
- date
- 2009-05-28T04:00:00Z
- high
- 135.39
- low
- 132.03
- open
- 133.45
- volume
- 17397200
-
-
- adjClose
- 133.05
- close
- 133.05
- date
- 2009-05-27T04:00:00Z
- high
- 134.98
- low
- 130.91
- open
- 131.78
- volume
- 23086500
-
-
- adjClose
- 130.78
- close
- 130.78
- date
- 2009-05-26T04:00:00Z
- high
- 130.83
- low
- 124.55
- open
- 124.76
- volume
- 22692300
-
-
- adjClose
- 122.5
- close
- 122.5
- date
- 2009-05-22T04:00:00Z
- high
- 124.18
- low
- 121.75
- open
- 124.05
- volume
- 10642800
-
-
- adjClose
- 124.18
- close
- 124.18
- date
- 2009-05-21T04:00:00Z
- high
- 126.78
- low
- 122.89
- open
- 125.15
- volume
- 14569500
-
-
- adjClose
- 125.87
- close
- 125.87
- date
- 2009-05-20T04:00:00Z
- high
- 129.21
- low
- 125.3
- open
- 127.63
- volume
- 13878000
-
-
- adjClose
- 127.45
- close
- 127.45
- date
- 2009-05-19T04:00:00Z
- high
- 129.31
- low
- 125.74
- open
- 126.82
- volume
- 13300800
-
-
- adjClose
- 126.65
- close
- 126.65
- date
- 2009-05-18T04:00:00Z
- high
- 126.7
- low
- 121.57
- open
- 123.73
- volume
- 16387200
-
-
- adjClose
- 122.42
- close
- 122.42
- date
- 2009-05-15T04:00:00Z
- high
- 124.62
- low
- 121.61
- open
- 122.32
- volume
- 13127400
-
-
- adjClose
- 122.95
- close
- 122.95
- date
- 2009-05-14T04:00:00Z
- high
- 123.53
- low
- 119.7
- open
- 119.78
- volume
- 15993800
-
-
- adjClose
- 119.49
- close
- 119.49
- date
- 2009-05-13T04:00:00Z
- high
- 124.02
- low
- 119.38
- open
- 123.21
- volume
- 21284700
-
-
- adjClose
- 124.42
- close
- 124.42
- date
- 2009-05-12T04:00:00Z
- high
- 129.71
- low
- 123.25
- open
- 129.56
- volume
- 21767200
-
-
- adjClose
- 129.57
- close
- 129.57
- date
- 2009-05-11T04:00:00Z
- high
- 130.96
- low
- 127.12
- open
- 127.37
- volume
- 14452100
-
-
- adjClose
- 129.19
- close
- 129.19
- date
- 2009-05-08T04:00:00Z
- high
- 131.23
- low
- 126.26
- open
- 129.04
- volume
- 16713000
-
-
- adjClose
- 129.06
- close
- 129.06
- date
- 2009-05-07T04:00:00Z
- high
- 132.39
- low
- 127.9
- open
- 132.33
- volume
- 18992000
-
-
- adjClose
- 132.5
- close
- 132.5
- date
- 2009-05-06T04:00:00Z
- high
- 133.5
- low
- 130.22
- open
- 133.33
- volume
- 16912100
-
-
- adjClose
- 132.71
- close
- 132.71
- date
- 2009-05-05T04:00:00Z
- high
- 132.86
- low
- 131.12
- open
- 131.75
- volume
- 14223400
-
-
- adjClose
- 132.07
- close
- 132.07
- date
- 2009-05-04T04:00:00Z
- high
- 132.25
- low
- 127.68
- open
- 128.24
- volume
- 21762800
-
-
- adjClose
- 127.24
- close
- 127.24
- date
- 2009-05-01T04:00:00Z
- high
- 127.95
- low
- 125.8
- open
- 125.8
- volume
- 14197000
-
-
- adjClose
- 125.83
- close
- 125.83
- date
- 2009-04-30T04:00:00Z
- high
- 127
- low
- 124.92
- open
- 126.22
- volume
- 17803200
-
-
- adjClose
- 125.14
- close
- 125.14
- date
- 2009-04-29T04:00:00Z
- high
- 126.85
- low
- 123.83
- open
- 124.85
- volume
- 16361100
-
-
- adjClose
- 123.9
- close
- 123.9
- date
- 2009-04-28T04:00:00Z
- high
- 126.21
- low
- 123.26
- open
- 123.35
- volume
- 16280600
-
-
- adjClose
- 124.73
- close
- 124.73
- date
- 2009-04-27T04:00:00Z
- high
- 125
- low
- 122.66
- open
- 122.9
- volume
- 17167500
-
-
- adjClose
- 123.9
- close
- 123.9
- date
- 2009-04-24T04:00:00Z
- high
- 125.14
- low
- 122.97
- open
- 124.64
- volume
- 19313000
-
-
- adjClose
- 125.4
- close
- 125.4
- date
- 2009-04-23T04:00:00Z
- high
- 127.2
- low
- 123.51
- open
- 126.62
- volume
- 33755600
-
-
- adjClose
- 121.51
- close
- 121.51
- date
- 2009-04-22T04:00:00Z
- high
- 125.35
- low
- 121.2
- open
- 122.63
- volume
- 33527400
-
-
- adjClose
- 121.76
- close
- 121.76
- date
- 2009-04-21T04:00:00Z
- high
- 122.14
- low
- 118.6
- open
- 118.89
- volume
- 16810200
-
-
- adjClose
- 120.5
- close
- 120.5
- date
- 2009-04-20T04:00:00Z
- high
- 122.99
- low
- 119.16
- open
- 121.73
- volume
- 16659500
-
-
- adjClose
- 123.42
- close
- 123.42
- date
- 2009-04-17T04:00:00Z
- high
- 124.25
- low
- 120.25
- open
- 121.18
- volume
- 17767700
-
-
- adjClose
- 121.45
- close
- 121.45
- date
- 2009-04-16T04:00:00Z
- high
- 123.15
- low
- 118.79
- open
- 119.19
- volume
- 21194500
-
-
- adjClose
- 117.64
- close
- 117.64
- date
- 2009-04-15T04:00:00Z
- high
- 118.25
- low
- 115.76
- open
- 117.2
- volume
- 14745800
-
-
- adjClose
- 118.31
- close
- 118.31
- date
- 2009-04-14T04:00:00Z
- high
- 120.17
- low
- 117.25
- open
- 119.57
- volume
- 16236500
-
-
- adjClose
- 120.22
- close
- 120.22
- date
- 2009-04-13T04:00:00Z
- high
- 120.98
- low
- 119
- open
- 120.01
- volume
- 13901300
-
-
- adjClose
- 119.57
- close
- 119.57
- date
- 2009-04-09T04:00:00Z
- high
- 120
- low
- 117.96
- open
- 118.42
- volume
- 18955600
-
-
- adjClose
- 116.32
- close
- 116.32
- date
- 2009-04-08T04:00:00Z
- high
- 116.79
- low
- 114.58
- open
- 115.43
- volume
- 16272500
-
-
- adjClose
- 115
- close
- 115
- date
- 2009-04-07T04:00:00Z
- high
- 116.67
- low
- 114.19
- open
- 116.53
- volume
- 19163600
-
-
- adjClose
- 118.45
- close
- 118.45
- date
- 2009-04-06T04:00:00Z
- high
- 118.75
- low
- 113.28
- open
- 114.94
- volume
- 23502300
-
-
- adjClose
- 115.99
- close
- 115.99
- date
- 2009-04-03T04:00:00Z
- high
- 116.13
- low
- 113.52
- open
- 114.19
- volume
- 22722900
-
-
- adjClose
- 112.71
- close
- 112.71
- date
- 2009-04-02T04:00:00Z
- high
- 114.75
- low
- 109.78
- open
- 110.14
- volume
- 29013100
-
-
- adjClose
- 108.69
- close
- 108.69
- date
- 2009-04-01T04:00:00Z
- high
- 109
- low
- 103.89
- open
- 104.09
- volume
- 21049000
-
-
- adjClose
- 105.12
- close
- 105.12
- date
- 2009-03-31T04:00:00Z
- high
- 107.45
- low
- 105
- open
- 105.45
- volume
- 20338500
-
-
- adjClose
- 104.49
- close
- 104.49
- date
- 2009-03-30T04:00:00Z
- high
- 105.01
- low
- 102.61
- open
- 104.51
- volume
- 17957000
-
-
- adjClose
- 106.85
- close
- 106.85
- date
- 2009-03-27T04:00:00Z
- high
- 108.53
- low
- 106.4
- open
- 108.23
- volume
- 17602600
-
-
- adjClose
- 109.87
- close
- 109.87
- date
- 2009-03-26T04:00:00Z
- high
- 109.98
- low
- 107.58
- open
- 107.83
- volume
- 22009000
-
-
- adjClose
- 106.49
- close
- 106.49
- date
- 2009-03-25T04:00:00Z
- high
- 108.36
- low
- 103.86
- open
- 107.58
- volume
- 23093500
-
-
- adjClose
- 106.5
- close
- 106.5
- date
- 2009-03-24T04:00:00Z
- high
- 109.44
- low
- 105.39
- open
- 106.36
- volume
- 22879000
-
-
- adjClose
- 107.66
- close
- 107.66
- date
- 2009-03-23T04:00:00Z
- high
- 108.16
- low
- 101.75
- open
- 102.71
- volume
- 23799900
-
-
- adjClose
- 101.59
- close
- 101.59
- date
- 2009-03-20T04:00:00Z
- high
- 103.11
- low
- 100.57
- open
- 102.09
- volume
- 24842400
-
-
- adjClose
- 101.62
- close
- 101.62
- date
- 2009-03-19T04:00:00Z
- high
- 103.2
- low
- 100.25
- open
- 101.85
- volume
- 17863600
-
-
- adjClose
- 101.52
- close
- 101.52
- date
- 2009-03-18T04:00:00Z
- high
- 103.48
- low
- 99.72
- open
- 99.91
- volume
- 28429900
-
-
- adjClose
- 99.66
- close
- 99.66
- date
- 2009-03-17T04:00:00Z
- high
- 99.69
- low
- 95.07000000000001
- open
- 95.23999999999999
- volume
- 28094500
-
-
- adjClose
- 95.42
- close
- 95.42
- date
- 2009-03-16T04:00:00Z
- high
- 97.39
- low
- 94.17999999999999
- open
- 96.53
- volume
- 28473000
-
-
- adjClose
- 95.92999999999999
- close
- 95.92999999999999
- date
- 2009-03-13T04:00:00Z
- high
- 97.2
- low
- 95.01000000000001
- open
- 96.3
- volume
- 21470300
-
-
- overallHigh
- 146.4
- overallLow
- 94.17999999999999
- startDate
- 2009-03-27T02:55:22Z
- symbol
- AAPL
-
-
diff --git a/examples/AAPLot/AAPLot.xcodeproj/project.pbxproj b/examples/AAPLot/AAPLot.xcodeproj/project.pbxproj
deleted file mode 100644
index 3565d8274..000000000
--- a/examples/AAPLot/AAPLot.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,412 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 46;
- objects = {
-
-/* Begin PBXBuildFile section */
- 073703570FE5193C006D46AD /* APFinancialData.m in Sources */ = {isa = PBXBuildFile; fileRef = 073703560FE5193C006D46AD /* APFinancialData.m */; };
- 073703B10FE51E6C006D46AD /* NSDateFormatterExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 073703B00FE51E6C006D46AD /* NSDateFormatterExtensions.m */; };
- 1D3623260D0F684500981E51 /* AAPLotAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* AAPLotAppDelegate.m */; };
- 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 */; };
- 289233AF0DB2D0DB0083E9F9 /* RootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 289233AB0DB2D0DB0083E9F9 /* RootViewController.m */; };
- 289233B00DB2D0DB0083E9F9 /* FlipsideViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 289233AD0DB2D0DB0083E9F9 /* FlipsideViewController.m */; };
- AB8989470FE0309E00FDC37F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AB8989460FE0309E00FDC37F /* QuartzCore.framework */; };
- AB8F944A0FDEF5DC00E61485 /* libCorePlot-CocoaTouch.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AB8F94490FDEF56700E61485 /* libCorePlot-CocoaTouch.a */; };
- AB8F94580FDEFA1500E61485 /* APYahooDataPuller.m in Sources */ = {isa = PBXBuildFile; fileRef = AB8F94570FDEFA1500E61485 /* APYahooDataPuller.m */; };
- ABA5345E0FEB40CE0046A8DA /* AAPL.plist in Resources */ = {isa = PBXBuildFile; fileRef = ABA5345D0FEB40CE0046A8DA /* AAPL.plist */; };
- C3BB7D44163343E700BC9515 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C3BB7D43163343E700BC9515 /* Default-568h@2x.png */; };
- C3CD283017DE9B9C008EED1E /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3CD282F17DE9B9C008EED1E /* Accelerate.framework */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
- AB8F94480FDEF56700E61485 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = AB8F94440FDEF56700E61485 /* CorePlot-CocoaTouch.xcodeproj */;
- proxyType = 2;
- remoteGlobalIDString = BC9B83470FB8A0A40035D8DA;
- remoteInfo = "CorePlot-CocoaTouch";
- };
- AB8F944B0FDEF5E000E61485 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = AB8F94440FDEF56700E61485 /* CorePlot-CocoaTouch.xcodeproj */;
- proxyType = 1;
- remoteGlobalIDString = BC9B83460FB8A0A40035D8DA;
- remoteInfo = "CorePlot-CocoaTouch";
- };
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXFileReference section */
- 073703550FE5193C006D46AD /* APFinancialData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APFinancialData.h; sourceTree = ""; };
- 073703560FE5193C006D46AD /* APFinancialData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APFinancialData.m; sourceTree = ""; };
- 073703AF0FE51E6C006D46AD /* NSDateFormatterExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSDateFormatterExtensions.h; sourceTree = ""; };
- 073703B00FE51E6C006D46AD /* NSDateFormatterExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSDateFormatterExtensions.m; sourceTree = ""; };
- 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
- 1D3623240D0F684500981E51 /* AAPLotAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AAPLotAppDelegate.h; sourceTree = ""; };
- 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 = ""; };
- 289233A80DB2D0DB0083E9F9 /* MainViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MainViewController.h; path = Classes/MainViewController.h; sourceTree = ""; };
- 289233A90DB2D0DB0083E9F9 /* MainViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MainViewController.m; path = Classes/MainViewController.m; sourceTree = ""; };
- 289233AA0DB2D0DB0083E9F9 /* RootViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RootViewController.h; sourceTree = ""; };
- 289233AB0DB2D0DB0083E9F9 /* RootViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RootViewController.m; sourceTree = ""; };
- 289233AC0DB2D0DB0083E9F9 /* FlipsideViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FlipsideViewController.h; path = Classes/FlipsideViewController.h; sourceTree = ""; };
- 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; };
- AB8F94440FDEF56700E61485 /* CorePlot-CocoaTouch.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "CorePlot-CocoaTouch.xcodeproj"; path = "../../framework/CorePlot-CocoaTouch.xcodeproj"; sourceTree = SOURCE_ROOT; };
- AB8F94560FDEFA1500E61485 /* APYahooDataPuller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APYahooDataPuller.h; sourceTree = ""; };
- AB8F94570FDEFA1500E61485 /* APYahooDataPuller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = APYahooDataPuller.m; sourceTree = ""; };
- ABA5345D0FEB40CE0046A8DA /* AAPL.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = AAPL.plist; sourceTree = ""; };
- C3BB7D43163343E700BC9515 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; };
- C3CD282F17DE9B9C008EED1E /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 1D60588F0D05DD3D006BFB54 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */,
- 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */,
- 288765590DF743DE002DB57D /* CoreGraphics.framework in Frameworks */,
- AB8F944A0FDEF5DC00E61485 /* libCorePlot-CocoaTouch.a in Frameworks */,
- AB8989470FE0309E00FDC37F /* QuartzCore.framework in Frameworks */,
- C3CD283017DE9B9C008EED1E /* Accelerate.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 0737034D0FE518E7006D46AD /* Data Acquisition */ = {
- isa = PBXGroup;
- children = (
- AB8F94560FDEFA1500E61485 /* APYahooDataPuller.h */,
- AB8F94570FDEFA1500E61485 /* APYahooDataPuller.m */,
- 073703550FE5193C006D46AD /* APFinancialData.h */,
- 073703560FE5193C006D46AD /* APFinancialData.m */,
- 073703AF0FE51E6C006D46AD /* NSDateFormatterExtensions.h */,
- 073703B00FE51E6C006D46AD /* NSDateFormatterExtensions.m */,
- );
- name = "Data Acquisition";
- sourceTree = "";
- };
- 080E96DDFE201D6D7F000001 /* Application Controllers */ = {
- isa = PBXGroup;
- children = (
- 280E754C0DD40C5E005A515E /* MainWindow.xib */,
- 1D3623240D0F684500981E51 /* AAPLotAppDelegate.h */,
- 1D3623250D0F684500981E51 /* AAPLotAppDelegate.m */,
- 289233AA0DB2D0DB0083E9F9 /* RootViewController.h */,
- 289233AB0DB2D0DB0083E9F9 /* RootViewController.m */,
- );
- name = "Application Controllers";
- path = Classes;
- sourceTree = "";
- };
- 19C28FACFE9D520D11CA2CBB /* Products */ = {
- isa = PBXGroup;
- children = (
- 1D6058910D05DD3D006BFB54 /* AAPLot.app */,
- );
- name = Products;
- sourceTree = "";
- };
- 281C6CD70DB2D82200F60ACC /* Flipside View */ = {
- isa = PBXGroup;
- children = (
- 280E754A0DD40C5E005A515E /* FlipsideView.xib */,
- 289233A20DB2D0840083E9F9 /* FlipsideView.h */,
- 289233A30DB2D0840083E9F9 /* FlipsideView.m */,
- 289233AC0DB2D0DB0083E9F9 /* FlipsideViewController.h */,
- 289233AD0DB2D0DB0083E9F9 /* FlipsideViewController.m */,
- );
- name = "Flipside View";
- sourceTree = "";
- };
- 289233A00DB2D0730083E9F9 /* Main View */ = {
- isa = PBXGroup;
- children = (
- 280E754B0DD40C5E005A515E /* MainView.xib */,
- 289233A80DB2D0DB0083E9F9 /* MainViewController.h */,
- 289233A90DB2D0DB0083E9F9 /* MainViewController.m */,
- );
- name = "Main View";
- sourceTree = "";
- };
- 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
- isa = PBXGroup;
- children = (
- AB8F94440FDEF56700E61485 /* CorePlot-CocoaTouch.xcodeproj */,
- 289233A00DB2D0730083E9F9 /* Main View */,
- 0737034D0FE518E7006D46AD /* Data Acquisition */,
- 281C6CD70DB2D82200F60ACC /* Flipside View */,
- 080E96DDFE201D6D7F000001 /* Application Controllers */,
- 29B97315FDCFA39411CA2CEA /* Other Sources */,
- 29B97317FDCFA39411CA2CEA /* Resources */,
- 29B97323FDCFA39411CA2CEA /* Frameworks */,
- 19C28FACFE9D520D11CA2CBB /* Products */,
- );
- indentWidth = 4;
- name = CustomTemplate;
- sourceTree = "";
- tabWidth = 4;
- usesTabs = 0;
- };
- 29B97315FDCFA39411CA2CEA /* Other Sources */ = {
- isa = PBXGroup;
- children = (
- 32CA4F630368D1EE00C91783 /* AAPLot_Prefix.pch */,
- 29B97316FDCFA39411CA2CEA /* main.m */,
- );
- name = "Other Sources";
- sourceTree = "";
- };
- 29B97317FDCFA39411CA2CEA /* Resources */ = {
- isa = PBXGroup;
- children = (
- ABA5345D0FEB40CE0046A8DA /* AAPL.plist */,
- 8D1107310486CEB800E47090 /* Info.plist */,
- C3BB7D43163343E700BC9515 /* Default-568h@2x.png */,
- );
- name = Resources;
- sourceTree = "";
- };
- 29B97323FDCFA39411CA2CEA /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- AB8989460FE0309E00FDC37F /* QuartzCore.framework */,
- 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */,
- 1D30AB110D05D00D00671497 /* Foundation.framework */,
- 288765580DF743DE002DB57D /* CoreGraphics.framework */,
- C3CD282F17DE9B9C008EED1E /* Accelerate.framework */,
- );
- name = Frameworks;
- sourceTree = "";
- };
- AB8F94450FDEF56700E61485 /* Products */ = {
- isa = PBXGroup;
- children = (
- AB8F94490FDEF56700E61485 /* libCorePlot-CocoaTouch.a */,
- );
- name = Products;
- sourceTree = "";
- };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
- 1D6058900D05DD3D006BFB54 /* AAPLot */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "AAPLot" */;
- buildPhases = (
- 1D60588D0D05DD3D006BFB54 /* Resources */,
- 1D60588E0D05DD3D006BFB54 /* Sources */,
- 1D60588F0D05DD3D006BFB54 /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- AB8F944C0FDEF5E000E61485 /* PBXTargetDependency */,
- );
- name = AAPLot;
- productName = AAPLot;
- productReference = 1D6058910D05DD3D006BFB54 /* AAPLot.app */;
- productType = "com.apple.product-type.application";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 29B97313FDCFA39411CA2CEA /* Project object */ = {
- isa = PBXProject;
- attributes = {
- LastUpgradeCheck = 0500;
- };
- buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "AAPLot" */;
- compatibilityVersion = "Xcode 3.2";
- developmentRegion = English;
- hasScannedForEncodings = 1;
- knownRegions = (
- English,
- Japanese,
- French,
- German,
- en,
- );
- mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
- projectDirPath = "";
- projectReferences = (
- {
- ProductGroup = AB8F94450FDEF56700E61485 /* Products */;
- ProjectRef = AB8F94440FDEF56700E61485 /* CorePlot-CocoaTouch.xcodeproj */;
- },
- );
- projectRoot = "";
- targets = (
- 1D6058900D05DD3D006BFB54 /* AAPLot */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXReferenceProxy section */
- AB8F94490FDEF56700E61485 /* libCorePlot-CocoaTouch.a */ = {
- isa = PBXReferenceProxy;
- fileType = archive.ar;
- path = "libCorePlot-CocoaTouch.a";
- remoteRef = AB8F94480FDEF56700E61485 /* PBXContainerItemProxy */;
- sourceTree = BUILT_PRODUCTS_DIR;
- };
-/* End PBXReferenceProxy section */
-
-/* Begin PBXResourcesBuildPhase section */
- 1D60588D0D05DD3D006BFB54 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 280E754D0DD40C5E005A515E /* FlipsideView.xib in Resources */,
- 280E754E0DD40C5E005A515E /* MainView.xib in Resources */,
- 280E754F0DD40C5E005A515E /* MainWindow.xib in Resources */,
- ABA5345E0FEB40CE0046A8DA /* AAPL.plist in Resources */,
- C3BB7D44163343E700BC9515 /* Default-568h@2x.png in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 1D60588E0D05DD3D006BFB54 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 1D60589B0D05DD56006BFB54 /* main.m in Sources */,
- 1D3623260D0F684500981E51 /* AAPLotAppDelegate.m in Sources */,
- 289233A60DB2D0840083E9F9 /* FlipsideView.m in Sources */,
- 289233AE0DB2D0DB0083E9F9 /* MainViewController.m in Sources */,
- 289233AF0DB2D0DB0083E9F9 /* RootViewController.m in Sources */,
- 289233B00DB2D0DB0083E9F9 /* FlipsideViewController.m in Sources */,
- AB8F94580FDEFA1500E61485 /* APYahooDataPuller.m in Sources */,
- 073703570FE5193C006D46AD /* APFinancialData.m in Sources */,
- 073703B10FE51E6C006D46AD /* NSDateFormatterExtensions.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXTargetDependency section */
- AB8F944C0FDEF5E000E61485 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- name = "CorePlot-CocoaTouch";
- targetProxy = AB8F944B0FDEF5E000E61485 /* PBXContainerItemProxy */;
- };
-/* End PBXTargetDependency section */
-
-/* Begin XCBuildConfiguration section */
- 1D6058940D05DD3E006BFB54 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- COPY_PHASE_STRIP = NO;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = AAPLot_Prefix.pch;
- HEADER_SEARCH_PATHS = "";
- INFOPLIST_FILE = Info.plist;
- OTHER_LDFLAGS = (
- "-ObjC",
- "-all_load",
- );
- PRODUCT_NAME = AAPLot;
- };
- name = Debug;
- };
- 1D6058950D05DD3E006BFB54 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- COPY_PHASE_STRIP = YES;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = AAPLot_Prefix.pch;
- HEADER_SEARCH_PATHS = "";
- INFOPLIST_FILE = Info.plist;
- OTHER_LDFLAGS = (
- "-ObjC",
- "-all_load",
- );
- PRODUCT_NAME = AAPLot;
- };
- name = Release;
- };
- C01FCF4F08A954540054247B /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- GCC_C_LANGUAGE_STANDARD = c99;
- GCC_WARN_ABOUT_RETURN_TYPE = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- HEADER_SEARCH_PATHS = "";
- IPHONEOS_DEPLOYMENT_TARGET = 5.0;
- ONLY_ACTIVE_ARCH = YES;
- SDKROOT = iphoneos;
- SYMROOT = "$(SRCROOT)/../../build";
- USER_HEADER_SEARCH_PATHS = "\"${PROJECT_DIR}/../../framework\"/**";
- };
- name = Debug;
- };
- C01FCF5008A954540054247B /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- GCC_C_LANGUAGE_STANDARD = c99;
- GCC_WARN_ABOUT_RETURN_TYPE = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- HEADER_SEARCH_PATHS = "";
- IPHONEOS_DEPLOYMENT_TARGET = 5.0;
- SDKROOT = iphoneos;
- USER_HEADER_SEARCH_PATHS = "\"${PROJECT_DIR}/../../framework\"/**";
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "AAPLot" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 1D6058940D05DD3E006BFB54 /* Debug */,
- 1D6058950D05DD3E006BFB54 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- C01FCF4E08A954540054247B /* Build configuration list for PBXProject "AAPLot" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- C01FCF4F08A954540054247B /* Debug */,
- C01FCF5008A954540054247B /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
-}
diff --git a/examples/AAPLot/AAPLot.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/examples/AAPLot/AAPLot.xcodeproj/project.xcworkspace/contents.xcworkspacedata
deleted file mode 100644
index 0044da799..000000000
--- a/examples/AAPLot/AAPLot.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
diff --git a/examples/AAPLot/AAPLot_Prefix.pch b/examples/AAPLot/AAPLot_Prefix.pch
deleted file mode 100644
index dc5f28052..000000000
--- a/examples/AAPLot/AAPLot_Prefix.pch
+++ /dev/null
@@ -1,10 +0,0 @@
-//
-// Prefix header for all source files of the 'AAPLot' target in the 'AAPLot' project
-//
-
-#define DEBUG (1)
-
-#ifdef __OBJC__
- #import
- #import
-#endif
diff --git a/examples/AAPLot/APFinancialData.h b/examples/AAPLot/APFinancialData.h
deleted file mode 100644
index 7ca481d37..000000000
--- a/examples/AAPLot/APFinancialData.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#import
-
-@interface NSDictionary(APFinancialData)
-
-+(id)dictionaryWithCSVLine:(NSString *)csvLine;
-
-@end
diff --git a/examples/AAPLot/APFinancialData.m b/examples/AAPLot/APFinancialData.m
deleted file mode 100644
index f274794b2..000000000
--- a/examples/AAPLot/APFinancialData.m
+++ /dev/null
@@ -1,34 +0,0 @@
-#import "APFinancialData.h"
-#import "NSDateFormatterExtensions.h"
-
-@implementation NSDictionary(APFinancialData)
-
-+(id)dictionaryWithCSVLine:(NSString *)csvLine
-{
- NSArray *csvChunks = [csvLine componentsSeparatedByString:@","];
-
- NSMutableDictionary *csvDict = [NSMutableDictionary dictionaryWithCapacity:7];
-
- // Date,Open,High,Low,Close,Volume,Adj Close
- // 2009-06-08,143.82,144.23,139.43,143.85,33255400,143.85
- NSDate *theDate = [[NSDateFormatter csvDateFormatter] dateFromString:(NSString *)csvChunks[0]];
-
- csvDict[@"date"] = theDate;
- NSDecimalNumber *theOpen = [NSDecimalNumber decimalNumberWithString:(NSString *)csvChunks[1]];
- csvDict[@"open"] = theOpen;
- NSDecimalNumber *theHigh = [NSDecimalNumber decimalNumberWithString:(NSString *)csvChunks[2]];
- csvDict[@"high"] = theHigh;
- NSDecimalNumber *theLow = [NSDecimalNumber decimalNumberWithString:(NSString *)csvChunks[3]];
- csvDict[@"low"] = theLow;
- NSDecimalNumber *theClose = [NSDecimalNumber decimalNumberWithString:(NSString *)csvChunks[4]];
- csvDict[@"close"] = theClose;
- NSDecimalNumber *theVolume = [NSDecimalNumber decimalNumberWithString:(NSString *)csvChunks[5]];
- csvDict[@"volume"] = theVolume;
- NSDecimalNumber *theAdjClose = [NSDecimalNumber decimalNumberWithString:(NSString *)csvChunks[6]];
- csvDict[@"adjClose"] = theAdjClose;
-
- //non-mutable autoreleased dict
- return [NSDictionary dictionaryWithDictionary:csvDict];
-}
-
-@end
diff --git a/examples/AAPLot/APYahooDataPuller.h b/examples/AAPLot/APYahooDataPuller.h
deleted file mode 100644
index 3652c98e7..000000000
--- a/examples/AAPLot/APYahooDataPuller.h
+++ /dev/null
@@ -1,52 +0,0 @@
-#import
-
-@class APYahooDataPuller;
-
-@protocol APYahooDataPullerDelegate
-
-@optional
-
--(void)dataPullerDidFinishFetch:(APYahooDataPuller *)dp;
-
-@end
-
-@interface APYahooDataPuller : NSObject {
- NSString *symbol;
- NSDate *startDate;
- NSDate *endDate;
-
- NSDate *targetStartDate;
- NSDate *targetEndDate;
- NSString *targetSymbol;
-
- id delegate;
- NSDecimalNumber *overallHigh;
- NSDecimalNumber *overallLow;
- NSDecimalNumber *overallVolumeHigh;
- NSDecimalNumber *overallVolumeLow;
-
- @private
- NSString *csvString;
- NSArray *financialData; // consists of dictionaries
-
- BOOL loadingData;
- NSMutableData *receivedData;
- NSURLConnection *connection;
-}
-
-@property (nonatomic, assign) id delegate;
-@property (nonatomic, copy) NSString *symbol;
-@property (nonatomic, retain) NSDate *startDate;
-@property (nonatomic, retain) NSDate *endDate;
-@property (nonatomic, copy) NSString *targetSymbol;
-@property (nonatomic, retain) NSDate *targetStartDate;
-@property (nonatomic, retain) NSDate *targetEndDate;
-@property (nonatomic, readonly, retain) NSArray *financialData;
-@property (nonatomic, readonly, retain) NSDecimalNumber *overallHigh;
-@property (nonatomic, readonly, retain) NSDecimalNumber *overallLow;
-@property (nonatomic, readonly, retain) NSDecimalNumber *overallVolumeHigh;
-@property (nonatomic, readonly, retain) NSDecimalNumber *overallVolumeLow;
-
--(id)initWithTargetSymbol:(NSString *)aSymbol targetStartDate:(NSDate *)aStartDate targetEndDate:(NSDate *)anEndDate;
-
-@end
diff --git a/examples/AAPLot/APYahooDataPuller.m b/examples/AAPLot/APYahooDataPuller.m
deleted file mode 100644
index 35392ac82..000000000
--- a/examples/AAPLot/APYahooDataPuller.m
+++ /dev/null
@@ -1,373 +0,0 @@
-#import "APFinancialData.h"
-#import "APYahooDataPuller.h"
-
-NSTimeInterval timeIntervalForNumberOfWeeks(double numberOfWeeks)
-{
- NSTimeInterval seconds = fabs(60.0 * 60.0 * 24.0 * 7.0 * numberOfWeeks);
-
- return seconds;
-}
-
-@interface APYahooDataPuller()
-
-@property (nonatomic, copy) NSString *csvString;
-@property (nonatomic, retain) NSMutableData *receivedData;
-@property (nonatomic, retain) NSURLConnection *connection;
-@property (nonatomic, assign) BOOL loadingData;
-@property (nonatomic, readwrite, retain) NSDecimalNumber *overallHigh;
-@property (nonatomic, readwrite, retain) NSDecimalNumber *overallLow;
-@property (nonatomic, readwrite, retain) NSDecimalNumber *overallVolumeHigh;
-@property (nonatomic, readwrite, retain) NSDecimalNumber *overallVolumeLow;
-@property (nonatomic, readwrite, retain) NSArray *financialData;
-
--(void)fetch;
--(NSString *)URL;
--(void)notifyPulledData;
--(void)parseCSVAndPopulate;
-
-@end
-
-@implementation APYahooDataPuller
-
-@synthesize symbol;
-@synthesize startDate;
-@synthesize endDate;
-@synthesize targetStartDate;
-@synthesize targetEndDate;
-@synthesize targetSymbol;
-@synthesize overallLow;
-@synthesize overallHigh;
-@synthesize overallVolumeHigh;
-@synthesize overallVolumeLow;
-@synthesize csvString;
-@synthesize financialData;
-
-@synthesize receivedData;
-@synthesize connection;
-@synthesize loadingData;
-
--(id)delegate
-{
- return delegate;
-}
-
--(void)setDelegate:(id)aDelegate
-{
- if ( delegate != aDelegate ) {
- delegate = aDelegate;
- if ( [self.financialData count] > 0 ) {
- [self notifyPulledData]; //loads cached data onto UI
- }
- }
-}
-
--(NSDictionary *)plistRep
-{
- NSMutableDictionary *rep = [NSMutableDictionary dictionaryWithCapacity:7];
-
- rep[@"symbol"] = [self symbol];
- rep[@"startDate"] = [self startDate];
- rep[@"endDate"] = [self endDate];
- rep[@"overallHigh"] = [self overallHigh];
- rep[@"overallLow"] = [self overallLow];
- rep[@"overallVolumeHigh"] = [self overallVolumeHigh];
- rep[@"overallVolumeLow"] = [self overallVolumeLow];
- rep[@"financalData"] = [self financialData];
- return [NSDictionary dictionaryWithDictionary:rep];
-}
-
--(BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag
-{
- NSLog(@"writeToFile:%@", path);
- BOOL success = [[self plistRep] writeToFile:path atomically:flag];
- return success;
-}
-
--(id)initWithDictionary:(NSDictionary *)aDict targetSymbol:(NSString *)aSymbol targetStartDate:(NSDate *)aStartDate targetEndDate:(NSDate *)anEndDate
-{
- self = [super init];
- if ( self != nil ) {
- self.symbol = aDict[@"symbol"];
- self.startDate = aDict[@"startDate"];
- self.overallLow = [NSDecimalNumber decimalNumberWithDecimal:[aDict[@"overallLow"] decimalValue]];
- self.overallHigh = [NSDecimalNumber decimalNumberWithDecimal:[aDict[@"overallHigh"] decimalValue]];
- self.endDate = aDict[@"endDate"];
- self.financialData = aDict[@"financalData"];
-
- self.targetSymbol = aSymbol;
- self.targetStartDate = aStartDate;
- self.targetEndDate = anEndDate;
- self.csvString = @"";
- [self performSelector:@selector(fetch) withObject:nil afterDelay:0.01];
- }
- return self;
-}
-
--(NSString *)pathForSymbol:(NSString *)aSymbol
-{
- NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
- NSString *documentsDirectory = paths[0];
- NSString *docPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.plist", aSymbol]];
-
- return docPath;
-}
-
--(NSString *)faultTolerantPathForSymbol:(NSString *)aSymbol
-{
- NSString *docPath = [self pathForSymbol:aSymbol];
-
- if ( ![[NSFileManager defaultManager] fileExistsAtPath:docPath] ) {
- //if there isn't one in the user's documents directory, see if we ship with this data
- docPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.plist", aSymbol]];
- }
- return docPath;
-}
-
-//Always returns *something*
--(NSDictionary *)dictionaryForSymbol:(NSString *)aSymbol
-{
- NSString *path = [self faultTolerantPathForSymbol:aSymbol];
- NSMutableDictionary *localPlistDict = [NSMutableDictionary dictionaryWithContentsOfFile:path];
-
- return localPlistDict;
-}
-
--(id)initWithTargetSymbol:(NSString *)aSymbol targetStartDate:(NSDate *)aStartDate targetEndDate:(NSDate *)anEndDate
-{
- NSDictionary *cachedDictionary = [self dictionaryForSymbol:aSymbol];
-
- if ( nil != cachedDictionary ) {
- return [self initWithDictionary:cachedDictionary targetSymbol:aSymbol targetStartDate:aStartDate targetEndDate:anEndDate];
- }
-
- NSMutableDictionary *rep = [NSMutableDictionary dictionaryWithCapacity:7];
- rep[@"symbol"] = aSymbol;
- rep[@"startDate"] = aStartDate;
- rep[@"endDate"] = anEndDate;
- rep[@"overallHigh"] = [NSDecimalNumber notANumber];
- rep[@"overallLow"] = [NSDecimalNumber notANumber];
- rep[@"financalData"] = @[];
- return [self initWithDictionary:rep targetSymbol:aSymbol targetStartDate:aStartDate targetEndDate:anEndDate];
-}
-
--(id)init
-{
- NSTimeInterval secondsAgo = -timeIntervalForNumberOfWeeks(14.0); //12 weeks ago
- NSDate *start = [NSDate dateWithTimeIntervalSinceNow:secondsAgo];
-
- NSDate *end = [NSDate date];
-
- return [self initWithTargetSymbol:@"GOOG" targetStartDate:start targetEndDate:end];
-}
-
--(void)dealloc
-{
- [symbol release];
- [startDate release];
- [endDate release];
- [csvString release];
- [financialData release];
-
- symbol = nil;
- startDate = nil;
- endDate = nil;
- csvString = nil;
- financialData = nil;
-
- delegate = nil;
- [super dealloc];
-}
-
-// http://www.goldb.org/ystockquote.html
--(NSString *)URL
-{
- unsigned int unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit | NSYearCalendarUnit;
-
- NSCalendar *gregorian = [[NSCalendar alloc]
- initWithCalendarIdentifier:NSGregorianCalendar];
-
- NSDateComponents *compsStart = [gregorian components:unitFlags fromDate:targetStartDate];
- NSDateComponents *compsEnd = [gregorian components:unitFlags fromDate:targetEndDate];
-
- [gregorian release];
-
- NSString *url = [NSString stringWithFormat:@"http://ichart.yahoo.com/table.csv?s=%@&", [self targetSymbol]];
- url = [url stringByAppendingFormat:@"a=%d&", [compsStart month] - 1];
- url = [url stringByAppendingFormat:@"b=%d&", [compsStart day]];
- url = [url stringByAppendingFormat:@"c=%d&", [compsStart year]];
-
- url = [url stringByAppendingFormat:@"d=%d&", [compsEnd month] - 1];
- url = [url stringByAppendingFormat:@"e=%d&", [compsEnd day]];
- url = [url stringByAppendingFormat:@"f=%d&", [compsEnd year]];
- url = [url stringByAppendingString:@"g=d&"];
-
- url = [url stringByAppendingString:@"ignore=.csv"];
- url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
- return url;
-}
-
--(void)notifyPulledData
-{
- if ( delegate && [delegate respondsToSelector:@selector(dataPullerDidFinishFetch:)] ) {
- [delegate performSelector:@selector(dataPullerDidFinishFetch:) withObject:self];
- }
-}
-
-#pragma mark -
-#pragma mark Downloading of data
-
--(BOOL)shouldDownload
-{
- BOOL shouldDownload = YES;
-
- return shouldDownload;
-}
-
--(void)fetch
-{
- if ( self.loadingData ) {
- return;
- }
-
- if ( [self shouldDownload] ) {
- self.loadingData = YES;
- NSString *urlString = [self URL];
- NSLog(@"URL = %@", urlString);
- NSURL *url = [NSURL URLWithString:urlString];
- NSURLRequest *theRequest = [NSURLRequest requestWithURL:url
- cachePolicy:NSURLRequestUseProtocolCachePolicy
- timeoutInterval:60.0];
-
- // create the connection with the request
- // and start loading the data
- self.connection = [NSURLConnection connectionWithRequest:theRequest delegate:self];
- if ( self.connection ) {
- self.receivedData = [NSMutableData data];
- }
- else {
- //TODO: Inform the user that the download could not be started
- self.loadingData = NO;
- }
- }
-}
-
--(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
-{
- // append the new data to the receivedData
- [self.receivedData appendData:data];
-}
-
--(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
-{
- // this method is called when the server has determined that it
- // has enough information to create the NSURLResponse
- // it can be called multiple times, for example in the case of a
- // redirect, so each time we reset the data.
- [self.receivedData setLength:0];
-}
-
--(void)cancelDownload
-{
- if ( self.loadingData ) {
- [self.connection cancel];
- self.loadingData = NO;
-
- self.receivedData = nil;
- self.connection = nil;
- }
-}
-
--(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
-{
- self.loadingData = NO;
- self.receivedData = nil;
- self.connection = nil;
- NSLog(@"err = %@", [error localizedDescription]);
- //TODO:report err
-}
-
--(void)connectionDidFinishLoading:(NSURLConnection *)connection
-{
- self.loadingData = NO;
- self.connection = nil;
-
- NSString *csv = [[NSString alloc] initWithData:self.receivedData encoding:NSUTF8StringEncoding];
- self.csvString = csv;
- [csv release];
-
- self.receivedData = nil;
- [self parseCSVAndPopulate];
-
- //see if we need to write to file
- NSDictionary *dictionaryForSymbol = [self dictionaryForSymbol:self.symbol];
- if ( ![[self symbol] isEqualToString:dictionaryForSymbol[@"symbol"]] ||
- ([[self startDate] compare:dictionaryForSymbol[@"startDate"]] != NSOrderedSame) ||
- ([[self endDate] compare:dictionaryForSymbol[@"endDate"]] != NSOrderedSame) ) {
- [self writeToFile:[self pathForSymbol:self.symbol] atomically:YES];
- }
- else {
- NSLog(@"Not writing to file -- No Need, its data is fresh.");
- }
-}
-
--(void)parseCSVAndPopulate
-{
- NSArray *csvLines = [self.csvString componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
- NSMutableArray *newFinancials = [NSMutableArray arrayWithCapacity:[csvLines count]];
- NSDictionary *currentFinancial = nil;
- NSString *line = nil;
-
- self.overallHigh = [NSDecimalNumber notANumber];
- self.overallLow = [NSDecimalNumber notANumber];
- self.overallVolumeHigh = [NSDecimalNumber notANumber];
- self.overallVolumeLow = [NSDecimalNumber notANumber];
-
- for ( NSUInteger i = 1; i < [csvLines count] - 1; i++ ) {
- line = (NSString *)csvLines[i];
- currentFinancial = [NSDictionary dictionaryWithCSVLine:line];
- [newFinancials addObject:currentFinancial];
-
- NSDecimalNumber *high = currentFinancial[@"high"];
- NSDecimalNumber *low = currentFinancial[@"low"];
- NSDecimalNumber *volume = currentFinancial[@"volume"];
-
- if ( [self.overallHigh isEqual:[NSDecimalNumber notANumber]] ) {
- self.overallHigh = high;
- }
-
- if ( [self.overallLow isEqual:[NSDecimalNumber notANumber]] ) {
- self.overallLow = low;
- }
-
- if ( [low compare:self.overallLow] == NSOrderedAscending ) {
- self.overallLow = low;
- }
- if ( [high compare:self.overallHigh] == NSOrderedDescending ) {
- self.overallHigh = high;
- }
-
- if ( [self.overallVolumeHigh isEqual:[NSDecimalNumber notANumber]] ) {
- self.overallVolumeHigh = volume;
- }
-
- if ( [self.overallVolumeLow isEqual:[NSDecimalNumber notANumber]] ) {
- self.overallVolumeLow = volume;
- }
-
- if ( [volume compare:self.overallVolumeLow] == NSOrderedAscending ) {
- self.overallVolumeLow = volume;
- }
-
- if ( [volume compare:self.overallVolumeHigh] == NSOrderedDescending ) {
- self.overallVolumeHigh = volume;
- }
- }
- self.startDate = self.targetStartDate;
- self.endDate = self.targetEndDate;
- self.symbol = self.targetSymbol;
-
- [self setFinancialData:[NSArray arrayWithArray:newFinancials]];
- [self notifyPulledData];
-}
-
-@end
diff --git a/examples/AAPLot/Classes/AAPLotAppDelegate.h b/examples/AAPLot/Classes/AAPLotAppDelegate.h
deleted file mode 100644
index bbadfac6c..000000000
--- a/examples/AAPLot/Classes/AAPLotAppDelegate.h
+++ /dev/null
@@ -1,21 +0,0 @@
-//
-// AAPLotAppDelegate.h
-// AAPLot
-//
-// Created by Jonathan Saggau on 6/9/09.
-// Copyright Sounds Broken inc. 2009. All rights reserved.
-//
-
-#import
-
-@class RootViewController;
-
-@interface AAPLotAppDelegate : NSObject {
- UIWindow *window;
- RootViewController *rootViewController;
-}
-
-@property (nonatomic, retain) IBOutlet UIWindow *window;
-@property (nonatomic, retain) IBOutlet RootViewController *rootViewController;
-
-@end
diff --git a/examples/AAPLot/Classes/AAPLotAppDelegate.m b/examples/AAPLot/Classes/AAPLotAppDelegate.m
deleted file mode 100644
index e67f4a826..000000000
--- a/examples/AAPLot/Classes/AAPLotAppDelegate.m
+++ /dev/null
@@ -1,35 +0,0 @@
-//
-// AAPLotAppDelegate.m
-// AAPLot
-//
-// Created by Jonathan Saggau on 6/9/09.
-// Copyright Sounds Broken inc. 2009. All rights reserved.
-//
-
-#import "AAPLotAppDelegate.h"
-#import "RootViewController.h"
-
-@implementation AAPLotAppDelegate
-
-@synthesize window;
-@synthesize rootViewController;
-
--(void)applicationDidFinishLaunching:(UIApplication *)application
-{
- if ( [self.window respondsToSelector:@selector(setRootViewController:)] ) {
- self.window.rootViewController = self.rootViewController;
- }
- else {
- [self.window addSubview:self.rootViewController.view];
- }
- [self.window makeKeyAndVisible];
-}
-
--(void)dealloc
-{
- [rootViewController release];
- [window release];
- [super dealloc];
-}
-
-@end
diff --git a/examples/AAPLot/Classes/FlipsideView.h b/examples/AAPLot/Classes/FlipsideView.h
deleted file mode 100644
index 9a407b402..000000000
--- a/examples/AAPLot/Classes/FlipsideView.h
+++ /dev/null
@@ -1,14 +0,0 @@
-//
-// FlipsideView.h
-// AAPLot
-//
-// Created by Jonathan Saggau on 6/9/09.
-// Copyright Sounds Broken inc. 2009. All rights reserved.
-//
-
-#import
-
-@interface FlipsideView : UIView {
-}
-
-@end
diff --git a/examples/AAPLot/Classes/FlipsideView.m b/examples/AAPLot/Classes/FlipsideView.m
deleted file mode 100644
index 7194233bf..000000000
--- a/examples/AAPLot/Classes/FlipsideView.m
+++ /dev/null
@@ -1,31 +0,0 @@
-//
-// FlipsideView.m
-// AAPLot
-//
-// Created by Jonathan Saggau on 6/9/09.
-// Copyright Sounds Broken inc. 2009. All rights reserved.
-//
-
-#import "FlipsideView.h"
-
-@implementation FlipsideView
-
--(id)initWithFrame:(CGRect)frame
-{
- if ( self = [super initWithFrame:frame] ) {
- // Initialization code
- }
- return self;
-}
-
--(void)drawRect:(CGRect)rect
-{
- // Drawing code
-}
-
--(void)dealloc
-{
- [super dealloc];
-}
-
-@end
diff --git a/examples/AAPLot/Classes/FlipsideViewController.h b/examples/AAPLot/Classes/FlipsideViewController.h
deleted file mode 100644
index ed84c2d55..000000000
--- a/examples/AAPLot/Classes/FlipsideViewController.h
+++ /dev/null
@@ -1,14 +0,0 @@
-//
-// FlipsideViewController.h
-// AAPLot
-//
-// Created by Jonathan Saggau on 6/9/09.
-// Copyright Sounds Broken inc. 2009. All rights reserved.
-//
-
-#import
-
-@interface FlipsideViewController : UIViewController {
-}
-
-@end
diff --git a/examples/AAPLot/Classes/FlipsideViewController.m b/examples/AAPLot/Classes/FlipsideViewController.m
deleted file mode 100644
index e89f61121..000000000
--- a/examples/AAPLot/Classes/FlipsideViewController.m
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// FlipsideViewController.m
-// AAPLot
-//
-// Created by Jonathan Saggau on 6/9/09.
-// Copyright Sounds Broken inc. 2009. All rights reserved.
-//
-
-#import "FlipsideViewController.h"
-
-@implementation FlipsideViewController
-
--(void)viewDidLoad
-{
- [super viewDidLoad];
- self.view.backgroundColor = [UIColor viewFlipsideBackgroundColor];
-}
-
-/*
- * // Override to allow orientations other than the default portrait orientation.
- * - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
- * // Return YES for supported orientations
- * return (interfaceOrientation == UIInterfaceOrientationPortrait);
- * }
- */
-
--(void)didReceiveMemoryWarning
-{
- [super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview
- // Release anything that's not essential, such as cached data
-}
-
--(void)dealloc
-{
- [super dealloc];
-}
-
-@end
diff --git a/examples/AAPLot/Classes/MainViewController.h b/examples/AAPLot/Classes/MainViewController.h
deleted file mode 100644
index c517c1842..000000000
--- a/examples/AAPLot/Classes/MainViewController.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#import "APYahooDataPuller.h"
-#import "CorePlot-CocoaTouch.h"
-#import
-
-@class CPTGraphHostingView;
-@class APYahooDataPuller;
-@class CPTXYGraph;
-
-@interface MainViewController : UIViewController {
- CPTGraphHostingView *graphHost;
-
- @private
- APYahooDataPuller *datapuller;
- CPTXYGraph *graph;
-}
-
-@property (nonatomic, retain) IBOutlet CPTGraphHostingView *graphHost;
-
-@end
diff --git a/examples/AAPLot/Classes/MainViewController.m b/examples/AAPLot/Classes/MainViewController.m
deleted file mode 100644
index a30966a9f..000000000
--- a/examples/AAPLot/Classes/MainViewController.m
+++ /dev/null
@@ -1,696 +0,0 @@
-#import "APFinancialData.h"
-#import "APYahooDataPuller.h"
-#import "MainViewController.h"
-
-#define ROWS_FIRST_DATA_ORDER 1
-
-@interface MainViewController()
-
-@property (nonatomic, retain) CPTXYGraph *graph;
-@property (nonatomic, retain) APYahooDataPuller *datapuller;
-
-@end
-
-@implementation MainViewController
-
-@synthesize graph;
-@synthesize datapuller;
-@synthesize graphHost;
-
--(void)dealloc
-{
- [datapuller release];
- [graph release];
- [graphHost release];
- datapuller = nil;
- graph = nil;
- graphHost = nil;
- [super dealloc];
-}
-
--(void)setView:(UIView *)aView
-{
- [super setView:aView];
- if ( nil == aView ) {
- self.graph = nil;
- self.graphHost = nil;
- }
-}
-
--(void)viewDidLoad
-{
- graph = [[CPTXYGraph alloc] initWithFrame:CGRectZero];
- CPTTheme *theme = [CPTTheme themeNamed:kCPTStocksTheme];
- [graph applyTheme:theme];
- graph.frame = self.view.bounds;
- graph.paddingRight = 50.0;
- graph.paddingLeft = 50.0;
- graph.plotAreaFrame.masksToBorder = NO;
- graph.plotAreaFrame.cornerRadius = 0.0;
- CPTMutableLineStyle *borderLineStyle = [CPTMutableLineStyle lineStyle];
- borderLineStyle.lineColor = [CPTColor whiteColor];
- borderLineStyle.lineWidth = 2.0;
- graph.plotAreaFrame.borderLineStyle = borderLineStyle;
- self.graphHost.hostedGraph = graph;
-
- // Axes
- CPTXYAxisSet *xyAxisSet = (id)graph.axisSet;
- CPTXYAxis *xAxis = xyAxisSet.xAxis;
- CPTMutableLineStyle *lineStyle = [xAxis.axisLineStyle mutableCopy];
- lineStyle.lineCap = kCGLineCapButt;
- xAxis.axisLineStyle = lineStyle;
- [lineStyle release];
- xAxis.labelingPolicy = CPTAxisLabelingPolicyNone;
-
- CPTXYAxis *yAxis = xyAxisSet.yAxis;
- yAxis.axisLineStyle = nil;
-
- // Line plot with gradient fill
- CPTScatterPlot *dataSourceLinePlot = [[[CPTScatterPlot alloc] initWithFrame:graph.bounds] autorelease];
- dataSourceLinePlot.identifier = @"Data Source Plot";
- dataSourceLinePlot.dataLineStyle = nil;
- dataSourceLinePlot.dataSource = self;
- dataSourceLinePlot.cachePrecision = CPTPlotCachePrecisionDouble;
- [graph addPlot:dataSourceLinePlot];
-
- CPTColor *areaColor = [CPTColor colorWithComponentRed:1.0 green:1.0 blue:1.0 alpha:0.6];
- CPTGradient *areaGradient = [CPTGradient gradientWithBeginningColor:areaColor endingColor:[CPTColor clearColor]];
- areaGradient.angle = -90.0;
- CPTFill *areaGradientFill = [CPTFill fillWithGradient:areaGradient];
- dataSourceLinePlot.areaFill = areaGradientFill;
- dataSourceLinePlot.areaBaseValue = CPTDecimalFromDouble(200.0);
-
- areaColor = [CPTColor colorWithComponentRed:0.0 green:1.0 blue:0.0 alpha:0.6];
- areaGradient = [CPTGradient gradientWithBeginningColor:[CPTColor clearColor] endingColor:areaColor];
- areaGradient.angle = -90.0;
- areaGradientFill = [CPTFill fillWithGradient:areaGradient];
- dataSourceLinePlot.areaFill2 = areaGradientFill;
- dataSourceLinePlot.areaBaseValue2 = CPTDecimalFromDouble(400.0);
-
- // OHLC plot
- CPTMutableLineStyle *whiteLineStyle = [CPTMutableLineStyle lineStyle];
- whiteLineStyle.lineColor = [CPTColor whiteColor];
- whiteLineStyle.lineWidth = 1.0;
- CPTTradingRangePlot *ohlcPlot = [[[CPTTradingRangePlot alloc] initWithFrame:graph.bounds] autorelease];
- ohlcPlot.identifier = @"OHLC";
- ohlcPlot.lineStyle = whiteLineStyle;
- CPTMutableTextStyle *whiteTextStyle = [CPTMutableTextStyle textStyle];
- whiteTextStyle.color = [CPTColor whiteColor];
- whiteTextStyle.fontSize = 8.0;
- ohlcPlot.labelTextStyle = whiteTextStyle;
- ohlcPlot.labelOffset = 5.0;
- ohlcPlot.stickLength = 2.0;
- ohlcPlot.dataSource = self;
- ohlcPlot.plotStyle = CPTTradingRangePlotStyleOHLC;
- ohlcPlot.cachePrecision = CPTPlotCachePrecisionDecimal;
- [graph addPlot:ohlcPlot];
-
- // Add plot space for bar chart
- CPTXYPlotSpace *volumePlotSpace = [[CPTXYPlotSpace alloc] init];
- volumePlotSpace.identifier = @"Volume Plot Space";
- [graph addPlotSpace:volumePlotSpace];
- [volumePlotSpace release];
-
- // Volume plot
- CPTBarPlot *volumePlot = [CPTBarPlot tubularBarPlotWithColor:[CPTColor blackColor] horizontalBars:NO];
- volumePlot.dataSource = self;
-
- lineStyle = [volumePlot.lineStyle mutableCopy];
- lineStyle.lineColor = [CPTColor whiteColor];
- volumePlot.lineStyle = lineStyle;
- [lineStyle release];
-
- volumePlot.fill = nil;
- volumePlot.barWidth = CPTDecimalFromFloat(1.0f);
- volumePlot.identifier = @"Volume Plot";
- volumePlot.cachePrecision = CPTPlotCachePrecisionDouble;
- [graph addPlot:volumePlot toPlotSpace:volumePlotSpace];
-
- // Data puller
- NSDate *start = [NSDate dateWithTimeIntervalSinceNow:-60.0 * 60.0 * 24.0 * 7.0 * 12.0]; // 12 weeks ago
- NSDate *end = [NSDate date];
- APYahooDataPuller *dp = [[APYahooDataPuller alloc] initWithTargetSymbol:@"AAPL" targetStartDate:start targetEndDate:end];
- [self setDatapuller:dp];
- [dp setDelegate:self];
- [dp release];
-
- [super viewDidLoad];
-}
-
--(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
-{
- if ( self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil] ) {
- }
- return self;
-}
-
-#pragma mark -
-#pragma mark Plot Data Source Methods
-
--(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot
-{
- return self.datapuller.financialData.count;
-}
-
-#if ROWS_FIRST_DATA_ORDER
-
--(CPTNumericData *)dataForPlot:(CPTPlot *)plot recordIndexRange:(NSRange)indexRange
-{
- NSArray *financialData = self.datapuller.financialData;
- const NSUInteger financialDataCount = financialData.count;
-
- const BOOL useDoubles = plot.doublePrecisionCache;
-
- NSUInteger numFields = plot.numberOfFields;
-
- if ( [plot.identifier isEqual:@"Volume Plot"] ) {
- numFields = 2;
- }
-
- NSMutableData *data = [[NSMutableData alloc] initWithLength:indexRange.length * numFields * ( useDoubles ? sizeof(double) : sizeof(NSDecimal) )];
-
- const NSUInteger maxIndex = NSMaxRange(indexRange);
-
- if ( [plot.identifier isEqual:@"Data Source Plot"] ) {
- if ( useDoubles ) {
- double *nextValue = data.mutableBytes;
-
- for ( NSUInteger i = indexRange.location; i < maxIndex; i++ ) {
- NSDictionary *fData = (NSDictionary *)financialData[financialDataCount - i - 1];
- NSNumber *value;
-
- for ( NSUInteger fieldEnum = 0; fieldEnum < numFields; fieldEnum++ ) {
- switch ( fieldEnum ) {
- case CPTScatterPlotFieldX:
- *nextValue++ = (double)(i + 1);
- break;
-
- case CPTScatterPlotFieldY:
- value = fData[@"close"];
- NSAssert(value, @"Close value was nil");
- *nextValue++ = [value doubleValue];
- break;
-
- default:
- break;
- }
- }
- }
- }
- else {
- NSDecimal *nextValue = data.mutableBytes;
-
- for ( NSUInteger i = indexRange.location; i < maxIndex; i++ ) {
- NSDictionary *fData = (NSDictionary *)financialData[financialDataCount - i - 1];
- NSNumber *value;
-
- for ( NSUInteger fieldEnum = 0; fieldEnum < numFields; fieldEnum++ ) {
- switch ( fieldEnum ) {
- case CPTScatterPlotFieldX:
- *nextValue++ = CPTDecimalFromUnsignedInteger(i + 1);
- break;
-
- case CPTScatterPlotFieldY:
- value = fData[@"close"];
- NSAssert(value, @"Close value was nil");
- *nextValue++ = [value decimalValue];
- break;
-
- default:
- break;
- }
- }
- }
- }
- }
- else if ( [plot.identifier isEqual:@"Volume Plot"] ) {
- if ( useDoubles ) {
- double *nextValue = data.mutableBytes;
-
- for ( NSUInteger i = indexRange.location; i < maxIndex; i++ ) {
- NSDictionary *fData = (NSDictionary *)financialData[financialDataCount - i - 1];
- NSNumber *value;
-
- for ( NSUInteger fieldEnum = 0; fieldEnum < numFields; fieldEnum++ ) {
- switch ( fieldEnum ) {
- case CPTBarPlotFieldBarLocation:
- *nextValue++ = (double)(i + 1);
- break;
-
- case CPTBarPlotFieldBarTip:
- value = fData[@"volume"];
- NSAssert(value, @"Volume value was nil");
- *nextValue++ = [value doubleValue];
- break;
-
- default:
- break;
- }
- }
- }
- }
- else {
- NSDecimal *nextValue = data.mutableBytes;
-
- for ( NSUInteger i = indexRange.location; i < maxIndex; i++ ) {
- NSDictionary *fData = (NSDictionary *)financialData[financialDataCount - i - 1];
- NSNumber *value;
-
- for ( NSUInteger fieldEnum = 0; fieldEnum < numFields; fieldEnum++ ) {
- switch ( fieldEnum ) {
- case CPTBarPlotFieldBarLocation:
- *nextValue++ = CPTDecimalFromUnsignedInteger(i + 1);
- break;
-
- case CPTBarPlotFieldBarTip:
- value = fData[@"volume"];
- NSAssert(value, @"Volume value was nil");
- *nextValue++ = [value decimalValue];
- break;
-
- default:
- break;
- }
- }
- }
- }
- }
- else {
- if ( useDoubles ) {
- double *nextValue = data.mutableBytes;
-
- for ( NSUInteger i = indexRange.location; i < maxIndex; i++ ) {
- NSDictionary *fData = (NSDictionary *)financialData[financialDataCount - i - 1];
- NSNumber *value;
-
- for ( NSUInteger fieldEnum = 0; fieldEnum < numFields; fieldEnum++ ) {
- switch ( fieldEnum ) {
- case CPTTradingRangePlotFieldX:
- *nextValue++ = (double)(i + 1);
- break;
-
- case CPTTradingRangePlotFieldOpen:
- value = fData[@"open"];
- NSAssert(value, @"Open value was nil");
- *nextValue++ = [value doubleValue];
- break;
-
- case CPTTradingRangePlotFieldHigh:
- value = fData[@"high"];
- NSAssert(value, @"High value was nil");
- *nextValue++ = [value doubleValue];
- break;
-
- case CPTTradingRangePlotFieldLow:
- value = fData[@"low"];
- NSAssert(value, @"Low value was nil");
- *nextValue++ = [value doubleValue];
- break;
-
- case CPTTradingRangePlotFieldClose:
- value = fData[@"close"];
- NSAssert(value, @"Close value was nil");
- *nextValue++ = [value doubleValue];
- break;
-
- default:
- break;
- }
- }
- }
- }
- else {
- NSDecimal *nextValue = data.mutableBytes;
-
- for ( NSUInteger i = indexRange.location; i < maxIndex; i++ ) {
- NSDictionary *fData = (NSDictionary *)financialData[financialDataCount - i - 1];
- NSNumber *value;
-
- for ( NSUInteger fieldEnum = 0; fieldEnum < numFields; fieldEnum++ ) {
- switch ( fieldEnum ) {
- case CPTTradingRangePlotFieldX:
- *nextValue++ = CPTDecimalFromUnsignedInteger(i + 1);
- break;
-
- case CPTTradingRangePlotFieldOpen:
- value = fData[@"open"];
- NSAssert(value, @"Open value was nil");
- *nextValue++ = [value decimalValue];
- break;
-
- case CPTTradingRangePlotFieldHigh:
- value = fData[@"high"];
- NSAssert(value, @"High value was nil");
- *nextValue++ = [value decimalValue];
- break;
-
- case CPTTradingRangePlotFieldLow:
- value = fData[@"low"];
- NSAssert(value, @"Low value was nil");
- *nextValue++ = [value decimalValue];
- break;
-
- case CPTTradingRangePlotFieldClose:
- value = fData[@"close"];
- NSAssert(value, @"Close value was nil");
- *nextValue++ = [value decimalValue];
- break;
-
- default:
- break;
- }
- }
- }
- }
- }
-
- CPTMutableNumericData *numericData = [CPTMutableNumericData numericDataWithData:data
- dataType:(useDoubles ? plot.doubleDataType : plot.decimalDataType)
- shape:@[@(indexRange.length),
- @(numFields)]
- dataOrder:CPTDataOrderRowsFirst];
- [data release];
-
- return numericData;
-}
-
-#else
-
--(CPTNumericData *)dataForPlot:(CPTPlot *)plot recordIndexRange:(NSRange)indexRange
-{
- NSArray *financialData = self.datapuller.financialData;
- const NSUInteger financialDataCount = financialData.count;
-
- const BOOL useDoubles = plot.doublePrecisionCache;
-
- NSUInteger numFields = plot.numberOfFields;
-
- if ( [plot.identifier isEqual:@"Volume Plot"] ) {
- numFields = 2;
- }
-
- NSMutableData *data = [[NSMutableData alloc] initWithLength:indexRange.length * numFields * ( useDoubles ? sizeof(double) : sizeof(NSDecimal) )];
-
- const NSUInteger maxIndex = NSMaxRange(indexRange);
-
- if ( [plot.identifier isEqual:@"Data Source Plot"] ) {
- if ( useDoubles ) {
- double *nextValue = data.mutableBytes;
-
- for ( int fieldEnum = 0; fieldEnum < numFields; fieldEnum++ ) {
- for ( NSUInteger i = indexRange.location; i < maxIndex; i++ ) {
- NSDictionary *fData = (NSDictionary *)[financialData objectAtIndex:financialDataCount - i - 1];
- NSNumber *value;
-
- switch ( fieldEnum ) {
- case CPTScatterPlotFieldX:
- *nextValue++ = (double)(i + 1);
- break;
-
- case CPTScatterPlotFieldY:
- value = [fData objectForKey:@"close"];
- NSAssert(value, @"Close value was nil");
- *nextValue++ = [value doubleValue];
- break;
-
- default:
- break;
- }
- }
- }
- }
- else {
- NSDecimal *nextValue = data.mutableBytes;
-
- for ( int fieldEnum = 0; fieldEnum < numFields; fieldEnum++ ) {
- for ( NSUInteger i = indexRange.location; i < maxIndex; i++ ) {
- NSDictionary *fData = (NSDictionary *)[financialData objectAtIndex:financialDataCount - i - 1];
- NSNumber *value;
-
- switch ( fieldEnum ) {
- case CPTScatterPlotFieldX:
- *nextValue++ = CPTDecimalFromUnsignedInteger(i + 1);
- break;
-
- case CPTScatterPlotFieldY:
- value = [fData objectForKey:@"close"];
- NSAssert(value, @"Close value was nil");
- *nextValue++ = [value decimalValue];
- break;
-
- default:
- break;
- }
- }
- }
- }
- }
- else if ( [plot.identifier isEqual:@"Volume Plot"] ) {
- if ( useDoubles ) {
- double *nextValue = data.mutableBytes;
-
- for ( int fieldEnum = 0; fieldEnum < numFields; fieldEnum++ ) {
- for ( NSUInteger i = indexRange.location; i < maxIndex; i++ ) {
- NSDictionary *fData = (NSDictionary *)[financialData objectAtIndex:financialDataCount - i - 1];
- NSNumber *value;
-
- switch ( fieldEnum ) {
- case CPTBarPlotFieldBarLocation:
- *nextValue++ = (double)(i + 1);
- break;
-
- case CPTBarPlotFieldBarTip:
- value = [fData objectForKey:@"volume"];
- NSAssert(value, @"Volume value was nil");
- *nextValue++ = [value doubleValue];
- break;
-
- default:
- break;
- }
- }
- }
- }
- else {
- NSDecimal *nextValue = data.mutableBytes;
-
- for ( int fieldEnum = 0; fieldEnum < numFields; fieldEnum++ ) {
- for ( NSUInteger i = indexRange.location; i < maxIndex; i++ ) {
- NSDictionary *fData = (NSDictionary *)[financialData objectAtIndex:financialDataCount - i - 1];
- NSNumber *value;
-
- switch ( fieldEnum ) {
- case CPTBarPlotFieldBarLocation:
- *nextValue++ = CPTDecimalFromUnsignedInteger(i + 1);
- break;
-
- case CPTBarPlotFieldBarTip:
- value = [fData objectForKey:@"volume"];
- NSAssert(value, @"Volume value was nil");
- *nextValue++ = [value decimalValue];
- break;
-
- default:
- break;
- }
- }
- }
- }
- }
- else {
- if ( useDoubles ) {
- double *nextValue = data.mutableBytes;
-
- for ( int fieldEnum = 0; fieldEnum < numFields; fieldEnum++ ) {
- for ( NSUInteger i = indexRange.location; i < maxIndex; i++ ) {
- NSDictionary *fData = (NSDictionary *)[financialData objectAtIndex:financialDataCount - i - 1];
- NSNumber *value;
-
- switch ( fieldEnum ) {
- case CPTTradingRangePlotFieldX:
- *nextValue++ = (double)(i + 1);
- break;
-
- case CPTTradingRangePlotFieldOpen:
- value = [fData objectForKey:@"open"];
- NSAssert(value, @"Open value was nil");
- *nextValue++ = [value doubleValue];
- break;
-
- case CPTTradingRangePlotFieldHigh:
- value = [fData objectForKey:@"high"];
- NSAssert(value, @"High value was nil");
- *nextValue++ = [value doubleValue];
- break;
-
- case CPTTradingRangePlotFieldLow:
- value = [fData objectForKey:@"low"];
- NSAssert(value, @"Low value was nil");
- *nextValue++ = [value doubleValue];
- break;
-
- case CPTTradingRangePlotFieldClose:
- value = [fData objectForKey:@"close"];
- NSAssert(value, @"Close value was nil");
- *nextValue++ = [value doubleValue];
- break;
-
- default:
- break;
- }
- }
- }
- }
- else {
- NSDecimal *nextValue = data.mutableBytes;
-
- for ( int fieldEnum = 0; fieldEnum < numFields; fieldEnum++ ) {
- for ( NSUInteger i = indexRange.location; i < maxIndex; i++ ) {
- NSDictionary *fData = (NSDictionary *)[financialData objectAtIndex:financialDataCount - i - 1];
- NSNumber *value;
-
- switch ( fieldEnum ) {
- case CPTTradingRangePlotFieldX:
- *nextValue++ = CPTDecimalFromUnsignedInteger(i + 1);
- break;
-
- case CPTTradingRangePlotFieldOpen:
- value = [fData objectForKey:@"open"];
- NSAssert(value, @"Open value was nil");
- *nextValue++ = [value decimalValue];
- break;
-
- case CPTTradingRangePlotFieldHigh:
- value = [fData objectForKey:@"high"];
- NSAssert(value, @"High value was nil");
- *nextValue++ = [value decimalValue];
- break;
-
- case CPTTradingRangePlotFieldLow:
- value = [fData objectForKey:@"low"];
- NSAssert(value, @"Low value was nil");
- *nextValue++ = [value decimalValue];
- break;
-
- case CPTTradingRangePlotFieldClose:
- value = [fData objectForKey:@"close"];
- NSAssert(value, @"Close value was nil");
- *nextValue++ = [value decimalValue];
- break;
-
- default:
- break;
- }
- }
- }
- }
- }
-
- CPTMutableNumericData *numericData = [CPTMutableNumericData numericDataWithData:data
- dataType:(useDoubles ? plot.doubleDataType : plot.decimalDataType)
- shape:@[@(indexRange.length), @(numFields)]
- dataOrder:CPTDataOrderColumnsFirst];
- [data release];
-
- return numericData;
-}
-#endif
-
--(CPTLayer *)dataLabelForPlot:(CPTPlot *)plot recordIndex:(NSUInteger)index
-{
- if ( ![(NSString *)plot.identifier isEqualToString : @"OHLC"] ) {
- return (id)[NSNull null]; // Don't show any label
- }
- else if ( index % 5 ) {
- return (id)[NSNull null];
- }
- else {
- return nil; // Use default label style
- }
-}
-
--(void)dataPullerDidFinishFetch:(APYahooDataPuller *)dp
-{
- static CPTAnimationOperation *animationOperation = nil;
-
- CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)self.graph.defaultPlotSpace;
- CPTXYPlotSpace *volumePlotSpace = (CPTXYPlotSpace *)[self.graph plotSpaceWithIdentifier:@"Volume Plot Space"];
-
- NSDecimalNumber *high = [datapuller overallHigh];
- NSDecimalNumber *low = [datapuller overallLow];
- NSDecimalNumber *length = [high decimalNumberBySubtracting:low];
-
- NSLog(@"high = %@, low = %@, length = %@", high, low, length);
- NSDecimalNumber *pricePlotSpaceDisplacementPercent = [NSDecimalNumber decimalNumberWithMantissa:33
- exponent:-2
- isNegative:NO];
-
- NSDecimalNumber *lengthDisplacementValue = [length decimalNumberByMultiplyingBy:pricePlotSpaceDisplacementPercent];
- NSDecimalNumber *lowDisplayLocation = [low decimalNumberBySubtracting:lengthDisplacementValue];
- NSDecimalNumber *lengthDisplayLocation = [length decimalNumberByAdding:lengthDisplacementValue];
-
- plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f) length:CPTDecimalFromUnsignedInteger(datapuller.financialData.count + 1)];
- plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:[lowDisplayLocation decimalValue] length:[lengthDisplayLocation decimalValue]];
-
- CPTScatterPlot *linePlot = (CPTScatterPlot *)[graph plotWithIdentifier:@"Data Source Plot"];
- linePlot.areaBaseValue = [high decimalValue];
- linePlot.areaBaseValue2 = [low decimalValue];
-
- // Axes
- CPTXYAxisSet *axisSet = (CPTXYAxisSet *)graph.axisSet;
-
- NSDecimalNumber *overallVolumeHigh = [datapuller overallVolumeHigh];
- NSDecimalNumber *overallVolumeLow = [datapuller overallVolumeLow];
- NSDecimalNumber *volumeLength = [overallVolumeHigh decimalNumberBySubtracting:overallVolumeLow];
-
- // make the length aka height for y 3 times more so that we get a 1/3 area covered by volume
- NSDecimalNumber *volumePlotSpaceDisplacementPercent = [NSDecimalNumber decimalNumberWithMantissa:3
- exponent:0
- isNegative:NO];
-
- NSDecimalNumber *volumeLengthDisplacementValue = [volumeLength decimalNumberByMultiplyingBy:volumePlotSpaceDisplacementPercent];
- NSDecimalNumber *volumeLowDisplayLocation = overallVolumeLow;
- NSDecimalNumber *volumeLengthDisplayLocation = [volumeLength decimalNumberByAdding:volumeLengthDisplacementValue];
-
- volumePlotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f) length:CPTDecimalFromUnsignedInteger(datapuller.financialData.count + 1)];
-// volumePlotSpace.yRange = [CPTPlotRange plotRangeWithLocation:[volumeLowDisplayLocation decimalValue] length:[volumeLengthDisplayLocation decimalValue]];
-
- if ( animationOperation ) {
- [[CPTAnimation sharedInstance] removeAnimationOperation:animationOperation];
- [animationOperation release];
- }
-
- animationOperation = [[CPTAnimation animate:volumePlotSpace
- property:@"yRange"
- fromPlotRange:[CPTPlotRange plotRangeWithLocation:[volumeLowDisplayLocation decimalValue]
- length:CPTDecimalMultiply( [volumeLengthDisplayLocation decimalValue], CPTDecimalFromInteger(10) )]
- toPlotRange:[CPTPlotRange plotRangeWithLocation:[volumeLowDisplayLocation decimalValue]
- length:[volumeLengthDisplayLocation decimalValue]]
- duration:2.5] retain];
-
- axisSet.xAxis.orthogonalCoordinateDecimal = [low decimalValue];
- axisSet.yAxis.majorIntervalLength = CPTDecimalFromDouble(50.0);
- axisSet.yAxis.minorTicksPerInterval = 4;
- axisSet.yAxis.orthogonalCoordinateDecimal = CPTDecimalFromDouble(1.0);
- NSArray *exclusionRanges = @[[CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0) length:[low decimalValue]]];
-
- axisSet.yAxis.labelExclusionRanges = exclusionRanges;
-
- [graph reloadData];
-}
-
--(APYahooDataPuller *)datapuller
-{
- return datapuller;
-}
-
--(void)setDatapuller:(APYahooDataPuller *)aDatapuller
-{
- if ( datapuller != aDatapuller ) {
- [aDatapuller retain];
- [datapuller release];
- datapuller = aDatapuller;
- }
-}
-
-@end
diff --git a/examples/AAPLot/Classes/RootViewController.h b/examples/AAPLot/Classes/RootViewController.h
deleted file mode 100644
index 0c7b32904..000000000
--- a/examples/AAPLot/Classes/RootViewController.h
+++ /dev/null
@@ -1,28 +0,0 @@
-//
-// RootViewController.h
-// AAPLot
-//
-// Created by Jonathan Saggau on 6/9/09.
-// Copyright Sounds Broken inc. 2009. All rights reserved.
-//
-
-#import
-
-@class MainViewController;
-@class FlipsideViewController;
-
-@interface RootViewController : UIViewController {
- UIButton *infoButton;
- MainViewController *mainViewController;
- FlipsideViewController *flipsideViewController;
- UINavigationBar *flipsideNavigationBar;
-}
-
-@property (nonatomic, retain) IBOutlet UIButton *infoButton;
-@property (nonatomic, retain) MainViewController *mainViewController;
-@property (nonatomic, retain) UINavigationBar *flipsideNavigationBar;
-@property (nonatomic, retain) FlipsideViewController *flipsideViewController;
-
--(IBAction)toggleView;
-
-@end
diff --git a/examples/AAPLot/Classes/RootViewController.m b/examples/AAPLot/Classes/RootViewController.m
deleted file mode 100644
index eaabfa2c4..000000000
--- a/examples/AAPLot/Classes/RootViewController.m
+++ /dev/null
@@ -1,118 +0,0 @@
-//
-// RootViewController.m
-// AAPLot
-//
-// Created by Jonathan Saggau on 6/9/09.
-// Copyright Sounds Broken inc. 2009. All rights reserved.
-//
-
-#import "FlipsideViewController.h"
-#import "MainViewController.h"
-#import "RootViewController.h"
-
-@implementation RootViewController
-
-@synthesize infoButton;
-@synthesize flipsideNavigationBar;
-@synthesize mainViewController;
-@synthesize flipsideViewController;
-
--(void)viewDidLoad
-{
- [super viewDidLoad];
- MainViewController *viewController = [[MainViewController alloc] initWithNibName:@"MainView" bundle:nil];
- self.mainViewController = viewController;
- [viewController release];
-
- [self.view insertSubview:self.mainViewController.view belowSubview:infoButton];
- self.mainViewController.view.frame = self.view.bounds;
-}
-
--(void)loadFlipsideViewController
-{
- FlipsideViewController *viewController = [[FlipsideViewController alloc] initWithNibName:@"FlipsideView" bundle:nil];
-
- self.flipsideViewController = viewController;
- [viewController release];
-
- self.flipsideViewController.view.frame = self.view.bounds;
-
- // Set up the navigation bar
- UINavigationBar *aNavigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 44.0)];
- aNavigationBar.barStyle = UIBarStyleBlackOpaque;
- self.flipsideNavigationBar = aNavigationBar;
- [aNavigationBar release];
-
- UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(toggleView)];
- UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:@"AAPLot"];
- navigationItem.rightBarButtonItem = buttonItem;
- [flipsideNavigationBar pushNavigationItem:navigationItem animated:NO];
- [navigationItem release];
- [buttonItem release];
-}
-
--(IBAction)toggleView
-{
- /*
- * This method is called when the info or Done button is pressed.
- * It flips the displayed view from the main view to the flipside view and vice-versa.
- */
- if ( flipsideViewController == nil ) {
- [self loadFlipsideViewController];
- }
-
- UIView *mainView = mainViewController.view;
- UIView *flipsideView = flipsideViewController.view;
-
- [UIView beginAnimations:nil context:NULL];
- [UIView setAnimationDuration:1];
- UIViewAnimationTransition transition = ([mainView superview] ? UIViewAnimationTransitionFlipFromRight : UIViewAnimationTransitionFlipFromLeft);
- [UIView setAnimationTransition:transition forView:self.view cache:YES];
-
- if ( [mainView superview] != nil ) {
- [flipsideViewController viewWillAppear:YES];
- [mainViewController viewWillDisappear:YES];
- [mainView removeFromSuperview];
- [infoButton removeFromSuperview];
- [self.view addSubview:flipsideView];
- [self.view insertSubview:flipsideNavigationBar aboveSubview:flipsideView];
- [mainViewController viewDidDisappear:YES];
- [flipsideViewController viewDidAppear:YES];
- }
- else {
- [mainViewController viewWillAppear:YES];
- [flipsideViewController viewWillDisappear:YES];
- [flipsideView removeFromSuperview];
- [flipsideNavigationBar removeFromSuperview];
- [self.view addSubview:mainView];
- [self.view insertSubview:infoButton aboveSubview:mainViewController.view];
- [flipsideViewController viewDidDisappear:YES];
- [mainViewController viewDidAppear:YES];
- }
- [UIView commitAnimations];
-}
-
-/*
- * // Override to allow orientations other than the default portrait orientation.
- * - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
- * // Return YES for supported orientations
- * return (interfaceOrientation == UIInterfaceOrientationPortrait);
- * }
- */
-
--(void)didReceiveMemoryWarning
-{
- [super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview
- // Release anything that's not essential, such as cached data
-}
-
--(void)dealloc
-{
- [infoButton release];
- [flipsideNavigationBar release];
- [mainViewController release];
- [flipsideViewController release];
- [super dealloc];
-}
-
-@end
diff --git a/examples/AAPLot/Default-568h@2x.png b/examples/AAPLot/Default-568h@2x.png
deleted file mode 100644
index 0891b7aab..000000000
Binary files a/examples/AAPLot/Default-568h@2x.png and /dev/null differ
diff --git a/examples/AAPLot/FlipsideView.xib b/examples/AAPLot/FlipsideView.xib
deleted file mode 100644
index d447d248a..000000000
--- a/examples/AAPLot/FlipsideView.xib
+++ /dev/null
@@ -1,146 +0,0 @@
-
-
-
- 528
- 12C60
- 2843
- 1187.34
- 625.00
-
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- 1929
-
-
- YES
- IBProxyObject
- IBUIView
-
-
- YES
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
-
-
- PluginDependencyRecalculationVersion
-
-
-
- YES
-
- IBFilesOwner
- IBCocoaTouchFramework
-
-
- IBFirstResponder
- IBCocoaTouchFramework
-
-
-
- 274
- {{0, 20}, {320, 460}}
-
-
- 3
- MC4yNQA
-
- 2
-
-
- NO
-
- 2
-
- IBCocoaTouchFramework
-
-
-
-
- YES
-
-
- view
-
-
-
- 41
-
-
-
-
- YES
-
- 0
-
- YES
-
-
-
-
-
- -1
-
-
- File's Owner
-
-
- -2
-
-
-
-
- 40
-
-
-
-
-
-
- YES
-
- YES
- -1.CustomClassName
- -1.IBPluginDependency
- -2.CustomClassName
- -2.IBPluginDependency
- 40.CustomClassName
- 40.IBPluginDependency
-
-
- YES
- FlipsideViewController
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- UIResponder
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- FlipsideView
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
-
-
-
- YES
-
-
-
-
-
- YES
-
-
-
-
- 41
-
-
- 0
- IBCocoaTouchFramework
-
- com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
-
-
-
- com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
-
-
- YES
- 3
- 1929
-
-
diff --git a/examples/AAPLot/MainView.xib b/examples/AAPLot/MainView.xib
deleted file mode 100644
index a06a9a9fa..000000000
--- a/examples/AAPLot/MainView.xib
+++ /dev/null
@@ -1,186 +0,0 @@
-
-
-
- 528
- 12C60
- 2843
- 1187.34
- 625.00
-
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- 1929
-
-
- YES
- IBProxyObject
- IBUIView
-
-
- YES
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
-
-
- PluginDependencyRecalculationVersion
-
-
-
- YES
-
- IBFilesOwner
- IBCocoaTouchFramework
-
-
- IBFirstResponder
- IBCocoaTouchFramework
-
-
-
- 274
-
- YES
-
-
- 274
- {320, 460}
-
-
- 3
- MQA
-
- 2
-
-
- NO
- IBCocoaTouchFramework
-
-
- {{0, 20}, {320, 460}}
-
-
- 3
- MC4yNQA
-
-
- NO
-
- IBCocoaTouchFramework
-
-
-
-
- YES
-
-
- view
-
-
-
- 41
-
-
-
- graphHost
-
-
-
- 49
-
-
-
-
- YES
-
- 0
-
- YES
-
-
-
-
-
- -1
-
-
- File's Owner
-
-
- -2
-
-
-
-
- 34
-
-
- YES
-
-
-
-
-
- 38
-
-
- YES
-
-
-
-
-
-
- YES
-
- YES
- -1.CustomClassName
- -1.IBPluginDependency
- -2.CustomClassName
- -2.IBPluginDependency
- 34.IBPluginDependency
- 38.CustomClassName
- 38.IBPluginDependency
-
-
- YES
- MainViewController
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- UIResponder
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- CPTGraphHostingView
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
-
-
-
- YES
-
-
-
-
-
- YES
-
-
-
-
- 49
-
-
- 0
- IBCocoaTouchFramework
-
- com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
-
-
-
- com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
-
-
-
- com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
-
-
- YES
- 3
- 1929
-
-
diff --git a/examples/AAPLot/MainWindow.xib b/examples/AAPLot/MainWindow.xib
deleted file mode 100644
index 2fa859d22..000000000
--- a/examples/AAPLot/MainWindow.xib
+++ /dev/null
@@ -1,378 +0,0 @@
-
-
-
- 528
- 12C60
- 2843
- 1187.34
- 625.00
-
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- 1929
-
-
- YES
- IBProxyObject
- IBUIButton
- IBUICustomObject
- IBUIView
- IBUIViewController
- IBUIWindow
-
-
- YES
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
-
-
- PluginDependencyRecalculationVersion
-
-
-
- YES
-
- IBFilesOwner
- IBCocoaTouchFramework
-
-
- IBFirstResponder
- IBCocoaTouchFramework
-
-
- IBCocoaTouchFramework
-
-
-
- 1316
-
- {320, 480}
-
-
-
- 1
- MCAwIDAAA
- darkTextColor
-
- NO
- YES
-
- IBCocoaTouchFramework
- YES
-
-
-
-
- 274
-
- YES
-
-
- 265
- {{274, 403}, {18, 19}}
-
-
-
- NO
- NO
- IBCocoaTouchFramework
- 0
- 0
- 3
- YES
-
- 1
- MSAxIDEAA
-
-
- 1
- MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA
-
-
- 3
- MAA
-
-
- Helvetica-Bold
- Helvetica
- 2
- 15
-
-
- Helvetica-Bold
- 15
- 16
-
-
-
- {{0, 20}, {320, 460}}
-
-
-
-
- 3
- MQA
-
- 2
-
-
- NO
- IBCocoaTouchFramework
-
-
-
- 1
- 1
-
- IBCocoaTouchFramework
- NO
-
-
-
-
- YES
-
-
- delegate
-
-
-
- 4
-
-
-
- rootViewController
-
-
-
- 10
-
-
-
- window
-
-
-
- 22
-
-
-
- infoButton
-
-
-
- 20
-
-
-
- toggleView
-
-
- 7
-
- 21
-
-
-
-
- YES
-
- 0
-
- YES
-
-
-
-
-
- 2
-
-
- YES
-
-
-
-
- -1
-
-
- File's Owner
-
-
- 3
-
-
-
-
- 8
-
-
- YES
-
-
-
-
-
- -2
-
-
-
-
- 18
-
-
- YES
-
-
-
-
-
- 19
-
-
-
-
-
-
- YES
-
- YES
- -1.CustomClassName
- -1.IBPluginDependency
- -2.CustomClassName
- -2.IBPluginDependency
- 18.IBPluginDependency
- 19.IBPluginDependency
- 2.IBAttributePlaceholdersKey
- 2.IBPluginDependency
- 3.CustomClassName
- 3.IBPluginDependency
- 8.CustomClassName
- 8.IBPluginDependency
-
-
- YES
- UIApplication
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- UIResponder
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
-
- YES
-
-
-
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- AAPLotAppDelegate
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- RootViewController
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
-
-
-
- YES
-
-
-
-
-
- YES
-
-
-
-
- 22
-
-
-
- YES
-
- AAPLotAppDelegate
- NSObject
-
- YES
-
- YES
- rootViewController
- window
-
-
- YES
- RootViewController
- UIWindow
-
-
-
- YES
-
- YES
- rootViewController
- window
-
-
- YES
-
- rootViewController
- RootViewController
-
-
- window
- UIWindow
-
-
-
-
- IBProjectSource
- ./Classes/AAPLotAppDelegate.h
-
-
-
- RootViewController
- UIViewController
-
- toggleView
- id
-
-
- toggleView
-
- toggleView
- id
-
-
-
- infoButton
- UIButton
-
-
- infoButton
-
- infoButton
- UIButton
-
-
-
- IBProjectSource
- ./Classes/RootViewController.h
-
-
-
-
- 0
- IBCocoaTouchFramework
-
- com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
-
-
-
- com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
-
-
-
- com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
-
-
- YES
- 3
- 1929
-
-
diff --git a/examples/AAPLot/NSDateFormatterExtensions.h b/examples/AAPLot/NSDateFormatterExtensions.h
deleted file mode 100644
index 2deb1696c..000000000
--- a/examples/AAPLot/NSDateFormatterExtensions.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#import
-
-@interface NSDateFormatter(APExtensions)
-
-+(NSDateFormatter *)csvDateFormatter;
-
-@end
diff --git a/examples/AAPLot/NSDateFormatterExtensions.m b/examples/AAPLot/NSDateFormatterExtensions.m
deleted file mode 100644
index be68d8efe..000000000
--- a/examples/AAPLot/NSDateFormatterExtensions.m
+++ /dev/null
@@ -1,16 +0,0 @@
-#import "NSDateFormatterExtensions.h"
-
-@implementation NSDateFormatter(APExtensions)
-
-+(NSDateFormatter *)csvDateFormatter
-{
- static NSDateFormatter *df = nil;
-
- if ( !df ) {
- df = [[NSDateFormatter alloc] init];
- [df setDateFormat:@"yyyy-MM-dd"];
- }
- return df;
-}
-
-@end
diff --git a/examples/AAPLot/main.m b/examples/AAPLot/main.m
deleted file mode 100644
index 387d644c6..000000000
--- a/examples/AAPLot/main.m
+++ /dev/null
@@ -1,10 +0,0 @@
-#import
-
-int main(int argc, char *argv[])
-{
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- int retVal = UIApplicationMain(argc, argv, nil, nil);
-
- [pool release];
- return retVal;
-}
diff --git a/examples/CPTTestApp-iPhone/Info.plist b/examples/CPTTestApp-iPad/Base.lproj/CPTTestApp_iPad-Info.plist
similarity index 83%
rename from examples/CPTTestApp-iPhone/Info.plist
rename to examples/CPTTestApp-iPad/Base.lproj/CPTTestApp_iPad-Info.plist
index 89b957158..65b56f8c5 100644
--- a/examples/CPTTestApp-iPhone/Info.plist
+++ b/examples/CPTTestApp-iPad/Base.lproj/CPTTestApp_iPad-Info.plist
@@ -8,16 +8,18 @@
${PRODUCT_NAME}CFBundleExecutable${EXECUTABLE_NAME}
- CFBundleIconFile
- CorePlotIcon
+ CFBundleIcons
+ CFBundleIdentifier
- org.CorePlot.CPTTestApp
+ $(PRODUCT_BUNDLE_IDENTIFIER)CFBundleInfoDictionaryVersion6.0CFBundleName${PRODUCT_NAME}CFBundlePackageTypeAPPL
+ CFBundleShortVersionString
+ 1.0CFBundleSignature????CFBundleVersion
@@ -26,6 +28,8 @@
NSMainNibFileMainWindow
+ UILaunchStoryboardName
+ Launch ScreenUISupportedInterfaceOrientationsUIInterfaceOrientationPortrait
diff --git a/examples/CPTTestApp-iPad/Base.lproj/CPTTestApp_iPadViewController.xib b/examples/CPTTestApp-iPad/Base.lproj/CPTTestApp_iPadViewController.xib
new file mode 100644
index 000000000..03311ea1e
--- /dev/null
+++ b/examples/CPTTestApp-iPad/Base.lproj/CPTTestApp_iPadViewController.xib
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/CPTTestApp-iPad/Base.lproj/Launch Screen.xib b/examples/CPTTestApp-iPad/Base.lproj/Launch Screen.xib
new file mode 100644
index 000000000..84090add7
--- /dev/null
+++ b/examples/CPTTestApp-iPad/Base.lproj/Launch Screen.xib
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/CPTTestApp-iPad/Base.lproj/MainWindow.xib b/examples/CPTTestApp-iPad/Base.lproj/MainWindow.xib
new file mode 100644
index 000000000..9e25633e1
--- /dev/null
+++ b/examples/CPTTestApp-iPad/Base.lproj/MainWindow.xib
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/CPTTestApp-iPad/CPTTestApp-iPad.xcodeproj/project.pbxproj b/examples/CPTTestApp-iPad/CPTTestApp-iPad.xcodeproj/project.pbxproj
index 5f69852a2..afd032e09 100644
--- a/examples/CPTTestApp-iPad/CPTTestApp-iPad.xcodeproj/project.pbxproj
+++ b/examples/CPTTestApp-iPad/CPTTestApp-iPad.xcodeproj/project.pbxproj
@@ -3,7 +3,7 @@
archiveVersion = 1;
classes = {
};
- objectVersion = 46;
+ objectVersion = 47;
objects = {
/* Begin PBXBuildFile section */
@@ -12,31 +12,74 @@
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 */; };
- BC65753F11653FC60008F594 /* libCorePlot-CocoaTouch.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BC65753611653F8A0008F594 /* libCorePlot-CocoaTouch.a */; };
BC65758F116549890008F594 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC65758E116549890008F594 /* QuartzCore.framework */; };
- C3CD283917DE9C59008EED1E /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3CD283817DE9C59008EED1E /* Accelerate.framework */; };
+ 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 */; };
C3F47B6F17BF99DE0075181F /* CorePlotIcon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C3F47B6D17BF99DE0075181F /* CorePlotIcon@2x.png */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
- BC65753511653F8A0008F594 /* PBXContainerItemProxy */ = {
+ C31D01E01D10F4FF008C1EF2 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
- containerPortal = BC65753011653F8A0008F594 /* CorePlot-CocoaTouch.xcodeproj */;
+ containerPortal = C3D414951A7D843800B6F5D6 /* CorePlot.xcodeproj */;
proxyType = 2;
- remoteGlobalIDString = BC9B83470FB8A0A40035D8DA;
- remoteInfo = "CorePlot-CocoaTouch";
+ remoteGlobalIDString = C37EA6921BC83F2A0091C8F7;
+ remoteInfo = "CorePlot tvOS";
+ };
+ C31D01E21D10F4FF008C1EF2 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = C3D414951A7D843800B6F5D6 /* CorePlot.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = C37EA6B71BC83F2D0091C8F7;
+ remoteInfo = "UnitTests tvOS";
};
- BC65753711653FA50008F594 /* PBXContainerItemProxy */ = {
+ C3D414A11A7D843800B6F5D6 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
- containerPortal = BC65753011653F8A0008F594 /* CorePlot-CocoaTouch.xcodeproj */;
- proxyType = 1;
- remoteGlobalIDString = BC9B83460FB8A0A40035D8DA;
+ containerPortal = C3D414951A7D843800B6F5D6 /* CorePlot.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 8DC2EF5B0486A6940098B216;
+ remoteInfo = CorePlot;
+ };
+ C3D414A31A7D843800B6F5D6 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = C3D414951A7D843800B6F5D6 /* CorePlot.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 0730F600109492D800E95162;
+ remoteInfo = UnitTests;
+ };
+ C3D414A51A7D843800B6F5D6 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = C3D414951A7D843800B6F5D6 /* CorePlot.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = C38A09781A46185200D45436;
+ remoteInfo = CorePlot_iOS;
+ };
+ C3D414A71A7D843800B6F5D6 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = C3D414951A7D843800B6F5D6 /* CorePlot.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = C38A09821A46185300D45436;
+ remoteInfo = CorePlot_iOSTests;
+ };
+ C3D414A91A7D843800B6F5D6 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = C3D414951A7D843800B6F5D6 /* CorePlot.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = C38A09BA1A4619A900D45436;
remoteInfo = "CorePlot-CocoaTouch";
};
+ C3D414AB1A7D843800B6F5D6 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = C3D414951A7D843800B6F5D6 /* CorePlot.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = C38A09C41A4619A900D45436;
+ remoteInfo = "CorePlot-CocoaTouchTests";
+ };
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
@@ -46,16 +89,19 @@
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; path = CPTTestApp_iPadViewController.h; sourceTree = ""; };
- 28D7ACF70DDB3853001CB0EB /* CPTTestApp_iPadViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CPTTestApp_iPadViewController.m; 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 = ""; };
- BC65753011653F8A0008F594 /* CorePlot-CocoaTouch.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "CorePlot-CocoaTouch.xcodeproj"; path = "../../framework/CorePlot-CocoaTouch.xcodeproj"; sourceTree = SOURCE_ROOT; };
BC65758E116549890008F594 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
+ 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 = ""; };
C3F47B6D17BF99DE0075181F /* CorePlotIcon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "CorePlotIcon@2x.png"; sourceTree = ""; };
/* End PBXFileReference section */
@@ -68,9 +114,8 @@
1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */,
1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */,
288765A50DF7441C002DB57D /* CoreGraphics.framework in Frameworks */,
- BC65753F11653FC60008F594 /* libCorePlot-CocoaTouch.a in Frameworks */,
BC65758F116549890008F594 /* QuartzCore.framework in Frameworks */,
- C3CD283917DE9C59008EED1E /* Accelerate.framework in Frameworks */,
+ C3D414AD1A7D844400B6F5D6 /* libCorePlot-CocoaTouch.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -99,7 +144,7 @@
29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
isa = PBXGroup;
children = (
- BC65753011653F8A0008F594 /* CorePlot-CocoaTouch.xcodeproj */,
+ C3D414951A7D843800B6F5D6 /* CorePlot.xcodeproj */,
080E96DDFE201D6D7F000001 /* Classes */,
29B97315FDCFA39411CA2CEA /* Other Sources */,
29B97317FDCFA39411CA2CEA /* Resources */,
@@ -117,6 +162,7 @@
children = (
32CA4F630368D1EE00C91783 /* CPTTestApp_iPad_Prefix.pch */,
29B97316FDCFA39411CA2CEA /* main.m */,
+ C36E7CC519DE1C1F00EDEACB /* CorePlotWarnings.xcconfig */,
);
name = "Other Sources";
sourceTree = "";
@@ -124,11 +170,13 @@
29B97317FDCFA39411CA2CEA /* Resources */ = {
isa = PBXGroup;
children = (
- 2899E5210DE3E06400AC0155 /* CPTTestApp_iPadViewController.xib */,
- 28AD733E0D9D9553002E5188 /* MainWindow.xib */,
+ C3D3935F19FD670400148319 /* Images.xcassets */,
+ 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 = "";
@@ -145,10 +193,17 @@
name = Frameworks;
sourceTree = "";
};
- BC65753111653F8A0008F594 /* Products */ = {
+ C3D414961A7D843800B6F5D6 /* Products */ = {
isa = PBXGroup;
children = (
- BC65753611653F8A0008F594 /* libCorePlot-CocoaTouch.a */,
+ C3D414A21A7D843800B6F5D6 /* CorePlot.framework */,
+ C3D414A41A7D843800B6F5D6 /* UnitTests.xctest */,
+ C3D414A61A7D843800B6F5D6 /* CorePlot.framework */,
+ C3D414A81A7D843800B6F5D6 /* UnitTests iOS.xctest */,
+ C3D414AA1A7D843800B6F5D6 /* libCorePlot-CocoaTouch.a */,
+ C3D414AC1A7D843800B6F5D6 /* CorePlot-CocoaTouchTests.xctest */,
+ C31D01E11D10F4FF008C1EF2 /* CorePlot.framework */,
+ C31D01E31D10F4FF008C1EF2 /* UnitTests tvOS.xctest */,
);
name = Products;
sourceTree = "";
@@ -167,7 +222,6 @@
buildRules = (
);
dependencies = (
- BC65753811653FA50008F594 /* PBXTargetDependency */,
);
name = "CPTTestApp-iPad";
productName = "CPTTestApp-iPad";
@@ -180,24 +234,30 @@
29B97313FDCFA39411CA2CEA /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 0500;
+ LastUpgradeCheck = 0900;
+ TargetAttributes = {
+ 1D6058900D05DD3D006BFB54 = {
+ DevelopmentTeam = 28ZA45DE7D;
+ };
+ };
};
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "CPTTestApp-iPad" */;
- compatibilityVersion = "Xcode 3.2";
- developmentRegion = English;
+ compatibilityVersion = "Xcode 6.3";
+ developmentRegion = en;
hasScannedForEncodings = 1;
knownRegions = (
- English,
- Japanese,
- French,
- German,
+ Base,
+ ja,
+ en,
+ de,
+ fr,
);
mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
projectDirPath = "";
projectReferences = (
{
- ProductGroup = BC65753111653F8A0008F594 /* Products */;
- ProjectRef = BC65753011653F8A0008F594 /* CorePlot-CocoaTouch.xcodeproj */;
+ ProductGroup = C3D414961A7D843800B6F5D6 /* Products */;
+ ProjectRef = C3D414951A7D843800B6F5D6 /* CorePlot.xcodeproj */;
},
);
projectRoot = "";
@@ -208,11 +268,60 @@
/* End PBXProject section */
/* Begin PBXReferenceProxy section */
- BC65753611653F8A0008F594 /* libCorePlot-CocoaTouch.a */ = {
+ C31D01E11D10F4FF008C1EF2 /* CorePlot.framework */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.framework;
+ path = CorePlot.framework;
+ remoteRef = C31D01E01D10F4FF008C1EF2 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ C31D01E31D10F4FF008C1EF2 /* UnitTests tvOS.xctest */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = "UnitTests tvOS.xctest";
+ remoteRef = C31D01E21D10F4FF008C1EF2 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ C3D414A21A7D843800B6F5D6 /* CorePlot.framework */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.framework;
+ path = CorePlot.framework;
+ remoteRef = C3D414A11A7D843800B6F5D6 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ C3D414A41A7D843800B6F5D6 /* UnitTests.xctest */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = UnitTests.xctest;
+ remoteRef = C3D414A31A7D843800B6F5D6 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ C3D414A61A7D843800B6F5D6 /* CorePlot.framework */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.framework;
+ path = CorePlot.framework;
+ remoteRef = C3D414A51A7D843800B6F5D6 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ C3D414A81A7D843800B6F5D6 /* UnitTests iOS.xctest */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = "UnitTests iOS.xctest";
+ remoteRef = C3D414A71A7D843800B6F5D6 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ C3D414AA1A7D843800B6F5D6 /* libCorePlot-CocoaTouch.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libCorePlot-CocoaTouch.a";
- remoteRef = BC65753511653F8A0008F594 /* PBXContainerItemProxy */;
+ remoteRef = C3D414A91A7D843800B6F5D6 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ C3D414AC1A7D843800B6F5D6 /* CorePlot-CocoaTouchTests.xctest */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = "CorePlot-CocoaTouchTests.xctest";
+ remoteRef = C3D414AB1A7D843800B6F5D6 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
/* End PBXReferenceProxy section */
@@ -222,10 +331,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 */,
+ C3D0A20920E019D400BA2921 /* Launch Screen.xib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -244,41 +355,81 @@
};
/* End PBXSourcesBuildPhase section */
-/* Begin PBXTargetDependency section */
- BC65753811653FA50008F594 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- name = "CorePlot-CocoaTouch";
- targetProxy = BC65753711653FA50008F594 /* PBXContainerItemProxy */;
+/* Begin PBXVariantGroup section */
+ C37A40E220E0320500C4FF48 /* CPTTestApp_iPad-Info.plist */ = {
+ isa = PBXVariantGroup;
+ children = (
+ C37A40E120E0320500C4FF48 /* Base */,
+ );
+ name = "CPTTestApp_iPad-Info.plist";
+ sourceTree = "";
};
-/* End PBXTargetDependency section */
+ 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;
+ baseConfigurationReference = C36E7CC519DE1C1F00EDEACB /* CorePlotWarnings.xcconfig */;
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=*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
+ DEVELOPMENT_TEAM = 28ZA45DE7D;
GCC_DYNAMIC_NO_PIC = NO;
- GCC_OPTIMIZATION_LEVEL = 0;
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";
};
name = Debug;
};
1D6058950D05DD3E006BFB54 /* Release */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = C36E7CC519DE1C1F00EDEACB /* CorePlotWarnings.xcconfig */;
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=*]" = "iPhone Distribution";
COPY_PHASE_STRIP = YES;
+ DEVELOPMENT_TEAM = 28ZA45DE7D;
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;
};
@@ -286,13 +437,16 @@
};
C01FCF4F08A954540054247B /* Debug */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = C36E7CC519DE1C1F00EDEACB /* CorePlotWarnings.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
+ ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = c99;
- GCC_WARN_ABOUT_RETURN_TYPE = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
HEADER_SEARCH_PATHS = "";
- IPHONEOS_DEPLOYMENT_TARGET = 5.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
ONLY_ACTIVE_ARCH = YES;
OTHER_LDFLAGS = (
"-ObjC",
@@ -301,19 +455,21 @@
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;
};
C01FCF5008A954540054247B /* Release */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = C36E7CC519DE1C1F00EDEACB /* CorePlotWarnings.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
GCC_C_LANGUAGE_STANDARD = c99;
- GCC_WARN_ABOUT_RETURN_TYPE = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = s;
HEADER_SEARCH_PATHS = "";
- IPHONEOS_DEPLOYMENT_TARGET = 5.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
OTHER_LDFLAGS = (
"-ObjC",
@@ -322,7 +478,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-iPad/CPTTestApp-iPad.xcodeproj/xcshareddata/xcschemes/CPTTestApp-iPad.xcscheme b/examples/CPTTestApp-iPad/CPTTestApp-iPad.xcodeproj/xcshareddata/xcschemes/CPTTestApp-iPad.xcscheme
new file mode 100644
index 000000000..8ee44490d
--- /dev/null
+++ b/examples/CPTTestApp-iPad/CPTTestApp-iPad.xcodeproj/xcshareddata/xcschemes/CPTTestApp-iPad.xcscheme
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Contents.json b/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 000000000..80abb1d7e
--- /dev/null
+++ b/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,90 @@
+{
+ "images" : [
+ {
+ "idiom" : "ipad",
+ "size" : "20x20",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "20x20",
+ "scale" : "2x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "Icon-Small.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "Icon-Small@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "Icon-Spotlight-40.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "Icon-Spotlight-40@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "50x50",
+ "idiom" : "ipad",
+ "filename" : "Icon-Small-50.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "50x50",
+ "idiom" : "ipad",
+ "filename" : "Icon-Small-50@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "72x72",
+ "idiom" : "ipad",
+ "filename" : "Icon-72.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "72x72",
+ "idiom" : "ipad",
+ "filename" : "Icon-72@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "Icon-76.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "Icon-76@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "83.5x83.5",
+ "idiom" : "ipad",
+ "filename" : "Icon-iPadPro@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "1024x1024",
+ "idiom" : "ios-marketing",
+ "filename" : "iTunesArtwork.png",
+ "scale" : "1x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-72.png b/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-72.png
new file mode 100644
index 000000000..ddf49ea5a
Binary files /dev/null and b/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-72.png differ
diff --git a/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-72@2x.png b/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-72@2x.png
new file mode 100644
index 000000000..9550ada82
Binary files /dev/null and b/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-72@2x.png differ
diff --git a/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-76.png b/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-76.png
new file mode 100644
index 000000000..74a3db7f5
Binary files /dev/null and b/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-76.png differ
diff --git a/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png b/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png
new file mode 100644
index 000000000..e8dded879
Binary files /dev/null and b/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png differ
diff --git a/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-Small-50.png b/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-Small-50.png
new file mode 100644
index 000000000..9c85f21e2
Binary files /dev/null and b/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-Small-50.png differ
diff --git a/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-Small-50@2x.png b/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-Small-50@2x.png
new file mode 100644
index 000000000..6f62eea5a
Binary files /dev/null and b/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-Small-50@2x.png differ
diff --git a/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-Small.png b/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-Small.png
new file mode 100644
index 000000000..5104b1d94
Binary files /dev/null and b/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-Small.png differ
diff --git a/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png b/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png
new file mode 100644
index 000000000..7f872ef97
Binary files /dev/null and b/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png differ
diff --git a/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40.png b/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40.png
new file mode 100644
index 000000000..4592c0a2d
Binary files /dev/null and b/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40.png differ
diff --git a/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40@2x.png b/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40@2x.png
new file mode 100644
index 000000000..87672586c
Binary files /dev/null and b/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40@2x.png differ
diff --git a/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-iPadPro@2x.png b/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-iPadPro@2x.png
new file mode 100644
index 000000000..594df78ef
Binary files /dev/null and b/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/Icon-iPadPro@2x.png differ
diff --git a/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/iTunesArtwork.png b/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/iTunesArtwork.png
new file mode 100644
index 000000000..969aff8dd
Binary files /dev/null and b/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/AppIcon.appiconset/iTunesArtwork.png differ
diff --git a/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/LaunchImage.launchimage/Contents.json b/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/LaunchImage.launchimage/Contents.json
new file mode 100644
index 000000000..a80439b0e
--- /dev/null
+++ b/examples/CPTTestApp-iPad/CPTTestApp-iPad/Images.xcassets/LaunchImage.launchimage/Contents.json
@@ -0,0 +1,60 @@
+{
+ "images" : [
+ {
+ "orientation" : "portrait",
+ "idiom" : "ipad",
+ "extent" : "to-status-bar",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "ipad",
+ "extent" : "to-status-bar",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "landscape",
+ "idiom" : "ipad",
+ "extent" : "to-status-bar",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "landscape",
+ "idiom" : "ipad",
+ "extent" : "to-status-bar",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "ipad",
+ "minimum-system-version" : "7.0",
+ "extent" : "full-screen",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "ipad",
+ "minimum-system-version" : "7.0",
+ "extent" : "full-screen",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "landscape",
+ "idiom" : "ipad",
+ "minimum-system-version" : "7.0",
+ "extent" : "full-screen",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "landscape",
+ "idiom" : "ipad",
+ "minimum-system-version" : "7.0",
+ "extent" : "full-screen",
+ "scale" : "2x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/examples/CPTTestApp-iPad/CPTTestApp_iPad-Info.plist b/examples/CPTTestApp-iPad/CPTTestApp_iPad-Info.plist
deleted file mode 100644
index 7eec71eb8..000000000
--- a/examples/CPTTestApp-iPad/CPTTestApp_iPad-Info.plist
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- English
- CFBundleDisplayName
- ${PRODUCT_NAME}
- CFBundleExecutable
- ${EXECUTABLE_NAME}
- CFBundleIconFile
- CorePlotIcon
- CFBundleIdentifier
- com.yourcompany.${PRODUCT_NAME:rfc1034identifier}
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- ${PRODUCT_NAME}
- CFBundlePackageType
- APPL
- CFBundleSignature
- ????
- CFBundleVersion
- 1.0
- LSRequiresIPhoneOS
-
- NSMainNibFile
- MainWindow
- UISupportedInterfaceOrientations
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
-
-
diff --git a/examples/CPTTestApp-iPad/CPTTestApp_iPadViewController.xib b/examples/CPTTestApp-iPad/CPTTestApp_iPadViewController.xib
deleted file mode 100644
index e2254d8ae..000000000
--- a/examples/CPTTestApp-iPad/CPTTestApp_iPadViewController.xib
+++ /dev/null
@@ -1,263 +0,0 @@
-
-
-
- 1536
- 12C60
- 2843
- 1187.34
- 625.00
-
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- 1929
-
-
- YES
- IBProxyObject
- IBUIToolbar
- IBUIView
-
-
- YES
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
-
-
- PluginDependencyRecalculationVersion
-
-
-
- YES
-
- IBFilesOwner
- IBIPadFramework
-
-
- IBFirstResponder
- IBIPadFramework
-
-
-
- 274
-
- YES
-
-
- 292
- {{20, 55}, {728, 556}}
-
-
- 3
- MQA
-
- IBIPadFramework
-
-
-
- 292
- {{408, 644}, {340, 340}}
-
-
- 3
- MQA
-
- 2
-
-
- IBIPadFramework
-
-
-
- 292
- {{20, 644}, {340, 340}}
-
-
- 3
- MQA
-
-
- IBIPadFramework
-
-
-
- 290
- {768, 44}
-
- NO
- NO
- IBIPadFramework
- 1
-
- YES
-
-
-
- {{0, 20}, {768, 1004}}
-
-
- 1
- MCAwIDAAA
- darkTextColor
-
-
- 2
-
- IBIPadFramework
-
-
-
-
- YES
-
-
- view
-
-
-
- 3
-
-
-
- barChartView
-
-
-
- 9
-
-
-
- pieChartView
-
-
-
- 10
-
-
-
- scatterPlotView
-
-
-
- 12
-
-
-
-
- YES
-
- 0
-
- YES
-
-
-
-
-
- -1
-
-
- File's Owner
-
-
- -2
-
-
-
-
- 2
-
-
- YES
-
-
-
-
-
-
-
-
- 4
-
-
-
-
- 5
-
-
-
-
- 6
-
-
-
-
- 7
-
-
- YES
-
-
-
-
-
-
- YES
-
- YES
- -1.CustomClassName
- -1.IBPluginDependency
- -2.CustomClassName
- -2.IBPluginDependency
- 2.IBPluginDependency
- 4.CustomClassName
- 4.IBPluginDependency
- 5.CustomClassName
- 5.IBPluginDependency
- 6.CustomClassName
- 6.IBPluginDependency
- 7.IBPluginDependency
-
-
- YES
- CPTTestApp_iPadViewController
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- UIResponder
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- CPTGraphHostingView
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- CPTGraphHostingView
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- CPTGraphHostingView
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
-
-
-
- YES
-
-
-
-
-
- YES
-
-
-
-
- 12
-
-
- 0
- IBIPadFramework
-
- com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
-
-
-
- com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
-
-
- YES
- 3
- 1929
-
-
diff --git a/examples/CPTTestApp-iPad/Classes/CPTTestApp_iPadAppDelegate.h b/examples/CPTTestApp-iPad/Classes/CPTTestApp_iPadAppDelegate.h
index 6c8ed9558..728b16a7b 100644
--- a/examples/CPTTestApp-iPad/Classes/CPTTestApp_iPadAppDelegate.h
+++ b/examples/CPTTestApp-iPad/Classes/CPTTestApp_iPadAppDelegate.h
@@ -1,20 +1,17 @@
//
-// CPTTestApp_iPadAppDelegate.h
-// CPTTestApp-iPad
+// CPTTestApp_iPadAppDelegate.h
+// CPTTestApp-iPad
//
-// Created by Brad Larson on 4/1/2010.
+// Created by Brad Larson on 4/1/2010.
//
#import
@class CPTTestApp_iPadViewController;
-@interface CPTTestApp_iPadAppDelegate : NSObject {
- UIWindow *window;
- CPTTestApp_iPadViewController *viewController;
-}
+@interface CPTTestApp_iPadAppDelegate : NSObject
-@property (nonatomic, strong) IBOutlet UIWindow *window;
-@property (nonatomic, strong) IBOutlet CPTTestApp_iPadViewController *viewController;
+@property (nonatomic, readwrite, strong, nullable) IBOutlet UIWindow *window;
+@property (nonatomic, readwrite, strong, nullable) IBOutlet CPTTestApp_iPadViewController *viewController;
@end
diff --git a/examples/CPTTestApp-iPad/Classes/CPTTestApp_iPadAppDelegate.m b/examples/CPTTestApp-iPad/Classes/CPTTestApp_iPadAppDelegate.m
index 422ed79bf..b3c3e65b8 100644
--- a/examples/CPTTestApp-iPad/Classes/CPTTestApp_iPadAppDelegate.m
+++ b/examples/CPTTestApp-iPad/Classes/CPTTestApp_iPadAppDelegate.m
@@ -1,8 +1,8 @@
//
-// CPTTestApp_iPadAppDelegate.m
-// CPTTestApp-iPad
+// CPTTestApp_iPadAppDelegate.m
+// CPTTestApp-iPad
//
-// Created by Brad Larson on 4/1/2010.
+// Created by Brad Larson on 4/1/2010.
//
#import "CPTTestApp_iPadAppDelegate.h"
@@ -13,14 +13,9 @@ @implementation CPTTestApp_iPadAppDelegate
@synthesize window;
@synthesize viewController;
--(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
+-(BOOL)application:(nonnull UIApplication *__unused)application didFinishLaunchingWithOptions:(nullable CPTDictionary *__unused)launchOptions
{
- if ( [self.window respondsToSelector:@selector(setRootViewController:)] ) {
- self.window.rootViewController = self.viewController;
- }
- else {
- [self.window addSubview:self.viewController.view];
- }
+ self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
diff --git a/examples/CPTTestApp-iPad/Classes/CPTTestApp_iPadViewController.h b/examples/CPTTestApp-iPad/Classes/CPTTestApp_iPadViewController.h
index 96b350491..120d9fbf3 100644
--- a/examples/CPTTestApp-iPad/Classes/CPTTestApp_iPadViewController.h
+++ b/examples/CPTTestApp-iPad/Classes/CPTTestApp_iPadViewController.h
@@ -1,24 +1,20 @@
//
-// CPTTestApp_iPadViewController.h
-// CPTTestApp-iPad
+// CPTTestApp_iPadViewController.h
+// CPTTestApp-iPad
//
-// Created by Brad Larson on 4/1/2010.
+// Created by Brad Larson on 4/1/2010.
//
#import "CorePlot-CocoaTouch.h"
#import
-@interface CPTTestApp_iPadViewController : UIViewController
-{
- IBOutlet CPTGraphHostingView *scatterPlotView, *barChartView, *pieChartView;
- CPTXYGraph *graph, *barChart, *pieGraph;
- CPTPieChart *piePlot;
- BOOL piePlotIsRotating;
+@interface CPTTestApp_iPadViewController : UIViewController
- NSMutableArray *dataForChart, *dataForPlot;
-}
-
-@property (readwrite, strong, nonatomic) NSMutableArray *dataForChart, *dataForPlot;
+@property (nonatomic, readwrite, strong, nonnull) CPTNumberArray *dataForChart;
+@property (nonatomic, readwrite, strong, nonnull) NSArray *dataForPlot;
// Plot construction methods
-(void)constructScatterPlot;
diff --git a/examples/CPTTestApp-iPad/Classes/CPTTestApp_iPadViewController.m b/examples/CPTTestApp-iPad/Classes/CPTTestApp_iPadViewController.m
index dae47234e..4312843d4 100644
--- a/examples/CPTTestApp-iPad/Classes/CPTTestApp_iPadViewController.m
+++ b/examples/CPTTestApp-iPad/Classes/CPTTestApp_iPadViewController.m
@@ -1,16 +1,45 @@
//
-// CPTTestApp_iPadViewController.m
-// CPTTestApp-iPad
+// CPTTestApp_iPadViewController.m
+// CPTTestApp-iPad
//
-// Created by Brad Larson on 4/1/2010.
+// Created by Brad Larson on 4/1/2010.
//
#import "CPTTestApp_iPadViewController.h"
#import
+@interface CPTTestApp_iPadViewController()
+
+@property (nonatomic, readwrite, strong, nullable) IBOutlet CPTGraphHostingView *scatterPlotView;
+@property (nonatomic, readwrite, strong, nullable) IBOutlet CPTGraphHostingView *barChartView;
+@property (nonatomic, readwrite, strong, nullable) IBOutlet CPTGraphHostingView *pieChartView;
+
+@property (nonatomic, readwrite, strong, nonnull) CPTXYGraph *graph;
+@property (nonatomic, readwrite, strong, nonnull) CPTXYGraph *barChart;
+@property (nonatomic, readwrite, strong, nonnull) CPTXYGraph *pieGraph;
+
+@property (nonatomic, readwrite, strong, nonnull) CPTPieChart *piePlot;
+@property (nonatomic, readwrite, assign) BOOL piePlotIsRotating;
+
+@end
+
+#pragma mark -
+
@implementation CPTTestApp_iPadViewController
-@synthesize dataForChart, dataForPlot;
+@synthesize dataForChart;
+@synthesize dataForPlot;
+
+@synthesize scatterPlotView;
+@synthesize barChartView;
+@synthesize pieChartView;
+
+@synthesize graph;
+@synthesize barChart;
+@synthesize pieGraph;
+
+@synthesize piePlot;
+@synthesize piePlotIsRotating;
#pragma mark -
#pragma mark Initialization and teardown
@@ -36,50 +65,15 @@ -(void)viewDidAppear:(BOOL)animated
rotation.duration = 1.0;
rotation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
rotation.delegate = self;
- [piePlot addAnimation:rotation forKey:@"rotation"];
-
- piePlotIsRotating = YES;
-}
-
--(void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
-{
- piePlotIsRotating = NO;
- [piePlot performSelector:@selector(reloadData) withObject:nil afterDelay:0.4];
-}
-
--(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
-{
- return YES;
-}
-
--(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
-{
- if ( UIInterfaceOrientationIsLandscape(fromInterfaceOrientation) ) {
- // Move the plots into place for portrait
- scatterPlotView.frame = CGRectMake(20.0, 55.0, 728.0, 556.0);
- barChartView.frame = CGRectMake(20.0, 644.0, 340.0, 340.0);
- pieChartView.frame = CGRectMake(408.0, 644.0, 340.0, 340.0);
- }
- else {
- // Move the plots into place for landscape
- scatterPlotView.frame = CGRectMake(20.0, 51.0, 628.0, 677.0);
- barChartView.frame = CGRectMake(684.0, 51.0, 320.0, 320.0);
- pieChartView.frame = CGRectMake(684.0, 408.0, 320.0, 320.0);
- }
-}
+ [self.piePlot addAnimation:rotation forKey:@"rotation"];
--(void)didReceiveMemoryWarning
-{
- // Releases the view if it doesn't have a superview.
- [super didReceiveMemoryWarning];
-
- // Release any cached data, images, etc that aren't in use.
+ self.piePlotIsRotating = YES;
}
--(void)viewDidUnload
+-(void)animationDidStop:(CAAnimation *__unused)theAnimation finished:(BOOL __unused)flag
{
- // Release any retained subviews of the main view.
- // e.g. self.myOutlet = nil;
+ self.piePlotIsRotating = NO;
+ [self.piePlot performSelector:@selector(reloadData) withObject:nil afterDelay:0.4];
}
#pragma mark -
@@ -88,40 +82,42 @@ -(void)viewDidUnload
-(void)constructScatterPlot
{
// Create graph from theme
- graph = [[CPTXYGraph alloc] initWithFrame:CGRectZero];
- CPTTheme *theme = [CPTTheme themeNamed:kCPTDarkGradientTheme];
- [graph applyTheme:theme];
- scatterPlotView.hostedGraph = graph;
+ CPTXYGraph *newGraph = [[CPTXYGraph alloc] initWithFrame:CGRectZero];
+ CPTTheme *theme = [CPTTheme themeNamed:kCPTDarkGradientTheme];
+
+ [newGraph applyTheme:theme];
+ self.scatterPlotView.hostedGraph = newGraph;
+ self.graph = newGraph;
- graph.paddingLeft = 10.0;
- graph.paddingTop = 10.0;
- graph.paddingRight = 10.0;
- graph.paddingBottom = 10.0;
+ newGraph.paddingLeft = 10.0;
+ newGraph.paddingTop = 10.0;
+ newGraph.paddingRight = 10.0;
+ newGraph.paddingBottom = 10.0;
// Setup plot space
- CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace;
+ CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)newGraph.defaultPlotSpace;
plotSpace.allowsUserInteraction = YES;
- plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(1.0) length:CPTDecimalFromDouble(2.0)];
- plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(1.0) length:CPTDecimalFromDouble(3.0)];
+ plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:@1.0 length:@2.0];
+ plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:@1.0 length:@3.0];
// Axes
- CPTXYAxisSet *axisSet = (CPTXYAxisSet *)graph.axisSet;
+ CPTXYAxisSet *axisSet = (CPTXYAxisSet *)newGraph.axisSet;
CPTXYAxis *x = axisSet.xAxis;
- x.majorIntervalLength = CPTDecimalFromDouble(0.5);
- x.orthogonalCoordinateDecimal = CPTDecimalFromDouble(2.0);
- x.minorTicksPerInterval = 2;
- NSArray *exclusionRanges = @[[CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(1.99) length:CPTDecimalFromDouble(0.02)],
- [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(0.99) length:CPTDecimalFromDouble(0.02)],
- [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(2.99) length:CPTDecimalFromDouble(0.02)]];
+ x.majorIntervalLength = @0.5;
+ x.orthogonalPosition = @2.0;
+ x.minorTicksPerInterval = 2;
+ CPTPlotRangeArray *exclusionRanges = @[[CPTPlotRange plotRangeWithLocation:@1.99 length:@0.02],
+ [CPTPlotRange plotRangeWithLocation:@0.99 length:@0.02],
+ [CPTPlotRange plotRangeWithLocation:@2.99 length:@0.02]];
x.labelExclusionRanges = exclusionRanges;
CPTXYAxis *y = axisSet.yAxis;
- y.majorIntervalLength = CPTDecimalFromDouble(0.5);
- y.minorTicksPerInterval = 5;
- y.orthogonalCoordinateDecimal = CPTDecimalFromDouble(2.0);
- exclusionRanges = @[[CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(1.99) length:CPTDecimalFromDouble(0.02)],
- [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(0.99) length:CPTDecimalFromDouble(0.02)],
- [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(3.99) length:CPTDecimalFromDouble(0.02)]];
+ y.majorIntervalLength = @0.5;
+ y.minorTicksPerInterval = 5;
+ y.orthogonalPosition = @2.0;
+ exclusionRanges = @[[CPTPlotRange plotRangeWithLocation:@1.99 length:@0.02],
+ [CPTPlotRange plotRangeWithLocation:@0.99 length:@0.02],
+ [CPTPlotRange plotRangeWithLocation:@3.99 length:@0.02]];
y.labelExclusionRanges = exclusionRanges;
// Create a green plot area
@@ -137,17 +133,17 @@ -(void)constructScatterPlot
dataSourceLinePlot.dataSource = self;
// Put an area gradient under the plot above
- CPTColor *areaColor = [CPTColor colorWithComponentRed:0.3 green:1.0 blue:0.3 alpha:0.8];
+ CPTColor *areaColor = [CPTColor colorWithComponentRed:CPTFloat(0.3) green:CPTFloat(1.0) blue:CPTFloat(0.3) alpha:CPTFloat(0.8)];
CPTGradient *areaGradient = [CPTGradient gradientWithBeginningColor:areaColor endingColor:[CPTColor clearColor]];
areaGradient.angle = -90.0;
CPTFill *areaGradientFill = [CPTFill fillWithGradient:areaGradient];
dataSourceLinePlot.areaFill = areaGradientFill;
- dataSourceLinePlot.areaBaseValue = CPTDecimalFromDouble(1.75);
+ dataSourceLinePlot.areaBaseValue = @1.75;
// Animate in the new plot, as an example
dataSourceLinePlot.opacity = 0.0;
dataSourceLinePlot.cachePrecision = CPTPlotCachePrecisionDecimal;
- [graph addPlot:dataSourceLinePlot];
+ [newGraph addPlot:dataSourceLinePlot];
CABasicAnimation *fadeInAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
fadeInAnimation.duration = 1.0;
@@ -168,15 +164,15 @@ -(void)constructScatterPlot
boundLinePlot.dataSource = self;
boundLinePlot.cachePrecision = CPTPlotCachePrecisionDouble;
boundLinePlot.interpolation = CPTScatterPlotInterpolationHistogram;
- [graph addPlot:boundLinePlot];
+ [newGraph addPlot:boundLinePlot];
// Do a blue gradient
- CPTColor *areaColor1 = [CPTColor colorWithComponentRed:0.3 green:0.3 blue:1.0 alpha:0.8];
+ CPTColor *areaColor1 = [CPTColor colorWithComponentRed:CPTFloat(0.3) green:CPTFloat(0.3) blue:CPTFloat(1.0) alpha:CPTFloat(0.8)];
CPTGradient *areaGradient1 = [CPTGradient gradientWithBeginningColor:areaColor1 endingColor:[CPTColor clearColor]];
areaGradient1.angle = -90.0;
areaGradientFill = [CPTFill fillWithGradient:areaGradient1];
boundLinePlot.areaFill = areaGradientFill;
- boundLinePlot.areaBaseValue = [[NSDecimalNumber zero] decimalValue];
+ boundLinePlot.areaBaseValue = @0.0;
// Add plot symbols
CPTMutableLineStyle *symbolLineStyle = [CPTMutableLineStyle lineStyle];
@@ -188,161 +184,169 @@ -(void)constructScatterPlot
boundLinePlot.plotSymbol = plotSymbol;
// Add some initial data
- NSMutableArray *contentArray = [NSMutableArray arrayWithCapacity:100];
+ NSMutableArray *contentArray = [NSMutableArray arrayWithCapacity:100];
for ( NSUInteger i = 0; i < 60; i++ ) {
- NSNumber *x = @(1 + i * 0.05);
- NSNumber *y = @(1.2 * rand() / (double)RAND_MAX + 1.2);
- [contentArray addObject:@{ @"x": x, @"y": y }];
+ NSNumber *xVal = @(1 + i * 0.05);
+ NSNumber *yVal = @(1.2 * arc4random() / (double)UINT32_MAX + 1.2);
+ [contentArray addObject:@{ @"x": xVal, @"y": yVal }];
}
self.dataForPlot = contentArray;
}
-(void)constructBarChart
{
- // Create barChart from theme
- barChart = [[CPTXYGraph alloc] initWithFrame:CGRectZero];
- CPTTheme *theme = [CPTTheme themeNamed:kCPTDarkGradientTheme];
- [barChart applyTheme:theme];
- barChartView.hostedGraph = barChart;
- barChart.plotAreaFrame.masksToBorder = NO;
-
- barChart.paddingLeft = 70.0;
- barChart.paddingTop = 20.0;
- barChart.paddingRight = 20.0;
- barChart.paddingBottom = 80.0;
-
- // Add plot space for horizontal bar charts
- CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)barChart.defaultPlotSpace;
- plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f) length:CPTDecimalFromFloat(300.0f)];
- plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f) length:CPTDecimalFromFloat(16.0f)];
-
- CPTXYAxisSet *axisSet = (CPTXYAxisSet *)barChart.axisSet;
+// Create barChart from theme
+ CPTXYGraph *newGraph = [[CPTXYGraph alloc] initWithFrame:CGRectZero];
+ CPTTheme *theme = [CPTTheme themeNamed:kCPTDarkGradientTheme];
+
+ [newGraph applyTheme:theme];
+
+ self.barChartView.hostedGraph = newGraph;
+ self.barChart = newGraph;
+
+ newGraph.plotAreaFrame.masksToBorder = NO;
+
+ newGraph.paddingLeft = 70.0;
+ newGraph.paddingTop = 20.0;
+ newGraph.paddingRight = 20.0;
+ newGraph.paddingBottom = 80.0;
+
+// 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];
+
+ CPTXYAxisSet *axisSet = (CPTXYAxisSet *)newGraph.axisSet;
CPTXYAxis *x = axisSet.xAxis;
- x.axisLineStyle = nil;
- x.majorTickLineStyle = nil;
- x.minorTickLineStyle = nil;
- x.majorIntervalLength = CPTDecimalFromDouble(5.0);
- x.orthogonalCoordinateDecimal = CPTDecimalFromDouble(0.0);
- x.title = @"X Axis";
- x.titleLocation = CPTDecimalFromFloat(7.5f);
- x.titleOffset = 55.0;
-
- // Define some custom labels for the data elements
- x.labelRotation = M_PI_4;
+ x.axisLineStyle = nil;
+ x.majorTickLineStyle = nil;
+ x.minorTickLineStyle = nil;
+ x.majorIntervalLength = @5.0;
+ x.orthogonalPosition = @0.0;
+ x.title = @"X Axis";
+ x.titleLocation = @7.5;
+ x.titleOffset = 55.0;
+
+// Define some custom labels for the data elements
+ x.labelRotation = CPTFloat(M_PI_4);
x.labelingPolicy = CPTAxisLabelingPolicyNone;
- NSArray *customTickLocations = @[@1, @5, @10, @15];
- NSArray *xAxisLabels = @[@"Label A", @"Label B", @"Label C", @"Label D"];
- NSUInteger labelLocation = 0;
- NSMutableSet *customLabels = [NSMutableSet setWithCapacity:[xAxisLabels count]];
+ CPTNumberArray *customTickLocations = @[@1, @5, @10, @15];
+ CPTStringArray *xAxisLabels = @[@"Label A", @"Label B", @"Label C", @"Label D"];
+ NSUInteger labelLocation = 0;
+ CPTMutableAxisLabelSet *customLabels = [NSMutableSet setWithCapacity:xAxisLabels.count];
for ( NSNumber *tickLocation in customTickLocations ) {
CPTAxisLabel *newLabel = [[CPTAxisLabel alloc] initWithText:xAxisLabels[labelLocation++] textStyle:x.labelTextStyle];
- newLabel.tickLocation = [tickLocation decimalValue];
+ newLabel.tickLocation = tickLocation;
newLabel.offset = x.labelOffset + x.majorTickLength;
- newLabel.rotation = M_PI_4;
+ newLabel.rotation = CPTFloat(M_PI_4);
[customLabels addObject:newLabel];
}
x.axisLabels = customLabels;
CPTXYAxis *y = axisSet.yAxis;
- y.axisLineStyle = nil;
- y.majorTickLineStyle = nil;
- y.minorTickLineStyle = nil;
- y.majorIntervalLength = CPTDecimalFromDouble(50.0);
- y.orthogonalCoordinateDecimal = CPTDecimalFromDouble(0.0);
- y.title = @"Y Axis";
- y.titleOffset = 45.0;
- y.titleLocation = CPTDecimalFromFloat(150.0f);
-
- // First bar plot
+ y.axisLineStyle = nil;
+ y.majorTickLineStyle = nil;
+ y.minorTickLineStyle = nil;
+ y.majorIntervalLength = @50.0;
+ y.orthogonalPosition = @0.0;
+ y.title = @"Y Axis";
+ y.titleOffset = 45.0;
+ y.titleLocation = @150.0;
+
+// First bar plot
CPTBarPlot *barPlot = [CPTBarPlot tubularBarPlotWithColor:[CPTColor darkGrayColor] horizontalBars:NO];
- barPlot.baseValue = CPTDecimalFromDouble(0.0);
+ barPlot.baseValue = @0.0;
barPlot.dataSource = self;
- barPlot.barOffset = CPTDecimalFromFloat(-0.25f);
+ barPlot.barOffset = @(-0.25);
barPlot.identifier = @"Bar Plot 1";
- [barChart addPlot:barPlot toPlotSpace:plotSpace];
+ [newGraph addPlot:barPlot toPlotSpace:plotSpace];
- // Second bar plot
+// Second bar plot
barPlot = [CPTBarPlot tubularBarPlotWithColor:[CPTColor blueColor] horizontalBars:NO];
barPlot.dataSource = self;
- barPlot.baseValue = CPTDecimalFromDouble(0.0);
- barPlot.barOffset = CPTDecimalFromFloat(0.25f);
+ barPlot.baseValue = @0.0;
+ barPlot.barOffset = @0.25;
barPlot.barCornerRadius = 2.0;
barPlot.identifier = @"Bar Plot 2";
barPlot.delegate = self;
- [barChart addPlot:barPlot toPlotSpace:plotSpace];
+ [newGraph addPlot:barPlot toPlotSpace:plotSpace];
}
-(void)constructPieChart
{
- // Create pieChart from theme
- pieGraph = [[CPTXYGraph alloc] initWithFrame:CGRectZero];
- CPTTheme *theme = [CPTTheme themeNamed:kCPTDarkGradientTheme];
- [pieGraph applyTheme:theme];
- pieChartView.hostedGraph = pieGraph;
- pieGraph.plotAreaFrame.masksToBorder = NO;
+// Create pieChart from theme
+ CPTXYGraph *newGraph = [[CPTXYGraph alloc] initWithFrame:CGRectZero];
+ CPTTheme *theme = [CPTTheme themeNamed:kCPTDarkGradientTheme];
+
+ [newGraph applyTheme:theme];
- pieGraph.paddingLeft = 20.0;
- pieGraph.paddingTop = 20.0;
- pieGraph.paddingRight = 20.0;
- pieGraph.paddingBottom = 20.0;
+ self.pieChartView.hostedGraph = newGraph;
+ self.pieGraph = newGraph;
- pieGraph.axisSet = nil;
+ newGraph.plotAreaFrame.masksToBorder = NO;
- // Prepare a radial overlay gradient for shading/gloss
+ newGraph.paddingLeft = 20.0;
+ newGraph.paddingTop = 20.0;
+ newGraph.paddingRight = 20.0;
+ newGraph.paddingBottom = 20.0;
+
+ newGraph.axisSet = nil;
+
+// Prepare a radial overlay gradient for shading/gloss
CPTGradient *overlayGradient = [[CPTGradient alloc] init];
overlayGradient.gradientType = CPTGradientTypeRadial;
- overlayGradient = [overlayGradient addColorStop:[[CPTColor blackColor] colorWithAlphaComponent:0.0] atPosition:0.0];
- overlayGradient = [overlayGradient addColorStop:[[CPTColor blackColor] colorWithAlphaComponent:0.3] atPosition:0.9];
- overlayGradient = [overlayGradient addColorStop:[[CPTColor blackColor] colorWithAlphaComponent:0.7] atPosition:1.0];
-
- // Add pie chart
- piePlot = [[CPTPieChart alloc] init];
- piePlot.dataSource = self;
- piePlot.pieRadius = 130.0;
- piePlot.identifier = @"Pie Chart 1";
- piePlot.startAngle = M_PI_4;
- piePlot.sliceDirection = CPTPieDirectionCounterClockwise;
- piePlot.borderLineStyle = [CPTLineStyle lineStyle];
- piePlot.labelOffset = 5.0;
- piePlot.overlayFill = [CPTFill fillWithGradient:overlayGradient];
- [pieGraph addPlot:piePlot];
-
- // Add some initial data
- NSMutableArray *contentArray = [NSMutableArray arrayWithObjects:@20.0, @30.0, @(NAN), @60.0, nil];
- self.dataForChart = contentArray;
+ 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
+ CPTPieChart *newPlot = [[CPTPieChart alloc] init];
+ newPlot.dataSource = self;
+ newPlot.pieRadius = 130.0;
+ newPlot.identifier = @"Pie Chart 1";
+ newPlot.startAngle = CPTFloat(M_PI_4);
+ newPlot.sliceDirection = CPTPieDirectionCounterClockwise;
+ newPlot.borderLineStyle = [CPTLineStyle lineStyle];
+ newPlot.labelOffset = 5.0;
+ newPlot.overlayFill = [CPTFill fillWithGradient:overlayGradient];
+ [newGraph addPlot:newPlot];
+ self.piePlot = newPlot;
+
+// Add some initial data
+ self.dataForChart = @[@20.0, @30.0, @(NAN), @60.0];
}
#pragma mark -
#pragma mark CPTBarPlot delegate method
--(void)barPlot:(CPTBarPlot *)plot barWasSelectedAtRecordIndex:(NSUInteger)index
+-(void)barPlot:(nonnull CPTBarPlot *__unused)plot barWasSelectedAtRecordIndex:(NSUInteger)index
{
- NSLog(@"barWasSelectedAtRecordIndex %d", index);
+ NSLog(@"barWasSelectedAtRecordIndex %lu", (unsigned long)index);
}
#pragma mark -
#pragma mark Plot Data Source Methods
--(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot
+-(NSUInteger)numberOfRecordsForPlot:(nonnull CPTPlot *)plot
{
if ( [plot isKindOfClass:[CPTPieChart class]] ) {
- return [self.dataForChart count];
+ return self.dataForChart.count;
}
else if ( [plot isKindOfClass:[CPTBarPlot class]] ) {
return 16;
}
else {
- return [dataForPlot count];
+ return self.dataForPlot.count;
}
}
--(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index
+-(nullable id)numberForPlot:(nonnull CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index
{
NSNumber *num = nil;
if ( [plot isKindOfClass:[CPTPieChart class]] ) {
- if ( index >= [self.dataForChart count] ) {
+ if ( index >= self.dataForChart.count ) {
return nil;
}
@@ -369,7 +373,7 @@ -(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordInd
num = @(NAN);
}
else {
- num = @( (index + 1) * (index + 1) );
+ num = @((index + 1) * (index + 1));
if ( [plot.identifier isEqual:@"Bar Plot 2"] ) {
num = @(num.integerValue - 10);
}
@@ -380,11 +384,11 @@ -(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordInd
else {
if ( index % 8 ) {
NSString *key = (fieldEnum == CPTScatterPlotFieldX ? @"x" : @"y");
- num = [dataForPlot[index] valueForKey:key];
- // Green plot gets shifted above the blue
- if ( [(NSString *)plot.identifier isEqualToString : @"Green Plot"] ) {
+ num = self.dataForPlot[index][key];
+// Green plot gets shifted above the blue
+ if ( [(NSString *) plot.identifier isEqualToString:@"Green Plot"] ) {
if ( fieldEnum == CPTScatterPlotFieldY ) {
- num = @([num doubleValue] + 1.0);
+ num = @(num.doubleValue + 1.0);
}
}
}
@@ -396,18 +400,19 @@ -(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordInd
return num;
}
--(CPTLayer *)dataLabelForPlot:(CPTPlot *)plot recordIndex:(NSUInteger)index
+-(nullable CPTLayer *)dataLabelForPlot:(nonnull CPTPlot *)plot recordIndex:(NSUInteger)index
{
- if ( piePlotIsRotating ) {
+ if ( self.piePlotIsRotating ) {
return nil;
}
static CPTMutableTextStyle *whiteText = nil;
+ static dispatch_once_t onceToken = 0;
- if ( !whiteText ) {
+ dispatch_once(&onceToken, ^{
whiteText = [[CPTMutableTextStyle alloc] init];
whiteText.color = [CPTColor whiteColor];
- }
+ });
CPTTextLayer *newLayer = nil;
diff --git a/examples/CPTTestApp-iPad/MainWindow.xib b/examples/CPTTestApp-iPad/MainWindow.xib
deleted file mode 100644
index 0f4c3fd6a..000000000
--- a/examples/CPTTestApp-iPad/MainWindow.xib
+++ /dev/null
@@ -1,436 +0,0 @@
-
-
-
- 800
- 10D540
- 760
- 1038.29
- 460.00
-
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- 81
-
-
- YES
-
-
-
- YES
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
-
-
- YES
-
- YES
-
-
- YES
-
-
-
- YES
-
- IBFilesOwner
- IBCocoaTouchFramework
-
-
- IBFirstResponder
- IBCocoaTouchFramework
-
-
-
- 292
- {768, 1024}
-
-
- 1
- MSAxIDEAA
-
- NO
- NO
-
- 2
-
- IBIPadFramework
- YES
-
-
- IBIPadFramework
-
-
- CPTTestApp_iPadViewController
-
- IBIPadFramework
-
-
-
-
- YES
-
-
- viewController
-
-
-
- 8
-
-
-
- delegate
-
-
-
- 9
-
-
-
- window
-
-
-
- 10
-
-
-
-
- YES
-
- 0
-
-
-
-
-
- -1
-
-
- File's Owner
-
-
- -2
-
-
-
-
- 2
-
-
-
-
- 6
-
-
- CPTTestApp_iPad App Delegate
-
-
- 7
-
-
-
-
-
-
- YES
-
- YES
- -1.CustomClassName
- -2.CustomClassName
- 2.IBEditorWindowLastContentRect
- 2.IBPluginDependency
- 6.CustomClassName
- 6.IBPluginDependency
- 7.CustomClassName
- 7.IBEditorWindowLastContentRect
- 7.IBPluginDependency
-
-
- YES
- UIApplication
- UIResponder
- {{200, 57}, {783, 799}}
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- CPTTestApp_iPadAppDelegate
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- CPTTestApp_iPadViewController
- {{512, 351}, {320, 480}}
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
-
-
-
- YES
-
-
- YES
-
-
-
-
- YES
-
-
- YES
-
-
-
- 10
-
-
-
- YES
-
- CPTTestApp_iPadAppDelegate
- NSObject
-
- YES
-
- YES
- viewController
- window
-
-
- YES
- CPTTestApp_iPadViewController
- UIWindow
-
-
-
- IBProjectSource
- Classes/CPTTestApp_iPadAppDelegate.h
-
-
-
- CPTTestApp_iPadViewController
- UIViewController
-
- IBProjectSource
- Classes/CPTTestApp_iPadViewController.h
-
-
-
-
- YES
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSError.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSFileManager.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSKeyValueCoding.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSKeyValueObserving.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSKeyedArchiver.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSNetServices.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSObject.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSPort.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSRunLoop.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSStream.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSThread.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSURL.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSURLConnection.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSXMLParser.h
-
-
-
- NSObject
-
- IBFrameworkSource
- UIKit.framework/Headers/UIAccessibility.h
-
-
-
- NSObject
-
- IBFrameworkSource
- UIKit.framework/Headers/UINibLoading.h
-
-
-
- NSObject
-
- IBFrameworkSource
- UIKit.framework/Headers/UIResponder.h
-
-
-
- UIApplication
- UIResponder
-
- IBFrameworkSource
- UIKit.framework/Headers/UIApplication.h
-
-
-
- UIResponder
- NSObject
-
-
-
- UIResponder
-
- IBFrameworkSource
- UIKit.framework/Headers/UITextInput.h
-
-
-
- UISearchBar
- UIView
-
- IBFrameworkSource
- UIKit.framework/Headers/UISearchBar.h
-
-
-
- UISearchDisplayController
- NSObject
-
- IBFrameworkSource
- UIKit.framework/Headers/UISearchDisplayController.h
-
-
-
- UIView
-
- IBFrameworkSource
- UIKit.framework/Headers/UITextField.h
-
-
-
- UIView
- UIResponder
-
- IBFrameworkSource
- UIKit.framework/Headers/UIView.h
-
-
-
- UIViewController
-
- IBFrameworkSource
- UIKit.framework/Headers/UINavigationController.h
-
-
-
- UIViewController
-
- IBFrameworkSource
- UIKit.framework/Headers/UISplitViewController.h
-
-
-
- UIViewController
-
- IBFrameworkSource
- UIKit.framework/Headers/UITabBarController.h
-
-
-
- UIViewController
- UIResponder
-
- IBFrameworkSource
- UIKit.framework/Headers/UIViewController.h
-
-
-
- UIWindow
- UIView
-
- IBFrameworkSource
- UIKit.framework/Headers/UIWindow.h
-
-
-
-
- 0
- IBIPadFramework
-
- com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
-
-
-
- com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
-
-
- YES
- CPTTestApp-iPad.xcodeproj
- 3
- 81
-
-
diff --git a/examples/CPTTestApp-iPad/main.m b/examples/CPTTestApp-iPad/main.m
index 9ab34edf9..fa2ec758c 100644
--- a/examples/CPTTestApp-iPad/main.m
+++ b/examples/CPTTestApp-iPad/main.m
@@ -1,8 +1,8 @@
//
-// main.m
-// CPTTestApp-iPad
+// main.m
+// CPTTestApp-iPad
//
-// Created by Brad Larson on 4/1/2010.
+// Created by Brad Larson on 4/1/2010.
//
#import
diff --git a/examples/CPTTestApp-iPhone-SpeedTest/BarChart.xib b/examples/CPTTestApp-iPhone-SpeedTest/BarChart.xib
deleted file mode 100644
index 5e197ad1d..000000000
--- a/examples/CPTTestApp-iPhone-SpeedTest/BarChart.xib
+++ /dev/null
@@ -1,348 +0,0 @@
-
-
-
- 768
- 10F569
- 804
- 1038.29
- 461.00
-
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- 123
-
-
- YES
-
-
-
- YES
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
-
-
- YES
-
- YES
-
-
- YES
-
-
-
- YES
-
- IBFilesOwner
- IBCocoaTouchFramework
-
-
- IBFirstResponder
- IBCocoaTouchFramework
-
-
-
- 274
- {320, 411}
-
-
- 3
- MQA
-
- 2
-
-
-
-
- IBCocoaTouchFramework
-
-
-
-
- YES
-
-
- view
-
-
-
- 3
-
-
-
-
- YES
-
- 0
-
-
-
-
-
- 1
-
-
- YES
-
-
-
-
- -1
-
-
- File's Owner
-
-
- -2
-
-
-
-
-
-
- YES
-
- YES
- -1.CustomClassName
- -2.CustomClassName
- 1.CustomClassName
- 1.IBEditorWindowLastContentRect
- 1.IBPluginDependency
-
-
- YES
- CPTTestAppBarChartController
- UIResponder
- CPTGraphHostingView
- {{568, 433}, {320, 480}}
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
-
-
-
- YES
-
-
- YES
-
-
-
-
- YES
-
-
- YES
-
-
-
- 9
-
-
-
- YES
-
- CPTTestAppBarChartController
- UIViewController
-
- IBProjectSource
- Classes/CPTTestAppBarChartController.h
-
-
-
-
- YES
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSError.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSFileManager.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSKeyValueCoding.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSKeyValueObserving.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSKeyedArchiver.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSObject.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSRunLoop.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSThread.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSURL.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSURLConnection.h
-
-
-
- NSObject
-
- IBFrameworkSource
- QuartzCore.framework/Headers/CAAnimation.h
-
-
-
- NSObject
-
- IBFrameworkSource
- QuartzCore.framework/Headers/CALayer.h
-
-
-
- NSObject
-
- IBFrameworkSource
- UIKit.framework/Headers/UIAccessibility.h
-
-
-
- NSObject
-
- IBFrameworkSource
- UIKit.framework/Headers/UINibLoading.h
-
-
-
- NSObject
-
- IBFrameworkSource
- UIKit.framework/Headers/UIResponder.h
-
-
-
- UIResponder
- NSObject
-
-
-
- UISearchBar
- UIView
-
- IBFrameworkSource
- UIKit.framework/Headers/UISearchBar.h
-
-
-
- UISearchDisplayController
- NSObject
-
- IBFrameworkSource
- UIKit.framework/Headers/UISearchDisplayController.h
-
-
-
- UIView
-
- IBFrameworkSource
- UIKit.framework/Headers/UITextField.h
-
-
-
- UIView
- UIResponder
-
- IBFrameworkSource
- UIKit.framework/Headers/UIView.h
-
-
-
- UIViewController
-
- IBFrameworkSource
- UIKit.framework/Headers/UINavigationController.h
-
-
-
- UIViewController
-
- IBFrameworkSource
- UIKit.framework/Headers/UIPopoverController.h
-
-
-
- UIViewController
-
- IBFrameworkSource
- UIKit.framework/Headers/UISplitViewController.h
-
-
-
- UIViewController
-
- IBFrameworkSource
- UIKit.framework/Headers/UITabBarController.h
-
-
-
- UIViewController
- UIResponder
-
- IBFrameworkSource
- UIKit.framework/Headers/UIViewController.h
-
-
-
-
- 0
- IBCocoaTouchFramework
-
- com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
-
-
-
- com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
-
-
-
- com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
-
-
- YES
- CPTTestApp-iPhone.xcodeproj
- 3
- 123
-
-
diff --git a/examples/CPTTestApp-iPhone-SpeedTest/CPTTestApp-iPhone.xcodeproj/project.pbxproj b/examples/CPTTestApp-iPhone-SpeedTest/CPTTestApp-iPhone.xcodeproj/project.pbxproj
deleted file mode 100644
index 3eed9c44d..000000000
--- a/examples/CPTTestApp-iPhone-SpeedTest/CPTTestApp-iPhone.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,423 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 46;
- objects = {
-
-/* Begin PBXBuildFile section */
- 1D3623260D0F684500981E51 /* CPTTestApp_iPhoneAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* CPTTestApp_iPhoneAppDelegate.m */; };
- 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 */; };
- 28216C970DB411BC00E5133A /* CPTTestAppBarChartController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28216C960DB411BC00E5133A /* CPTTestAppBarChartController.m */; };
- 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 */; };
- 4E5EFFBC11B7DC6D00D8D6CB /* TestXYTheme.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E5EFFBB11B7DC6D00D8D6CB /* TestXYTheme.m */; };
- BC74A33A10FC40C600E7E90D /* CPTTestAppPieChartController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC74A33910FC40C600E7E90D /* CPTTestAppPieChartController.m */; };
- 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 */; };
- BC9B843A0FB8B76B0035D8DA /* CPTTestAppScatterPlotController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC9B84390FB8B76B0035D8DA /* CPTTestAppScatterPlotController.m */; };
- BCB3FD660FD85732008875A4 /* CorePlotIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = BCB3FD650FD85732008875A4 /* CorePlotIcon.png */; };
- C385879A163DA26A00DBF63D /* UINavigationController+LegacyRotation.m in Sources */ = {isa = PBXBuildFile; fileRef = C3858795163DA26A00DBF63D /* UINavigationController+LegacyRotation.m */; };
- C385879B163DA26A00DBF63D /* UITabBarController+LegacyRotation.m in Sources */ = {isa = PBXBuildFile; fileRef = C3858797163DA26A00DBF63D /* UITabBarController+LegacyRotation.m */; };
- C385879C163DA26A00DBF63D /* UIViewController+LegacyRotation.m in Sources */ = {isa = PBXBuildFile; fileRef = C3858799163DA26A00DBF63D /* UIViewController+LegacyRotation.m */; };
- C3BB7D6E163351BD00BC9515 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C3BB7D6D163351BD00BC9515 /* Default-568h@2x.png */; };
- C3CD284317DE9CB7008EED1E /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3CD284217DE9CB7008EED1E /* Accelerate.framework */; };
- C3F47B6817BF98490075181F /* CorePlotIcon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C3F47B6717BF98490075181F /* CorePlotIcon@2x.png */; };
- F7AE270A0FFFB61E001F26F0 /* libCorePlot-CocoaTouch.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BC9B83B50FB8A9BC0035D8DA /* libCorePlot-CocoaTouch.a */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
- BC9B83B40FB8A9BC0035D8DA /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = BC9B83B00FB8A9BC0035D8DA /* CorePlot-CocoaTouch.xcodeproj */;
- proxyType = 2;
- remoteGlobalIDString = BC9B83470FB8A0A40035D8DA;
- remoteInfo = "CorePlot-CocoaTouch";
- };
- BC9B83B60FB8A9C70035D8DA /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = BC9B83B00FB8A9BC0035D8DA /* CorePlot-CocoaTouch.xcodeproj */;
- proxyType = 1;
- remoteGlobalIDString = BC9B83460FB8A0A40035D8DA;
- remoteInfo = "CorePlot-CocoaTouch";
- };
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXFileReference section */
- 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
- 1D3623240D0F684500981E51 /* CPTTestApp_iPhoneAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPTTestApp_iPhoneAppDelegate.h; sourceTree = ""; };
- 1D3623250D0F684500981E51 /* CPTTestApp_iPhoneAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CPTTestApp_iPhoneAppDelegate.m; sourceTree = ""; };
- 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; };
- 28216C950DB411BC00E5133A /* CPTTestAppBarChartController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPTTestAppBarChartController.h; sourceTree = ""; };
- 28216C960DB411BC00E5133A /* CPTTestAppBarChartController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CPTTestAppBarChartController.m; sourceTree = ""; };
- 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; };
- 28A0AB4B0D9B1048005BE974 /* CPTTestApp_iPhone_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPTTestApp_iPhone_Prefix.pch; sourceTree = ""; };
- 28AD73870D9D96C1002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = ""; };
- 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
- 4E5EFFBA11B7DC6D00D8D6CB /* TestXYTheme.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestXYTheme.h; sourceTree = ""; };
- 4E5EFFBB11B7DC6D00D8D6CB /* TestXYTheme.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestXYTheme.m; sourceTree = ""; };
- 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- BC74A33810FC40C600E7E90D /* CPTTestAppPieChartController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPTTestAppPieChartController.h; sourceTree = ""; };
- BC74A33910FC40C600E7E90D /* CPTTestAppPieChartController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CPTTestAppPieChartController.m; 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; };
- BC9B83B00FB8A9BC0035D8DA /* CorePlot-CocoaTouch.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "CorePlot-CocoaTouch.xcodeproj"; path = "../../framework/CorePlot-CocoaTouch.xcodeproj"; sourceTree = SOURCE_ROOT; };
- BC9B84350FB8B7110035D8DA /* ScatterPlot.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ScatterPlot.xib; sourceTree = ""; };
- BC9B84380FB8B76B0035D8DA /* CPTTestAppScatterPlotController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPTTestAppScatterPlotController.h; sourceTree = ""; };
- BC9B84390FB8B76B0035D8DA /* CPTTestAppScatterPlotController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CPTTestAppScatterPlotController.m; sourceTree = ""; };
- BCB3FD650FD85732008875A4 /* CorePlotIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CorePlotIcon.png; sourceTree = ""; };
- C3858794163DA26A00DBF63D /* UINavigationController+LegacyRotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UINavigationController+LegacyRotation.h"; path = "../../iOS Rotation Utilities/UINavigationController+LegacyRotation.h"; sourceTree = ""; };
- C3858795163DA26A00DBF63D /* UINavigationController+LegacyRotation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "UINavigationController+LegacyRotation.m"; path = "../../iOS Rotation Utilities/UINavigationController+LegacyRotation.m"; sourceTree = ""; };
- C3858796163DA26A00DBF63D /* UITabBarController+LegacyRotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UITabBarController+LegacyRotation.h"; path = "../../iOS Rotation Utilities/UITabBarController+LegacyRotation.h"; sourceTree = ""; };
- C3858797163DA26A00DBF63D /* UITabBarController+LegacyRotation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "UITabBarController+LegacyRotation.m"; path = "../../iOS Rotation Utilities/UITabBarController+LegacyRotation.m"; sourceTree = ""; };
- C3858798163DA26A00DBF63D /* UIViewController+LegacyRotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UIViewController+LegacyRotation.h"; path = "../../iOS Rotation Utilities/UIViewController+LegacyRotation.h"; sourceTree = ""; };
- C3858799163DA26A00DBF63D /* UIViewController+LegacyRotation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+LegacyRotation.m"; path = "../../iOS Rotation Utilities/UIViewController+LegacyRotation.m"; sourceTree = ""; };
- C3BB7D6D163351BD00BC9515 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; };
- C3CD284217DE9CB7008EED1E /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; };
- C3F47B6717BF98490075181F /* CorePlotIcon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "CorePlotIcon@2x.png"; sourceTree = ""; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 1D60588F0D05DD3D006BFB54 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */,
- 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */,
- 288765080DF74369002DB57D /* CoreGraphics.framework in Frameworks */,
- BC9B81DA0FB893F70035D8DA /* QuartzCore.framework in Frameworks */,
- F7AE270A0FFFB61E001F26F0 /* libCorePlot-CocoaTouch.a in Frameworks */,
- C3CD284317DE9CB7008EED1E /* Accelerate.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 080E96DDFE201D6D7F000001 /* Classes */ = {
- isa = PBXGroup;
- children = (
- 4E5EFFBA11B7DC6D00D8D6CB /* TestXYTheme.h */,
- 4E5EFFBB11B7DC6D00D8D6CB /* TestXYTheme.m */,
- 28216C950DB411BC00E5133A /* CPTTestAppBarChartController.h */,
- 28216C960DB411BC00E5133A /* CPTTestAppBarChartController.m */,
- 1D3623240D0F684500981E51 /* CPTTestApp_iPhoneAppDelegate.h */,
- 1D3623250D0F684500981E51 /* CPTTestApp_iPhoneAppDelegate.m */,
- BC74A33810FC40C600E7E90D /* CPTTestAppPieChartController.h */,
- BC74A33910FC40C600E7E90D /* CPTTestAppPieChartController.m */,
- BC9B84380FB8B76B0035D8DA /* CPTTestAppScatterPlotController.h */,
- BC9B84390FB8B76B0035D8DA /* CPTTestAppScatterPlotController.m */,
- C3858794163DA26A00DBF63D /* UINavigationController+LegacyRotation.h */,
- C3858795163DA26A00DBF63D /* UINavigationController+LegacyRotation.m */,
- C3858796163DA26A00DBF63D /* UITabBarController+LegacyRotation.h */,
- C3858797163DA26A00DBF63D /* UITabBarController+LegacyRotation.m */,
- C3858798163DA26A00DBF63D /* UIViewController+LegacyRotation.h */,
- C3858799163DA26A00DBF63D /* UIViewController+LegacyRotation.m */,
- );
- path = Classes;
- sourceTree = "";
- };
- 19C28FACFE9D520D11CA2CBB /* Products */ = {
- isa = PBXGroup;
- children = (
- 1D6058910D05DD3D006BFB54 /* CPTTestApp-iPhone.app */,
- );
- name = Products;
- sourceTree = "";
- };
- 29B97314FDCFA39411CA2CEA /* CPTTestApp-iPhone */ = {
- isa = PBXGroup;
- children = (
- BC9B83B00FB8A9BC0035D8DA /* CorePlot-CocoaTouch.xcodeproj */,
- 080E96DDFE201D6D7F000001 /* Classes */,
- 29B97315FDCFA39411CA2CEA /* Other Sources */,
- 29B97317FDCFA39411CA2CEA /* Resources */,
- 29B97323FDCFA39411CA2CEA /* Frameworks */,
- 19C28FACFE9D520D11CA2CBB /* Products */,
- );
- indentWidth = 4;
- name = "CPTTestApp-iPhone";
- sourceTree = "";
- tabWidth = 4;
- usesTabs = 0;
- };
- 29B97315FDCFA39411CA2CEA /* Other Sources */ = {
- isa = PBXGroup;
- children = (
- 28A0AB4B0D9B1048005BE974 /* CPTTestApp_iPhone_Prefix.pch */,
- 29B97316FDCFA39411CA2CEA /* main.m */,
- );
- name = "Other Sources";
- sourceTree = "";
- };
- 29B97317FDCFA39411CA2CEA /* Resources */ = {
- isa = PBXGroup;
- children = (
- BC8166D11100DD6F006D898E /* 62-contrast.png */,
- BC8166CC1100DD00006D898E /* 16-line-chart.png */,
- BC8166CD1100DD00006D898E /* 17-bar-chart.png */,
- C3BB7D6D163351BD00BC9515 /* Default-568h@2x.png */,
- BCB3FD650FD85732008875A4 /* CorePlotIcon.png */,
- C3F47B6717BF98490075181F /* CorePlotIcon@2x.png */,
- 28AD73870D9D96C1002E5188 /* MainWindow.xib */,
- BC9B84350FB8B7110035D8DA /* ScatterPlot.xib */,
- 282CCBFD0DB6C98000C4EA27 /* BarChart.xib */,
- BC74A34010FC418D00E7E90D /* PieChart.xib */,
- 8D1107310486CEB800E47090 /* Info.plist */,
- );
- name = Resources;
- sourceTree = "";
- };
- 29B97323FDCFA39411CA2CEA /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- BC9B81D90FB893F70035D8DA /* QuartzCore.framework */,
- 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */,
- 1D30AB110D05D00D00671497 /* Foundation.framework */,
- 288765070DF74369002DB57D /* CoreGraphics.framework */,
- C3CD284217DE9CB7008EED1E /* Accelerate.framework */,
- );
- name = Frameworks;
- sourceTree = "";
- };
- BC9B83B10FB8A9BC0035D8DA /* Products */ = {
- isa = PBXGroup;
- children = (
- BC9B83B50FB8A9BC0035D8DA /* libCorePlot-CocoaTouch.a */,
- );
- name = Products;
- sourceTree = "";
- };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
- 1D6058900D05DD3D006BFB54 /* CPTTestApp-iPhone */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "CPTTestApp-iPhone" */;
- buildPhases = (
- 1D60588D0D05DD3D006BFB54 /* Resources */,
- 1D60588E0D05DD3D006BFB54 /* Sources */,
- 1D60588F0D05DD3D006BFB54 /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- BC9B83B70FB8A9C70035D8DA /* PBXTargetDependency */,
- );
- name = "CPTTestApp-iPhone";
- productName = "CPTTestApp-iPhone";
- productReference = 1D6058910D05DD3D006BFB54 /* CPTTestApp-iPhone.app */;
- productType = "com.apple.product-type.application";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 29B97313FDCFA39411CA2CEA /* Project object */ = {
- isa = PBXProject;
- attributes = {
- LastUpgradeCheck = 0500;
- };
- buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "CPTTestApp-iPhone" */;
- compatibilityVersion = "Xcode 3.2";
- developmentRegion = English;
- hasScannedForEncodings = 1;
- knownRegions = (
- English,
- Japanese,
- French,
- German,
- );
- mainGroup = 29B97314FDCFA39411CA2CEA /* CPTTestApp-iPhone */;
- projectDirPath = "";
- projectReferences = (
- {
- ProductGroup = BC9B83B10FB8A9BC0035D8DA /* Products */;
- ProjectRef = BC9B83B00FB8A9BC0035D8DA /* CorePlot-CocoaTouch.xcodeproj */;
- },
- );
- projectRoot = "";
- targets = (
- 1D6058900D05DD3D006BFB54 /* CPTTestApp-iPhone */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXReferenceProxy section */
- BC9B83B50FB8A9BC0035D8DA /* libCorePlot-CocoaTouch.a */ = {
- isa = PBXReferenceProxy;
- fileType = archive.ar;
- path = "libCorePlot-CocoaTouch.a";
- remoteRef = BC9B83B40FB8A9BC0035D8DA /* PBXContainerItemProxy */;
- sourceTree = BUILT_PRODUCTS_DIR;
- };
-/* End PBXReferenceProxy section */
-
-/* Begin PBXResourcesBuildPhase section */
- 1D60588D0D05DD3D006BFB54 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 28AD73880D9D96C1002E5188 /* MainWindow.xib in Resources */,
- 282CCBFE0DB6C98000C4EA27 /* BarChart.xib in Resources */,
- BC9B84360FB8B7110035D8DA /* ScatterPlot.xib in Resources */,
- BCB3FD660FD85732008875A4 /* CorePlotIcon.png in Resources */,
- BC74A34110FC418D00E7E90D /* PieChart.xib in Resources */,
- BC8166CE1100DD00006D898E /* 16-line-chart.png in Resources */,
- BC8166CF1100DD00006D898E /* 17-bar-chart.png in Resources */,
- BC8166D21100DD6F006D898E /* 62-contrast.png in Resources */,
- C3BB7D6E163351BD00BC9515 /* Default-568h@2x.png in Resources */,
- C3F47B6817BF98490075181F /* CorePlotIcon@2x.png in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 1D60588E0D05DD3D006BFB54 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 1D60589B0D05DD56006BFB54 /* main.m in Sources */,
- 1D3623260D0F684500981E51 /* CPTTestApp_iPhoneAppDelegate.m in Sources */,
- 28216C970DB411BC00E5133A /* CPTTestAppBarChartController.m in Sources */,
- BC9B843A0FB8B76B0035D8DA /* CPTTestAppScatterPlotController.m in Sources */,
- BC74A33A10FC40C600E7E90D /* CPTTestAppPieChartController.m in Sources */,
- 4E5EFFBC11B7DC6D00D8D6CB /* TestXYTheme.m in Sources */,
- C385879A163DA26A00DBF63D /* UINavigationController+LegacyRotation.m in Sources */,
- C385879B163DA26A00DBF63D /* UITabBarController+LegacyRotation.m in Sources */,
- C385879C163DA26A00DBF63D /* UIViewController+LegacyRotation.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXTargetDependency section */
- BC9B83B70FB8A9C70035D8DA /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- name = "CorePlot-CocoaTouch";
- targetProxy = BC9B83B60FB8A9C70035D8DA /* PBXContainerItemProxy */;
- };
-/* End PBXTargetDependency section */
-
-/* Begin XCBuildConfiguration section */
- 1D6058940D05DD3E006BFB54 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ENABLE_OBJC_ARC = YES;
- COPY_PHASE_STRIP = NO;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = CPTTestApp_iPhone_Prefix.pch;
- HEADER_SEARCH_PATHS = "";
- INFOPLIST_FILE = Info.plist;
- LIBRARY_SEARCH_PATHS = "";
- OTHER_LDFLAGS = (
- "-all_load",
- "-ObjC",
- );
- PRODUCT_NAME = "CPTTestApp-iPhone";
- SDKROOT = iphoneos;
- };
- name = Debug;
- };
- 1D6058950D05DD3E006BFB54 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ENABLE_OBJC_ARC = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- COPY_PHASE_STRIP = YES;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = CPTTestApp_iPhone_Prefix.pch;
- HEADER_SEARCH_PATHS = "";
- INFOPLIST_FILE = Info.plist;
- LIBRARY_SEARCH_PATHS = "";
- OTHER_LDFLAGS = (
- "-all_load",
- "-ObjC",
- );
- PRODUCT_NAME = "CPTTestApp-iPhone";
- "PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
- SDKROOT = iphoneos;
- };
- name = Release;
- };
- C01FCF4F08A954540054247B /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "Don't Code Sign";
- GCC_C_LANGUAGE_STANDARD = c99;
- GCC_TREAT_WARNINGS_AS_ERRORS = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- HEADER_SEARCH_PATHS = "";
- IPHONEOS_DEPLOYMENT_TARGET = 5.0;
- ONLY_ACTIVE_ARCH = YES;
- OTHER_LDFLAGS = "-ObjC";
- SDKROOT = iphoneos;
- SYMROOT = "$(SRCROOT)/../../build";
- USER_HEADER_SEARCH_PATHS = "\"${PROJECT_DIR}/../../framework\"/**";
- };
- name = Debug;
- };
- C01FCF5008A954540054247B /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer: Brad Larson";
- GCC_C_LANGUAGE_STANDARD = c99;
- GCC_TREAT_WARNINGS_AS_ERRORS = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- HEADER_SEARCH_PATHS = "";
- IPHONEOS_DEPLOYMENT_TARGET = 5.0;
- ONLY_ACTIVE_ARCH = NO;
- OTHER_LDFLAGS = "-ObjC";
- "PROVISIONING_PROFILE[sdk=iphoneos*]" = "500DAB97-6B23-43B6-9993-DF558595C088";
- SDKROOT = iphoneos;
- SYMROOT = "$(SRCROOT)/../../build";
- USER_HEADER_SEARCH_PATHS = "\"${PROJECT_DIR}/../../framework\"/**";
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "CPTTestApp-iPhone" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 1D6058940D05DD3E006BFB54 /* Debug */,
- 1D6058950D05DD3E006BFB54 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- C01FCF4E08A954540054247B /* Build configuration list for PBXProject "CPTTestApp-iPhone" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- C01FCF4F08A954540054247B /* Debug */,
- C01FCF5008A954540054247B /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
-}
diff --git a/examples/CPTTestApp-iPhone-SpeedTest/CPTTestApp-iPhone.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/examples/CPTTestApp-iPhone-SpeedTest/CPTTestApp-iPhone.xcodeproj/project.xcworkspace/contents.xcworkspacedata
deleted file mode 100644
index ab9bdd134..000000000
--- a/examples/CPTTestApp-iPhone-SpeedTest/CPTTestApp-iPhone.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
diff --git a/examples/CPTTestApp-iPhone-SpeedTest/CPTTestApp_iPhone_Prefix.pch b/examples/CPTTestApp-iPhone-SpeedTest/CPTTestApp_iPhone_Prefix.pch
deleted file mode 100644
index 5cdc39f4d..000000000
--- a/examples/CPTTestApp-iPhone-SpeedTest/CPTTestApp_iPhone_Prefix.pch
+++ /dev/null
@@ -1,8 +0,0 @@
-//
-// Prefix header for all source files of the 'CPTTestApp-iPhone' target in the 'CPTTestApp-iPhone' project
-//
-
-#ifdef __OBJC__
- #import
- #import
-#endif
diff --git a/examples/CPTTestApp-iPhone-SpeedTest/Classes/CPTTestAppBarChartController.h b/examples/CPTTestApp-iPhone-SpeedTest/Classes/CPTTestAppBarChartController.h
deleted file mode 100644
index a8b7726e1..000000000
--- a/examples/CPTTestApp-iPhone-SpeedTest/Classes/CPTTestAppBarChartController.h
+++ /dev/null
@@ -1,14 +0,0 @@
-//
-// CPTTestAppBarChartController.h
-// CPTTestApp-iPhone
-//
-
-#import "CorePlot-CocoaTouch.h"
-#import
-
-@interface CPTTestAppBarChartController : UIViewController
-{
- CPTXYGraph *barChart;
-}
-
-@end
diff --git a/examples/CPTTestApp-iPhone-SpeedTest/Classes/CPTTestAppBarChartController.m b/examples/CPTTestApp-iPhone-SpeedTest/Classes/CPTTestAppBarChartController.m
deleted file mode 100644
index 2c6cd1434..000000000
--- a/examples/CPTTestApp-iPhone-SpeedTest/Classes/CPTTestAppBarChartController.m
+++ /dev/null
@@ -1,136 +0,0 @@
-//
-// CPTTestAppBarChartController.m
-// CPTTestApp-iPhone
-//
-
-#import "CPTTestAppBarChartController.h"
-
-@implementation CPTTestAppBarChartController
-
--(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
-{
- return YES;
-}
-
-#pragma mark -
-#pragma mark Initialization and teardown
-
--(void)viewDidLoad
-{
- [super viewDidLoad];
-
- // Create barChart from theme
- barChart = [[CPTXYGraph alloc] initWithFrame:CGRectZero];
- CPTTheme *theme = [CPTTheme themeNamed:kCPTDarkGradientTheme];
- [barChart applyTheme:theme];
- CPTGraphHostingView *hostingView = (CPTGraphHostingView *)self.view;
- hostingView.hostedGraph = barChart;
- barChart.plotAreaFrame.masksToBorder = NO;
-
- barChart.paddingLeft = 70.0;
- barChart.paddingTop = 20.0;
- barChart.paddingRight = 20.0;
- barChart.paddingBottom = 80.0;
-
- // Add plot space for horizontal bar charts
- CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)barChart.defaultPlotSpace;
- plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f) length:CPTDecimalFromFloat(300.0f)];
- plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f) length:CPTDecimalFromFloat(16.0f)];
-
- CPTXYAxisSet *axisSet = (CPTXYAxisSet *)barChart.axisSet;
- CPTXYAxis *x = axisSet.xAxis;
- x.axisLineStyle = nil;
- x.majorTickLineStyle = nil;
- x.minorTickLineStyle = nil;
- x.majorIntervalLength = CPTDecimalFromDouble(5.0);
- x.orthogonalCoordinateDecimal = CPTDecimalFromDouble(0.0);
- x.title = @"X Axis";
- x.titleLocation = CPTDecimalFromFloat(7.5f);
- x.titleOffset = 55.0;
-
- // Define some custom labels for the data elements
- x.labelRotation = M_PI_4;
- x.labelingPolicy = CPTAxisLabelingPolicyNone;
- NSArray *customTickLocations = @[@1, @5, @10, @15];
- NSArray *xAxisLabels = @[@"Label A", @"Label B", @"Label C", @"Label D"];
- NSUInteger labelLocation = 0;
- NSMutableSet *customLabels = [NSMutableSet setWithCapacity:[xAxisLabels count]];
- for ( NSNumber *tickLocation in customTickLocations ) {
- CPTAxisLabel *newLabel = [[CPTAxisLabel alloc] initWithText:xAxisLabels[labelLocation++] textStyle:x.labelTextStyle];
- newLabel.tickLocation = [tickLocation decimalValue];
- newLabel.offset = x.labelOffset + x.majorTickLength;
- newLabel.rotation = M_PI_4;
- [customLabels addObject:newLabel];
- }
-
- x.axisLabels = customLabels;
-
- CPTXYAxis *y = axisSet.yAxis;
- y.axisLineStyle = nil;
- y.majorTickLineStyle = nil;
- y.minorTickLineStyle = nil;
- y.majorIntervalLength = CPTDecimalFromDouble(50.0);
- y.orthogonalCoordinateDecimal = CPTDecimalFromDouble(0.0);
- y.title = @"Y Axis";
- y.titleOffset = 45.0;
- y.titleLocation = CPTDecimalFromFloat(150.0f);
-
- // First bar plot
- CPTBarPlot *barPlot = [CPTBarPlot tubularBarPlotWithColor:[CPTColor darkGrayColor] horizontalBars:NO];
- barPlot.baseValue = CPTDecimalFromDouble(0.0);
- barPlot.dataSource = self;
- barPlot.barOffset = CPTDecimalFromFloat(-0.25f);
- barPlot.identifier = @"Bar Plot 1";
- [barChart addPlot:barPlot toPlotSpace:plotSpace];
-
- // Second bar plot
- barPlot = [CPTBarPlot tubularBarPlotWithColor:[CPTColor blueColor] horizontalBars:NO];
- barPlot.dataSource = self;
- barPlot.baseValue = CPTDecimalFromDouble(0.0);
- barPlot.barOffset = CPTDecimalFromFloat(0.25f);
- barPlot.barCornerRadius = 2.0;
- barPlot.identifier = @"Bar Plot 2";
- [barChart addPlot:barPlot toPlotSpace:plotSpace];
-
-#ifdef PERFORMANCE_TEST
- [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(changePlotRange) userInfo:nil repeats:YES];
-#endif
-}
-
--(void)didReceiveMemoryWarning
-{
- [super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview
- // Release anything that's not essential, such as cached data
-}
-
-#pragma mark -
-#pragma mark Plot Data Source Methods
-
--(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot
-{
- return 16;
-}
-
--(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index
-{
- NSNumber *num = nil;
-
- if ( [plot isKindOfClass:[CPTBarPlot class]] ) {
- switch ( fieldEnum ) {
- case CPTBarPlotFieldBarLocation:
- num = @(index);
- break;
-
- case CPTBarPlotFieldBarTip:
- num = @( (index + 1) * (index + 1) );
- if ( [plot.identifier isEqual:@"Bar Plot 2"] ) {
- num = @(num.integerValue - 10);
- }
- break;
- }
- }
-
- return num;
-}
-
-@end
diff --git a/examples/CPTTestApp-iPhone-SpeedTest/Classes/CPTTestAppPieChartController.h b/examples/CPTTestApp-iPhone-SpeedTest/Classes/CPTTestAppPieChartController.h
deleted file mode 100644
index 9f90ea949..000000000
--- a/examples/CPTTestApp-iPhone-SpeedTest/Classes/CPTTestAppPieChartController.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#import "CorePlot-CocoaTouch.h"
-#import
-
-@interface CPTTestAppPieChartController : UIViewController
-{
- @private
- CPTXYGraph *pieChart;
- NSMutableArray *dataForChart;
-}
-
-@property (readwrite, strong, nonatomic) NSMutableArray *dataForChart;
-
-@end
diff --git a/examples/CPTTestApp-iPhone-SpeedTest/Classes/CPTTestAppPieChartController.m b/examples/CPTTestApp-iPhone-SpeedTest/Classes/CPTTestAppPieChartController.m
deleted file mode 100644
index 99dc7db3c..000000000
--- a/examples/CPTTestApp-iPhone-SpeedTest/Classes/CPTTestAppPieChartController.m
+++ /dev/null
@@ -1,94 +0,0 @@
-#import "CPTTestAppPieChartController.h"
-
-@implementation CPTTestAppPieChartController
-
-@synthesize dataForChart;
-
--(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
-{
- return YES;
-}
-
--(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
-{
- CPTPlot *piePlot = [pieChart plotWithIdentifier:@"Pie Chart 1"];
- CGRect plotBounds = pieChart.plotAreaFrame.bounds;
-
- ( (CPTPieChart *)piePlot ).pieRadius = MIN(plotBounds.size.width, plotBounds.size.height) / 2.0 - 10.0;
-}
-
-#pragma mark -
-#pragma mark Initialization and teardown
-
--(void)viewDidLoad
-{
- [super viewDidLoad];
-
- // Create pieChart from theme
- pieChart = [[CPTXYGraph alloc] initWithFrame:CGRectZero];
- CPTTheme *theme = [CPTTheme themeNamed:kCPTDarkGradientTheme];
- [pieChart applyTheme:theme];
- CPTGraphHostingView *hostingView = (CPTGraphHostingView *)self.view;
- hostingView.hostedGraph = pieChart;
-
- pieChart.paddingLeft = 20.0;
- pieChart.paddingTop = 20.0;
- pieChart.paddingRight = 20.0;
- pieChart.paddingBottom = 20.0;
-
- pieChart.plotAreaFrame.masksToBorder = NO;
-
- pieChart.axisSet = nil;
-
- // Add pie chart
- CPTPieChart *piePlot = [[CPTPieChart alloc] init];
- piePlot.dataSource = self;
- piePlot.pieRadius = 130.0;
- piePlot.identifier = @"Pie Chart 1";
- piePlot.startAngle = M_PI_4;
- piePlot.sliceDirection = CPTPieDirectionCounterClockwise;
- [pieChart addPlot:piePlot];
-
- // Add some initial data
- NSMutableArray *contentArray = [NSMutableArray arrayWithObjects:@20.0, @30.0, @60.0, nil];
- self.dataForChart = contentArray;
-
-#ifdef PERFORMANCE_TEST
- [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(changePlotRange) userInfo:nil repeats:YES];
-#endif
-}
-
--(void)didReceiveMemoryWarning
-{
- [super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview
- // Release anything that's not essential, such as cached data
-}
-
-#pragma mark -
-#pragma mark Plot Data Source Methods
-
--(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot
-{
- return [self.dataForChart count];
-}
-
--(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index
-{
- if ( index >= [self.dataForChart count] ) {
- return nil;
- }
-
- if ( fieldEnum == CPTPieChartFieldSliceWidth ) {
- return (self.dataForChart)[index];
- }
- else {
- return @(index);
- }
-}
-
-/*-(CPTFill *)sliceFillForPieChart:(CPTPieChart *)pieChart recordIndex:(NSUInteger)index;
- * {
- * return nil;
- * }*/
-
-@end
diff --git a/examples/CPTTestApp-iPhone-SpeedTest/Classes/CPTTestAppScatterPlotController.h b/examples/CPTTestApp-iPhone-SpeedTest/Classes/CPTTestAppScatterPlotController.h
deleted file mode 100644
index ec7a196e2..000000000
--- a/examples/CPTTestApp-iPhone-SpeedTest/Classes/CPTTestAppScatterPlotController.h
+++ /dev/null
@@ -1,21 +0,0 @@
-//
-// CPTTestAppScatterPlotController.h
-// CPTTestApp-iPhone
-//
-// Created by Brad Larson on 5/11/2009.
-//
-
-#import "CorePlot-CocoaTouch.h"
-#import
-
-#define NUM_POINTS 500
-
-@interface CPTTestAppScatterPlotController : UIViewController
-{
- CPTXYGraph *graph;
- double xxx[NUM_POINTS];
- double yyy1[NUM_POINTS];
- double yyy2[NUM_POINTS];
-}
-
-@end
diff --git a/examples/CPTTestApp-iPhone-SpeedTest/Classes/CPTTestAppScatterPlotController.m b/examples/CPTTestApp-iPhone-SpeedTest/Classes/CPTTestAppScatterPlotController.m
deleted file mode 100644
index 0dba40b45..000000000
--- a/examples/CPTTestApp-iPhone-SpeedTest/Classes/CPTTestAppScatterPlotController.m
+++ /dev/null
@@ -1,180 +0,0 @@
-//
-// CPTTestAppScatterPlotController.m
-// CPTTestApp-iPhone
-//
-// Created by Brad Larson on 5/11/2009.
-//
-
-#import "CPTTestAppScatterPlotController.h"
-#import "TestXYTheme.h"
-
-#define USE_DOUBLEFASTPATH true
-#define USE_ONEVALUEPATH false
-
-@implementation CPTTestAppScatterPlotController
-
--(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
-{
- return YES;
-}
-
-#pragma mark -
-#pragma mark Initialization and teardown
-
--(void)viewDidLoad
-{
- [super viewDidLoad];
-
- // Create graph from a custom theme
- graph = [[CPTXYGraph alloc] initWithFrame:CGRectZero];
- CPTTheme *theme = [[TestXYTheme alloc] init];
- [graph applyTheme:theme];
-
- CPTGraphHostingView *hostingView = (CPTGraphHostingView *)self.view;
- hostingView.hostedGraph = graph;
-
- graph.plotAreaFrame.masksToBorder = NO;
-
- // Setup plot space
- CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace;
- plotSpace.allowsUserInteraction = NO;
- plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0) length:CPTDecimalFromFloat(NUM_POINTS)];
- plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0) length:CPTDecimalFromFloat(NUM_POINTS)];
-
- // Create a blue plot area
- CPTScatterPlot *boundLinePlot = [[CPTScatterPlot alloc] init];
- boundLinePlot.identifier = @"Blue Plot";
-
- CPTMutableLineStyle *lineStyle = [boundLinePlot.dataLineStyle mutableCopy];
- lineStyle.lineWidth = 1.0;
- lineStyle.lineColor = [CPTColor blueColor];
- boundLinePlot.dataLineStyle = lineStyle;
-
- boundLinePlot.dataSource = self;
- [graph addPlot:boundLinePlot];
-
- // Create a green plot area
- CPTScatterPlot *dataSourceLinePlot = [[CPTScatterPlot alloc] init];
- dataSourceLinePlot.identifier = @"Green Plot";
-
- lineStyle = [dataSourceLinePlot.dataLineStyle mutableCopy];
- lineStyle.lineWidth = 1.0;
- lineStyle.lineColor = [CPTColor greenColor];
- dataSourceLinePlot.dataLineStyle = lineStyle;
-
- dataSourceLinePlot.dataSource = self;
- [graph addPlot:dataSourceLinePlot];
-
- for ( NSUInteger i = 0; i < NUM_POINTS; i++ ) {
- xxx[i] = i;
- yyy1[i] = (NUM_POINTS / 3) * (rand() / (double)RAND_MAX);
- yyy2[i] = (NUM_POINTS / 3) * (rand() / (double)RAND_MAX) + NUM_POINTS / 3;
- }
-
-#define PERFORMANCE_TEST1
-#ifdef PERFORMANCE_TEST1
- [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(changePlotRange) userInfo:nil repeats:YES];
-#endif
-
-#ifdef PERFORMANCE_TEST2
- [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(reloadPlots) userInfo:nil repeats:YES];
-#endif
-}
-
--(void)reloadPlots
-{
- NSArray *plots = [graph allPlots];
-
- for ( CPTPlot *plot in plots ) {
- [plot reloadData];
- }
-}
-
--(void)changePlotRange
-{
- // Setup plot space
- CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace;
- float ylen = NUM_POINTS * (rand() / (double)RAND_MAX);
-
- plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0) length:CPTDecimalFromFloat(NUM_POINTS)];
- plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0) length:CPTDecimalFromFloat(ylen)];
-}
-
-#pragma mark -
-#pragma mark Plot Data
-
--(double *)valuesForPlotWithIdentifier:(id)identifier field:(NSUInteger)fieldEnum
-{
- if ( fieldEnum == 0 ) {
- return xxx;
- }
- else {
- if ( [identifier isEqualToString:@"Blue Plot"] ) {
- return yyy1;
- }
- else {
- return yyy2;
- }
- }
-}
-
-#pragma mark -
-#pragma mark Plot Data Source Methods
-
--(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot
-{
- return NUM_POINTS;
-}
-
-#if USE_DOUBLEFASTPATH
-#if USE_ONEVALUEPATH
--(double)doubleForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)indx
-{
- double *values = [self valuesForPlotWithIdentifier:[plot identifier] field:fieldEnum];
-
- return values[indx];
-}
-
-#else
--(double *)doublesForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndexRange:(NSRange)indexRange
-{
- double *values = [self valuesForPlotWithIdentifier:[plot identifier] field:fieldEnum];
-
- return values + indexRange.location;
-}
-#endif
-
-#else
-#if USE_ONEVALUEPATH
--(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)indx
-{
- NSNumber *num = nil;
- double *values = [self valuesForPlotWithIdentifier:[plot identifier] field:fieldEnum];
-
- if ( values ) {
- num = @(values[indx]);
- }
- return num;
-}
-
-#else
--(NSArray *)numbersForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndexRange:(NSRange)indexRange
-{
- double *values = [self valuesForPlotWithIdentifier:[plot identifier] field:fieldEnum];
-
- if ( values == NULL ) {
- return nil;
- }
-
- NSMutableArray *returnArray = [NSMutableArray arrayWithCapacity:indexRange.length];
- for ( NSUInteger i = indexRange.location; i < indexRange.location + indexRange.length; i++ ) {
- NSNumber *number = [[NSNumber alloc] initWithDouble:values[i]];
- [returnArray addObject:number];
- [number release];
- }
- return returnArray;
-}
-#endif
-#endif
-
-@end
diff --git a/examples/CPTTestApp-iPhone-SpeedTest/Classes/CPTTestApp_iPhoneAppDelegate.h b/examples/CPTTestApp-iPhone-SpeedTest/Classes/CPTTestApp_iPhoneAppDelegate.h
deleted file mode 100644
index 250ee5094..000000000
--- a/examples/CPTTestApp-iPhone-SpeedTest/Classes/CPTTestApp_iPhoneAppDelegate.h
+++ /dev/null
@@ -1,18 +0,0 @@
-//
-// CPTTestApp_iPhoneAppDelegate.h
-// CPTTestApp-iPhone
-//
-// Toolbar icons in the application are courtesy of Joseph Wain / glyphish.com
-// See the license file in the GlyphishIcons directory for more information on these icons
-
-#import
-
-@interface CPTTestApp_iPhoneAppDelegate : NSObject {
- UIWindow *window;
- UITabBarController *tabBarController;
-}
-
-@property (nonatomic, strong) IBOutlet UIWindow *window;
-@property (nonatomic, strong) IBOutlet UITabBarController *tabBarController;
-
-@end
diff --git a/examples/CPTTestApp-iPhone-SpeedTest/Classes/CPTTestApp_iPhoneAppDelegate.m b/examples/CPTTestApp-iPhone-SpeedTest/Classes/CPTTestApp_iPhoneAppDelegate.m
deleted file mode 100644
index ba1add323..000000000
--- a/examples/CPTTestApp-iPhone-SpeedTest/Classes/CPTTestApp_iPhoneAppDelegate.m
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// CPTTestApp_iPhoneAppDelegate.m
-// CPTTestApp-iPhone
-//
-// Created by Brad Larson on 5/11/2009.
-
-#import "CPTTestApp_iPhoneAppDelegate.h"
-
-@implementation CPTTestApp_iPhoneAppDelegate
-
-@synthesize window;
-@synthesize tabBarController;
-
--(void)applicationDidFinishLaunching:(UIApplication *)application
-{
- if ( [self.window respondsToSelector:@selector(setRootViewController:)] ) {
- self.window.rootViewController = self.tabBarController;
- }
- else {
- [self.window addSubview:self.tabBarController.view];
- }
- [self.window makeKeyAndVisible];
-}
-
-/*
- * // Optional UITabBarControllerDelegate method
- * - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
- * }
- */
-
-/*
- * // Optional UITabBarControllerDelegate method
- * - (void)tabBarController:(UITabBarController *)tabBarController didEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed {
- * }
- */
-
-@end
diff --git a/examples/CPTTestApp-iPhone-SpeedTest/Classes/TestXYTheme.h b/examples/CPTTestApp-iPhone-SpeedTest/Classes/TestXYTheme.h
deleted file mode 100644
index c20a51e5f..000000000
--- a/examples/CPTTestApp-iPhone-SpeedTest/Classes/TestXYTheme.h
+++ /dev/null
@@ -1,17 +0,0 @@
-//
-// TestXYTheme.h
-// CPTTestApp-iPhone
-//
-// Created by Joan on 03/06/10.
-// Copyright 2010 __MyCompanyName__. All rights reserved.
-//
-
-#import
-
-#import "CorePlot-CocoaTouch.h"
-
-@interface TestXYTheme : CPTTheme
-{
-}
-
-@end
diff --git a/examples/CPTTestApp-iPhone-SpeedTest/Classes/TestXYTheme.m b/examples/CPTTestApp-iPhone-SpeedTest/Classes/TestXYTheme.m
deleted file mode 100644
index 0aa127589..000000000
--- a/examples/CPTTestApp-iPhone-SpeedTest/Classes/TestXYTheme.m
+++ /dev/null
@@ -1,102 +0,0 @@
-//
-// TestXYTheme.m
-// CPTTestApp-iPhone
-//
-// Created by Joan on 03/06/10.
-// Copyright 2010 __MyCompanyName__. All rights reserved.
-//
-
-#import "TestXYTheme.h"
-
-@implementation TestXYTheme
-
-+(NSString *)name
-{
- return @"TestXYTheme";
-}
-
--(id)init
-{
- if ( (self = [super init]) ) {
- self.graphClass = [CPTXYGraph class];
- }
- return self;
-}
-
-#pragma mark -
-
--(void)applyThemeToAxis:(CPTXYAxis *)axis usingMajorLineStyle:(CPTLineStyle *)majorLineStyle
- minorLineStyle:(CPTLineStyle *)minorLineStyle majorGridLineStyle:majorGridLineStyle textStyle:(CPTTextStyle *)textStyle
-{
- axis.labelingPolicy = CPTAxisLabelingPolicyFixedInterval;
- axis.majorIntervalLength = CPTDecimalFromDouble(20.0);
- axis.orthogonalCoordinateDecimal = CPTDecimalFromDouble(0.0);
- axis.tickDirection = CPTSignNone;
- axis.minorTicksPerInterval = 3;
- axis.majorTickLineStyle = majorLineStyle;
- axis.minorTickLineStyle = minorLineStyle;
- axis.axisLineStyle = majorLineStyle;
- axis.majorTickLength = 5.0;
- axis.minorTickLength = 3.0;
- axis.labelTextStyle = textStyle;
- axis.titleTextStyle = textStyle;
- //axis.labelFormatter = numberFormatter ;
- axis.majorGridLineStyle = majorGridLineStyle;
- axis.labelingPolicy = CPTAxisLabelingPolicyAutomatic;
-}
-
--(void)applyThemeToBackground:(CPTXYGraph *)graph
-{
- CPTColor *endColor = [CPTColor colorWithGenericGray:0.1];
- CPTGradient *graphGradient = [CPTGradient gradientWithBeginningColor:endColor endingColor:endColor];
-
- graphGradient = [graphGradient addColorStop:[CPTColor colorWithGenericGray:0.2] atPosition:0.3];
- graphGradient = [graphGradient addColorStop:[CPTColor colorWithGenericGray:0.3] atPosition:0.5];
- graphGradient = [graphGradient addColorStop:[CPTColor colorWithGenericGray:0.2] atPosition:0.6];
- graphGradient.angle = 90.0;
- graph.fill = [CPTFill fillWithGradient:graphGradient];
-}
-
--(void)applyThemeToPlotArea:(CPTPlotAreaFrame *)plotAreaFrame
-{
- CPTGradient *gradient = [CPTGradient gradientWithBeginningColor:[CPTColor colorWithGenericGray:0.1] endingColor:[CPTColor colorWithGenericGray:0.3]];
-
- gradient.angle = 90.0;
- plotAreaFrame.fill = [CPTFill fillWithGradient:gradient];
-
- plotAreaFrame.paddingLeft = 50;
- plotAreaFrame.paddingTop = 10;
- plotAreaFrame.paddingRight = 20;
- plotAreaFrame.paddingBottom = 30;
-}
-
--(void)applyThemeToAxisSet:(CPTXYAxisSet *)axisSet
-{
- CPTMutableLineStyle *majorLineStyle = [CPTMutableLineStyle lineStyle];
-
- majorLineStyle.lineCap = kCGLineCapSquare;
- majorLineStyle.lineColor = [CPTColor grayColor];
- majorLineStyle.lineWidth = 2.0;
-
- CPTMutableLineStyle *minorLineStyle = [CPTMutableLineStyle lineStyle];
- minorLineStyle.lineCap = kCGLineCapSquare;
- minorLineStyle.lineColor = [CPTColor grayColor];
- minorLineStyle.lineWidth = 1.0;
-
- CPTMutableLineStyle *majorGridLineStyle = [CPTMutableLineStyle lineStyle];
- majorGridLineStyle.lineWidth = 0.1;
- majorGridLineStyle.lineColor = [CPTColor lightGrayColor];
-
- CPTMutableLineStyle *minorGridLineStyle = [CPTMutableLineStyle lineStyle];
- minorGridLineStyle.lineWidth = 0.25;
- minorGridLineStyle.lineColor = [CPTColor blueColor];
-
- CPTMutableTextStyle *whiteTextStyle = [[CPTMutableTextStyle alloc] init];
- whiteTextStyle.color = [CPTColor whiteColor];
- whiteTextStyle.fontSize = 14.0;
-
- [self applyThemeToAxis:axisSet.xAxis usingMajorLineStyle:majorLineStyle minorLineStyle:minorLineStyle majorGridLineStyle:majorGridLineStyle textStyle:whiteTextStyle];
- [self applyThemeToAxis:axisSet.yAxis usingMajorLineStyle:majorLineStyle minorLineStyle:minorLineStyle majorGridLineStyle:majorGridLineStyle textStyle:whiteTextStyle];
-}
-
-@end
diff --git a/examples/CPTTestApp-iPhone-SpeedTest/CorePlotIcon.png b/examples/CPTTestApp-iPhone-SpeedTest/CorePlotIcon.png
deleted file mode 100644
index 920d8f8f9..000000000
Binary files a/examples/CPTTestApp-iPhone-SpeedTest/CorePlotIcon.png and /dev/null differ
diff --git a/examples/CPTTestApp-iPhone-SpeedTest/CorePlotIcon@2x.png b/examples/CPTTestApp-iPhone-SpeedTest/CorePlotIcon@2x.png
deleted file mode 100644
index 240f15306..000000000
Binary files a/examples/CPTTestApp-iPhone-SpeedTest/CorePlotIcon@2x.png and /dev/null differ
diff --git a/examples/CPTTestApp-iPhone-SpeedTest/Default-568h@2x.png b/examples/CPTTestApp-iPhone-SpeedTest/Default-568h@2x.png
deleted file mode 100644
index 0891b7aab..000000000
Binary files a/examples/CPTTestApp-iPhone-SpeedTest/Default-568h@2x.png and /dev/null differ
diff --git a/examples/CPTTestApp-iPhone-SpeedTest/GlyphishIcons/16-line-chart.png b/examples/CPTTestApp-iPhone-SpeedTest/GlyphishIcons/16-line-chart.png
deleted file mode 100644
index 37b48e956..000000000
Binary files a/examples/CPTTestApp-iPhone-SpeedTest/GlyphishIcons/16-line-chart.png and /dev/null differ
diff --git a/examples/CPTTestApp-iPhone-SpeedTest/GlyphishIcons/17-bar-chart.png b/examples/CPTTestApp-iPhone-SpeedTest/GlyphishIcons/17-bar-chart.png
deleted file mode 100644
index f3fbebbc2..000000000
Binary files a/examples/CPTTestApp-iPhone-SpeedTest/GlyphishIcons/17-bar-chart.png and /dev/null differ
diff --git a/examples/CPTTestApp-iPhone-SpeedTest/GlyphishIcons/62-contrast.png b/examples/CPTTestApp-iPhone-SpeedTest/GlyphishIcons/62-contrast.png
deleted file mode 100644
index 98ec0ad25..000000000
Binary files a/examples/CPTTestApp-iPhone-SpeedTest/GlyphishIcons/62-contrast.png and /dev/null differ
diff --git a/examples/CPTTestApp-iPhone-SpeedTest/GlyphishIcons/Read me first - license.txt b/examples/CPTTestApp-iPhone-SpeedTest/GlyphishIcons/Read me first - license.txt
deleted file mode 100644
index 5fa3c99ad..000000000
--- a/examples/CPTTestApp-iPhone-SpeedTest/GlyphishIcons/Read me first - license.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-Created by Joseph Wain (see http://penandthink.com) at and probably downloaded from http://glyphish.com
-
-This work is licensed under the Creative Commons Attribution 3.0 United States License. To view a copy of this license, visit http://creativecommons.org/licenses/by/3.0/us/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
-
-You are free to share it and to remix it remix under the following conditions:
-
-* You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work).
-* For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do this is with a link to http://creativecommons.org/licenses/by/3.0/us/
-* Any of the above conditions can be waived if you get permission from the copyright holder (send me an email!).
-* Apart from the remix rights granted under this license, nothing in this license impairs or restricts the author's moral rights.
-
-ATTRIBUTION -- a note reading "icons by Joseph Wain / glyphish.com" or similar, plus a link back to glyphish.com from your app's website, is the preferred form of attribution. Also acceptable would be, like, a link from within your iPhone application, or from the iTunes store page, but those aren't as useful to other people. If none of these work for you, please contact hello@glyphish.com and we can work something out.
-
-USE WITHOUT ATTRIBUTION -- If attribution is not possible, workable or desirable for your application, contact hello@glyphish.com for commercial non-attributed licensing terms.
\ No newline at end of file
diff --git a/examples/CPTTestApp-iPhone-SpeedTest/MainWindow.xib b/examples/CPTTestApp-iPhone-SpeedTest/MainWindow.xib
deleted file mode 100644
index 97a8aead0..000000000
--- a/examples/CPTTestApp-iPhone-SpeedTest/MainWindow.xib
+++ /dev/null
@@ -1,436 +0,0 @@
-
-
-
- 528
- 12C60
- 2843
- 1187.34
- 625.00
-
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- 1929
-
-
- YES
- IBProxyObject
- IBUICustomObject
- IBUITabBar
- IBUITabBarController
- IBUITabBarItem
- IBUIViewController
- IBUIWindow
-
-
- YES
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
-
-
- PluginDependencyRecalculationVersion
-
-
-
- YES
-
- IBFilesOwner
- IBCocoaTouchFramework
-
-
- IBFirstResponder
- IBCocoaTouchFramework
-
-
- IBCocoaTouchFramework
-
-
-
- 1316
-
- {320, 480}
-
-
-
- 1
- MSAxIDEAA
-
- NO
- NO
-
- IBCocoaTouchFramework
- YES
- YES
-
-
-
-
-
- 1
- 1
-
- IBCocoaTouchFramework
- NO
-
- Pie Chart
-
- Pie Chart
-
- NSImage
- 62-contrast.png
-
- IBCocoaTouchFramework
-
-
- YES
-
-
- PieChart
-
- 1
- 1
-
- IBCocoaTouchFramework
- NO
-
-
- YES
-
- Scatter Plot
-
- Scatter Plot
-
- NSImage
- 16-line-chart.png
-
- IBCocoaTouchFramework
-
-
- ScatterPlot
-
- 1
- 1
-
- IBCocoaTouchFramework
- NO
-
-
-
- Bar Chart
-
- NSImage
- 17-bar-chart.png
-
- IBCocoaTouchFramework
-
-
- BarChart
-
- 1
- 1
-
- IBCocoaTouchFramework
- NO
-
-
-
-
-
- 266
- {{129, 330}, {163, 49}}
-
- 3
- MCAwAA
-
- NO
- IBCocoaTouchFramework
-
-
-
-
-
- YES
-
-
- delegate
-
-
-
- 99
-
-
-
- window
-
-
-
- 9
-
-
-
- tabBarController
-
-
-
- 113
-
-
-
-
- YES
-
- 0
-
-
-
-
-
- 2
-
-
- YES
-
-
-
-
- -1
-
-
- File's Owner
-
-
- 3
-
-
-
-
- 106
-
-
- YES
-
-
-
-
-
-
-
-
- 107
-
-
-
-
- 108
-
-
- YES
-
-
-
-
-
- 109
-
-
- YES
-
-
-
-
-
- 110
-
-
-
-
- 111
-
-
-
-
- -2
-
-
-
-
- 125
-
-
- YES
-
-
-
-
-
- 126
-
-
-
-
-
-
- YES
-
- YES
- -1.CustomClassName
- -1.IBPluginDependency
- -2.CustomClassName
- -2.IBPluginDependency
- 106.IBPluginDependency
- 107.IBPluginDependency
- 108.CustomClassName
- 108.IBPluginDependency
- 109.CustomClassName
- 109.IBPluginDependency
- 110.IBPluginDependency
- 111.IBPluginDependency
- 125.CustomClassName
- 125.IBPluginDependency
- 126.IBPluginDependency
- 2.IBAttributePlaceholdersKey
- 2.IBPluginDependency
- 3.CustomClassName
- 3.IBPluginDependency
-
-
- YES
- UIApplication
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- UIResponder
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- CPTTestAppScatterPlotController
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- CPTTestAppBarChartController
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- CPTTestAppPieChartController
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
-
- YES
-
-
-
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- CPTTestApp_iPhoneAppDelegate
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
-
-
-
- YES
-
-
-
-
-
- YES
-
-
-
-
- 126
-
-
-
- YES
-
- CPTTestAppBarChartController
- UIViewController
-
- IBProjectSource
- ./Classes/CPTTestAppBarChartController.h
-
-
-
- CPTTestAppPieChartController
- UIViewController
-
- IBProjectSource
- ./Classes/CPTTestAppPieChartController.h
-
-
-
- CPTTestAppScatterPlotController
- UIViewController
-
- IBProjectSource
- ./Classes/CPTTestAppScatterPlotController.h
-
-
-
- CPTTestApp_iPhoneAppDelegate
- NSObject
-
- YES
-
- YES
- tabBarController
- window
-
-
- YES
- UITabBarController
- UIWindow
-
-
-
- YES
-
- YES
- tabBarController
- window
-
-
- YES
-
- tabBarController
- UITabBarController
-
-
- window
- UIWindow
-
-
-
-
- IBProjectSource
- ./Classes/CPTTestApp_iPhoneAppDelegate.h
-
-
-
-
- 0
- IBCocoaTouchFramework
-
- com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
-
-
-
- com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
-
-
-
- com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
-
-
- YES
- 3
-
- YES
-
- YES
- 16-line-chart.png
- 17-bar-chart.png
- 62-contrast.png
-
-
- YES
- {30, 24}
- {29, 24}
- {20, 20}
-
-
- 1929
-
-
diff --git a/examples/CPTTestApp-iPhone-SpeedTest/PieChart.xib b/examples/CPTTestApp-iPhone-SpeedTest/PieChart.xib
deleted file mode 100644
index 0793e4bdd..000000000
--- a/examples/CPTTestApp-iPhone-SpeedTest/PieChart.xib
+++ /dev/null
@@ -1,346 +0,0 @@
-
-
-
- 768
- 10F569
- 804
- 1038.29
- 461.00
-
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- 123
-
-
- YES
-
-
- YES
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
-
-
- YES
-
- YES
-
-
- YES
-
-
-
- YES
-
- IBFilesOwner
- IBCocoaTouchFramework
-
-
- IBFirstResponder
- IBCocoaTouchFramework
-
-
-
- 274
- {320, 411}
-
- 3
- MQA
-
- 2
-
-
-
-
- IBCocoaTouchFramework
-
-
-
-
- YES
-
-
- view
-
-
-
- 3
-
-
-
-
- YES
-
- 0
-
-
-
-
-
- 1
-
-
- YES
-
-
-
-
- -1
-
-
- File's Owner
-
-
- -2
-
-
-
-
-
-
- YES
-
- YES
- -1.CustomClassName
- -2.CustomClassName
- 1.CustomClassName
- 1.IBEditorWindowLastContentRect
- 1.IBPluginDependency
-
-
- YES
- CPTTestAppPieChartController
- UIResponder
- CPTGraphHostingView
- {{158, 204}, {320, 480}}
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
-
-
-
- YES
-
-
- YES
-
-
-
-
- YES
-
-
- YES
-
-
-
- 9
-
-
-
- YES
-
- CPTTestAppPieChartController
- UIViewController
-
- IBProjectSource
- Classes/CPTTestAppPieChartController.h
-
-
-
-
- YES
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSError.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSFileManager.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSKeyValueCoding.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSKeyValueObserving.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSKeyedArchiver.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSObject.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSRunLoop.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSThread.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSURL.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSURLConnection.h
-
-
-
- NSObject
-
- IBFrameworkSource
- QuartzCore.framework/Headers/CAAnimation.h
-
-
-
- NSObject
-
- IBFrameworkSource
- QuartzCore.framework/Headers/CALayer.h
-
-
-
- NSObject
-
- IBFrameworkSource
- UIKit.framework/Headers/UIAccessibility.h
-
-
-
- NSObject
-
- IBFrameworkSource
- UIKit.framework/Headers/UINibLoading.h
-
-
-
- NSObject
-
- IBFrameworkSource
- UIKit.framework/Headers/UIResponder.h
-
-
-
- UIResponder
- NSObject
-
-
-
- UISearchBar
- UIView
-
- IBFrameworkSource
- UIKit.framework/Headers/UISearchBar.h
-
-
-
- UISearchDisplayController
- NSObject
-
- IBFrameworkSource
- UIKit.framework/Headers/UISearchDisplayController.h
-
-
-
- UIView
-
- IBFrameworkSource
- UIKit.framework/Headers/UITextField.h
-
-
-
- UIView
- UIResponder
-
- IBFrameworkSource
- UIKit.framework/Headers/UIView.h
-
-
-
- UIViewController
-
- IBFrameworkSource
- UIKit.framework/Headers/UINavigationController.h
-
-
-
- UIViewController
-
- IBFrameworkSource
- UIKit.framework/Headers/UIPopoverController.h
-
-
-
- UIViewController
-
- IBFrameworkSource
- UIKit.framework/Headers/UISplitViewController.h
-
-
-
- UIViewController
-
- IBFrameworkSource
- UIKit.framework/Headers/UITabBarController.h
-
-
-
- UIViewController
- UIResponder
-
- IBFrameworkSource
- UIKit.framework/Headers/UIViewController.h
-
-
-
-
- 0
- IBCocoaTouchFramework
-
- com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
-
-
-
- com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
-
-
-
- com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
-
-
- YES
- CPTTestApp-iPhone.xcodeproj
- 3
- 123
-
-
diff --git a/examples/CPTTestApp-iPhone-SpeedTest/ScatterPlot.xib b/examples/CPTTestApp-iPhone-SpeedTest/ScatterPlot.xib
deleted file mode 100644
index acd2d4ba7..000000000
--- a/examples/CPTTestApp-iPhone-SpeedTest/ScatterPlot.xib
+++ /dev/null
@@ -1,356 +0,0 @@
-
-
-
- 528
- 10F569
- 804
- 1038.29
- 461.00
-
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- 123
-
-
- YES
-
-
- YES
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
-
-
- YES
-
- YES
-
-
- YES
-
-
-
- YES
-
- IBFilesOwner
- IBCocoaTouchFramework
-
-
- IBFirstResponder
- IBCocoaTouchFramework
-
-
-
- 274
- {320, 460}
-
- 3
- MQA
-
- 2
-
-
-
- IBCocoaTouchFramework
-
-
-
-
- YES
-
-
- view
-
-
-
- 5
-
-
-
-
- YES
-
- 0
-
-
-
-
-
- 1
-
-
- YES
-
-
-
-
- -1
-
-
- File's Owner
-
-
- -2
-
-
-
-
-
-
- YES
-
- YES
- -1.CustomClassName
- -2.CustomClassName
- 1.CustomClassName
- 1.IBEditorWindowLastContentRect
- 1.IBPluginDependency
-
-
- YES
- CPTTestAppScatterPlotController
- UIResponder
- CPTGraphHostingView
- {{430, 168}, {320, 480}}
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
-
-
-
- YES
-
-
- YES
-
-
-
-
- YES
-
-
- YES
-
-
-
- 5
-
-
-
- YES
-
- CPTTestAppScatterPlotController
- UIViewController
-
- IBProjectSource
- Classes/CPTTestAppScatterPlotController.h
-
-
-
-
- YES
-
- CPTGraphHostingView
- UIView
-
- IBDocumentRelativeSource
- ../../framework/iPhoneOnly/CPTGraphHostingView.h
-
-
-
-
- YES
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSError.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSFileManager.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSKeyValueCoding.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSKeyValueObserving.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSKeyedArchiver.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSObject.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSRunLoop.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSThread.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSURL.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSURLConnection.h
-
-
-
- NSObject
-
- IBFrameworkSource
- QuartzCore.framework/Headers/CAAnimation.h
-
-
-
- NSObject
-
- IBFrameworkSource
- QuartzCore.framework/Headers/CALayer.h
-
-
-
- NSObject
-
- IBFrameworkSource
- UIKit.framework/Headers/UIAccessibility.h
-
-
-
- NSObject
-
- IBFrameworkSource
- UIKit.framework/Headers/UINibLoading.h
-
-
-
- NSObject
-
- IBFrameworkSource
- UIKit.framework/Headers/UIResponder.h
-
-
-
- UIResponder
- NSObject
-
-
-
- UISearchBar
- UIView
-
- IBFrameworkSource
- UIKit.framework/Headers/UISearchBar.h
-
-
-
- UISearchDisplayController
- NSObject
-
- IBFrameworkSource
- UIKit.framework/Headers/UISearchDisplayController.h
-
-
-
- UIView
-
- IBFrameworkSource
- UIKit.framework/Headers/UITextField.h
-
-
-
- UIView
- UIResponder
-
- IBFrameworkSource
- UIKit.framework/Headers/UIView.h
-
-
-
- UIViewController
-
- IBFrameworkSource
- UIKit.framework/Headers/UINavigationController.h
-
-
-
- UIViewController
-
- IBFrameworkSource
- UIKit.framework/Headers/UIPopoverController.h
-
-
-
- UIViewController
-
- IBFrameworkSource
- UIKit.framework/Headers/UISplitViewController.h
-
-
-
- UIViewController
-
- IBFrameworkSource
- UIKit.framework/Headers/UITabBarController.h
-
-
-
- UIViewController
- UIResponder
-
- IBFrameworkSource
- UIKit.framework/Headers/UIViewController.h
-
-
-
-
- 0
- IBCocoaTouchFramework
-
- com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
-
-
-
- com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
-
-
-
- com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
-
-
- YES
- CPTTestApp-iPhone.xcodeproj
- 3
- 123
-
-
diff --git a/examples/CPTTestApp-iPhone-SpeedTest/main.m b/examples/CPTTestApp-iPhone-SpeedTest/main.m
deleted file mode 100644
index 762bdbbff..000000000
--- a/examples/CPTTestApp-iPhone-SpeedTest/main.m
+++ /dev/null
@@ -1,17 +0,0 @@
-//
-// main.m
-// CPTTestApp-iPhone
-//
-// Created by Brad Larson on 5/11/2009.
-//
-
-#import
-
-int main(int argc, char *argv[])
-{
- @autoreleasepool {
- int retVal = UIApplicationMain(argc, argv, nil, nil);
-
- return retVal;
- }
-}
diff --git a/examples/CPTTestApp-iPhone/BarChart.xib b/examples/CPTTestApp-iPhone/BarChart.xib
deleted file mode 100644
index 487a42233..000000000
--- a/examples/CPTTestApp-iPhone/BarChart.xib
+++ /dev/null
@@ -1,356 +0,0 @@
-
-
-
- 768
- 10F569
- 804
- 1038.29
- 461.00
-
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- 123
-
-
- YES
-
-
- YES
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
-
-
- YES
-
- YES
-
-
- YES
-
-
-
- YES
-
- IBFilesOwner
- IBCocoaTouchFramework
-
-
- IBFirstResponder
- IBCocoaTouchFramework
-
-
-
- 274
- {320, 411}
-
-
-
- 3
- MQA
-
- 2
-
-
-
-
- IBCocoaTouchFramework
-
-
-
-
- YES
-
-
- view
-
-
-
- 3
-
-
-
-
- YES
-
- 0
-
-
-
-
-
- 1
-
-
- YES
-
-
-
-
- -1
-
-
- File's Owner
-
-
- -2
-
-
-
-
-
-
- YES
-
- YES
- -1.CustomClassName
- -2.CustomClassName
- 1.CustomClassName
- 1.IBEditorWindowLastContentRect
- 1.IBPluginDependency
-
-
- YES
- CPTTestAppBarChartController
- UIResponder
- CPTGraphHostingView
- {{568, 433}, {320, 480}}
- com.apple.InterfaceBuilder.IBCocoaTouchPlugin
-
-
-
- YES
-
-
- YES
-
-
-
-
- YES
-
-
- YES
-
-
-
- 9
-
-
-
- YES
-
- CPTGraphHostingView
- UIView
-
- IBUserSource
-
-
-
-
- CPTTestAppBarChartController
- UIViewController
-
- IBProjectSource
- Classes/CPTTestAppBarChartController.h
-
-
-
-
- YES
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSError.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSFileManager.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSKeyValueCoding.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSKeyValueObserving.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSKeyedArchiver.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSObject.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSRunLoop.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSThread.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSURL.h
-
-
-
- NSObject
-
- IBFrameworkSource
- Foundation.framework/Headers/NSURLConnection.h
-
-
-
- NSObject
-
- IBFrameworkSource
- QuartzCore.framework/Headers/CAAnimation.h
-
-
-
- NSObject
-
- IBFrameworkSource
- QuartzCore.framework/Headers/CALayer.h
-
-
-
- NSObject
-
- IBFrameworkSource
- UIKit.framework/Headers/UIAccessibility.h
-
-
-
- NSObject
-
- IBFrameworkSource
- UIKit.framework/Headers/UINibLoading.h
-
-
-
- NSObject
-
- IBFrameworkSource
- UIKit.framework/Headers/UIResponder.h
-
-
-
- UIResponder
- NSObject
-
-
-
- UISearchBar
- UIView
-
- IBFrameworkSource
- UIKit.framework/Headers/UISearchBar.h
-
-
-
- UISearchDisplayController
- NSObject
-
- IBFrameworkSource
- UIKit.framework/Headers/UISearchDisplayController.h
-
-
-
- UIView
-
- IBFrameworkSource
- UIKit.framework/Headers/UITextField.h
-
-
-
- UIView
- UIResponder
-
- IBFrameworkSource
- UIKit.framework/Headers/UIView.h
-
-
-
- UIViewController
-
- IBFrameworkSource
- UIKit.framework/Headers/UINavigationController.h
-
-
-
- UIViewController
-
- IBFrameworkSource
- UIKit.framework/Headers/UIPopoverController.h
-
-
-
- UIViewController
-
- IBFrameworkSource
- UIKit.framework/Headers/UISplitViewController.h
-
-
-
- UIViewController
-
- IBFrameworkSource
- UIKit.framework/Headers/UITabBarController.h
-
-
-
- UIViewController
- UIResponder
-
- IBFrameworkSource
- UIKit.framework/Headers/UIViewController.h
-
-
-
-
- 0
- IBCocoaTouchFramework
-
- com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
-
-
-
- com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
-
-
-
- com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
-
-
- YES
- CPTTestApp-iPhone.xcodeproj
- 3
- 123
-
-
diff --git a/examples/CPTTestApp-iPhone/Base.lproj/BarChart.xib b/examples/CPTTestApp-iPhone/Base.lproj/BarChart.xib
new file mode 100644
index 000000000..646ef95c3
--- /dev/null
+++ b/examples/CPTTestApp-iPhone/Base.lproj/BarChart.xib
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/CPTTestApp-iPhone-SpeedTest/Info.plist b/examples/CPTTestApp-iPhone/Base.lproj/Info.plist
similarity index 83%
rename from examples/CPTTestApp-iPhone-SpeedTest/Info.plist
rename to examples/CPTTestApp-iPhone/Base.lproj/Info.plist
index 564faf60a..3f5c82874 100644
--- a/examples/CPTTestApp-iPhone-SpeedTest/Info.plist
+++ b/examples/CPTTestApp-iPhone/Base.lproj/Info.plist
@@ -8,16 +8,18 @@
${PRODUCT_NAME}CFBundleExecutable${EXECUTABLE_NAME}
- CFBundleIconFile
- CorePlotIcon
+ CFBundleIcons~ipad
+ CFBundleIdentifier
- com.SweetWilliam.CPTTestApp
+ $(PRODUCT_BUNDLE_IDENTIFIER)CFBundleInfoDictionaryVersion6.0CFBundleName${PRODUCT_NAME}CFBundlePackageTypeAPPL
+ CFBundleShortVersionString
+ 1.0CFBundleSignature????CFBundleVersion
@@ -26,6 +28,8 @@
NSMainNibFileMainWindow
+ UILaunchStoryboardName
+ Launch ScreenUISupportedInterfaceOrientationsUIInterfaceOrientationPortrait
diff --git a/examples/CPTTestApp-iPhone/Base.lproj/Launch Screen.xib b/examples/CPTTestApp-iPhone/Base.lproj/Launch Screen.xib
new file mode 100644
index 000000000..b51d6d522
--- /dev/null
+++ b/examples/CPTTestApp-iPhone/Base.lproj/Launch Screen.xib
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/CPTTestApp-iPhone/Base.lproj/MainWindow.xib b/examples/CPTTestApp-iPhone/Base.lproj/MainWindow.xib
new file mode 100644
index 000000000..19255ec6e
--- /dev/null
+++ b/examples/CPTTestApp-iPhone/Base.lproj/MainWindow.xib
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/CPTTestApp-iPhone/Base.lproj/PieChart.xib b/examples/CPTTestApp-iPhone/Base.lproj/PieChart.xib
new file mode 100644
index 000000000..840e4935a
--- /dev/null
+++ b/examples/CPTTestApp-iPhone/Base.lproj/PieChart.xib
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/CPTTestApp-iPhone/Base.lproj/ScatterPlot.xib b/examples/CPTTestApp-iPhone/Base.lproj/ScatterPlot.xib
new file mode 100644
index 000000000..b1747d817
--- /dev/null
+++ b/examples/CPTTestApp-iPhone/Base.lproj/ScatterPlot.xib
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone-Bridging-Header.h b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone-Bridging-Header.h
new file mode 100644
index 000000000..c99c8cd1b
--- /dev/null
+++ b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone-Bridging-Header.h
@@ -0,0 +1 @@
+#import "CorePlot-CocoaTouch.h"
diff --git a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj
index ea27401fa..672347980 100644
--- a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj
+++ b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/project.pbxproj
@@ -3,90 +3,115 @@
archiveVersion = 1;
classes = {
};
- objectVersion = 46;
+ objectVersion = 47;
objects = {
/* Begin PBXBuildFile section */
- 1D3623260D0F684500981E51 /* CPTTestApp_iPhoneAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* CPTTestApp_iPhoneAppDelegate.m */; };
- 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 */; };
- 28216C970DB411BC00E5133A /* CPTTestAppBarChartController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28216C960DB411BC00E5133A /* CPTTestAppBarChartController.m */; };
- 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 */; };
- BC74A33A10FC40C600E7E90D /* CPTTestAppPieChartController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC74A33910FC40C600E7E90D /* CPTTestAppPieChartController.m */; };
- 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 */; };
- BC9B843A0FB8B76B0035D8DA /* CPTTestAppScatterPlotController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC9B84390FB8B76B0035D8DA /* CPTTestAppScatterPlotController.m */; };
- BCB3FD660FD85732008875A4 /* CorePlotIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = BCB3FD650FD85732008875A4 /* CorePlotIcon.png */; };
- C34B5596163C7D2C002EFA85 /* UINavigationController+LegacyRotation.m in Sources */ = {isa = PBXBuildFile; fileRef = C34B5591163C7D2B002EFA85 /* UINavigationController+LegacyRotation.m */; };
- C34B5597163C7D2C002EFA85 /* UITabBarController+LegacyRotation.m in Sources */ = {isa = PBXBuildFile; fileRef = C34B5593163C7D2C002EFA85 /* UITabBarController+LegacyRotation.m */; };
- C34B5598163C7D2C002EFA85 /* UIViewController+LegacyRotation.m in Sources */ = {isa = PBXBuildFile; fileRef = C34B5595163C7D2C002EFA85 /* UIViewController+LegacyRotation.m */; };
- C3B9F2C317BFD350003D2B6B /* CorePlotIcon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C3B9F2C217BFD350003D2B6B /* CorePlotIcon@2x.png */; };
+ 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 */; };
- C3BB7D611633516500BC9515 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C3BB7D601633516500BC9515 /* Default-568h@2x.png */; };
- C3CD283E17DE9C95008EED1E /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3CD283D17DE9C95008EED1E /* Accelerate.framework */; };
- F7AE270A0FFFB61E001F26F0 /* libCorePlot-CocoaTouch.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BC9B83B50FB8A9BC0035D8DA /* libCorePlot-CocoaTouch.a */; };
+ 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 */
/* Begin PBXContainerItemProxy section */
- BC9B83B40FB8A9BC0035D8DA /* PBXContainerItemProxy */ = {
+ C31D01F11D10F506008C1EF2 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
- containerPortal = BC9B83B00FB8A9BC0035D8DA /* CorePlot-CocoaTouch.xcodeproj */;
+ containerPortal = C3D414AE1A7D846500B6F5D6 /* CorePlot.xcodeproj */;
proxyType = 2;
- remoteGlobalIDString = BC9B83470FB8A0A40035D8DA;
- remoteInfo = "CorePlot-CocoaTouch";
+ remoteGlobalIDString = C37EA6921BC83F2A0091C8F7;
+ remoteInfo = "CorePlot tvOS";
};
- BC9B83B60FB8A9C70035D8DA /* PBXContainerItemProxy */ = {
+ C31D01F31D10F506008C1EF2 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
- containerPortal = BC9B83B00FB8A9BC0035D8DA /* CorePlot-CocoaTouch.xcodeproj */;
- proxyType = 1;
- remoteGlobalIDString = BC9B83460FB8A0A40035D8DA;
+ containerPortal = C3D414AE1A7D846500B6F5D6 /* CorePlot.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = C37EA6B71BC83F2D0091C8F7;
+ remoteInfo = "UnitTests tvOS";
+ };
+ C3D414BA1A7D846500B6F5D6 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = C3D414AE1A7D846500B6F5D6 /* CorePlot.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 8DC2EF5B0486A6940098B216;
+ remoteInfo = CorePlot;
+ };
+ C3D414BC1A7D846500B6F5D6 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = C3D414AE1A7D846500B6F5D6 /* CorePlot.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 0730F600109492D800E95162;
+ remoteInfo = UnitTests;
+ };
+ C3D414BE1A7D846500B6F5D6 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = C3D414AE1A7D846500B6F5D6 /* CorePlot.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = C38A09781A46185200D45436;
+ remoteInfo = CorePlot_iOS;
+ };
+ C3D414C01A7D846500B6F5D6 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = C3D414AE1A7D846500B6F5D6 /* CorePlot.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = C38A09821A46185300D45436;
+ remoteInfo = CorePlot_iOSTests;
+ };
+ C3D414C21A7D846500B6F5D6 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = C3D414AE1A7D846500B6F5D6 /* CorePlot.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = C38A09BA1A4619A900D45436;
remoteInfo = "CorePlot-CocoaTouch";
};
+ C3D414C41A7D846500B6F5D6 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = C3D414AE1A7D846500B6F5D6 /* CorePlot.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = C38A09C41A4619A900D45436;
+ remoteInfo = "CorePlot-CocoaTouchTests";
+ };
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
- 1D3623240D0F684500981E51 /* CPTTestApp_iPhoneAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPTTestApp_iPhoneAppDelegate.h; sourceTree = ""; };
- 1D3623250D0F684500981E51 /* CPTTestApp_iPhoneAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CPTTestApp_iPhoneAppDelegate.m; sourceTree = ""; };
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; };
- 28216C950DB411BC00E5133A /* CPTTestAppBarChartController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPTTestAppBarChartController.h; sourceTree = ""; };
- 28216C960DB411BC00E5133A /* CPTTestAppBarChartController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CPTTestAppBarChartController.m; sourceTree = ""; };
- 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; };
- 28A0AB4B0D9B1048005BE974 /* CPTTestApp_iPhone_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPTTestApp_iPhone_Prefix.pch; sourceTree = ""; };
- 28AD73870D9D96C1002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = ""; };
- 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
- 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- BC74A33810FC40C600E7E90D /* CPTTestAppPieChartController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPTTestAppPieChartController.h; sourceTree = ""; };
- BC74A33910FC40C600E7E90D /* CPTTestAppPieChartController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CPTTestAppPieChartController.m; 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; };
- BC9B83B00FB8A9BC0035D8DA /* CorePlot-CocoaTouch.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "CorePlot-CocoaTouch.xcodeproj"; path = "../../framework/CorePlot-CocoaTouch.xcodeproj"; sourceTree = SOURCE_ROOT; };
- BC9B84350FB8B7110035D8DA /* ScatterPlot.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ScatterPlot.xib; sourceTree = ""; };
- BC9B84380FB8B76B0035D8DA /* CPTTestAppScatterPlotController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPTTestAppScatterPlotController.h; sourceTree = ""; };
- BC9B84390FB8B76B0035D8DA /* CPTTestAppScatterPlotController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CPTTestAppScatterPlotController.m; sourceTree = ""; };
- BCB3FD650FD85732008875A4 /* CorePlotIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CorePlotIcon.png; sourceTree = ""; };
- C34B5590163C7D2B002EFA85 /* UINavigationController+LegacyRotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UINavigationController+LegacyRotation.h"; path = "../../iOS Rotation Utilities/UINavigationController+LegacyRotation.h"; sourceTree = ""; };
- C34B5591163C7D2B002EFA85 /* UINavigationController+LegacyRotation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "UINavigationController+LegacyRotation.m"; path = "../../iOS Rotation Utilities/UINavigationController+LegacyRotation.m"; sourceTree = ""; };
- C34B5592163C7D2C002EFA85 /* UITabBarController+LegacyRotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UITabBarController+LegacyRotation.h"; path = "../../iOS Rotation Utilities/UITabBarController+LegacyRotation.h"; sourceTree = ""; };
- C34B5593163C7D2C002EFA85 /* UITabBarController+LegacyRotation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "UITabBarController+LegacyRotation.m"; path = "../../iOS Rotation Utilities/UITabBarController+LegacyRotation.m"; sourceTree = ""; };
- C34B5594163C7D2C002EFA85 /* UIViewController+LegacyRotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UIViewController+LegacyRotation.h"; path = "../../iOS Rotation Utilities/UIViewController+LegacyRotation.h"; sourceTree = ""; };
- C34B5595163C7D2C002EFA85 /* UIViewController+LegacyRotation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+LegacyRotation.m"; path = "../../iOS Rotation Utilities/UIViewController+LegacyRotation.m"; sourceTree = ""; };
- C3B9F2C217BFD350003D2B6B /* CorePlotIcon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "CorePlotIcon@2x.png"; 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 = ""; };
- C3BB7D601633516500BC9515 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.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 */
/* Begin PBXFrameworksBuildPhase section */
@@ -98,8 +123,7 @@
1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */,
288765080DF74369002DB57D /* CoreGraphics.framework in Frameworks */,
BC9B81DA0FB893F70035D8DA /* QuartzCore.framework in Frameworks */,
- F7AE270A0FFFB61E001F26F0 /* libCorePlot-CocoaTouch.a in Frameworks */,
- C3CD283E17DE9C95008EED1E /* Accelerate.framework in Frameworks */,
+ C3D414C61A7D847C00B6F5D6 /* libCorePlot-CocoaTouch.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -109,20 +133,10 @@
080E96DDFE201D6D7F000001 /* Classes */ = {
isa = PBXGroup;
children = (
- 28216C950DB411BC00E5133A /* CPTTestAppBarChartController.h */,
- 28216C960DB411BC00E5133A /* CPTTestAppBarChartController.m */,
- 1D3623240D0F684500981E51 /* CPTTestApp_iPhoneAppDelegate.h */,
- 1D3623250D0F684500981E51 /* CPTTestApp_iPhoneAppDelegate.m */,
- BC74A33810FC40C600E7E90D /* CPTTestAppPieChartController.h */,
- BC74A33910FC40C600E7E90D /* CPTTestAppPieChartController.m */,
- BC9B84380FB8B76B0035D8DA /* CPTTestAppScatterPlotController.h */,
- BC9B84390FB8B76B0035D8DA /* CPTTestAppScatterPlotController.m */,
- C34B5590163C7D2B002EFA85 /* UINavigationController+LegacyRotation.h */,
- C34B5591163C7D2B002EFA85 /* UINavigationController+LegacyRotation.m */,
- C34B5592163C7D2C002EFA85 /* UITabBarController+LegacyRotation.h */,
- C34B5593163C7D2C002EFA85 /* UITabBarController+LegacyRotation.m */,
- C34B5594163C7D2C002EFA85 /* UIViewController+LegacyRotation.h */,
- C34B5595163C7D2C002EFA85 /* UIViewController+LegacyRotation.m */,
+ C359603419CE34FB005CDFB9 /* iPhoneAppDelegate.swift */,
+ C359603319CE34FB005CDFB9 /* BarChartController.swift */,
+ C359603519CE34FB005CDFB9 /* PieChartController.swift */,
+ C359603619CE34FB005CDFB9 /* ScatterPlotController.swift */,
);
path = Classes;
sourceTree = "";
@@ -138,7 +152,7 @@
29B97314FDCFA39411CA2CEA /* CPTTestApp-iPhone */ = {
isa = PBXGroup;
children = (
- BC9B83B00FB8A9BC0035D8DA /* CorePlot-CocoaTouch.xcodeproj */,
+ C3D414AE1A7D846500B6F5D6 /* CorePlot.xcodeproj */,
080E96DDFE201D6D7F000001 /* Classes */,
29B97315FDCFA39411CA2CEA /* Other Sources */,
29B97317FDCFA39411CA2CEA /* Resources */,
@@ -154,8 +168,8 @@
29B97315FDCFA39411CA2CEA /* Other Sources */ = {
isa = PBXGroup;
children = (
- 28A0AB4B0D9B1048005BE974 /* CPTTestApp_iPhone_Prefix.pch */,
- 29B97316FDCFA39411CA2CEA /* main.m */,
+ C359603B19CE352A005CDFB9 /* CPTTestApp-iPhone-Bridging-Header.h */,
+ C3C3CBDE19EA125D00A0296A /* CorePlotWarnings.xcconfig */,
);
name = "Other Sources";
sourceTree = "";
@@ -163,18 +177,17 @@
29B97317FDCFA39411CA2CEA /* Resources */ = {
isa = PBXGroup;
children = (
+ C3D3936319FD671100148319 /* Images.xcassets */,
BC8166D11100DD6F006D898E /* 62-contrast.png */,
BC8166CC1100DD00006D898E /* 16-line-chart.png */,
BC8166CD1100DD00006D898E /* 17-bar-chart.png */,
C3B9F9D317503CDD001CCC50 /* BlueTexture.png */,
- C3BB7D601633516500BC9515 /* Default-568h@2x.png */,
- BC74A34010FC418D00E7E90D /* PieChart.xib */,
- BCB3FD650FD85732008875A4 /* CorePlotIcon.png */,
- C3B9F2C217BFD350003D2B6B /* CorePlotIcon@2x.png */,
- 282CCBFD0DB6C98000C4EA27 /* BarChart.xib */,
- 28AD73870D9D96C1002E5188 /* MainWindow.xib */,
- 8D1107310486CEB800E47090 /* Info.plist */,
- BC9B84350FB8B7110035D8DA /* ScatterPlot.xib */,
+ C3D0A22720E019FF00BA2921 /* Launch Screen.xib */,
+ C3D0A22120E019F300BA2921 /* MainWindow.xib */,
+ C3D0A22420E019F800BA2921 /* ScatterPlot.xib */,
+ C3D0A21E20E019F000BA2921 /* BarChart.xib */,
+ C3D0A20E20E019EB00BA2921 /* PieChart.xib */,
+ C37A40F120E0322D00C4FF48 /* Info.plist */,
);
name = Resources;
sourceTree = "";
@@ -191,10 +204,17 @@
name = Frameworks;
sourceTree = "";
};
- BC9B83B10FB8A9BC0035D8DA /* Products */ = {
+ C3D414AF1A7D846500B6F5D6 /* Products */ = {
isa = PBXGroup;
children = (
- BC9B83B50FB8A9BC0035D8DA /* libCorePlot-CocoaTouch.a */,
+ C3D414BB1A7D846500B6F5D6 /* CorePlot.framework */,
+ C3D414BD1A7D846500B6F5D6 /* UnitTests.xctest */,
+ C3D414BF1A7D846500B6F5D6 /* CorePlot.framework */,
+ C3D414C11A7D846500B6F5D6 /* UnitTests iOS.xctest */,
+ C3D414C31A7D846500B6F5D6 /* libCorePlot-CocoaTouch.a */,
+ C3D414C51A7D846500B6F5D6 /* CorePlot-CocoaTouchTests.xctest */,
+ C31D01F21D10F506008C1EF2 /* CorePlot.framework */,
+ C31D01F41D10F506008C1EF2 /* UnitTests tvOS.xctest */,
);
name = Products;
sourceTree = "";
@@ -213,7 +233,6 @@
buildRules = (
);
dependencies = (
- BC9B83B70FB8A9C70035D8DA /* PBXTargetDependency */,
);
name = "CPTTestApp-iPhone";
productName = "CPTTestApp-iPhone";
@@ -226,24 +245,32 @@
29B97313FDCFA39411CA2CEA /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 0500;
+ LastSwiftUpdateCheck = 0700;
+ LastUpgradeCheck = 0930;
+ TargetAttributes = {
+ 1D6058900D05DD3D006BFB54 = {
+ DevelopmentTeam = 28ZA45DE7D;
+ LastSwiftMigration = 1020;
+ };
+ };
};
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "CPTTestApp-iPhone" */;
- compatibilityVersion = "Xcode 3.2";
- developmentRegion = English;
+ compatibilityVersion = "Xcode 6.3";
+ developmentRegion = en;
hasScannedForEncodings = 1;
knownRegions = (
- English,
- Japanese,
- French,
- German,
+ Base,
+ fr,
+ de,
+ ja,
+ en,
);
mainGroup = 29B97314FDCFA39411CA2CEA /* CPTTestApp-iPhone */;
projectDirPath = "";
projectReferences = (
{
- ProductGroup = BC9B83B10FB8A9BC0035D8DA /* Products */;
- ProjectRef = BC9B83B00FB8A9BC0035D8DA /* CorePlot-CocoaTouch.xcodeproj */;
+ ProductGroup = C3D414AF1A7D846500B6F5D6 /* Products */;
+ ProjectRef = C3D414AE1A7D846500B6F5D6 /* CorePlot.xcodeproj */;
},
);
projectRoot = "";
@@ -254,11 +281,60 @@
/* End PBXProject section */
/* Begin PBXReferenceProxy section */
- BC9B83B50FB8A9BC0035D8DA /* libCorePlot-CocoaTouch.a */ = {
+ C31D01F21D10F506008C1EF2 /* CorePlot.framework */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.framework;
+ path = CorePlot.framework;
+ remoteRef = C31D01F11D10F506008C1EF2 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ C31D01F41D10F506008C1EF2 /* UnitTests tvOS.xctest */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = "UnitTests tvOS.xctest";
+ remoteRef = C31D01F31D10F506008C1EF2 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ C3D414BB1A7D846500B6F5D6 /* CorePlot.framework */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.framework;
+ path = CorePlot.framework;
+ remoteRef = C3D414BA1A7D846500B6F5D6 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ C3D414BD1A7D846500B6F5D6 /* UnitTests.xctest */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = UnitTests.xctest;
+ remoteRef = C3D414BC1A7D846500B6F5D6 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ C3D414BF1A7D846500B6F5D6 /* CorePlot.framework */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.framework;
+ path = CorePlot.framework;
+ remoteRef = C3D414BE1A7D846500B6F5D6 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ C3D414C11A7D846500B6F5D6 /* UnitTests iOS.xctest */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = "UnitTests iOS.xctest";
+ remoteRef = C3D414C01A7D846500B6F5D6 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ C3D414C31A7D846500B6F5D6 /* libCorePlot-CocoaTouch.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libCorePlot-CocoaTouch.a";
- remoteRef = BC9B83B40FB8A9BC0035D8DA /* PBXContainerItemProxy */;
+ remoteRef = C3D414C21A7D846500B6F5D6 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ C3D414C51A7D846500B6F5D6 /* CorePlot-CocoaTouchTests.xctest */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.cfbundle;
+ path = "CorePlot-CocoaTouchTests.xctest";
+ remoteRef = C3D414C41A7D846500B6F5D6 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
/* End PBXReferenceProxy section */
@@ -268,17 +344,16 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 28AD73880D9D96C1002E5188 /* MainWindow.xib in Resources */,
- 282CCBFE0DB6C98000C4EA27 /* BarChart.xib in Resources */,
- BC9B84360FB8B7110035D8DA /* ScatterPlot.xib in Resources */,
- BCB3FD660FD85732008875A4 /* CorePlotIcon.png in Resources */,
- BC74A34110FC418D00E7E90D /* PieChart.xib in Resources */,
+ C3D0A21F20E019F300BA2921 /* MainWindow.xib in Resources */,
+ C3D0A21C20E019F000BA2921 /* BarChart.xib in Resources */,
+ C3D0A22220E019F800BA2921 /* ScatterPlot.xib in Resources */,
+ C3D3936419FD671100148319 /* Images.xcassets 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 */,
- C3BB7D611633516500BC9515 /* Default-568h@2x.png in Resources */,
C3B9F9D417503CDD001CCC50 /* BlueTexture.png in Resources */,
- C3B9F2C317BFD350003D2B6B /* CorePlotIcon@2x.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -289,86 +364,139 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 1D60589B0D05DD56006BFB54 /* main.m in Sources */,
- 1D3623260D0F684500981E51 /* CPTTestApp_iPhoneAppDelegate.m in Sources */,
- 28216C970DB411BC00E5133A /* CPTTestAppBarChartController.m in Sources */,
- BC9B843A0FB8B76B0035D8DA /* CPTTestAppScatterPlotController.m in Sources */,
- BC74A33A10FC40C600E7E90D /* CPTTestAppPieChartController.m in Sources */,
- C34B5596163C7D2C002EFA85 /* UINavigationController+LegacyRotation.m in Sources */,
- C34B5597163C7D2C002EFA85 /* UITabBarController+LegacyRotation.m in Sources */,
- C34B5598163C7D2C002EFA85 /* UIViewController+LegacyRotation.m in Sources */,
+ C359603719CE34FC005CDFB9 /* BarChartController.swift in Sources */,
+ C359603819CE34FC005CDFB9 /* iPhoneAppDelegate.swift in Sources */,
+ C359603919CE34FC005CDFB9 /* PieChartController.swift in Sources */,
+ C359603A19CE34FC005CDFB9 /* ScatterPlotController.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
-/* Begin PBXTargetDependency section */
- BC9B83B70FB8A9C70035D8DA /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- name = "CorePlot-CocoaTouch";
- targetProxy = BC9B83B60FB8A9C70035D8DA /* PBXContainerItemProxy */;
+/* 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 = "";
};
-/* End PBXTargetDependency section */
+ 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;
+ baseConfigurationReference = C3C3CBDE19EA125D00A0296A /* CorePlotWarnings.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
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;
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",
"-ObjC",
);
+ PRODUCT_BUNDLE_IDENTIFIER = org.CorePlot.CPTTestAppiPhone;
PRODUCT_NAME = "CPTTestApp-iPhone";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
- USER_HEADER_SEARCH_PATHS = "\"${PROJECT_DIR}/../../framework\"/**";
+ SWIFT_OBJC_BRIDGING_HEADER = "CPTTestApp-iPhone-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
};
name = Debug;
};
1D6058950D05DD3E006BFB54 /* Release */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = C3C3CBDE19EA125D00A0296A /* CorePlotWarnings.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
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 = "";
- INFOPLIST_FILE = Info.plist;
+ INFOPLIST_FILE = "$(SRCROOT)/Base.lproj/Info.plist";
LIBRARY_SEARCH_PATHS = "";
OTHER_LDFLAGS = (
"-all_load",
"-ObjC",
);
+ PRODUCT_BUNDLE_IDENTIFIER = org.CorePlot.CPTTestAppiPhone;
PRODUCT_NAME = "CPTTestApp-iPhone";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
- USER_HEADER_SEARCH_PATHS = "\"${PROJECT_DIR}/../../framework\"/**";
+ SWIFT_OBJC_BRIDGING_HEADER = "CPTTestApp-iPhone-Bridging-Header.h";
+ SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
+ SWIFT_VERSION = 5.0;
};
name = Release;
};
C01FCF4F08A954540054247B /* Debug */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = C3C3CBDE19EA125D00A0296A /* CorePlotWarnings.xcconfig */;
buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = c99;
- GCC_TREAT_WARNINGS_AS_ERRORS = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
HEADER_SEARCH_PATHS = "";
- IPHONEOS_DEPLOYMENT_TARGET = 5.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @loader_path/Frameworks";
ONLY_ACTIVE_ARCH = YES;
OTHER_LDFLAGS = "-ObjC";
PROVISIONING_PROFILE = "";
@@ -376,22 +504,25 @@
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;
};
C01FCF5008A954540054247B /* Release */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = C3C3CBDE19EA125D00A0296A /* CorePlotWarnings.xcconfig */;
buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CODE_SIGN_IDENTITY = "iPhone Distribution";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
GCC_C_LANGUAGE_STANDARD = c99;
- GCC_TREAT_WARNINGS_AS_ERRORS = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = s;
HEADER_SEARCH_PATHS = "";
- IPHONEOS_DEPLOYMENT_TARGET = 5.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @loader_path/Frameworks";
ONLY_ACTIVE_ARCH = YES;
OTHER_LDFLAGS = "-ObjC";
PROVISIONING_PROFILE = "";
@@ -399,7 +530,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/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/xcshareddata/xcschemes/CPTTestApp-iPhone.xcscheme b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/xcshareddata/xcschemes/CPTTestApp-iPhone.xcscheme
new file mode 100644
index 000000000..0977a0925
--- /dev/null
+++ b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone.xcodeproj/xcshareddata/xcschemes/CPTTestApp-iPhone.xcscheme
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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
new file mode 100644
index 000000000..44518e8c3
--- /dev/null
+++ b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,76 @@
+{
+ "images" : [
+ {
+ "idiom" : "iphone",
+ "size" : "20x20",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "20x20",
+ "scale" : "3x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "Icon-Small.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "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",
+ "filename" : "Icon.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "57x57",
+ "idiom" : "iphone",
+ "filename" : "Icon@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "Icon-60@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "Icon-60@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "1024x1024",
+ "idiom" : "ios-marketing",
+ "filename" : "iTunesArtwork.png",
+ "scale" : "1x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png
new file mode 100644
index 000000000..e48d5b2ba
Binary files /dev/null and b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png differ
diff --git a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png
new file mode 100644
index 000000000..0c4f8a4cc
Binary files /dev/null and b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png differ
diff --git a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/Icon-Small.png b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/Icon-Small.png
new file mode 100644
index 000000000..5104b1d94
Binary files /dev/null and b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/Icon-Small.png differ
diff --git a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png
new file mode 100644
index 000000000..7f872ef97
Binary files /dev/null and b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png differ
diff --git a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40@2x.png b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40@2x.png
new file mode 100644
index 000000000..87672586c
Binary files /dev/null and b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/Icon-Spotlight-40@2x.png differ
diff --git a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/Icon.png b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/Icon.png
new file mode 100644
index 000000000..c40700a7a
Binary files /dev/null and b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/Icon.png differ
diff --git a/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/Icon@2x.png b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/Icon@2x.png
new file mode 100644
index 000000000..2e49f1b07
Binary files /dev/null and b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/Icon@2x.png differ
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 000000000..969aff8dd
Binary files /dev/null and b/examples/CPTTestApp-iPhone/CPTTestApp-iPhone/Images.xcassets/AppIcon.appiconset/iTunesArtwork.png differ
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_Prefix.pch b/examples/CPTTestApp-iPhone/CPTTestApp_iPhone_Prefix.pch
deleted file mode 100644
index 5cdc39f4d..000000000
--- a/examples/CPTTestApp-iPhone/CPTTestApp_iPhone_Prefix.pch
+++ /dev/null
@@ -1,8 +0,0 @@
-//
-// Prefix header for all source files of the 'CPTTestApp-iPhone' target in the 'CPTTestApp-iPhone' project
-//
-
-#ifdef __OBJC__
- #import
- #import
-#endif
diff --git a/examples/CPTTestApp-iPhone/Classes/BarChartController.swift b/examples/CPTTestApp-iPhone/Classes/BarChartController.swift
new file mode 100644
index 000000000..5e5618f03
--- /dev/null
+++ b/examples/CPTTestApp-iPhone/Classes/BarChartController.swift
@@ -0,0 +1,153 @@
+import UIKit
+
+class BarChartController : UIViewController, CPTBarPlotDataSource {
+ private var barGraph : CPTXYGraph? = nil
+
+ // MARK: - Initialization
+
+ override func viewDidAppear(_ animated : Bool)
+ {
+ super.viewDidAppear(animated)
+
+ // Create graph from theme
+ let newGraph = CPTXYGraph(frame: .zero)
+ newGraph.apply(CPTTheme(named: .darkGradientTheme))
+
+ let hostingView = self.view as! CPTGraphHostingView
+ hostingView.hostedGraph = newGraph
+
+ if let frameLayer = newGraph.plotAreaFrame {
+ // Border
+ frameLayer.borderLineStyle = nil
+ frameLayer.cornerRadius = 0.0
+ frameLayer.masksToBorder = false
+
+ // Paddings
+ newGraph.paddingLeft = 0.0
+ newGraph.paddingRight = 0.0
+ newGraph.paddingTop = 0.0
+ newGraph.paddingBottom = 0.0
+
+ frameLayer.paddingLeft = 70.0
+ frameLayer.paddingTop = 20.0
+ frameLayer.paddingRight = 20.0
+ frameLayer.paddingBottom = 80.0
+ }
+
+ // Graph title
+ let paragraphStyle = NSMutableParagraphStyle()
+ paragraphStyle.alignment = .center
+
+ let lineOne = "Graph Title"
+ let lineTwo = "Line 2"
+
+ let line1Font = UIFont(name: "Helvetica-Bold", size:16.0)
+ let line2Font = UIFont(name: "Helvetica", size:12.0)
+
+ let graphTitle = NSMutableAttributedString(string: lineOne + "\n" + lineTwo)
+
+ let titleRange1 = NSRange(location: 0, length: lineOne.utf16.count)
+ let titleRange2 = NSRange(location: lineOne.utf16.count + 1, length: lineTwo.utf16.count)
+
+ 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
+
+ newGraph.titleDisplacement = CGPoint(x: 0.0, y:-20.0)
+ newGraph.titlePlotAreaFrameAnchor = .top
+
+ // Plot space
+ let plotSpace = newGraph.defaultPlotSpace as! CPTXYPlotSpace
+ plotSpace.yRange = CPTPlotRange(location:0.0, length:300.0)
+ plotSpace.xRange = CPTPlotRange(location:0.0, length:16.0)
+
+ let axisSet = newGraph.axisSet as! CPTXYAxisSet
+
+ if let x = axisSet.xAxis {
+ x.axisLineStyle = nil
+ x.majorTickLineStyle = nil
+ x.minorTickLineStyle = nil
+ x.majorIntervalLength = 5.0
+ x.orthogonalPosition = 0.0
+ x.title = "X Axis"
+ x.titleLocation = 7.5
+ x.titleOffset = 55.0
+
+ // Custom labels
+ x.labelRotation = CGFloat(.pi / 4.0)
+ x.labelingPolicy = .none
+
+ let customTickLocations = [1, 5, 10, 15]
+ let xAxisLabels = ["Label A", "Label B", "Label C", "Label D"]
+
+ var labelLocation = 0
+ var customLabels = Set()
+ for tickLocation in customTickLocations {
+ let newLabel = CPTAxisLabel(text:xAxisLabels[labelLocation], textStyle:x.labelTextStyle)
+ labelLocation += 1
+ newLabel.tickLocation = tickLocation as NSNumber
+ newLabel.offset = x.labelOffset + x.majorTickLength
+ newLabel.rotation = CGFloat(.pi / 4.0)
+ customLabels.insert(newLabel)
+ }
+
+ x.axisLabels = customLabels
+ }
+
+ if let y = axisSet.yAxis {
+ y.axisLineStyle = nil
+ y.majorTickLineStyle = nil
+ y.minorTickLineStyle = nil
+ y.majorIntervalLength = 50.0
+ y.orthogonalPosition = 0.0
+ y.title = "Y Axis"
+ y.titleOffset = 45.0
+ y.titleLocation = 150.0
+ }
+
+ // First bar plot
+ let barPlot1 = CPTBarPlot.tubularBarPlot(with: .darkGray(), horizontalBars:false)
+ barPlot1.baseValue = 0.0
+ barPlot1.dataSource = self
+ barPlot1.barOffset = -0.2
+ barPlot1.identifier = "Bar Plot 1" as NSString
+ newGraph.add(barPlot1, to:plotSpace)
+
+ // Second bar plot
+ let barPlot2 = CPTBarPlot.tubularBarPlot(with: .blue(), horizontalBars:false)
+ barPlot2.dataSource = self
+ barPlot2.baseValue = 0.0
+ barPlot2.barOffset = 0.25
+ barPlot2.barCornerRadius = 2.0
+ barPlot2.identifier = "Bar Plot 2" as NSString
+ newGraph.add(barPlot2, to:plotSpace)
+
+ self.barGraph = newGraph
+ }
+
+ // MARK: - Plot Data Source Methods
+
+ func numberOfRecords(for plot: CPTPlot) -> UInt
+ {
+ return 16
+ }
+
+ func number(for plot: CPTPlot, field: UInt, record: UInt) -> Any?
+ {
+ switch CPTBarPlotField(rawValue: Int(field))! {
+ case .barLocation:
+ return record as NSNumber
+
+ case .barTip:
+ let plotID = plot.identifier as! String
+ return (plotID == "Bar Plot 2" ? record : ((record + 1) * (record + 1)) ) as NSNumber
+
+ default:
+ return nil
+ }
+ }
+}
diff --git a/examples/CPTTestApp-iPhone/Classes/CPTTestAppBarChartController.h b/examples/CPTTestApp-iPhone/Classes/CPTTestAppBarChartController.h
deleted file mode 100644
index bea0ad541..000000000
--- a/examples/CPTTestApp-iPhone/Classes/CPTTestAppBarChartController.h
+++ /dev/null
@@ -1,20 +0,0 @@
-//
-// CPTTestAppBarChartController.h
-// CPTTestApp-iPhone
-//
-
-#import "CorePlot-CocoaTouch.h"
-#import
-
-@interface CPTTestAppBarChartController : UIViewController
-{
- @private
- CPTXYGraph *barChart;
- NSTimer *timer;
-}
-
-@property (readwrite, strong, nonatomic) NSTimer *timer;
-
--(void)timerFired;
-
-@end
diff --git a/examples/CPTTestApp-iPhone/Classes/CPTTestAppBarChartController.m b/examples/CPTTestApp-iPhone/Classes/CPTTestAppBarChartController.m
deleted file mode 100644
index 887728217..000000000
--- a/examples/CPTTestApp-iPhone/Classes/CPTTestAppBarChartController.m
+++ /dev/null
@@ -1,193 +0,0 @@
-//
-// CPTTestAppBarChartController.m
-// CPTTestApp-iPhone
-//
-
-#import "CPTTestAppBarChartController.h"
-
-@implementation CPTTestAppBarChartController
-
-@synthesize timer;
-
--(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
-{
- return YES;
-}
-
-#pragma mark -
-#pragma mark Initialization and teardown
-
--(void)viewDidAppear:(BOOL)animated
-{
- [self timerFired];
-#ifdef MEMORY_TEST
- self.timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self
- selector:@selector(timerFired) userInfo:nil repeats:YES];
-#endif
-}
-
--(void)timerFired
-{
-#ifdef MEMORY_TEST
- static NSUInteger counter = 0;
-
- NSLog(@"\n----------------------------\ntimerFired: %lu", counter++);
-#endif
-
- // Create barChart from theme
- barChart = [[CPTXYGraph alloc] initWithFrame:CGRectZero];
- CPTTheme *theme = [CPTTheme themeNamed:kCPTDarkGradientTheme];
- [barChart applyTheme:theme];
- CPTGraphHostingView *hostingView = (CPTGraphHostingView *)self.view;
- hostingView.hostedGraph = barChart;
-
- // Border
- barChart.plotAreaFrame.borderLineStyle = nil;
- barChart.plotAreaFrame.cornerRadius = 0.0;
- barChart.plotAreaFrame.masksToBorder = NO;
-
- // Paddings
- barChart.paddingLeft = 0.0;
- barChart.paddingRight = 0.0;
- barChart.paddingTop = 0.0;
- barChart.paddingBottom = 0.0;
-
- barChart.plotAreaFrame.paddingLeft = 70.0;
- barChart.plotAreaFrame.paddingTop = 20.0;
- barChart.plotAreaFrame.paddingRight = 20.0;
- barChart.plotAreaFrame.paddingBottom = 80.0;
-
- // Graph title
- NSString *lineOne = @"Graph Title";
- NSString *lineTwo = @"Line 2";
-
- BOOL hasAttributedStringAdditions = (&NSFontAttributeName != NULL) &&
- (&NSForegroundColorAttributeName != NULL) &&
- (&NSParagraphStyleAttributeName != NULL);
-
- if ( hasAttributedStringAdditions ) {
- NSMutableAttributedString *graphTitle = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@\n%@", lineOne, lineTwo]];
- [graphTitle addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:NSMakeRange(0, lineOne.length)];
- [graphTitle addAttribute:NSForegroundColorAttributeName value:[UIColor grayColor] range:NSMakeRange(lineOne.length + 1, lineTwo.length)];
- NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
- paragraphStyle.alignment = CPTTextAlignmentCenter;
- [graphTitle addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, graphTitle.length)];
- UIFont *titleFont = [UIFont fontWithName:@"Helvetica-Bold" size:16.0];
- [graphTitle addAttribute:NSFontAttributeName value:titleFont range:NSMakeRange(0, lineOne.length)];
- titleFont = [UIFont fontWithName:@"Helvetica" size:12.0];
- [graphTitle addAttribute:NSFontAttributeName value:titleFont range:NSMakeRange(lineOne.length + 1, lineTwo.length)];
-
- barChart.attributedTitle = graphTitle;
- }
- else {
- CPTMutableTextStyle *titleStyle = [CPTMutableTextStyle textStyle];
- titleStyle.color = [CPTColor whiteColor];
- titleStyle.fontName = @"Helvetica-Bold";
- titleStyle.fontSize = 16.0;
- titleStyle.textAlignment = CPTTextAlignmentCenter;
-
- barChart.title = [NSString stringWithFormat:@"%@\n%@", lineOne, lineTwo];
- barChart.titleTextStyle = titleStyle;
- }
-
- barChart.titleDisplacement = CGPointMake(0.0, -20.0);
- barChart.titlePlotAreaFrameAnchor = CPTRectAnchorTop;
-
- // Add plot space for horizontal bar charts
- CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)barChart.defaultPlotSpace;
- plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f) length:CPTDecimalFromFloat(300.0f)];
- plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f) length:CPTDecimalFromFloat(16.0f)];
-
- CPTXYAxisSet *axisSet = (CPTXYAxisSet *)barChart.axisSet;
- CPTXYAxis *x = axisSet.xAxis;
- x.axisLineStyle = nil;
- x.majorTickLineStyle = nil;
- x.minorTickLineStyle = nil;
- x.majorIntervalLength = CPTDecimalFromDouble(5.0);
- x.orthogonalCoordinateDecimal = CPTDecimalFromDouble(0.0);
- x.title = @"X Axis";
- x.titleLocation = CPTDecimalFromFloat(7.5f);
- x.titleOffset = 55.0;
-
- // Define some custom labels for the data elements
- x.labelRotation = M_PI_4;
- x.labelingPolicy = CPTAxisLabelingPolicyNone;
- NSArray *customTickLocations = @[@1, @5, @10, @15];
- NSArray *xAxisLabels = @[@"Label A", @"Label B", @"Label C", @"Label D"];
- NSUInteger labelLocation = 0;
- NSMutableSet *customLabels = [NSMutableSet setWithCapacity:[xAxisLabels count]];
- for ( NSNumber *tickLocation in customTickLocations ) {
- CPTAxisLabel *newLabel = [[CPTAxisLabel alloc] initWithText:xAxisLabels[labelLocation++] textStyle:x.labelTextStyle];
- newLabel.tickLocation = [tickLocation decimalValue];
- newLabel.offset = x.labelOffset + x.majorTickLength;
- newLabel.rotation = M_PI_4;
- [customLabels addObject:newLabel];
- }
-
- x.axisLabels = customLabels;
-
- CPTXYAxis *y = axisSet.yAxis;
- y.axisLineStyle = nil;
- y.majorTickLineStyle = nil;
- y.minorTickLineStyle = nil;
- y.majorIntervalLength = CPTDecimalFromDouble(50.0);
- y.orthogonalCoordinateDecimal = CPTDecimalFromDouble(0.0);
- y.title = @"Y Axis";
- y.titleOffset = 45.0;
- y.titleLocation = CPTDecimalFromFloat(150.0f);
-
- // First bar plot
- CPTBarPlot *barPlot = [CPTBarPlot tubularBarPlotWithColor:[CPTColor darkGrayColor] horizontalBars:NO];
- barPlot.baseValue = CPTDecimalFromDouble(0.0);
- barPlot.dataSource = self;
- barPlot.barOffset = CPTDecimalFromFloat(-0.25f);
- barPlot.identifier = @"Bar Plot 1";
- [barChart addPlot:barPlot toPlotSpace:plotSpace];
-
- // Second bar plot
- barPlot = [CPTBarPlot tubularBarPlotWithColor:[CPTColor blueColor] horizontalBars:NO];
- barPlot.dataSource = self;
- barPlot.baseValue = CPTDecimalFromDouble(0.0);
- barPlot.barOffset = CPTDecimalFromFloat(0.25f);
- barPlot.barCornerRadius = 2.0;
- barPlot.identifier = @"Bar Plot 2";
- [barChart addPlot:barPlot toPlotSpace:plotSpace];
-}
-
--(void)didReceiveMemoryWarning
-{
- [super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview
- // Release anything that's not essential, such as cached data
-}
-
-#pragma mark -
-#pragma mark Plot Data Source Methods
-
--(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot
-{
- return 16;
-}
-
--(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index
-{
- NSNumber *num = nil;
-
- if ( [plot isKindOfClass:[CPTBarPlot class]] ) {
- switch ( fieldEnum ) {
- case CPTBarPlotFieldBarLocation:
- num = @(index);
- break;
-
- case CPTBarPlotFieldBarTip:
- num = @( (index + 1) * (index + 1) );
- if ( [plot.identifier isEqual:@"Bar Plot 2"] ) {
- num = @(num.integerValue - 10);
- }
- break;
- }
- }
-
- return num;
-}
-
-@end
diff --git a/examples/CPTTestApp-iPhone/Classes/CPTTestAppPieChartController.h b/examples/CPTTestApp-iPhone/Classes/CPTTestAppPieChartController.h
deleted file mode 100644
index b615b9c70..000000000
--- a/examples/CPTTestApp-iPhone/Classes/CPTTestAppPieChartController.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#import "CorePlot-CocoaTouch.h"
-#import
-
-@interface CPTTestAppPieChartController : UIViewController
-{
- @private
- CPTXYGraph *pieChart;
- NSMutableArray *dataForChart;
- NSTimer *timer;
-}
-
-@property (readwrite, strong, nonatomic) NSMutableArray *dataForChart;
-@property (readwrite, strong, nonatomic) NSTimer *timer;
-
--(void)timerFired;
-
-@end
diff --git a/examples/CPTTestApp-iPhone/Classes/CPTTestAppPieChartController.m b/examples/CPTTestApp-iPhone/Classes/CPTTestAppPieChartController.m
deleted file mode 100644
index 0b1eca4a5..000000000
--- a/examples/CPTTestApp-iPhone/Classes/CPTTestAppPieChartController.m
+++ /dev/null
@@ -1,186 +0,0 @@
-#import "CPTTestAppPieChartController.h"
-
-@implementation CPTTestAppPieChartController
-
-@synthesize dataForChart;
-@synthesize timer;
-
--(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
-{
- return YES;
-}
-
--(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
-{
- CGFloat margin = pieChart.plotAreaFrame.borderLineStyle.lineWidth + 5.0;
-
- CPTPieChart *piePlot = (CPTPieChart *)[pieChart plotWithIdentifier:@"Pie Chart 1"];
- CGRect plotBounds = pieChart.plotAreaFrame.bounds;
- CGFloat newRadius = MIN(plotBounds.size.width, plotBounds.size.height) / 2.0 - margin;
-
- CGFloat y = 0.0;
-
- if ( plotBounds.size.width > plotBounds.size.height ) {
- y = 0.5;
- }
- else {
- y = (newRadius + margin) / plotBounds.size.height;
- }
- CGPoint newAnchor = CGPointMake(0.5, y);
-
- // Animate the change
- [CATransaction begin];
- {
- [CATransaction setAnimationDuration:1.0];
- [CATransaction setAnimationTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
-
- CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"pieRadius"];
- animation.toValue = @(newRadius);
- animation.fillMode = kCAFillModeForwards;
- animation.delegate = self;
- [piePlot addAnimation:animation forKey:@"pieRadius"];
-
- animation = [CABasicAnimation animationWithKeyPath:@"centerAnchor"];
- animation.toValue = [NSValue valueWithBytes:&newAnchor objCType:@encode(CGPoint)];
- animation.fillMode = kCAFillModeForwards;
- animation.delegate = self;
- [piePlot addAnimation:animation forKey:@"centerAnchor"];
- }
- [CATransaction commit];
-}
-
-#pragma mark -
-#pragma mark Initialization and teardown
-
--(void)viewDidAppear:(BOOL)animated
-{
- // Add some initial data
- NSMutableArray *contentArray = [NSMutableArray arrayWithObjects:@20.0, @30.0, @60.0, nil];
-
- self.dataForChart = contentArray;
-
- [self timerFired];
-#ifdef MEMORY_TEST
- self.timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self
- selector:@selector(timerFired) userInfo:nil repeats:YES];
-#endif
-}
-
--(void)timerFired
-{
-#ifdef MEMORY_TEST
- static NSUInteger counter = 0;
-
- NSLog(@"\n----------------------------\ntimerFired: %lu", counter++);
-#endif
-
- // Create pieChart from theme
- pieChart = [[CPTXYGraph alloc] initWithFrame:CGRectZero];
- CPTTheme *theme = [CPTTheme themeNamed:kCPTDarkGradientTheme];
- [pieChart applyTheme:theme];
- CPTGraphHostingView *hostingView = (CPTGraphHostingView *)self.view;
- hostingView.hostedGraph = pieChart;
-
- pieChart.paddingLeft = 20.0;
- pieChart.paddingTop = 20.0;
- pieChart.paddingRight = 20.0;
- pieChart.paddingBottom = 20.0;
-
- pieChart.axisSet = nil;
-
- CPTMutableTextStyle *whiteText = [CPTMutableTextStyle textStyle];
- whiteText.color = [CPTColor whiteColor];
-
- pieChart.titleTextStyle = whiteText;
- pieChart.title = @"Graph Title";
-
- // Add pie chart
- CPTPieChart *piePlot = [[CPTPieChart alloc] init];
- piePlot.dataSource = self;
- piePlot.pieRadius = 131.0;
- piePlot.identifier = @"Pie Chart 1";
- piePlot.startAngle = M_PI_4;
- piePlot.sliceDirection = CPTPieDirectionCounterClockwise;
- piePlot.centerAnchor = CGPointMake(0.5, 0.38);
- piePlot.borderLineStyle = [CPTLineStyle lineStyle];
- piePlot.delegate = self;
- [pieChart addPlot:piePlot];
-
-#ifdef PERFORMANCE_TEST
- [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(changePlotRange) userInfo:nil repeats:YES];
-#endif
-}
-
--(void)didReceiveMemoryWarning
-{
- [super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview
- // Release anything that's not essential, such as cached data
-}
-
-#pragma mark -
-#pragma mark Plot Data Source Methods
-
--(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot
-{
- return [self.dataForChart count];
-}
-
--(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index
-{
- if ( index >= [self.dataForChart count] ) {
- return nil;
- }
-
- if ( fieldEnum == CPTPieChartFieldSliceWidth ) {
- return (self.dataForChart)[index];
- }
- else {
- return @(index);
- }
-}
-
--(CPTLayer *)dataLabelForPlot:(CPTPlot *)plot recordIndex:(NSUInteger)index
-{
- CPTTextLayer *label = [[CPTTextLayer alloc] initWithText:[NSString stringWithFormat:@"%lu", (unsigned long)index]];
- CPTMutableTextStyle *textStyle = [label.textStyle mutableCopy];
-
- textStyle.color = [CPTColor lightGrayColor];
- label.textStyle = textStyle;
- return label;
-}
-
--(CGFloat)radialOffsetForPieChart:(CPTPieChart *)piePlot recordIndex:(NSUInteger)index
-{
- CGFloat offset = 0.0;
-
- if ( index == 0 ) {
- offset = piePlot.pieRadius / 8.0;
- }
-
- return offset;
-}
-
-/*-(CPTFill *)sliceFillForPieChart:(CPTPieChart *)pieChart recordIndex:(NSUInteger)index;
- * {
- * return nil;
- * }*/
-
-#pragma mark -
-#pragma mark Delegate Methods
-
--(void)pieChart:(CPTPieChart *)plot sliceWasSelectedAtRecordIndex:(NSUInteger)index
-{
- pieChart.title = [NSString stringWithFormat:@"Selected index: %lu", (unsigned long)index];
-}
-
--(void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
-{
- CPTPieChart *piePlot = (CPTPieChart *)[pieChart plotWithIdentifier:@"Pie Chart 1"];
- CABasicAnimation *basicAnimation = (CABasicAnimation *)theAnimation;
-
- [piePlot removeAnimationForKey:basicAnimation.keyPath];
- [piePlot setValue:basicAnimation.toValue forKey:basicAnimation.keyPath];
- [piePlot repositionAllLabelAnnotations];
-}
-
-@end
diff --git a/examples/CPTTestApp-iPhone/Classes/CPTTestAppScatterPlotController.h b/examples/CPTTestApp-iPhone/Classes/CPTTestAppScatterPlotController.h
deleted file mode 100644
index d72fe6889..000000000
--- a/examples/CPTTestApp-iPhone/Classes/CPTTestAppScatterPlotController.h
+++ /dev/null
@@ -1,20 +0,0 @@
-//
-// CPTTestAppScatterPlotController.h
-// CPTTestApp-iPhone
-//
-// Created by Brad Larson on 5/11/2009.
-//
-
-#import "CorePlot-CocoaTouch.h"
-#import
-
-@interface CPTTestAppScatterPlotController : UIViewController
-{
- CPTXYGraph *graph;
-
- NSMutableArray *dataForPlot;
-}
-
-@property (readwrite, strong, nonatomic) NSMutableArray *dataForPlot;
-
-@end
diff --git a/examples/CPTTestApp-iPhone/Classes/CPTTestAppScatterPlotController.m b/examples/CPTTestApp-iPhone/Classes/CPTTestAppScatterPlotController.m
deleted file mode 100644
index 75e09e330..000000000
--- a/examples/CPTTestApp-iPhone/Classes/CPTTestAppScatterPlotController.m
+++ /dev/null
@@ -1,217 +0,0 @@
-//
-// CPTTestAppScatterPlotController.m
-// CPTTestApp-iPhone
-//
-// Created by Brad Larson on 5/11/2009.
-//
-
-#import "CPTTestAppScatterPlotController.h"
-
-@implementation CPTTestAppScatterPlotController
-
-@synthesize dataForPlot;
-
--(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
-{
- return YES;
-}
-
-#pragma mark -
-#pragma mark Initialization and teardown
-
--(void)viewDidLoad
-{
- [super viewDidLoad];
-
- // Create graph from theme
- graph = [[CPTXYGraph alloc] initWithFrame:CGRectZero];
- CPTTheme *theme = [CPTTheme themeNamed:kCPTDarkGradientTheme];
- [graph applyTheme:theme];
- CPTGraphHostingView *hostingView = (CPTGraphHostingView *)self.view;
- hostingView.collapsesLayers = NO; // Setting to YES reduces GPU memory usage, but can slow drawing/scrolling
- hostingView.hostedGraph = graph;
-
- graph.paddingLeft = 10.0;
- graph.paddingTop = 10.0;
- graph.paddingRight = 10.0;
- graph.paddingBottom = 10.0;
-
- // Setup plot space
- CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace;
- plotSpace.allowsUserInteraction = YES;
- plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(1.0) length:CPTDecimalFromDouble(2.0)];
- plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(1.0) length:CPTDecimalFromDouble(3.0)];
-
- // Axes
- CPTXYAxisSet *axisSet = (CPTXYAxisSet *)graph.axisSet;
- CPTXYAxis *x = axisSet.xAxis;
- x.majorIntervalLength = CPTDecimalFromDouble(0.5);
- x.orthogonalCoordinateDecimal = CPTDecimalFromDouble(2.0);
- x.minorTicksPerInterval = 2;
- NSArray *exclusionRanges = @[[CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(1.99) length:CPTDecimalFromDouble(0.02)],
- [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(0.99) length:CPTDecimalFromDouble(0.02)],
- [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(2.99) length:CPTDecimalFromDouble(0.02)]];
- x.labelExclusionRanges = exclusionRanges;
-
- CPTXYAxis *y = axisSet.yAxis;
- y.majorIntervalLength = CPTDecimalFromDouble(0.5);
- y.minorTicksPerInterval = 5;
- y.orthogonalCoordinateDecimal = CPTDecimalFromDouble(2.0);
- exclusionRanges = @[[CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(1.99) length:CPTDecimalFromDouble(0.02)],
- [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(0.99) length:CPTDecimalFromDouble(0.02)],
- [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(3.99) length:CPTDecimalFromDouble(0.02)]];
- y.labelExclusionRanges = exclusionRanges;
- y.delegate = self;
-
- // Create a blue plot area
- CPTScatterPlot *boundLinePlot = [[CPTScatterPlot alloc] init];
- CPTMutableLineStyle *lineStyle = [CPTMutableLineStyle lineStyle];
- lineStyle.miterLimit = 1.0;
- lineStyle.lineWidth = 3.0;
- lineStyle.lineColor = [CPTColor blueColor];
- boundLinePlot.dataLineStyle = lineStyle;
- boundLinePlot.identifier = @"Blue Plot";
- boundLinePlot.dataSource = self;
- [graph addPlot:boundLinePlot];
-
- CPTImage *fillImage = [CPTImage imageNamed:@"BlueTexture"];
- fillImage.tiled = YES;
- CPTFill *areaImageFill = [CPTFill fillWithImage:fillImage];
- boundLinePlot.areaFill = areaImageFill;
- boundLinePlot.areaBaseValue = [[NSDecimalNumber zero] decimalValue];
-
- // Add plot symbols
- CPTMutableLineStyle *symbolLineStyle = [CPTMutableLineStyle lineStyle];
- symbolLineStyle.lineColor = [CPTColor blackColor];
- CPTPlotSymbol *plotSymbol = [CPTPlotSymbol ellipsePlotSymbol];
- plotSymbol.fill = [CPTFill fillWithColor:[CPTColor blueColor]];
- plotSymbol.lineStyle = symbolLineStyle;
- plotSymbol.size = CGSizeMake(10.0, 10.0);
- boundLinePlot.plotSymbol = plotSymbol;
-
- // Create a green plot area
- CPTScatterPlot *dataSourceLinePlot = [[CPTScatterPlot alloc] init];
- lineStyle = [CPTMutableLineStyle lineStyle];
- lineStyle.lineWidth = 3.0;
- lineStyle.lineColor = [CPTColor greenColor];
- lineStyle.dashPattern = @[@5.0, @5.0];
- dataSourceLinePlot.dataLineStyle = lineStyle;
- dataSourceLinePlot.identifier = @"Green Plot";
- dataSourceLinePlot.dataSource = self;
-
- // Put an area gradient under the plot above
- CPTColor *areaColor = [CPTColor colorWithComponentRed:0.3 green:1.0 blue:0.3 alpha:0.8];
- CPTGradient *areaGradient = [CPTGradient gradientWithBeginningColor:areaColor endingColor:[CPTColor clearColor]];
- areaGradient.angle = -90.0;
- CPTFill *areaGradientFill = [CPTFill fillWithGradient:areaGradient];
- dataSourceLinePlot.areaFill = areaGradientFill;
- dataSourceLinePlot.areaBaseValue = CPTDecimalFromDouble(1.75);
-
- // Animate in the new plot, as an example
- dataSourceLinePlot.opacity = 0.0;
- [graph addPlot:dataSourceLinePlot];
-
- CABasicAnimation *fadeInAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
- fadeInAnimation.duration = 1.0;
- fadeInAnimation.removedOnCompletion = NO;
- fadeInAnimation.fillMode = kCAFillModeForwards;
- fadeInAnimation.toValue = @1.0;
- [dataSourceLinePlot addAnimation:fadeInAnimation forKey:@"animateOpacity"];
-
- // Add some initial data
- NSMutableArray *contentArray = [NSMutableArray arrayWithCapacity:100];
- for ( NSUInteger i = 0; i < 60; i++ ) {
- NSNumber *x = @(1.0 + i * 0.05);
- NSNumber *y = @(1.2 * rand() / (double)RAND_MAX + 1.2);
- [contentArray addObject:@{ @"x": x,
- @"y": y }
- ];
- }
- self.dataForPlot = contentArray;
-
-#ifdef PERFORMANCE_TEST
- [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(changePlotRange) userInfo:nil repeats:YES];
-#endif
-}
-
--(void)changePlotRange
-{
- // Setup plot space
- CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace;
-
- plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0) length:CPTDecimalFromFloat(3.0 + 2.0 * rand() / RAND_MAX)];
- plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0) length:CPTDecimalFromFloat(3.0 + 2.0 * rand() / RAND_MAX)];
-}
-
-#pragma mark -
-#pragma mark Plot Data Source Methods
-
--(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot
-{
- return [dataForPlot count];
-}
-
--(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index
-{
- NSString *key = (fieldEnum == CPTScatterPlotFieldX ? @"x" : @"y");
- NSNumber *num = [dataForPlot[index] valueForKey:key];
-
- // Green plot gets shifted above the blue
- if ( [(NSString *)plot.identifier isEqualToString : @"Green Plot"] ) {
- if ( fieldEnum == CPTScatterPlotFieldY ) {
- num = @([num doubleValue] + 1.0);
- }
- }
- return num;
-}
-
-#pragma mark -
-#pragma mark Axis Delegate Methods
-
--(BOOL)axis:(CPTAxis *)axis shouldUpdateAxisLabelsAtLocations:(NSSet *)locations
-{
- static CPTTextStyle *positiveStyle = nil;
- static CPTTextStyle *negativeStyle = nil;
-
- NSFormatter *formatter = axis.labelFormatter;
- CGFloat labelOffset = axis.labelOffset;
- NSDecimalNumber *zero = [NSDecimalNumber zero];
-
- NSMutableSet *newLabels = [NSMutableSet set];
-
- for ( NSDecimalNumber *tickLocation in locations ) {
- CPTTextStyle *theLabelTextStyle;
-
- if ( [tickLocation isGreaterThanOrEqualTo:zero] ) {
- if ( !positiveStyle ) {
- CPTMutableTextStyle *newStyle = [axis.labelTextStyle mutableCopy];
- newStyle.color = [CPTColor greenColor];
- positiveStyle = newStyle;
- }
- theLabelTextStyle = positiveStyle;
- }
- else {
- if ( !negativeStyle ) {
- CPTMutableTextStyle *newStyle = [axis.labelTextStyle mutableCopy];
- newStyle.color = [CPTColor redColor];
- negativeStyle = newStyle;
- }
- theLabelTextStyle = negativeStyle;
- }
-
- NSString *labelString = [formatter stringForObjectValue:tickLocation];
- CPTTextLayer *newLabelLayer = [[CPTTextLayer alloc] initWithText:labelString style:theLabelTextStyle];
-
- CPTAxisLabel *newLabel = [[CPTAxisLabel alloc] initWithContentLayer:newLabelLayer];
- newLabel.tickLocation = tickLocation.decimalValue;
- newLabel.offset = labelOffset;
-
- [newLabels addObject:newLabel];
- }
-
- axis.axisLabels = newLabels;
-
- return NO;
-}
-
-@end
diff --git a/examples/CPTTestApp-iPhone/Classes/CPTTestApp_iPhoneAppDelegate.h b/examples/CPTTestApp-iPhone/Classes/CPTTestApp_iPhoneAppDelegate.h
deleted file mode 100644
index 250ee5094..000000000
--- a/examples/CPTTestApp-iPhone/Classes/CPTTestApp_iPhoneAppDelegate.h
+++ /dev/null
@@ -1,18 +0,0 @@
-//
-// CPTTestApp_iPhoneAppDelegate.h
-// CPTTestApp-iPhone
-//
-// Toolbar icons in the application are courtesy of Joseph Wain / glyphish.com
-// See the license file in the GlyphishIcons directory for more information on these icons
-
-#import