The XPM (
X Pixmap)
file format is a
C declaration of a
char * array.
The first array element is the header string. It contains 4 integers. Width, height, number of colors, and bytes per point.
After the header are the colors. "%s\tc %s", where %s is the color's ASCII mapping, \t is a tab character, and the second %s is the actual color (#RRGGBB hex, or "None" for transparency) Each color has its own array element.
After the colors is the
pixmap itself. Each
line is its own
string. Colors are
mapped to
ASCII using the
table declared above.
so you can #include "somepixmap.xpm" and
parse it
quite easily.
There are also some things like "
XPM extensions" and
Xlib resource-
configurable color scheming, but I don't know anything about those. As such, there may be string-based color values that
vary with
configuration (ex: "
red", rather than rather
static RGB values), and there also may be an XPM extension string or two at the end of the
header, and after the
pixmap data. Thus, it's probably not a good idea to write an
XPM parser based only on this
information: use
Xlib/
GDK's, etc., unless you want to
break specifcations with your own
cross-platform implementation. (as I did during a
project at the time of this writing)