• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Retrieving the current -[NSShadow set]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Retrieving the current -[NSShadow set]


  • Subject: Re: Retrieving the current -[NSShadow set]
  • From: "Michael Ash" <email@hidden>
  • Date: Fri, 25 Jul 2008 18:15:22 -0400

On Fri, Jul 25, 2008 at 10:16 AM, Keith Duncan <email@hidden> wrote:
> Here's the code:
>
> //  Created by Sean Patrick O'Brien on 4/1/08.
> //  Copyright 2008 MolokoCacao. All rights reserved.
> - (void)fillWithInnerShadow:(NSShadow *)shadow {
>        [NSGraphicsContext saveGraphicsState];
>
>        NSShadow *shadowCopy = [shadow copy];
>
>        NSSize offset = shadowCopy.shadowOffset;
>        CGFloat radius = shadowCopy.shadowBlurRadius;
>
>        NSRect bounds = NSInsetRect(self.bounds, -(ABS(offset.width) +
> radius), -(ABS(offset.height) + radius));
>
>        offset.height += bounds.size.height;
>        shadowCopy.shadowOffset = offset;
>
>        NSAffineTransform *transform = [NSAffineTransform transform];
>        [transform translateXBy:0 yBy:([[NSGraphicsContext currentContext]
> isFlipped] ? 1 : -1) * bounds.size.height];
>
>        NSBezierPath *drawingPath = [NSBezierPath bezierPathWithRect:bounds];
>        [drawingPath setWindingRule:NSEvenOddWindingRule];
>
>        [drawingPath appendBezierPath:self];
>        [drawingPath transformUsingAffineTransform:transform];
>
>        [self addClip];
>        [shadowCopy set];
>
>        [[NSColor blackColor] set];
>        [drawingPath fill];
>
>        [shadowCopy release];
>
>        [NSGraphicsContext restoreGraphicsState];
> }

Since this code doesn't use the shadow for all drawing, it makes
little sense to use the shadow set in the drawing context, since you
have a bunch of drawing that won't use it. Passing the shadow in makes
perfect sense to me.

I don't recommend it, but you *could* refactor this code to use the
currently set shadow. The non-shadowed code can push the graphics
context state, set a no-effect shadow, draw, then pop the state to get
back to the old shadow.

Mike
_______________________________________________

Cocoa-dev mailing list (email@hidden)

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:

This email sent to email@hidden

  • Follow-Ups:
    • Re: Retrieving the current -[NSShadow set]
      • From: Keith Duncan <email@hidden>
References: 
 >Retrieving the current -[NSShadow set] (From: Keith Duncan <email@hidden>)
 >Re: Retrieving the current -[NSShadow set] (From: Graham Cox <email@hidden>)
 >Re: Retrieving the current -[NSShadow set] (From: Keith Duncan <email@hidden>)
 >Re: Retrieving the current -[NSShadow set] (From: "Michael Ash" <email@hidden>)
 >Re: Retrieving the current -[NSShadow set] (From: Keith Duncan <email@hidden>)

  • Prev by Date: Re: Problem drawing multiple parallel lines
  • Next by Date: Re: Drawing a drop-shadow around a view
  • Previous by thread: Re: Retrieving the current -[NSShadow set]
  • Next by thread: Re: Retrieving the current -[NSShadow set]
  • Index(es):
    • Date
    • Thread