Jump to content

Anti-Grain Geometry

From Wikipedia, the free encyclopedia
Anti-Grain Geometry
Developer(s)Maxim Shemanarev
Stable release
2.5.0 / October 1, 2006; 17 years ago (2006-10-01)
Written inC++
Operating systemCross-platform
TypeGraphics library
Websiteagg.sourceforge.net/antigrain.com/index.html Edit this on Wikidata

Anti-Grain Geometry (AGG) is a 2D rendering graphics library written in C++. It features anti-aliasing and sub-pixel resolution. It is not a graphics library, per se, but rather a framework to build a graphics library upon.

The library is operating system independent and renders to an abstract memory object. It comes with examples interfaced to the X Window System, Microsoft Windows, Mac OS X, AmigaOS, BeOS, SDL. The examples also include an SVG viewer.

The design of AGG uses C++ templates only at a very high level, rather than extensively, to achieve the flexibility to plug custom classes into the rendering pipeline, without requiring a rigid class hierarchy, and allows the compiler to inline many of the method calls for high performance. For a library of its complexity, it is remarkably lightweight: it has no dependencies above the standard C++ libraries and it avoids the C++ STL in the implementation of the basic algorithms. The implicit interfaces are not well documented, however, and this can make the learning process quite cumbersome.

While AGG version 2.5 is licensed under the GNU General Public License, version 2 or greater, AGG version 2.4 is still available under the 3-clause BSD license and is virtually the same as version 2.5.



Active development of the AGG codebase stalled in 2006, around the time of the v2.5 release, due to shifting priorities of its main developer and maintainer Maxim Shemanarev. M. Shemanarev remained active in the community until his sudden death in 2013. Development has continued on a fork of the more liberally licensed v2.4 on SourceForge.net.[1]


  • The Haiku operating system uses AGG in its windowing system.
  • It is one of the renderers available for use in GNU's Gnash Flash player.
  • Graphical version of Rebol language interpreter is using AGG for scalable vector graphics DRAW dialect.
  • Hilti uses it in some of their rebar detection tools, like the PS 1000.
  • Matplotlib uses AGG as its canonical renderer for interactive user interfaces.[2]
  • fpGUI Toolkit has an optional AggPas back-end rendering engine.[3] Work is being done to make AggPas the default or sole rendering engine for fpGUI.
  • Mapnik, the toolkit that renders the maps on the OpenStreetMap website, uses AGG for all its map rendering.[4]
  • HTTPhotos uses AGG to scale photos.
  • Pdfium, the PDF rendering engine used by Google Chrome makes use of AGG,[5] although work is progressing to replace this with Skia Graphics Engine.[6]
  • Graphics Mill, the .NET imaging SDK uses AGG as its drawing engine.[7]
  • Image-Line FL Studio, a digital audio workstation, since version 10.8 released on September 30, 2012, uses AGG for drawing.[8]
  • Native Instruments's Supercharger and Supercharger GT compressors use AGG for its user interface.



The main author of the library was Maxim Shemanarev (Russian: Максим Шеманарёв). On November 26, 2013 Shemanarev (born June 15, 1966, Nizhny Novgorod, Russia) was reported dead at the age of 47 at his home in Columbia, Maryland (US). He died suddenly, allegedly from an epileptic seizure that he had suffered for a while.[note 1][9][10] He was a graduate from Nizhny Novgorod State Technical University. Little is known about his personal life. It's known though that he was divorced and his mother was alive at the time of his death. He used to love skiing, snowboarding (in Colorado), and inline skating.[note 2] He was praised by his friends for his intelligent programming skills.[9]


  1. ^ The information is primarily sourced from a Russian online forum RSDN he used to visit and his personal page in VKontakte
  2. ^ As it's evidenced from some videos he has published on YouTube in March of 2012.


  1. ^ "Anti-Grain Geometry Library". 28 May 2021.
  2. ^ "Matplotlib Documentation - Using Matplotlib - Figures and backends - Backends". Retrieved 2023-09-26.
  3. ^ "fpGUI Toolkit news". Archived from the original on 23 April 2012. Retrieved 2013-05-14.
  4. ^ "Mapnik wiki".
  5. ^ "Pdfium Source". Retrieved 23 Dec 2016.
  6. ^ "11 - Skia support - pdfium". Retrieved 23 Apr 2022.
  7. ^ "Graphics Mill Documentation". Retrieved 16 August 2015.
  8. ^ "History - FL Studio 10.8 (beta)". Archived from the original on 3 May 2019. Retrieved 2019-05-04.
  9. ^ a b "Максим Шеманарев aka McSeem2, 1966-2013 - О жизни - RSDN" [Maxim Shemanaev a.k.a. McSeem2, 1966-2014 - About life - RSDN]. November 28, 2013. Archived from the original on March 4, 2016. Retrieved October 3, 2021.
  10. ^ "R.I.P. Maxim Shemanarev". vector-agg-general.narkive.com. Retrieved 2021-10-03.