Cairo (grafica)
# Cairo (grafica)

Cairo è una libreria grafica libera che fornisce interfacce di programmazione per la grafica vettoriale in modo indipendente dal dispositivo e dal sistema operativo utilizzati. Cairo consente il disegno di oggetti in trasparenza e l'uso dell'antialiasing nella grafica vettoriale.

Attualmente supporta l'X Window System, GDI (Windows), Quartz, BeOS, OpenGL (attraverso glitz), buffer locali, file PNG, PDF, PostScript e SVG. Cairo è progettato per fare uso di accelerazione hardware, se disponibile.

La libreria, che è scritta in C, è utilizzabile anche in altri linguaggi di programmazione tra cui C++, C#, Lisp, Haskell, Java, Python, Perl, Ruby, Smalltalk, Factor ed altri.

## Storia

Il progetto Cairo nacque ad opera di Keith Packard e Carl Worth in ambiente X. Il suo nome originario era Xr o Xr/Xc, cambiato successivamente per enfatizzare il fatto che la libreria fosse multipiattaforma. Il nome "cairo" fu derivato dal nome originario Xr, simile alle lettere greche χ (chi) e ρ (rho).

## Tecnologie simili

Cairo compete con tecnologie proprietarie simili, come WPF e GDI+ di Microsoft e Quartz di Apple.

## Usi

* Il progetto Mono fa uso di Cairo sin dalla sua ideazione per implementare GDI+ (libgdiplus) e le classi nel namespace System.Drawing.
* La versione 1.8 di Gecko, il layout engine di Mozilla Firefox e dei progetti simili, fa uso di Cairo per disegnare i contenuti SVG e <canvas>. Dalla versione 1.9 (su cui si basa la versione 3 di Mozilla Firefox) Gecko fa uso di Cairo per disegnare l'intero contenuto delle pagine.
* GTK+, a partire dalla versione 2.8 (distribuita il 13 agosto 2005), fa uso di Cairo per disegnare la quasi totalità degli elementi di interfaccia.
* WebKitGtk, il port del framework WebKit su GTK+, è interamente basato su Cairo per la generazione delle pagine.
* La libreria Poppler usa Cairo per visualizzare i documenti PDF.
* Dalla versione 0.46, il programma di manipolazione di grafica vettoriale Inkscape usa la libreria Cairo per la visualizzazione in modo outline.
