I'm writing a QCPlugin to write images to disk (roughly based on the
ImageWriterPlugin example). Capturing higher bit depth images is
really throwing me though.

First I'm locking the buffer rep with [QCPlugInInputImageSource
lockBufferRepresentationWithPixelFormat: colorSpace: forBounds:].
Colorspace/bounds I get from the image, pixelformat I'm using
QCPlugInPixelFormatARGB8 for 8 bit or QCPlugInPixelFormatRGBAf for
16/32 (I suspect a problem here: isn't the 16 bit format in QC 16bit
integer? 8/32bit should be OK though. And I'm not worrying about PPC
support.)

Then, I'm creating a CGImage provider, followed by a CGImage using
CGImageCreate:

cgImage = CGImageCreate([qcImage bufferPixelsWide], [qcImage
bufferPixelsHigh], bitdepth, bitdepth * 4, [qcImage
bufferBytesPerRow], colorSpace, bitmapInfo, dataProvider, NULL, false,
kCGRenderingIntentDefault);

I think that's all OK (with the exception of the pixel format being
wrong for 16 bit, but with 16 bit being somewhat broken in QC I'm more
concerned with 8/32 bit modes) apart from the CGBitmapInfo part. For 8
bit it's just kCGImageAlphaPremultipliedFirst, but what should I be
using for the 16/32 bit modes? I thought "kCGBitmapFloatComponents |
kCGBitmapByteOrder32Host" should cover it, but no matter what I try it
seems to either not use float values or has wrong byte ordering :/

Thanks

Chris
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Quartzcomposer-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/quartzcomposer-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to