About celiagg ============= celiagg is designed to be a *simple*, *stateless* library for 2D vector graphics. **Simple**, because it provides a general API which should be simple enough to fit in ones head while still being a general solution for 2D vector rasterization. **Stateless**, because unlike `Cairo `_ or `Quartz `_ (for example), celiagg's main drawing object (``Canvas``) holds the absolute minimum state required to do its job. Instead, the celiagg API includes a handful of stateful objects which are used to pass various drawing attributes to the methods of ``Canvas``. In this way, it is more like `Skia `_ (but much simpler, of course). High-level Overview ~~~~~~~~~~~~~~~~~~~ These are the main objects used for drawing in celiagg. * ``Canvas``: The object which has the main drawing methods. It also manages the frame buffer which is being drawn into. * :class:`celiagg.GraphicsState`: The main state container to be passed to all ``Canvas`` drawing methods. * ``VertexSource``: A family of classes which contain vector data to be rasterized. Includes :class:`celiagg.Path`, :class:`celiagg.BSpline`, and :class:`celiagg.ShapeAtPoints` * ``Paint``: Another family of classes which describe the color and texture of lines and fills. Includes :class:`celiagg.SolidPaint`, :class:`celiagg.PatternPaint`, :class:`celiagg.LinearGradientPaint`, and :class:`celiagg.RadialGradientPaint`. * :class:`celiagg.Transform`: A 2D affine transform * :class:`celiagg.Font`: A single font, needed when rendering text. * :class:`celiagg.FontCache`: Needed to measure the size of rendered text. * :class:`celiagg.Image`: A container for raster image data.