X BitMap
# X BitMap

In computer grafica, l'X Window System utilizza X BitMap (XBM), un formato di file che rappresenta le immagini sotto forma di testo ASCII, per conservare le bitmap di cursori e icone utilizzate nella GUI X.

I file XBM differiscono fortemente dalla maggior parte dei file, poiché i file XBM hanno la forma di file sorgenti del linguaggio C. Ciò significa che possono essere compilati direttamente dentro un'applicazione senza nessun passo di preprocessore, ma ciò li rende anche più grandi (ogni byte dell'immagine rappresentata come bitmap prende almeno 5 byte in un file XBM).

## Formato

I dati di un file XBM tipicamente appaiono nei file header e consistono in una serie di array di tipo static unsigned char che contengono i dati dei pixel monocromatici. La funzione di un array per ogni immagine viene conservata nei file header.

Il seguente pezzo di codice C esemplifica un file XBM:

Al posto dei soliti header formato immagine, i file XBM hanno due o quattro #define statement. I primi due #define specificano l'altezza e la larghezza del bitmap in pixel. Gli altri due, se esistono, specificano la posizione di ogni hotspost dentro il bitmap. (I programmatori usano un hotspost all'interno dell'immagine per bitmappare il cursore da definire dove posizionare il "puntatore" del cursore, generalmente a 0,0).

L'informazione dell'immagine consiste in una linea di valori di pixel conservati in un array statico. Perché un singolo bit rappresenta ogni pixel (nero o bianco), ogni byte nell'array contiene l'informazione per otto pixel, dove il pixel in alto a sinistra viene rappresentato dal bit basso del primo byte nell'array. Se la larghezza dell'immagine non è un multiplo di 8, il meccanismo di visualizzazione ignora e rifiuta i bit extra nell'ultimo byte per ogni riga.

## Supporto

Un numero di web browser offrono ancora il supporto per mostrare le immagini XBM. Questo formato persiste dai primi giorni del WWW, quando XBM era il formato immagine minimale non-proprietario. Il supporto a XBM è stato rimosso da Internet Explorer 6, sebbene esso venga ancora supportato in Firefox e altri browser, tra cui Safari, Opera e Chrome.

