From: Maxim Shemanarev (mcseem_at_[hidden])
Date: 2002-04-21 21:25:59
In November 2001 I posted a message about my vector graphic project called
Anti-Grain Geometry. Here is the link to it.
The post showed some interest (even extremal interest), but then I had
already issued AGG under the LGPL, and so, it was unacceptable for BOOST.
Besides, many things had to be changed, for example, the name convention I
used was not the BOOST one, as well as the general approach. Now I develop
AGG2 which has absolutely free license, in fact I just took the text of it
from BOOST. Besides, I changed the general coding style and completely
redesigned the library.
With this message I'd like to make sure if the BOOST members are still
interested in my work.
So, what is AGG.
It's a rendering engine for 2D vector graphics which I claim to be platform
independent. AGG works in subpixel coordinates and renders all the graphical
primitives with high quality Anti-Aliasing. It's faster than any other
similar library I've seen. It uses a buffer in memory as a drawing canvas
which has to be displayed afterwards. The only dependence here is the
pixels format, but the number of them is restricted and AGG has (or will
have) classes to support all the popular formats. Finally, I'd like to
create a multi-purpose library which is equally good for engineering and
scientific applications, rendering SVG
(http://www.w3.org/Graphics/SVG/Overview.htm8), CAD/CAM systems, rendering
maps (GIS), and so on. It could be a C++ replacement in its funtionality
for the popular LibArt library (http://www.levien.com/libart/).
Here're some features of AGG:
- 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
- An original concept of pipelines 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 (in progress). 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 (in process). 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.
If someone is interested in a preliminary overview, visit
You can find some screenshots and arcticles, download the sources of the
library, compile the examples (under MS Visual C++ for now), and tell me
your opinion if it's worth anything. The documentation is in the process,
so, sorry for broken links in the "Docs" section.
Boost list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk