--------------------X PIXMAP (.xpm) IMAGE FORMAT, VERSION 3--------------------- -------------------------------------------------------------------------------- An X PixMap image is stored as a fragment of C source code in which the first line is "/* XPM */" and the remaining lines define an array of ``static char*'' (usually with a name identical to that of the file with '_' in place of '.'). This array contains the following strings, in order: - a string containing four or six decimal integers, separated by whitespace, which, in order, specify the width of the image in pixels (hereafter called $width), the height of the image in pixels (hereafter called $height), the number of colors used in the image (hereafter called $colors), the number of characters used to represent each color (hereafter called $cpp), and, optionally, the x- and y-coordinates of the image's "hotspot" (for using the image as a mouse cursor). The string may also optionally end with the substring "XPMEXT" (separated from preceding integers by whitespace), which indicates that the image uses extensions. - "$colors" strings, specifying the colors used in the image. Each string consists of the following items separated by whitespace: - "$cpp" characters (immediately at the beginning of the string) which will be used to represent a pixel in the image data - one or more pairs of keys & color values describing what color(s) to use for the associated pixel(s) - A key is one of: - "c" - indicates that the corresponding color should be used when the image is displayed in a color visual - "m" - indicates that the corresponding color should be used when the image is displayed in a monochrome visual - "g4" - indicates that the corresponding color should be used when the image is displayed in a 4-color/4-level greyscale visual - "g" - indicates that the corresponding color should be used when the image is displayed in a greyscale visual with more than four colors/levels - "s" - indicates that the corresponding color is a symbolic name describing a color that can be overridden at load time (e.g., "light_color", "lines_in_mix", "lines_in_dark", "dark_color", etc.) - A color value is one of: - a color name (corresponding to an entry in an X11 color names file) - a '#' followed by a hexadecimal RGB code - a '%' followed by an HSV code - the string "None", indicating a transparent or otherwise omitted pixel - Keys are separated from color values by whitespace. - "$height" strings (corresponding to the rows of the image from top to bottom) of length "$width * $cpp" in which each consecutive substring of length "$cpp" describes a pixel of the image (from left to right) as having the color(s) defined for that substring by the preceding section - If & only if the "XPMEXT" flag is present: - one or more extension subsections, which take two possible forms: - a string containing, in order, "XPMEXT", whitespace, the name of the extension, whitespace, and the extension data - a string containing, in order, "XPMEXT", whitespace, and the name of the extension, followed by one or more strings of extension data - the string "XPMENDEXT"