The Anti-Grain Geometry Project
Home | Table of Content | Doxygen

Anti-Grain Geometry (AGG) is a platform independent C++ graphic rendering library that is designed to be small and efficient. It consists of a number of classes and algorithms that allow you to render vectorial objects with very high quality and very high performance. The core of the library is an original and efficient algorithm of rendering Anti-Aliased polygons. The initial idea belongs to David Turner and his group - the authors of excellent software font engine FreeType. The algorithm is single-pass and does not use the oversampling technique.

The library has all necessary features for using it as a powerful rendering engine:

  • Vector path storage with useful algorithms and methods.
  • Affine transformations: Rotation, Scaling, Translation, and Skewing.
  • Calculation outlines of polygons and polylines.
  • Bezier curves interpolator with 1 and 2 control points (conic and cubic Bezier).
  • Algorithms of drawing circles and ellipses, as well as circular and elliptical arcs based on Bezier interpolator.
  • An original concept of a pipeline of vector path converters. You can create custom pipelines using existing algorithms as well as create your own converters and include them into the pipeline.
  • Affine transformations of pixel images. All algorithms are applicable to transform pixel images. Here image areas of any shape can be used. Images are transformed also with using Anti-Aliasing filters. The algorithms are very efficient and give you very high quality.
  • Alpha Channel. Any color value in AGG contains 4 components: Red, Green, Blue, and Alpha. It means that you can render half-transparent polygons and pixel images. Pixel images can be transformed with using their brightness histogram as Alpha values.
  • Color and Alpha interpolation. The concept of color stencils allows you to render any polygons with using color and alpha interpolations.
  • The library is designed to be platform independent. It does not use any underlying libraries (except the standard C Runtime Library) and does not rely on any particular architecture or technology. The general approach to the design of the library is minimum of coupling and minimum of dependecies. Template mechanism is used actively, but very carefully. Naming convention is very similar to the one used in the Standard C++ Template Library.

Copyright © 2002 Maxim Shemanarev (McSeem)