XBM

From Wikipedia, the free encyclopedia

X BitMap
File extension: .xbm
MIME type: image/x-xbitmap unofficial
image/x-xbm unofficial
Type of format: Image file formats
Extended to: XPM

In computer graphics, the X Window System uses XBM (X BitMap), an ASCII monochrome image format, for storing cursor and icon bitmaps used in the X GUI. XBM files differ markedly from most image files in that they take the form of C language source files. This means that they can be compiled directly into an application without any preprocessing steps, but it also makes them far larger than their raw pixel data would be (each byte of image data takes 6 bytes in a XBM file).

XBM data typically appears in headers (.h files) and consist of a series of static unsigned char arrays containing the monochrome pixel data. They feature one array per image stored in the header.

The following piece of C code exemplifies an XBM file:

#define test_width 16
#define test_height 7
static char test_bits[] = {
0x13, 0x00, 0x15, 0x00, 0x93, 0xcd, 0x55, 0xa5, 0x93, 0xc5, 0x00, 0x80,
0x00, 0x60, };
blarg.xbm
blarg.xbm

The file defines a 16x7 bitmap. One can view it by opening a new text file, pasting in the C code above, naming it blarg.xbm, and then trying to view blarg.xbm either in an image-viewer or via a web browser.

In place of the usual image-file-format header, XBM files have two or four #define statements. The first two #defines specify the height and width of the bitmap in pixels. The second two, if they exist, specify the position of any hotspot within the bitmap. (Programmers use a hotspot within the image for bitmapped cursors to define where to position the "pointer" of the cursor, generally at 0,0.)

The image data consists of a line of pixel values stored in a static array. Because a single bit represents each pixel (black or white), each byte in the array contains the information for eight pixels, with the upper left pixel in the bitmap represented by the low bit of the first byte in the array. If the image width does not match a multiple of 8, the display mechanism ignores and discards the extra bits in the last byte of each row.

Compare XPM (image format)

A number of web browsers still offer support for displaying XBM images. This is a holdover from the early days of the WWW, when XBM was the minimal non-proprietary image file format. However, XBM support has been removed from Internet Explorer 6.

In other languages