On Jun 5, 2008, at 6:15 PM, Nick Zitzmann wrote:

On Jun 5, 2008, at 6:12 PM, Felipe Monteiro de Carvalho wrote:

I would love to, but this method was added in 10.5

I am using 10.4

You can still do this in 10.4, just not with NSBitmapImageRep. Create an NSImage, call -lockFocus on it to create a CGContextRef, call [[NSGraphicsContext currentContext] graphicsPort] to get the context _after_ locking focus, draw the image, then call - unlockFocus. That ought to work.

Here's the method I wrote to do just that:

NSImage *CGImageRefToNSImage (CGImageRef cgImage)
{
   NSRect       imageRect = NSMakeRect(0.0, 0.0, 0.0, 0.0);
   CGContextRef imageContext = nil;
   NSImage      *newImage = nil;

   // Get the image dimensions
imageRect.size = NSMakeSize(CGImageGetWidth(cgImage), CGImageGetHeight(cgImage));

   // Create a new image to receive the Quartz image data
   newImage = [[NSImage alloc] initWithSize:imageRect.size];
   [newImage setCacheMode:NSImageCacheNever];
   [newImage lockFocus];

   // Get the Quartz context and draw
imageContext = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
   CGContextDrawImage(imageContext, *(CGRect *)&imageRect, cgImage);
   [newImage unlockFocus];

   return([newImage autorelease]);
}
_______________________________________________

Cocoa-dev mailing list ([email protected])

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to