2D-Grafikbibliothek Cairo
Ein Stift für jedes Blatt
Identische Darstellung auf dem Linux- und dem Windows-Bildschirm oder in PDF-Dokumenten sowie performante Ausgabe von 2D-Grafiken - mit seinen Backends erledigt Cairo die Hauptarbeit.
Identische Darstellung auf dem Linux- und dem Windows-Bildschirm oder in PDF-Dokumenten sowie performante Ausgabe von 2D-Grafiken - mit seinen Backends erledigt Cairo die Hauptarbeit.
Cairo ist schlank, schnell und beliebt. Derzeit ist die Bibliothek [1] als Unterbau von GTK 2.8 zu finden, und zwar hinter den Grafikroutinen der Dotnet-Umsetzung Mono und als Basis für die künftigen Versionen der Firefox-Engine Gecko. Ihr Konzept ist nicht neu, sondern von Mac OS X abgekupfert: In dem Betriebssystem von Apple basiert die Grafikbibliothek Quartz auf dem PDF-Standard und alle mit ihr gezeichneten Elemente fließen optional direkt in eine PDF-Datei. Cairo geht aber noch einen Schritt weiter.
Der primäre Vorteil der Bibliothek liegt in ihrer Unabhängigkeit vom Ausgabegerät. So kümmert sich Cairo selbstständig darum, ob die gezeichneten Elemente in einem X-Window oder in einer PDF-Datei landen. Zurzeit gelten die Ausgabeschnittstellen für X11, auf dem Windows-2000- und -XP-Bildschirm sowie für Grafikdateien im PNG-Format als stabil. Die Umleitungen in OpenGL über die Beschleunigungshilfe Glitz, Mac OS X über die Quartz-Bibliothek, XCB, Postscript und PDF befinden sich noch im Experimentierstadium.
Egal für welche Ausgabemöglichkeit sich der Programmierer entscheidet, Cairo garantiert eine konsistente Darstellung: Eine Zeichnung sieht in einer PDF-Datei genauso aus wie in einem X11-Fenster. Die Grafikbibliothek nutzt zudem alle vorhandenen Beschleunigungsfunktionen wie zum Beispiel die X Render Extension unter X11 oder Glitz [2] für die OpenGL-Darstellung.
Das Cairo-API ähnelt den Befehlen von Postscript und PDF, aber auch OpenGL-Programmierer werden mit den Konzepten schnell warm. Die angebotenen Operationen reichen vom Zeichnen geometrischer Figuren wie Linien und Splines über die Einbindung von (transparenten) Bildern bis zur geglätteten Textdarstellung mittels Antialiasing. Zusätzlich lassen sich alle Objekte beliebig verformen, beispielsweise skalieren, rotieren oder strecken.
Cairo selbst ist in C geschrieben; Anbindungen ermöglichen seinen Einsatz außerdem unter Python, Ruby, Java, Perl und C++ sowie mit Hilfe der Bibliothek »Mono.Cairo« auch über das Mono-Framework unter C# und den anderen CLS-Sprachen. Weitere Bindings liegen als Testversionen vor, einen vollständigen Überblick gibt [3].
Alle Rezensionen aus dem Linux-Magazin
Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...