On 29 Oct, 2012, at 9:29 PM, Kyle Sluder <k...@ksluder.com> wrote:

> On Mon, Oct 29, 2012, at 06:22 AM, Roland King 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'? 
> 
> From the CGContextClip documentation:
> 
>> The function uses the nonzero winding number rule to calculate the 
>> intersection of the current path with the current clipping path.
> 
> So try specifying your control points in the opposite order.
> 
> --Kyle Sluder

Doesn't help I'm afraid. If I only have that one, single, path, the even-odd 
rule returns odd inside the path/circle so it's inside and the non-zero returns 
either 1 or -1 depending on the order of the control points so either way so 
that's inside too and in either case they get clipped in, not clipped out. I 
think I need two paths, one at the boundary of the context and one inside it, 
but I haven't managed to quite get my head around it. 
_______________________________________________

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

Reply via email to