1#import "_CPTSlateTheme.h"
2
3#import "CPTXYGraph.h"
4#import "CPTColor.h"
5#import "CPTGradient.h"
6#import "CPTFill.h"
7#import "CPTPlotAreaFrame.h"
8#import "CPTXYPlotSpace.h"
9#import "CPTUtilities.h"
10#import "CPTXYAxisSet.h"
11#import "CPTXYAxis.h"
12#import "CPTMutableLineStyle.h"
13#import "CPTMutableTextStyle.h"
14#import "CPTBorderedLayer.h"
15#import "CPTExceptions.h"
16
17NSString * const kCPTSlateTheme = @"Slate";	///< Slate theme.
18
19/**	@cond */
20@interface _CPTSlateTheme ()
21
22-(void)applyThemeToAxis:(CPTXYAxis *)axis usingMajorLineStyle:(CPTLineStyle *)majorLineStyle minorLineStyle:(CPTLineStyle *)minorLineStyle textStyle:(CPTMutableTextStyle *)textStyle minorTickTextStyle:(CPTMutableTextStyle *)minorTickTextStyle;
23
24@end
25/**	@endcond */
26
27#pragma mark -
28
29/** @brief Creates a CPTXYGraph instance with colors that match the default iPhone navigation bar, toolbar buttons, and table views.
30 **/
31@implementation _CPTSlateTheme
32
33+(void)load
34{
35	[self registerTheme:self];
36}
37
38+(NSString *)name
39{
40	return kCPTSlateTheme;
41}
42
43#pragma mark -
44
45-(void)applyThemeToAxis:(CPTXYAxis *)axis usingMajorLineStyle:(CPTLineStyle *)majorLineStyle minorLineStyle:(CPTLineStyle *)minorLineStyle textStyle:(CPTMutableTextStyle *)textStyle minorTickTextStyle:(CPTMutableTextStyle *)minorTickTextStyle
46{
47	axis.labelingPolicy = CPTAxisLabelingPolicyFixedInterval;
48    axis.majorIntervalLength = CPTDecimalFromDouble(0.5);
49    axis.orthogonalCoordinateDecimal = CPTDecimalFromDouble(0.0);
50	axis.tickDirection = CPTSignNone;
51    axis.minorTicksPerInterval = 4;
52    axis.majorTickLineStyle = majorLineStyle;
53    axis.minorTickLineStyle = minorLineStyle;
54    axis.axisLineStyle = majorLineStyle;
55    axis.majorTickLength = 7.0;
56    axis.minorTickLength = 5.0;
57	axis.labelTextStyle = textStyle;
58	axis.minorTickLabelTextStyle = minorTickTextStyle;
59	axis.titleTextStyle = textStyle;
60}
61
62-(void)applyThemeToBackground:(CPTXYGraph *)graph
63{
64	// No background fill has been implemented
65}
66
67-(void)applyThemeToPlotArea:(CPTPlotAreaFrame *)plotAreaFrame
68{
69	CPTGradient *gradient = [CPTGradient gradientWithBeginningColor:[CPTColor colorWithComponentRed:0.43 green:0.51 blue:0.63 alpha:1.0]
70														endingColor:[CPTColor colorWithComponentRed:0.70 green:0.73 blue:0.80 alpha:1.0]];
71    gradient.angle = 90.0;
72	plotAreaFrame.fill = [CPTFill fillWithGradient:gradient];
73
74	CPTMutableLineStyle *borderLineStyle = [CPTMutableLineStyle lineStyle];
75	borderLineStyle.lineColor = [CPTColor colorWithGenericGray:0.2];
76	borderLineStyle.lineWidth = 1.0;
77
78	plotAreaFrame.borderLineStyle = borderLineStyle;
79	plotAreaFrame.cornerRadius = 5.0;
80}
81
82-(void)applyThemeToAxisSet:(CPTXYAxisSet *)axisSet {
83    CPTMutableLineStyle *majorLineStyle = [CPTMutableLineStyle lineStyle];
84    majorLineStyle.lineCap = kCGLineCapSquare;
85    majorLineStyle.lineColor = [CPTColor colorWithComponentRed:0.0 green:0.25 blue:0.50 alpha:1.0];
86    majorLineStyle.lineWidth = 2.0;
87
88    CPTMutableLineStyle *minorLineStyle = [CPTMutableLineStyle lineStyle];
89    minorLineStyle.lineCap = kCGLineCapSquare;
90    minorLineStyle.lineColor = [CPTColor blackColor];
91    minorLineStyle.lineWidth = 1.0;
92
93	CPTMutableTextStyle *blackTextStyle = [[[CPTMutableTextStyle alloc] init] autorelease];
94	blackTextStyle.color = [CPTColor blackColor];
95	blackTextStyle.fontSize = 14.0;
96
97	CPTMutableTextStyle *minorTickBlackTextStyle = [[[CPTMutableTextStyle alloc] init] autorelease];
98	minorTickBlackTextStyle.color = [CPTColor blackColor];
99	minorTickBlackTextStyle.fontSize = 12.0;
100
101    for (CPTXYAxis *axis in axisSet.axes) {
102        [self applyThemeToAxis:axis usingMajorLineStyle:majorLineStyle minorLineStyle:minorLineStyle textStyle:blackTextStyle minorTickTextStyle:minorTickBlackTextStyle];
103    }
104}
105
106#pragma mark -
107#pragma mark NSCoding methods
108
109-(Class)classForCoder
110{
111	return [CPTTheme class];
112}
113
114@end
115