
There are three levels on which drawing with Clutter::Cogl can be used. The highest level functions construct various simple primitive shapes to be either filled or stroked. Using a lower-level set of functions more complex and arbitrary paths can be constructed by concatenating straight line, bezier curve and arc segments. Additionally there are utility functions that draw the most common primitives - rectangles and trapezoids - in a maximaly optimized fashion.
When constructing arbitrary paths,
the current pen location is initialized using the move_to command.
The subsequent path segments implicitly use the last pen location as their first vertex and move the pen location to the last vertex they produce at the end.
Also there are special versions of functions that allow specifying the vertices of the path segments relative to the last pen location rather then in the absolute coordinates.