Generic Graphic Library
# Generic Graphic Library

La Generic Graphical Library (indicata con l'acronimo GEGL) è una libreria software, con licenza FOSS per applicazioni di elaborazione digitale delle immagini.

È sviluppata principalmente per GIMP in modo da consentire a quest'ultimo di gestire immagini con profondità di colore superiori a 8 bit, oltre che abilitarne le funzioni di modifica non distruttiva.

Essa è stata parzialmente implementata in GIMP 2.6, ed è sufficientemente generica da poter essere usata anche da altri software.

## Storia

GEGL fu concepita in origine come il rimpiazzo del cuore di GIMP nel 2000, mentre nel 2006 le API esterne divennero sufficientemente stabili e complete per poterlo rimpiazzare. Il 20 dicembre 2007, la libreria fu aggiunta alla versione di sviluppo di GIMP. Alcuni degli strumenti di GIMP sono già stati convertiti alle operazioni GEGL; quasi tutti gli strumenti di modifica dei colori, luminosità o contrasto sono stati convertiti.

## Struttura

GEGL è stata concepita su modello dei grafi aciclici diretti (DAG), dove ogni nodo rappresenta un operatore immagine (chiamati "operatori" o "op"). L'elaborazione viene svolta su modello a richiesta e perciò eseguita solo quando è esplicitamente richiesto.

Usando un modello a richiesta consente di avere delle caratteristiche interessanti come anteprime molto veloci durante la modifica e, una volta che l'utente ha finito di eseguire i cambiamenti, GEGL ripeterà le stesse operazioni a piena risoluzione per il risultato immagine definitivo come elaborazione in background (come xRes).

### Operatori

Un operatore (op) è un nodo all'interno di un grafo GEGL responsabile di un'azione; gli op possono essere semplici, come "add" (con due argomenti in ingresso) o "premultiply by alpha" (con un argomento in ingresso) oppure più complesse, come una conversione di spazio di colore.

### Babl

babl è una libreria di supporto a GEGL che fornisce un metodo generico per gestire le conversioni di spazi di colore;

Il calcolo viene effettuato astraendo le operazioni di colore fondamentali facendo in modo che GEGL non se ne faccia carico. Attraverso babl, tramite il supporto opzionale a istruzioni di tipo SIMD, GEGL fornisce un potente e ottimizzato insieme di funzioni di elaborazione di dati colore arbitrari. Ciò permette alle applicazioni che la usano di supportare efficientemente un'ampia gamma di spazi di colore (da quelli base a 8 bit RGB ai più complessi CMYK in virgola mobile) con un minimo di codice di programmazione aggiuntivo nell'applicazione.

## OpenRaster

OpenRaster è un formato di file XML usato per il salvataggio di grafica raster. Lo sviluppatore GEGL Øyvind Kolås ha aiutato nella specifica del formato OpenRaster facendo in modo che esso possa essere in grado di salvare un grafo GEGL.

