<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
		"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
<!ENTITY version SYSTEM "version.xml">
]>
<refentry id="cairo-Quartz-Surfaces">
<refmeta>
<refentrytitle role="top_of_page" id="cairo-Quartz-Surfaces.top_of_page">Quartz Surfaces</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>CAIRO Library</refmiscinfo>
</refmeta>
<refnamediv>
<refname>Quartz Surfaces</refname>
<refpurpose>Rendering to Quartz surfaces</refpurpose>
</refnamediv>

<refsect1 id="cairo-Quartz-Surfaces.functions" role="functions_proto">
<title role="functions_proto.title">Functions</title>
<informaltable pgwide="1" frame="none">
<tgroup cols="2">
<colspec colname="functions_return" colwidth="150px"/>
<colspec colname="functions_name"/>
<tbody>
<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="cairo-quartz-surface-create">cairo_quartz_surface_create</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="cairo-quartz-surface-create-for-cg-context">cairo_quartz_surface_create_for_cg_context</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="CGContextRef"><returnvalue>CGContextRef</returnvalue></link>
</entry><entry role="function_name"><link linkend="cairo-quartz-surface-get-cg-context">cairo_quartz_surface_get_cg_context</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 id="cairo-Quartz-Surfaces.other" role="other_proto">
<title role="other_proto.title">Types and Values</title>
<informaltable role="enum_members_table" pgwide="1" frame="none">
<tgroup cols="2">
<colspec colname="name" colwidth="150px"/>
<colspec colname="description"/>
<tbody>
<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="CAIRO-HAS-QUARTZ-SURFACE:CAPS">CAIRO_HAS_QUARTZ_SURFACE</link></entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>


<refsect1 id="cairo-Quartz-Surfaces.description" role="desc">
<title role="desc.title">Description</title>
<para>The Quartz surface is used to render cairo graphics targeting the
Apple OS X Quartz rendering system.</para>

</refsect1>
<refsect1 id="cairo-Quartz-Surfaces.functions_details" role="details">
<title role="details.title">Functions</title>
<refsect2 id="cairo-quartz-surface-create" role="function" condition="since:1.6">
<title>cairo_quartz_surface_create&#160;()</title>
<indexterm zone="cairo-quartz-surface-create" role="1.6"><primary sortas="quartz_surface_create">cairo_quartz_surface_create</primary></indexterm>
<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
cairo_quartz_surface_create (<parameter><link linkend="cairo-format-t"><type>cairo_format_t</type></link> format</parameter>,
                             <parameter>unsigned <link linkend="int"><type>int</type></link> width</parameter>,
                             <parameter>unsigned <link linkend="int"><type>int</type></link> height</parameter>);</programlisting>
<para>Creates a Quartz surface backed by a CGBitmap.  The surface is
created using the Device RGB (or Device Gray, for A8) color space.
All Cairo operations, including those that require software
rendering, will succeed on this surface.</para>
<refsect3 id="cairo-quartz-surface-create.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>format</para></entry>
<entry role="parameter_description"><para>format of pixels in the surface to create</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>width</para></entry>
<entry role="parameter_description"><para>width of the surface, in pixels</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>height</para></entry>
<entry role="parameter_description"><para>height of the surface, in pixels</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="cairo-quartz-surface-create.returns" role="returns">
<title>Returns</title>
<para> the newly created surface.</para>
</refsect3><para role="since">Since: <link linkend="api-index-1.6">1.6</link></para></refsect2>
<refsect2 id="cairo-quartz-surface-create-for-cg-context" role="function" condition="since:1.6">
<title>cairo_quartz_surface_create_for_cg_context&#160;()</title>
<indexterm zone="cairo-quartz-surface-create-for-cg-context" role="1.6"><primary sortas="quartz_surface_create_for_cg_context">cairo_quartz_surface_create_for_cg_context</primary></indexterm>
<programlisting language="C"><link linkend="cairo-surface-t"><returnvalue>cairo_surface_t</returnvalue></link>&#160;*
cairo_quartz_surface_create_for_cg_context
                               (<parameter><link linkend="CGContextRef"><type>CGContextRef</type></link> cgContext</parameter>,
                                <parameter>unsigned <link linkend="int"><type>int</type></link> width</parameter>,
                                <parameter>unsigned <link linkend="int"><type>int</type></link> height</parameter>);</programlisting>
<para>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:</para>
<informalexample><programlisting>
CGContextTranslateCTM (cgContext, 0.0, height);
CGContextScaleCTM (cgContext, 1.0, -1.0);
</programlisting></informalexample>
<para>All Cairo operations are implemented in terms of Quartz operations,
as long as Quartz-compatible elements are used (such as Quartz fonts).</para>
<refsect3 id="cairo-quartz-surface-create-for-cg-context.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>cgContext</para></entry>
<entry role="parameter_description"><para>the existing CGContext for which to create the surface</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>width</para></entry>
<entry role="parameter_description"><para>width of the surface, in pixels</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>height</para></entry>
<entry role="parameter_description"><para>height of the surface, in pixels</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="cairo-quartz-surface-create-for-cg-context.returns" role="returns">
<title>Returns</title>
<para> the newly created Cairo surface.</para>
</refsect3><para role="since">Since: <link linkend="api-index-1.6">1.6</link></para></refsect2>
<refsect2 id="cairo-quartz-surface-get-cg-context" role="function" condition="since:1.6">
<title>cairo_quartz_surface_get_cg_context&#160;()</title>
<indexterm zone="cairo-quartz-surface-get-cg-context" role="1.6"><primary sortas="quartz_surface_get_cg_context">cairo_quartz_surface_get_cg_context</primary></indexterm>
<programlisting language="C"><link linkend="CGContextRef"><returnvalue>CGContextRef</returnvalue></link>
cairo_quartz_surface_get_cg_context (<parameter><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link> *surface</parameter>);</programlisting>
<para>Returns the CGContextRef that the given Quartz surface is backed
by.</para>
<para>A call to <link linkend="cairo-surface-flush"><function>cairo_surface_flush()</function></link> 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 <link linkend="cairo-surface-mark-dirty"><function>cairo_surface_mark_dirty()</function></link> is required
after the state or the content of the CGContextRef has been
modified.</para>
<refsect3 id="cairo-quartz-surface-get-cg-context.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>the Cairo Quartz surface</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="cairo-quartz-surface-get-cg-context.returns" role="returns">
<title>Returns</title>
<para> the CGContextRef for the given surface.</para>
</refsect3><para role="since">Since: <link linkend="api-index-1.6">1.6</link></para></refsect2>

</refsect1>
<refsect1 id="cairo-Quartz-Surfaces.other_details" role="details">
<title role="details.title">Types and Values</title>
<refsect2 id="CAIRO-HAS-QUARTZ-SURFACE:CAPS" role="macro" condition="since:1.6">
<title>CAIRO_HAS_QUARTZ_SURFACE</title>
<indexterm zone="CAIRO-HAS-QUARTZ-SURFACE:CAPS" role="1.6"><primary sortas="HAS_QUARTZ_SURFACE">CAIRO_HAS_QUARTZ_SURFACE</primary></indexterm>
<programlisting language="C">#define CAIRO_HAS_QUARTZ_SURFACE 1
</programlisting>
<para>Defined if the Quartz surface backend is available.
This macro can be used to conditionally compile backend-specific code.</para>
<para role="since">Since: <link linkend="api-index-1.6">1.6</link></para></refsect2>

</refsect1>
<refsect1 id="cairo-Quartz-Surfaces.see-also">
<title>See Also</title>
<para><link linkend="cairo-surface-t"><type>cairo_surface_t</type></link></para>

</refsect1>

</refentry>
