Update: [cairo] how to interface with an NSWindow (please help!)

Travis Griggs tgriggs at cincom.com
Thu Feb 22 11:40:47 PST 2007

On Feb 22, 2007, at 0:14, Travis Griggs wrote:

> I'm working on my VisualWorks Smalltalk interface to Cairo. In that  
> environment, I have easy access to any NSWindow I open, and the  
> ability to send objective-c messages. So what I do is basically:
> 1) fetch the class named NSGraphicsContext
> 2) id nsGC = [NSGraphicsContext graphicsContextWithWindow:  
> myNSWindow];
> 3) cgCtx = [nsGC graphicPort];
> 4) cairo_nquartz_surface_create_for_cg_context (cgCtx, 200, 200, 1);
> But when I do drawing ops on that surface, nothing happens. :( Am I  
> doing this right at all? Or is there a better/different way to do  
> it? Do I need to send additional messages to the NSGraphicsContext  
> or to the CGGraphicsContext (this is just a struct pointer,right?)?
> I'm using 1.2.6 (I think). I'm confused about the recent sent of  
> messages regarding osx apis and stability thereof. Should I upgrade  
> to the new snapshots for cairo?

So, I was wrong. It is doing something. Just not right away. All I  
have to do is hide the window and reexpose it and then it's there!  
Yay. I've tried ending my drawing sequence with a surface flush. But  
that doesn't have any affect. If I use finish, it shows up right  
away, but of course, none of it can be used anymore (have to recreate  
the cairo objects).

Travis Griggs
"Every institution finally perishes by an excess of its own first  
principle." - Lord Acton

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freedesktop.org/archives/cairo/attachments/20070222/083866d6/attachment.html

More information about the cairo mailing list