[cairo] Cairo Tutorial

Lawrence D'Oliveiro ldo at geek-central.gen.nz
Thu Nov 19 00:15:05 PST 2015


Do people find the existing Cairo tutorial
<http://cairographics.org/tutorial/> useful? I don’t feel it jibes with
how I learned to understand Cairo. Rather, I made sense of it in terms
of the interrelationships of the principal object types:

* a *surface* is the recipient of drawing operations. There are various
  types of surfaces, in particular an *image surface* is a rectangular
  array of pixels, which can be of various formats.

  Other surface types have their uses, for example PDF and SVG
  surfaces allow the direct creation of those file formats with Cairo
  drawing operations, such that the original object geometry (including
  text font outlines) is preserved as far as possible, rather than being
  rendered to pixels at some fixed resolution.

* a *context* is the holder of state for drawing operations. It keeps
  information needed during drawing, but which is no longer needed once
  the final image has been produced, such as the colour/pattern to use
  for drawing, the font to use for text, and so on.

* a *pattern* supplies the information for affecting pixel values
  during drawing. It can be as simple as a single uniform colour
  (in this case, Cairo provides convenience routines to set the source
  colour for drawing directly, rather than having to explicitly create a
  pattern object first), or it can be a more elaborate gradient or mesh
  pattern, or it can even consist of the image from another surface.

* a *font face* is the Cairo object for loading fonts to use for
  rendering text.

* a *scaled font* is the user-visible part of Cairo’s font-caching
  mechanism. It represents a font with a particular transformation and
  rendering options selected. If you use a number of different
  font settings repeatedly, then obtaining and setting scaled fonts is a
  quicker way of switching among these settings when rendering text than
  specifying the font face and size and other options separately every
  time.

As I see it, those are the most important ones to get straight. Once
you grasp those concepts, the rest makes a whole lot more sense.


More information about the cairo mailing list