• 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: NSImage/NSImageView opacity
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NSImage/NSImageView opacity


  • Subject: Re: NSImage/NSImageView opacity
  • From: Randall Meadows <email@hidden>
  • Date: Fri, 24 Oct 2008 18:07:39 -0600

On Oct 23, 2008, at 9:11 PM, Ken Ferry wrote:
Last, you might be interested in -[NSView cacheDisplayInRect:toBitmapImageRep:] as an alternate way of accomplishing the end goal. Take a gander at the 10.4 AppKit release notes, that have an explanatory section on this method. Search for "NSView Drawing Redirection API" at <http://developer.apple.com/releasenotes/Cocoa/AppKitOlderNotes.html >.

OK, I thought this was what I wanted, but I seem to be having a problem that I don't fully understand.


I have 2 views, "viewToReflect", and "reflectionView" (which shows the reflection of viewToReflect), both subclasses of NSView. In each class, I have an outlet to the other. In reflectionView, I have an NSBitmapImageRep* ("reflectedImage") member.

When viewToReflect gets redrawn, I tell reflectionView that it needs to update itself:

[reflectionView setNeedsDisplay];

In reflectionView's -drawRect:, I create the NSBitmapImageRep instance and I initialize it as those release notes state:

reflectedImage = [viewToReflect bitmapImageRepForCachingDisplayInRect: [viewToReflect bounds]];
NSGraphicsContext *bitmapGraphicsContext = [NSGraphicsContext graphicsContextWithBitmapImageRep:reflectedImage];
[NSGraphicsContext saveGraphicsState];
[NSGraphicsContext setCurrentContext:bitmapGraphicsContext];
[[NSColor clearColor] set];
NSRectFill(NSMakeRect(0, 0, [reflectedImage size].width, [reflectedImage size].height));
[NSGraphicsContext restoreGraphicsState];


and then I call

[viewToReflect cacheDisplayInRect:[viewToReflect bounds] toBitmapImageRep:reflectedImage];

This causes a recursion cycle to start; upon calling this cacheDisplayInRect:... method, I ended up being put back at the top of reflectionView's -drawRect:, even though it's viewToReflect that should be getting redrawn. I assumed I would go back through the viewToReflect's -drawRect, but that is not happening (I have a breakpoint there, and it's not getting hit after this call, while the reflectionView's -drawRect: breakpoint IS getting hit). Here's a stack trace snippet:

...repeat lines 15-19 ad infinitum (as long as I keep continuing)
#15 0x0002a8b8 in -[CardReflectionView drawRect:] at CardReflectionView.m:29
#16 0x903e2eb2 in -[NSView(NSInternal) _recursive:displayRectIgnoringOpacity:inContext:topView:]
#17 0x903e324a in -[NSView(NSInternal) _recursive:displayRectIgnoringOpacity:inContext:topView:]
#18 0x903e27db in -[NSView displayRectIgnoringOpacity:inContext:]
#19 0x90489c0c in -[NSView cacheDisplayInRect:toBitmapImageRep:]
#20 0x0002a8b8 in -[CardReflectionView drawRect:] at CardReflectionView.m:29
#21 0x903e2eb2 in -[NSView(NSInternal) _recursive:displayRectIgnoringOpacity:inContext:topView:]
#22 0x903e324a in -[NSView(NSInternal) _recursive:displayRectIgnoringOpacity:inContext:topView:]
#23 0x903e27db in -[NSView displayRectIgnoringOpacity:inContext:]
#24 0x90489c0c in -[NSView cacheDisplayInRect:toBitmapImageRep:]
#25 0x0002a8b8 in -[CardReflectionView drawRect:] at CardReflectionView.m:29
#26 0x90399984 in -[NSView _drawRect:clip:]


cacheDisplayInRect:... sure seemed like what I want to do, and going over it again (and again, and again...) it sure seems logical, but obviously I'm missing something rather important. Anyone care to point what exactly what that might be to me?

Thanks!
randy
_______________________________________________

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: NSImage/NSImageView opacity
      • From: "Ken Ferry" <email@hidden>
References: 
 >NSImage/NSImageView opacity (From: Randall Meadows <email@hidden>)
 >Re: NSImage/NSImageView opacity (From: "Ken Ferry" <email@hidden>)

  • Prev by Date: Re: Security - Write to protected directory
  • Next by Date: Re: Security - Write to protected directory
  • Previous by thread: Re: NSImage/NSImageView opacity
  • Next by thread: Re: NSImage/NSImageView opacity
  • Index(es):
    • Date
    • Thread