<?xml version="1.0" encoding="utf-8"?>
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" type="topic" id="tech-cairo" xml:lang="ca">

  <info>
    <link type="guide" xref="tech" group="cairo"/>
    <revision pkgversion="3.0" date="2011-04-05" status="candidate"/>

    <credit type="author copyright">
      <name>Shaun McCance</name>
      <email its:translate="no">shaunm@gnome.org</email>
      <years>2011–2012</years>
    </credit>

    <include xmlns="http://www.w3.org/2001/XInclude" href="cc-by-sa-3-0.xml"/>

    <desc>2D, vector-based drawing for high-quality graphics</desc>
  </info>

<title>Cairo</title>

<p>Cairo is a 2D graphics library featuring a sophisticated API for
drawing vector graphics, compositing images, and rendering
anti-aliased text.  Cairo provides support for multiple output
devices, including the X Window System, Microsoft Windows, and image
buffers in memory, allowing you to write platform-independent code to
draw graphics on different media.</p>

<p>Cairo's drawing model is similar to those provided by PostScript
and PDF.  The Cairo API provides such drawing operations as stroking and
filling cubic Bézier splines, compositing images, and performing affine
transformations.  These vector operations allow for rich, anti-aliased
graphics.</p>

<p>Cairo's rich drawing model allows for high-quality rendering to
multiple media.  The same API can be used to create on-screen
graphics and text, to render images, or create crisp output suitable
for printing.</p>

<p>You should use Cairo whenever you need to draw graphics in your
application beyond the widgets provided by GTK.  Almost all of the drawing
inside GTK is done using Cairo.  Using Cairo for your custom drawing
will allow your application to have high-quality, anti-aliased, and
resolution-independent graphics.</p>

<list style="compact">
  <item><p><link href="http://www.cairographics.org/manual/">Cairo Manual</link></p></item>
  <item><p><link href="http://www.cairographics.org">The Cairo web site</link></p></item>
</list>
</page>
