36 - (id)initWithStartingColor:(
CPColor)startingColor endingColor:(
CPColor)endingColor
41 - (id)initWithColors:(CPArray)someColors
43 var count = [someColors count];
48 var distance = 1.0 / (count - 1),
52 for (var i = 0; i < count; i++)
54 [locations addObject:location];
61 - (id)initWithColors:(CPArray)someColors atLocations:(CPArray)someLocations colorSpace:(
CPColorSpace)aColorSpace
63 if (
self = [super init])
66 count = [someColors count],
68 for (var i = 0; i < count; i++)
69 cgColors.push(
CGColorCreate(colorSpace, [someColors[i] components]));
76 - (void)drawInRect:(CGRect)rect angle:(
float)angle
81 CGContextClipToRect(ctx, rect);
84 [
self _drawInRect:rect atAngle:angle];
92 - (void)_drawInRect:(CGRect)rect atAngle:(
float)angle
100 angle = ((angle % 360.0) + 360.0) % 360.0;
103 startPoint = CGPointMake(CGRectGetMinX(rect), CGRectGetMinY(rect));
104 else if (angle < 180.0)
105 startPoint = CGPointMake(CGRectGetMaxX(rect), CGRectGetMinY(rect));
106 else if (angle < 270.0)
107 startPoint = CGPointMake(CGRectGetMaxX(rect), CGRectGetMaxY(rect));
109 startPoint = CGPointMake(CGRectGetMinX(rect), CGRectGetMaxY(rect));
123 var radians = PI * angle / 180.0,
124 length = ABS(CGRectGetWidth(rect) * COS(radians)) + ABS(CGRectGetHeight(rect) * SIN(radians));
126 endPoint = CGPointMake(startPoint.x + length * COS(radians),
127 startPoint.y + length * SIN(radians));
129 [
self drawFromPoint:startPoint toPoint:endPoint options:CPGradientDrawsBeforeStartingLocation | CPGradientDrawsAfterEndingLocation];
146 [
self _drawInRect:[aPath
bounds] atAngle:anAngle];
151 - (void)drawFromPoint:(NSPoint)startingPoint toPoint:(NSPoint)endingPoint options:(NSGradientDrawingOptions)options