<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
   "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
  <!ENTITY % general-entities SYSTEM "../../general.ent">
  %general-entities;

  <!ENTITY cairo-download-http "http://cairographics.org/releases/cairo-&cairo-version;.tar.xz">
  <!ENTITY cairo-download-ftp  " ">
  <!ENTITY cairo-md5sum        "fc3a5edeba703f906f2241b394f0cced">
  <!ENTITY cairo-size          "35 MB">
  <!ENTITY cairo-buildsize     "125 MB">
  <!ENTITY cairo-time          "0.9 SBU">
]>

<sect1 id="cairo" xreflabel="Cairo-&cairo-version;">
  <?dbhtml filename="cairo.html"?>

  <sect1info>
    <othername>$LastChangedBy: bdubbs $</othername>
    <date>$Date: 2015-02-21 23:09:10 -0500 (Sat, 21 Feb 2015) $</date>
  </sect1info>

  <title>Cairo-&cairo-version;</title>

  <indexterm zone="cairo">
    <primary sortas="a-Cairo">Cairo</primary>
  </indexterm>

  <sect2 role="package">
    <title>Introduction to Cairo</title>

    <para>
      <application>Cairo</application> is a 2D graphics library with support for
      multiple output devices. Currently supported output targets include the
      <application>X</application> Window System, win32, image buffers,
      PostScript, PDF and SVG. Experimental backends include OpenGL, Quartz and
      XCB file output. <application>Cairo</application> is designed to produce
      consistent output on all output media while taking advantage of display
      hardware acceleration when available (e.g., through the X Render
      Extension). The <application>Cairo</application> API provides operations
      similar to the drawing operators of PostScript and PDF. Operations in
      <application>Cairo</application> include stroking and filling cubic
      B&eacute;zier splines, transforming and compositing translucent images,
      and antialiased text rendering. All drawing operations can be transformed
      by any
      <ulink url="http://en.wikipedia.org/wiki/Affine_transformation">affine
      transformation</ulink> (scale, rotation, shear, etc.).
    </para>

    &lfs77_checked;

    <bridgehead renderas="sect3">Package Information</bridgehead>
    <itemizedlist spacing="compact">
      <listitem>
        <para>
          Download (HTTP): <ulink url="&cairo-download-http;"/>
        </para>
      </listitem>
      <listitem>
        <para>
          Download (FTP): <ulink url="&cairo-download-ftp;"/>
        </para>
      </listitem>
      <listitem>
        <para>
          Download MD5 sum: &cairo-md5sum;
        </para>
      </listitem>
      <listitem>
        <para>
          Download size: &cairo-size;
        </para>
      </listitem>
      <listitem>
        <para>
          Estimated disk space required: &cairo-buildsize;
        </para>
      </listitem>
      <listitem>
        <para>
          Estimated build time: &cairo-time;
        </para>
      </listitem>
    </itemizedlist>

    <bridgehead renderas="sect3">Additional Downloads</bridgehead>
    <itemizedlist spacing="compact">
      <listitem>
        <para>
          Required patch:
          <ulink url="&patch-root;/cairo-&cairo-version;-upstream_fixes-2.patch"/>
        </para>
      </listitem>
    </itemizedlist>

    <bridgehead renderas="sect3">Cairo Dependencies</bridgehead>

    <bridgehead renderas="sect4">Required</bridgehead>
    <para role="required">
      <xref linkend="libpng"/>,
      <xref linkend="glib2"/> and
      <xref linkend="pixman"/>
    </para>

    <bridgehead renderas="sect4">Recommended</bridgehead>
    <para role="recommended">
      <xref linkend="fontconfig"/> and
      <xref linkend="xorg7-lib"/>
    </para>

    <bridgehead renderas="sect4">Optional</bridgehead>
    <para role="optional">
      <xref linkend="cogl"/>,
      <xref linkend="gtk-doc"/>,
      <xref linkend="libdrm"/>,
      <xref linkend="lzo"/>,
      <xref linkend="mesalib"/>,
      <xref linkend="qt4"/>,
      <xref linkend="valgrind"/>,
      <ulink url="http://www.directfb.org/">DirectFB</ulink>,
      <ulink url="https://github.com/rillian/jbig2dec/">jbig2dec</ulink>, and
      <ulink url="http://code.google.com/p/skia/">Skia</ulink>
    </para>

    <para condition="html" role="usernotes">
      User Notes: <ulink url="&blfs-wiki;/cairo"/>
    </para>
  </sect2>

  <sect2 role="installation">
    <title>Installation of Cairo</title>

    <para>
      Install <application>Cairo</application> by running the following
      commands:
    </para>

<screen><userinput>patch -Np1 -i ../cairo-&cairo-version;-upstream_fixes-2.patch &amp;&amp;
./configure --prefix=/usr    \
            --disable-static \
            --enable-tee &amp;&amp;
make</userinput></screen>

    <para>
      This package does not have a working testsuite.
    </para>

    <para>
      Now, as the <systemitem class="username">root</systemitem> user:
    </para>

<screen role="root"><userinput>make install</userinput></screen>
  </sect2>

  <sect2 role="commands">
    <title>Command Explanations</title>

    <para>
      <parameter>--enable-tee</parameter>: This switch enables experimental tee
      surface backend which is required if using system-installed
      <application>Cairo</application> with Mozilla applications.
    </para>

    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
      href="../../xincludes/static-libraries.xml"/>

    <para>
      <option>--enable-xlib-xcb</option>: This switch enables experimental
      Xlib/XCB functions used by some window managers.
    </para>

    <para>
      <option>--enable-gl</option>: This switch enables
      <application>Cairo</application>'s experimental
      <application>OpenGL</application> surface which
      is required for <application>Wayland</application>
      compositor and some other packages that are not
      part of BLFS.
    </para>

    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
      href="../../xincludes/gtk-doc-rebuild.xml"/>

  </sect2>

  <sect2 role="content">
    <title>Contents</title>

    <segmentedlist>
      <segtitle>Installed Programs</segtitle>
      <segtitle>Installed Libraries</segtitle>
      <segtitle>Installed Directories</segtitle>

      <seglistitem>
        <seg>
          cairo-sphinx and cairo-trace
        </seg>
        <seg>
          libcairo.so, libcairo-gobject.so and
          libcairo-script-interpreter.so
        </seg>
        <seg>
          /usr/include/cairo,
          /usr/lib/cairo and
          /usr/share/gtk-doc/html/cairo
        </seg>
      </seglistitem>
    </segmentedlist>

    <variablelist>
      <bridgehead renderas="sect3">Short Descriptions</bridgehead>
      <?dbfo list-presentation="list"?>
      <?dbhtml list-presentation="table"?>

      <varlistentry id="cairo-trace">
        <term><command>cairo-trace</command></term>
        <listitem>
          <para>
            generates a log of all calls made by an application to
            <application>Cairo</application>.
          </para>
          <indexterm zone="cairo cairo-trace">
            <primary sortas="b-cairo-trace">cairo-trace</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="libcairo">
        <term><filename class="libraryfile">libcairo.so</filename></term>
        <listitem>
          <para>
            contains the 2D graphics functions required for rendering to the
            various output targets.
          </para>
          <indexterm zone="cairo libcairo">
            <primary sortas="c-libcairo">libcairo.so</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="libcairo-gobject">
        <term><filename class="libraryfile">libcairo-gobject.so</filename></term>
        <listitem>
          <para>
            contains functions that integrate
            <application>Cairo</application> with <xref linkend="glib2"/>'s
            GObject type system.
          </para>
          <indexterm zone="cairo libcairo-gobject">
            <primary sortas="c-libcairo-gobject">libcairo-gobject.so</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="libcairo-script-interpreter">
        <term><filename class="libraryfile">libcairo-script-interpreter.so</filename></term>
        <listitem>
          <para>
            contains the script interpreter functions for executing and
            manipulating <application>Cairo</application> execution traces.
          </para>
          <indexterm zone="cairo libcairo-script-interpreter">
            <primary sortas="c-libcairo-script-interpreter">libcairo-script-interpreter.so</primary>
          </indexterm>
        </listitem>
      </varlistentry>

    </variablelist>

  </sect2>

</sect1>
