X PixMap
|
|
This article has multiple issues. Please help improve it or discuss these issues on the talk page.
|
| Filename extension | .xpm |
|---|---|
| Internet media type | image/x-xpixmapimage/x-xpm (both unofficial) |
| Developed by | BULL Research |
| Type of format | Image file formats |
| Extended from | XBM and Portable pixmap |
X Pixmap (XPM) is an image file format used by the X Window System, created in 1989 by Daniel Dardailler and Colas Nahaboo working at Bull Research Center at Sophia Antipolis, France, and later enhanced by Arnaud Le Hors.[1][2]
It is intended primarily for creating icon pixmaps, and supports transparent color. Derived from the earlier XBM syntax,[3] it is a plain text file of a C programming language syntax, which can be included in a C program file.[4]
Contents |
XPM [edit]
The XPM format is an array of strings composed of six different sections as follows:
static char* <variable_name>[] = { <Values> <Colors> <Pixels> <Extensions> };
This is a black and white image in the first (1989) XPM format.
/* XPM */ static char * XFACE[] = { /* <Values> */ /* <width/cols> <height/rows> <colors> <char on pixel>*/ "48 4 2 1", /* <Colors> */ "a c #ffffff", "b c #000000", /* <Pixels> */ "abaabaababaaabaabababaabaabaababaabaaababaabaaab", "abaabaababaaabaabababaabaabaababaabaaababaabaaab", "abaabaababaaabaabababaabaabaababaabaaababaabaaab", "abaabaababaaabaabababaabaabaababaabaaababaabaaab" };
The values section contains the width, height, number of colors, and number of characters per pixel.
XPM2 [edit]
XPM2 simplifies the format by removing all C idiosyncrasies. An example:
! XPM2 128 128 64 1 z c #f6f6f6 Z c #eeeeee :''etc., palette using '''1''' character codes'' @ c #080808 . c #000000 ............................................
This is an XPM2 file with width 128, height 128, 64 colors, using one character per pixel. One tool is known to use only a to p for 16 colors, switching to aa up to dp for 64 colors, but still reading single character encodings for 64 colors; compare Base64.
With more colors the codes use more characters, e.g. aa up to pp for 16*16=256 colors. This is less useful for text editors, because a string ab could be actually the middle of two adjacent pixels dabc. Spaces are allowed as color code, see links, but might be a bad idea depending on the used text editor. Without control codes, space, and quote (needed in XPM1 and XPM3) 128-33-2=93 ASCII characters are available for single character color codes.
For XPM2 it is clear how many lines belong to the image – two header lines, the second header line announcing the number of color codes (64 lines in the example above) and rows (height 128 in the example above), e.g. 2+64+128=194 lines.
The other styles are designed to be used as is in C source code, example:
#define XFACE_format 1 #define XFACE_width 48 #define XFACE_height 48 #define XFACE_ncolors 2 #define XFACE_chars_per_pixel 1 static char *XFACE_colors[] = { "a", "#ffffff", "b", "#000000" }; static char *XFACE_pixels[] = { "abaabaababaaabaabababaabaabaababaabaaababaabaaab", // and so on for 48 rows with 48 pixels
XPM3 [edit]
The latter format is XPM3, the common format used for the X Window System since about 1991. The c means "color", it's possible to add m for "monochrome" output, g for "grayscale", and s for "symbolic", explaining what a defined color is supposed to do.
The "symbolic" feature permits adjusting colors depending on the context where they are used. Code such as s border c blue could be adjusted on a blue background.
If the width, height, colors, and characters per pixel line contains six instead of four numbers, the additional values indicate the coordinates of a "hotspot", 0 0 is the upper left corner of a box containing the icon and the default. A "hotspot" is used for mouse pointers and similar applications.
Comparison with other formats [edit]
The following code displays the same blarg file in XBM, XPM and PGM formats.
XBM version:
#define blarg_xbm_width 16 #define blarg_xbm_height 7 static char blarg_xbm_bits[] = { 0xec, 0xff, 0xea, 0xff, 0x6c, 0x32, 0xaa, 0x5a, 0x6c, 0x3a, 0xff, 0x7f, 0xff, 0x9f};
XPM version:
/* XPM */ static char * blarg_xpm[] = { "16 7 2 1", "* c #000000", ". c #ffffff", "**..*...........", "*.*.*...........", "**..*..**.**..**", "*.*.*.*.*.*..*.*", "**..*..**.*...**", "...............*", ".............**." }
XPM2 version:
! XPM2 16 7 2 1 * c #000000 . c #ffffff **..*........... *.*.*........... **..*..**.**..** *.*.*.*.*.*..*.* **..*..**.*...** ...............* .............**.
PGM file:
P1 16 7 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 1 1 0 0 1 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0
Application support [edit]
The Arena web browser has full support since version 0.3.33 (21 July 1997)[5] The Agora World Wide Web email browser was also able to handle XPM.
See also [edit]
References [edit]
- ^ LeHors 1996, p. 7
- ^ Daniel, Dardailler; Colas Nahaboo and Arnaud Le Hors. "The XPM Story". Retrieved 2010-04-05.
- ^ Kenton Lee (Sept. 1998). "What is XPM ?". The Motif FAQ. comp.windows.x.motif. 137. Retrieved 2010-04-05.
- ^ LeHors 1996, p. 8
- ^ QingLong, Lu (24 March 1998). "Arena change history". Yggdrasil Computing. Archived from the original on 28 February 2003. Retrieved 3 June 2010.
Bibliography and external links [edit]
- Le Hors, Arnaud (1996-02-01). XPM Manual: The X PixMap Format (PDF). Groupe Bull. Retrieved 2010-04-05.
- Mac OS X XPM apple event (example)
- X11 version 6.8.0 vulnerability 537878
- Source Code for Xpm 3.4K: ftp://ftp.x.org/contrib/libraries/xpm-3.4k.tar.gz
|
||||||||||||||||||||