Anti-Grain Geometry
# Anti-Grain Geometry

Anti-Grain Geometry (kurz AGG) ist eine freie, plattformunabhängige Grafikbibliothek mit Subpixel-Genauigkeit. Sie ist von Maxim Shemanarev (McSeem) in C++ geschrieben und als freie Software unter den Bedingungen der Version 2 oder höher der GNU General Public License (GPL) verfügbar.

Es existiert jeweils eine Portierung für Free Pascal und eine für C#.

## Merkmale

Die Bibliothek zeichnet sich vor allem dadurch aus, dass sie sehr flexibel gestaltet ist und auf sehr vielfältige Weise verwendet und erweitert werden kann. Die Bibliothek ist vollständig im C++ Code verfügbar und wird normalerweise direkt in das Anwendungsprogramm kompiliert. Zudem ist keinerlei Hardwareschnittstelle definiert, denn sämtliche Operationen werden in einem frei wählbaren Puffer durchgeführt. Dabei ist es völlig unerheblich, ob es sich dabei um den Framebuffer einer Grafikkarte oder einfach nur um einen zuvor zugewiesenen Speicher handelt. Diese Eigenschaften machen AGG völlig hardwareunabhängig. Die Bibliothek kann in der Regel für jeden beliebigen Prozessor ohne Anpassungen kompiliert werden.

Trotz dieser Flexibilität ist die Bibliothek ausgesprochen schnell und schlank und bietet qualitativ hochwertiges Antialiasing.

## Schichten-Modell

AGG ist in mehreren Schichten vom Pixel-Renderer über Zeilenoperationen bis hin zu elementaren Zeichenoperationen aufgebaut, wodurch es möglich ist, in diesen Ablauf an jeder beliebigen Stelle einzugreifen. Dieses Konzept erschwert allerdings anfangs das Erlernen der Bibliothek.

## Geschichte

Ursprünglich wurde AGG entwickelt, um Rastergrafiken mit hoher Qualität transformieren und in jedem beliebigen Winkel drehen zu können. Inzwischen bietet die Bibliothek viele Möglichkeiten der Vektorgrafik. 2002 wurde Version 2.0 freigegeben. Bis Version 2.4 wurde AGG unter der dreiklausligen (modifizierten) BSD-Lizenz veröffentlicht, mit Version 2.5 wurde im Oktober 2006 auf die GNU General Public License umgestellt.

Die Weiterentwicklung der Bibliothek schlief 2006 ein. Der Hauptentwickler Maxim Schemanarew verstarb im Jahr 2013.

## Verwendung

Das Betriebssystem Haiku nutzt AGG in seinem Fenstersystem.

In GNUs freiem Flash-Player gnash wird es als einer der verfügbaren Renderer eingebunden.

Die graphische Version des Interpreters der Programmiersprache REBOL benutzt AGG für die Verarbeitung von Vektorgraphikdaten in dem SVG-Dialekt DRAW.

