Re: Cairo Tutorial

Colin William Brown <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <CAP=GNcdVDLZRNjKbaLFZxNNKi_gbFfk+U3CWhkLHqJH4XqVqAw@mail.gmail.com>
I think a good teaching document needs to come at the subject from the two
perspectives: the relationships among principle object types and the
mechanism for actually using them. Seeing only one dimension can leave me
floundering.

On Thu, Nov 19, 2015 at 1:15 AM, Lawrence D'Oliveiro <
[email protected]> wrote:

> 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

-- 
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.