I have the following method in a category on NSBezierPath, which seems to be what you want, and works in the same way as -addClip:
- (void) addInverseClip // this is similar to -addClip, except that it excludes the area bounded by the path instead of includes it. It works by combining this path // with the existing clip area using the E/O winding rule, then setting the result as the clip area. This should be called between // calls to save and restore the gstate, as for addClip. CGContextRef context = [[NSGraphicsContext currentContext] graphicsPort]; CGRect cbbox = CGContextGetClipBoundingBox( context ); NSBezierPath* cp = [NSBezierPath bezierPathWithRect:*(NSRect*)&cbbox]; [cp appendBezierPath:self]; [cp setWindingRule:NSEvenOddWindingRule]; [cp addClip]; } --Graham On 30/10/2012, at 12:22 AM, Roland King <r...@rols.org> wrote: > I have a graphics context and a path and I want to clip everything inside the > path, ie not display it, and leave everything outside the path displayed. The > path is simple and doesn't cross itself, for sake of example it may as well > be a circle. If I start with a clip-free GC and set that circle as a clipping > path, I'll get the opposite, everything in the circle will show, how do I do > the other way around? Does it work if I set a path at the bound rect of the > GC plus my shape in the middle? That would seem to have two crossings to get > into the shape, one at the bounds of the rect, one as you cross the shape, > which should mean everything inside the shape is 'outside' but does a path at > the very extremities of the GC, or even outside it, count as 'crossed'? > > The more I think about it, the more clipping sounds hard to implement _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com