www.wikidata.de-de.nina.az
Cairo ist eine freie 2D Grafikbibliothek Sie ermoglicht uber eine gerateunabhangige vektorbasierte API fur Softwareentwickler die Ausgabe auf verschiedenen sogenannten Backends Derzeit wird die Ausgabe auf dem X Window System unter Win32 unter Quartz in lokale Bildpuffer und in die Dateiformate PNG PostScript PDF und SVG als stabil bezeichnet Back Ends fur die Ausgabe unter OpenGL via Glitz und XCB befinden sich in Entwicklung CairoBasisdatenEntwickler Das Cairo TeamAktuelle Version 1 18 0 1 23 September 2023 Betriebssystem Unix Linux Windows macOSProgrammiersprache CKategorie GrafikbibliothekLizenz LGPL MPLdeutschsprachig neinwww cairographics orgCairo wurde so gestaltet dass es soweit vorhanden bei den Ausgabe Back Ends die Moglichkeit der Beschleunigung durch den Grafikprozessor beispielsweise zur Kantenglattung zur Verfugung stellt Diese Moglichkeit wird jedoch z B unter Win32 momentan nicht genutzt Die Cairo Entwicklung wurde ursprunglich unter dem Namen Xr beziehungsweise Xr Xc von Keith Packard und Carl Worth fur den Gebrauch mit dem X Window System begonnen So leitet sich auch der Name von den griechischen Buchstaben Chi und Rho ab Konkurrenztechnologien sind WPF sowie GDI von Microsoft und Quartz von Apple Inhaltsverzeichnis 1 Zeichenmodell 2 Programmierbeispiel 3 Verwendung 3 1 Verwendung in GUI Toolkits 3 2 Verwendung in Browserengines 3 3 Verwendung in Grafiksoftware 4 Anbindung an andere Programmiersprachen 5 Siehe auch 6 Weblinks 7 EinzelnachweiseZeichenmodell Bearbeiten nbsp Cairos ZeichenmodellCairo verfolgt eine ungewohnliche Zeichentechnik die auf einem dreigliedrigen Schichtenmodell basiert siehe Bild Cairos Zeichenmodell Ein Zeichenvorgang findet statt indem eine Mask englisch fur Maske erstellt wird welche eine oder mehrere Vektorenprimitiven bzw formen beinhaltet d h Kreise Vierecke TTF Schriften Bezierkurven usw Anschliessend muss eine Source englisch fur Quelle definiert werden welche z B aus einer Farbe einem Farbverlauf einer Bitmap oder Vektorgrafik bestehen kann Nun wird mit der Mask wie mit einer Ausstechform der bemalte Teil aus der Source herausgestochen Das Ergebnis wird schliesslich auf die Destination bzw Surface ubertragen welche durch das Ausgabebackend gestellt wird Damit wird ein grundsatzlich anderer Ansatz verfolgt als z B bei SVG Vektorgrafiken Programmierbeispiel Bearbeiten nbsp Das von diesem Programm generierte SVG BildCairo wurde in C geschrieben zudem gibt es Sprachbindungen zu vielen anderen Programmiersprachen unter anderem Haskell Java Perl Ruby Python Scheme Smalltalk Auch komplexere Hallo Welt Grafiken lassen sich mit Cairo bereits mit wenigen Zeilen Quelltext zeichnen include lt cairo cairo svg h gt include lt stdio h gt int main int argc char argv cairo t cr cairo surface t surface cairo pattern t pattern cairo text extents t text int x y surface cairo surface t cairo svg surface create Cairo example svg 100 0 100 0 cr cairo create surface Quadrate im Hintergrund zeichnen for x 0 x lt 10 x for y 0 y lt 10 y cairo rectangle cr x 10 0 y 10 0 5 5 pattern cairo pattern create radial 50 50 5 50 50 50 cairo pattern add color stop rgb pattern 0 0 75 0 15 0 99 cairo pattern add color stop rgb pattern 0 9 1 1 1 cairo set source cr pattern cairo fill cr Schrift im Vordergrund cairo set font size cr 15 cairo select font face cr Georgia CAIRO FONT SLANT NORMAL CAIRO FONT WEIGHT BOLD cairo set source rgb cr 0 0 0 cairo move to cr 10 25 cairo show text cr Hallo cairo move to cr 10 75 cairo show text cr Wikipedia cairo destroy cr cairo surface destroy surface return 0 Zunachst werden in Zeile 11 bis 13 in Verbindung mit den Deklarationen in Zeilen funf und sechs eine SVG Surface sowie ein Cairo Objekt erstellt Anschliessend kann mit diesem gezeichnet werden in dem jeweils Formen gezeichnet werden und eine Quelle cairo set source festgelegt wird In Zeile 16f wird auf diese Weise ein 10 10 Feld von regelmassigen Quadraten generiert welches anschliessend mit einem radialen Farbverlauf gezeichnet wird Ab Zeile 28 wird eine einfache Moglichkeit dargestellt um mit Cairo Texte zu zeichnen Verwendung BearbeitenIn der Open Source Community findet Cairo dank seiner Fahigkeit plattformunabhangige qualitativ hochwertige 2D Zeichnungen zu erstellen weite Verbreitung Unter anderem verwenden diverse GUI Toolkits z B GTK Browserengines und Grafikprogramme Cairo Verwendung in GUI Toolkits Bearbeiten source source source source source Beispiel Das Zeichnen einer transparenten Uhr mit Cairo realisiertCairo wird ab Version 2 8 0 von GTK unterstutzt Damit ist es moglich von GTK Widgets einen Cairokontext cairo t siehe Zeile funf im Beispiel zu erlangen und dann mit Cairofunktionen in diesen zu zeichnen 2 Mit den gleichen Methoden zeichnet GTK intern ab dieser Version die meisten seiner Widgets mit Cairo 3 und kann damit von hardwarebeschleunigtem Rendering profitieren Die Entwickler der C Anbindung von GTK gtkmm stufen das Zeichnen mit dem GDK schon heute als veraltet deprecated ein weil die Zeichenfunktionen von GDK kompliziert zu bedienen und vergleichsweise leistungsschwach sind Stattdessen wird die ausnahmslose Benutzung von Cairo empfohlen 4 Auch das FLTK kann Cairo zum Zeichnen der kompletten Oberflache nutzen 5 Dank seiner Plattformunabhangigkeit wird Cairo auch in wxWidgets verwendet 6 Auch das Mono Projekt verwendet seit den ersten Versionen Cairo um die GDI Oberflache zu zeichnen Das Standard Widget Toolkit verwendet Cairo ab Version 3 1 auf Linux fur seine Zeichen API Verwendung in Browserengines Bearbeiten In Gecko basierten Webbrowsern wird Cairo ab der Gecko Version 1 8 unter anderem beispielsweise verwendet ab Firefox 1 5 zur Darstellung von SVG Dateien verwendet 7 und ab Gecko Version 1 9 Firefox 3 zusatzlich auch zur Darstellung der gesamten grafischen Benutzeroberflache XUL einschliesslich von Webseiten 8 Auch WebKit verwendet Cairo zum Rendern aller grafischen Elemente in seinem GTK Port SVG und lt canvas gt Elemente werden dabei ebenfalls mittels Cairo gerendert Verwendung in Grafiksoftware Bearbeiten Ab Version 0 46 verwendet das Vektorgrafikprogramm Inkscape Cairo fur den Umriss Anzeigemodus sowie fur das Schreiben von PDF und PostScript Dokumenten 9 Auch die PDF Rendering Engine Poppler verwendet Cairo zum Rendern von PDF Dokumenten Als Abspaltung von Xpdf findet Poppler in vielen verbreiteten PDF Betrachtern wie Evince und Okular Verwendung Cairo kann in dem Office Paket OpenOffice org ab Version 2 fur hardwarebeschleunigte Prasentationseffekte benutzt werden Selbst Programme wie rsvg verwenden Cairo zum Rendern Auf diese Weise entstehen Bitmapgrafiken aus SVG Dateien eine Technik von der beispielsweise auch die Wikipedia Gebrauch macht Anbindung an andere Programmiersprachen BearbeitenDank seiner Implementierung in der Programmiersprache C sind Anbindungen an andere Programmiersprachen language bindings einfach umzusetzen Es existieren Bindungen fur C cairomm analog zu gtkmm Java Haskell Mono Net Framework Perl PHP Python Ruby Rust 10 Objective Caml Scheme Lua Vala und viele andere Programmiersprachen 11 Siehe auch BearbeitenPangoWeblinks Bearbeiten nbsp Commons Cairo Effekte mit GTK und Hardwarebeschleunigung Sammlung von Bildern Videos und Audiodateien Webprasenz von Cairo Cairo everywhere Artikel in Ars Technica englisch Writing a widget using Cairo and Gtk 2 8 eine Einfuhrung in die Interaktion zwischen Cairo und Gtk englisch The Widely Used Cairo Library Has Problems Passing Its Own Tests 3 Juli 2016Einzelnachweise Bearbeiten cairo 1 18 0 23 September 2023 abgerufen am 24 September 2023 library gnome org Cairo Interaction Functions to support using Cairo Memento vom 15 April 2008 im Internet Archive In GDK Reference Manual Einen Ansatz dazu entwickelte Julien Boulnois mit seiner cairo gtk engine Memento vom 24 Juli 2008 im Internet Archive Programming with gtkmm Chapter 15 The Drawing Area Widget bzw Appendix F Drawing With GDK Memento vom 4 Juni 2009 im Internet Archive Article 622 New Poll FLTK2 and Cairo Projekthomepage des FLTK wxcairo Combining Cairo with WxWidgets Google Project Hosting weblogs mozillazine org Memento vom 26 Januar 2010 im Internet Archive Cairo is being switched on for Windows nightly builds Memento vom 15 Oktober 2008 im Internet Archive developer mozilla org 22 Februar 2006 Release Notes for Version 0 46 aus der Inkscape Wiki englisch github com Projekthomepage Language bindings Abgerufen von https de wikipedia org w index php title Cairo Grafikbibliothek amp oldid 238875266