Développé par | Keith Packard, Carl Worth (d), Behdad Esfahbod (en) et Chris Wilson (d) |
---|---|
Dernière version | 1.18.2 ()[1] |
Dépôt | gitlab.freedesktop.org/cairo/cairo |
Écrit en | C |
Système d'exploitation | GNU/Linux, Microsoft Windows, macOS et type Unix |
Environnement | Multiplate-forme |
Type | manipulation d'images vectorielles |
Licence | MPL-1.1 et licence publique générale limitée GNU version 2.1 |
Site web | www.cairographics.org |
Cairo est une bibliothèque logicielle de manipulation d'images vectorielles, qui permet d'afficher les images avec le X Window System ou Microsoft Windows. Cairo permet également de créer du PostScript ou du PDF. Son interface de programmation est fondée sur PostScript[2].
Cette bibliothèque a été implémentée sur X, OpenGL (via Cairo-gl, introduit avec la version 1.10[3],[4] à l'initiative d'Eric Anholt[5], qui succède à la bibliothèque Glitz.[pas clair] Il existe aussi une implémentation drm (Direct Rendering Module) pour les circuits graphiques Intel en attendant que cairo-gl soit optimisé), Apple macOS, via Quartz, ainsi que Microsoft Windows (2000, XP, Vista) ou les tampons mémoires (utilisé sur les PDA et les téléphones GSM).
Il peut utiliser une sortie image vers des fichiers PNG mais aussi une sortie vers des fichiers PostScript, PDF ou SVG. Cairo utilise l'accélération matérielle si elle est disponible pour une fonction et reviendra à un affichage logiciel si celle-ci n'est pas disponible.
Cairo a été commencé par Keith Packard et Carl Worth à la base spécialement pour le X Window System. Son nom original était Xr ou Xr/Xc, mais il s'est vu finalement porté sur les différents systèmes afin de permettre aux différents développeurs d'applications de ne pas avoir à réécrire la partie affichage pour les différentes plateformes.
Il avait à la base un but similaire à la technologie Quartz utilisée par Apple avec Aqua à l'époque du début du projet. Aujourd'hui, la technologie Windows Presentation Foundation de Microsoft utilise également le même principe, ce qui permet à Windows de bénéficier des mêmes technologies que macOS ou X11, mais avec une consommation de mémoire plus importante.
Cairo est développé en langage C, mais dispose de liaisons en C++, Ruby[6], Java, Python, PHP, Perl, Lua, Mono, OCaml, Common Lisp, Scheme, Haskell, Fortran et d'autres langages[7].
Les versions mineures paires sont les versions stables et impaires instables :
Entre la version 1.4.0 et la version 1.4.4, 60 % des appels à la fonction malloc(), principal goulot d'étranglement, ont été éliminés afin d'améliorer les performances[8]. D'autres améliorations ont été amenées dans les versions suivantes pour réduire les reconstructions de motifs déjà à jour (notamment via des caches et du clipping) en cas de demandes intensives des applications.
Les bibliothèques de dessin vectoriel goocanvas et librsvg l'utilisent pour le rendu. Ce sont des bibliothèques en C avec des binding pour les langages Python et Ruby.
Les bibliothèques graphiques GTK, FLTK, GNUstep[7] l'utilisent également pour le dessin des widgets, mais n'ont pas de fonctions vectorielles poussées. Dans le cas de GTK goocanvas a pour but de remplir ce manque. L'environnement de bureau GNOME, utilisant GTK, bénéficie donc de ces avantages.
La bibliothèque de gestion de PDF Poppler (en) (fork de Xpdf)[9], utilise en partie Cairo afin d'afficher les PDF qu'elle ouvre. Cette bibliothèque est utilisée par les lecteurs de PDF libres ePDFView, Evince, Kat, le greffon KDE PDF kfile ainsi que pour l'importation des PDF dans Inkscape.
L'environnement de bureau KDE (utilisant Qt) n'utilise par contre pas Cairo, certains tests ayant montré en que Qt 4.3 avait, au moins dans certains cas simples, un rendu beaucoup plus rapide que Cairo 1.2.5[10]. Cependant Cairo ayant été grandement optimisé à la version 1.4.0 — avec certaines fonctions devenant 96 fois plus rapides qu'auparavant[11] —, le test serait à refaire aujourd'hui.
Gecko 2.0, le moteur de Mozilla Firefox 4, utilise Cairo pour l'affichage.
Le logiciel de dessin vectoriel libre Inkscape l'utilise pour le rendu en fil de fer depuis la version 0.45[12] et les exportations PDF, PNG et PS dans la version 0.46[13]. Le rendu plein et texturé utilise pour le moment la bibliothèque livarot sur lequel son prédécesseur, Sodipodi était basé. Étant donné les gains en matière de performances et de gestion de mémoire, la totalité du rendu devrait être dédiée à Cairo dans les versions suivantes.
Le logiciel éducatif pour enfants GCompris est en cours de portage sur goocanvas afin de bénéficier également des avantages de Cairo.