Cairo Tutorial
Lawrence D'Oliveiro <[email protected]>
| Newsgroups | gmane.comp.lib.cairo |
|---|---|
| Organization | Geek Central |
| Message-ID | <[email protected]> |
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. -- cairo mailing list [email protected] http://lists.cairographics.org/mailman/listinfo/cairo