Ffenestri (multiple host window support), and Mac Host Menus
John M McIntosh
johnmci at smalltalkconsulting.com
Wed Jan 17 07:14:15 UTC 2007
Well in Sophie we set things up to allow quicktime to draw to a
surface. What we do is setup a GWorld via FFI and call our
quicktime plugin to setup a squeak surface that points to the the
GWorld. Then we tell Quicktime to draw to the GWorld, the
plugin is setup to signal a semaphore when quicktime has finished
drawing a frame. So we wait on the semaphore, and when
fired we flush the form to Display.
For the browser plugin I use this to create a CGBitmapContext
SharedBrowserBitMapContextRef = CGBitmapContextCreate
then later do
CGContextDrawImage(SharedBrowserBitMapContextRef, clip, image);
to draw to this bitmap
CGContextDrawImage(targetWindowBlock->context, clip, image); to
draw to the window context.
image is a CGImageCreate using a CGDataProviderCreateDirectAccess
which points to the squeak form, usually the Display.
With I think the right parms the CGBitmapContextCreate could write
bits to a Squeak Surface.
I can't say how you would interface to Quartz Composer, first it
would look like you need the Obj-C interface logic, then follow the
instruction on how to use the QCRenderer class to draw to an openGL
context. Which at this point you have exhausted my knowledge of
how to continue.
Evil things, I note the copybits logic grabs an extra word off the
end of a form. That can cause a VM memory protection depending on
how the bitmap storage area was created. In Sophie we tried to use
the Cairo png reader but found this copybits bug was an issue.
On Jan 16, 2007, at 12:58 PM, Edgar J. De Cleene wrote:
> El 1/16/07 5:38 PM, "John M McIntosh"
> <johnmci at smalltalkconsulting.com>
>> However no-one I know is using the multiple window support.
> All what John send works fine, he is working a lot with this.
> I ask he and repeat for all what have Mac and knowledge of Quartz
> if some kind of Squeak drive is possible.
> I mean some like the attached file could be generated inside Squeak
> (not in
> Quarz Composer) but performed into a host window.
> Maybe I again ask stupid things :=)
John M. McIntosh <johnmci at smalltalkconsulting.com>
Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com
More information about the Squeak-dev