[cairo] cairo + os X + xcode / please help

Anton Mezhiborskiy Anton.Mezhiborskiy at htw-berlin.de
Mon Apr 6 07:23:09 PDT 2009

Hi Jiang!

Thank you for your answer! It's exactly what i need!

Unfortunatelly I can't build/run my code, because i haven't 
cairo-quartz.h (or something like that) inside the cairo's include 
folder. I've installed cairo via MacPorts. And included "cairo.h" in the 
code, but the Xcode can't find cairo_quartz_surface_create_for_cg_context().

Then i've tried to configure the port with "sudo port edit cairo" and 
put there --enable-quartz. No results.

How should i correctly install/configure cairo+quartz+xcode?

Sorry if my questions are studid.

p.s. i've added "header search paths" and "library search path" to the 
Xcode project. So the xcode sees cairo_surface_t and so on correctly, 
but not the cairo_quartz_surface_create_for_cg_context().

Thank you for Your help.


Jjgod Jiang wrote:
> Hi Anton,
> On Fri, Apr 3, 2009 at 12:43 AM, Anton Mezhiborskiy
> <Anton.Mezhiborskiy at htw-berlin.de> wrote:
>> I've decided to post this qurstion, because i cannot find the solution
>> on my own. I've read manuals and googled, but... i need help.
>> I want like to learn/use cairo, it's great. I'm trying to write a simple
>> code and render it under macosx. But i don't understand how should i do
>> it. I'm lost in Carbon / Cocoa / Quartz Surfaces / cairo_surface_t*.
>> I just need a workflow, how should i write Cairo code and render it then
>> under osx.
> First you'll need to create a custom view (which is inherited directly or
> indirectly from NSView) which you have access to the -drawRect: method
> of it.
> In this -drawRect: method, you can retrieve Core Graphics (Quartz) context
> and create a cairo quartz surface from it, like this:
> - (void) drawRect: (NSRect) rect
> {
>     CGContext *context = [[NSGraphicsContext currentContext] graphicsPort];
>     cairo_surface_t *surface =
> cairo_quartz_surface_create_for_cg_context(context, (int)
> rect.size.width, (int) rect.size.height);
>     cairo_t *cr = cairo_create(surface);
>     // do your drawings with cairo here
>     cairo_destroy(cr);
>     cairo_surface_destroy(surface);
> }
> HTH.
> - Jiang

More information about the cairo mailing list