Skip to content

Instantly share code, notes, and snippets.

@maheshgiri
Forked from fernyb/FRBWindow+Extra.h
Created November 30, 2021 05:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maheshgiri/8eb0874f8900a31f8048bba82cd8744e to your computer and use it in GitHub Desktop.
Save maheshgiri/8eb0874f8900a31f8048bba82cd8744e to your computer and use it in GitHub Desktop.
NSWindow Categories to get screen capture of NSWindow including the shadow
@interface NSWindow (FRBExtra)
- (NSImage *)windowImage;
- (CGImageRef)windowImageShot;
@end
@implementation NSWindow (FRBExtra)
- (NSImage *)windowImage
{
NSImage * image = [[NSImage alloc] initWithCGImage:[self windowImageShot] size:[self frame].size];
[image setDataRetained:YES];
[image setCacheMode:NSImageCacheNever];
return [image autorelease];
}
- (CGImageRef)windowImageShot
{
CGWindowID windowID = (CGWindowID)[self windowNumber];
CGWindowImageOption imageOptions = kCGWindowImageDefault;
CGWindowListOption singleWindowListOptions = kCGWindowListOptionIncludingWindow;
CGRect imageBounds = CGRectNull;
CGImageRef windowImage = CGWindowListCreateImage(imageBounds, singleWindowListOptions, windowID, imageOptions);
return (CGImageRef)[NSMakeCollectable(windowImage) autorelease];
}
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment