From 47823bc12b1294ebd97a9ce8866cf56b787bd47f Mon Sep 17 00:00:00 2001 From: fredkiefer Date: Fri, 23 Oct 2009 19:58:22 +0000 Subject: [PATCH] Add gradient methods on graphics context. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@28872 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 8 ++++++++ Headers/AppKit/NSGraphicsContext.h | 16 ++++++++++++++++ Source/NSColor.m | 2 +- Source/NSGradient.m | 18 +++++++++++++----- Source/NSGraphicsContext.m | 21 +++++++++++++++++++++ 5 files changed, 59 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 124ca8364..88a6618ad 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2009-10-23 Fred Kiefer + + * Headers/AppKit/NSGraphicsContext.h, + * Source/NSGraphicsContext.m: Define empty gradient methods. + * Source/NSGradient.m: Use these methods. + * Source/NSColor.m (-colorUsingColorSpace): Don't use isEqual: on + color space. + 2009-10-23 Fred Kiefer * Source/NSGradient.m: Add context savig/restore and first attempt diff --git a/Headers/AppKit/NSGraphicsContext.h b/Headers/AppKit/NSGraphicsContext.h index f9ac3abf3..f971cd2e3 100644 --- a/Headers/AppKit/NSGraphicsContext.h +++ b/Headers/AppKit/NSGraphicsContext.h @@ -48,6 +48,7 @@ @class NSFont; @class NSSet; @class NSBitmapImageRep; +@class NSGradient; /* * Backing Store Types @@ -505,6 +506,21 @@ transform between current user space and image space for this image. @end +@interface NSGraphicsContext (NSGradient) +- (void) drawGradient: (NSGradient*)gradient + fromCenter: (NSPoint)startCenter + radius: (CGFloat)startRadius + toCenter: (NSPoint)endCenter + radius: (CGFloat)endRadius + options: (NSUInteger)options; + +- (void) drawGradient: (NSGradient*)gradient + fromPoint: (NSPoint)startPoint + toPoint: (NSPoint)endPoint + options: (NSUInteger)options; + +@end + /* NSGraphicContext constants */ APPKIT_EXPORT NSString *NSGraphicsContextDestinationAttributeName; APPKIT_EXPORT NSString *NSGraphicsContextPDFFormat; diff --git a/Source/NSColor.m b/Source/NSColor.m index 1f37852f1..da5ff42ad 100644 --- a/Source/NSColor.m +++ b/Source/NSColor.m @@ -1218,7 +1218,7 @@ systemColorWithName(NSString *name) // FIXME NSString *colorSpaceName; - if ([space isEqualTo: [self colorSpace]]) + if (space == [self colorSpace]) { return self; } diff --git a/Source/NSGradient.m b/Source/NSGradient.m index 2093fba54..26f2bf549 100644 --- a/Source/NSGradient.m +++ b/Source/NSGradient.m @@ -55,14 +55,22 @@ radius: (CGFloat)endRadius options: (NSGradientDrawingOptions)options { - // FIXME: New backend call + [[NSGraphicsContext currentContext] drawGradient: self + fromCenter: startCenter + radius: startRadius + toCenter: endCenter + radius: endRadius + options: options]; } - (void) drawFromPoint: (NSPoint)startPoint toPoint: (NSPoint)endPoint options: (NSGradientDrawingOptions)options { - // FIXME: New backend call + [[NSGraphicsContext currentContext] drawGradient: self + fromPoint: startPoint + toPoint: endPoint + options: options]; } - (void) drawInBezierPath: (NSBezierPath *)path angle: (CGFloat)angle @@ -197,7 +205,7 @@ relativeCenterPosition: (NSPoint)relativeCenterPoint { return [self initWithColors: colorArray atLocations: NULL - colorSpace: null]; + colorSpace: nil]; } - (id) initWithColors: (NSArray *)colorArray @@ -208,7 +216,7 @@ relativeCenterPosition: (NSPoint)relativeCenterPoint { _numberOfColorStops = [colorArray count]; NSAssert(_numberOfColorStops >= 2, @"NSGradient needs at least 2 locations"); - if (colorSpace == null) + if (colorSpace == nil) { colorSpace = [[colorArray objectAtIndex: 0] colorSpace]; } @@ -261,7 +269,7 @@ relativeCenterPosition: (NSPoint)relativeCenterPoint self = [self initWithColors: colorArray atLocations: locations - colorSpace: null]; + colorSpace: nil]; RELEASE(colorArray); objc_free(locations); diff --git a/Source/NSGraphicsContext.m b/Source/NSGraphicsContext.m index 2badffae3..68224ef32 100644 --- a/Source/NSGraphicsContext.m +++ b/Source/NSGraphicsContext.m @@ -1780,3 +1780,24 @@ NSGraphicsContext *GSCurrentContext(void) } @end + +@implementation NSGraphicsContext (NSGradient) +- (void) drawGradient: (NSGradient*)gradient + fromCenter: (NSPoint)startCenter + radius: (CGFloat)startRadius + toCenter: (NSPoint)endCenter + radius: (CGFloat)endRadius + options: (NSUInteger)options +{ + [self subclassResponsibility: _cmd]; +} + +- (void) drawGradient: (NSGradient*)gradient + fromPoint: (NSPoint)startPoint + toPoint: (NSPoint)endPoint + options: (NSUInteger)options +{ + [self subclassResponsibility: _cmd]; +} + +@end