Quartz Surfaces

Quartz Surfaces — Rendering to Quartz surfaces

Functions

Types and Values

Description

The Quartz surface is used to render cairo graphics targeting the Apple OS X Quartz rendering system.

Functions

cairo_quartz_surface_create ()

cairo_surface_t *
cairo_quartz_surface_create (cairo_format_t format,
                             unsigned int width,
                             unsigned int height);

Creates a Quartz surface backed by a CGBitmapContext using the main display's colorspace to avoid an expensive colorspace transform done serially on the CPU. This may produce slightly different colors from what's intended. Programs for which color management is important should create their own CGBitmapContext with a device-independent color space; most will expect Cairo to draw in sRGB and would use CGColorSpaceCreateWithName(kCGColorSpaceSRGB).

All Cairo operations, including those that require software rendering, will succeed on this surface.

Parameters

format

format of pixels in the surface to create

 

width

width of the surface, in pixels

 

height

height of the surface, in pixels

 

Returns

the newly created surface.

Since: 1.6


cairo_quartz_surface_create_for_cg_context ()

cairo_surface_t *
cairo_quartz_surface_create_for_cg_context
                               (CGContextRef cgContext,
                                unsigned int width,
                                unsigned int height);

Creates a Quartz surface that wraps the given CGContext. The CGContext is assumed to be in the standard Cairo coordinate space (that is, with the origin at the upper left and the Y axis increasing downward). If the CGContext is in the Quartz coordinate space (with the origin at the bottom left), then it should be flipped before this function is called. The flip can be accomplished using a translate and a scale; for example:

1
2
CGContextTranslateCTM (cgContext, 0.0, height);
CGContextScaleCTM (cgContext, 1.0, -1.0);

All Cairo operations are implemented in terms of Quartz operations, as long as Quartz-compatible elements are used (such as Quartz fonts).

Parameters

cgContext

the existing CGContext for which to create the surface

 

width

width of the surface, in pixels

 

height

height of the surface, in pixels

 

Returns

the newly created Cairo surface.

Since: 1.6


cairo_quartz_surface_get_cg_context ()

CGContextRef
cairo_quartz_surface_get_cg_context (cairo_surface_t *surface);

Returns the CGContextRef that the given Quartz surface is backed by.

A call to cairo_surface_flush() is required before using the CGContextRef to ensure that all pending drawing operations are finished and to restore any temporary modification cairo has made to its state. A call to cairo_surface_mark_dirty() is required after the state or the content of the CGContextRef has been modified.

Parameters

surface

the Cairo Quartz surface

 

Returns

the CGContextRef for the given surface.

Since: 1.6


cairo_quartz_image_surface_create ()

cairo_surface_t *
cairo_quartz_image_surface_create (cairo_surface_t *image_surface);

Creates a Quartz surface backed by a CGBitmapContext that references the given image surface. The resulting surface can be rendered quickly when used as a source when rendering to a cairo_quartz_surface.

Parameters

image_surface

a cairo image surface to wrap with a quartz image surface

 

Returns

the newly created surface.

Since: 1.6


cairo_quartz_image_surface_get_image ()

cairo_surface_t *
cairo_quartz_image_surface_get_image (cairo_surface_t *surface);

Returns a cairo_surface_t image surface that refers to the same bits as the image of the quartz surface.

Parameters

surface

a cairo_surface_t

 

Returns

a cairo_surface_t (owned by the quartz cairo_surface_t), or NULL if the quartz surface is not an image surface.

Since: 1.6

Types and Values

CAIRO_HAS_QUARTZ_SURFACE

#define CAIRO_HAS_QUARTZ_SURFACE

Defined if the Quartz surface backend is available. This macro can be used to conditionally compile backend-specific code.

Since: 1.6


CAIRO_HAS_QUARTZ_IMAGE_SURFACE

#define CAIRO_HAS_QUARTZ_IMAGE_SURFACE

Defined if the Quartz image surface backend is available. This macro can be used to conditionally compile backend-specific code.

Since: 1.10

See Also

cairo_surface_t