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