スクリーンのキャプチャ

スクリーンを左右反転して表示するアプリケーションを作ろうとキャプチャ用のコードを探して見つけた。LeopardQuartzAPIが追加されたらしい。
以下コード。多分、Core ImageでCGImageを直接描画した方が早いのだろうけど。

- (IBAction)capture:(id)sender {
	CGImageRef screenShot = CGWindowListCreateImage(CGRectInfinite, kCGWindowListOptionOnScreenOnly, kCGNullWindowID, kCGWindowImageDefault);
		float width = CGImageGetWidth(screenShot), height = CGImageGetHeight(screenShot);
		NSImage *reversedScreenShot = [[NSImage alloc] initWithSize:NSMakeSize(width, height)];
			[reversedScreenShot lockFocus];
				CGContextRef context = [[NSGraphicsContext currentContext] graphicsPort];
				CGContextScaleCTM(context, -1.0, 1.0);
				CGContextDrawImage(context, CGRectMake(0, 0, -width, height), screenShot);
			[reversedScreenShot unlockFocus];
			[imageView setImage:reversedScreenShot];
		[reversedScreenShot release];
	CGImageRelease(screenShot);
}