Grafický formát XBM (někdy známý též jako X BitMap) je přibližně stejně starý jako formát PNM. Narozdíl od něj ale řešil kapku jiný problém – jak dostat malé kousky grafiky (ikony, kurzory…) přímo do zdrojového kódu v Céčku.
Výsledkem je ještě neúspornější záležitost než PNM P4, která se nicméně dá zapsat textem a konec konců i celkem snadno generovat.
Kdo zná binární variantu P4 formátu PNM, zorientuje se v XBM velice rychle. Ukažme si rovnou příklad, konkrétně černobílou šachovnici o rozměru 8×8. Nejdříve pro názornost jako PNM P1:
A nyní – až na inverzní barvy, protože formát XBM jako jeden z mála vykresluje pixely v opačném pořadí, tedy od nejméně významného bitu – totéž ve formátu XBM:
Uvědomíte-li si, že 010101012 = 5516
a 101010102 = AA16
, je vše jasné. Prostě podobně jako u formátu PNM P4 jsou bitové informace pro jednotlivé pixely v řádce sloučeny dohromady po osmicích a výsledný bajt je zapsán na výstup v šestnáctkové podobě. Navíc je okolo příslušná „omáčka“, aby XBM-obrázek mohl být přímo součástí céčkovského zdrojáku (chybí zde jméno obrázku, ale o tom až na dalším slajdu).
Struktura obrázku ve formátu XBM v plné formě může být kapku složitější:
#define OBR_width WIDTH
#define OBR_height HEIGHT
#define OBR_x_hot X
#define OBR_y_hot Y
static unsigned char OBR_bits[] = {
DATA
};
OBR
– jednoznačný identifikátor obrázku;
WIDTH
& HEIGHT
– rozměry obrázku v pixelech jako celá čísla;
X
& Y
– v pixelech v rámci obrázku pozice tzv. „hotspotu“ aneb význačného místa obrázku, od kterého se počítá umístění obrázku na obrazovce (typicky konec šipky kurzoru a podobně);
(0, 0)
, osa x běží vpravo a osa y dolů.
DATA
– vlastní data obrázku jako hexadecimální hodnoty oddělené navzájem čárkou (jde o céčkovské pole), vždy pro osm sloupečků najednou.
Jak jsem říkal – nic složitého ^_^ Až na to opačné vykreslování.
Ještě jeden příklad, od Martina Reddyho – obrázek pyramidy byl vygenerován z následujícího XBM-zdrojáku:
Formát XBM byl navržen pro vkládání obrázků ikonek a kurzorů do zdrojových kódů obrazového manažera X11. Proto ta struktura a proto ty vlastnosti (viz „hotspot“).
Vzhledem ke svému rozšíření ho v devadesátých letech ale podporovaly dokonce i webové prohlížeče. Jinak byl v roce 1989 nahrazen svou novější variantou XPM (aka X PixMap).