The xpm.js
library render XPM files in a <canvas>
element.
Its constructor accepts up to 4 optional parameters: width, height, number of colors and chars per pixel.
Example:
var x = new XPM(32, 32, 2, 1);
var y = new XPM();
Construct a XPM object from the given buffer.
Add the given XPMColor object color
to the color list.
Example:
var c = new XPMColor('!');
x.addColor(c);
Add the given string line
to the drawing. This interface is very
crude.
Example:
x.addLine("# # #");
x.addLine(" # # # ");
x.addLine(" # # # ");
x.addLine(" ### ");
x.addLine(" # ");
Draw in a canvas element using colors from the given colorscheme.
Such colorscheme might be:
- 'c', for 8-bit color;
- 'g', for 8-bit greyscale;
- 'g4', for 4-bit greyscale;
- 'm', for 1-bit monochrome;
Missing colors in the colorschemes 'c', 'm' and 'g' can be computed at drawing time, following these rules:
- If a color is missing for the 'c' colorscheme but is available in the 'm' one, it will be used instead of the default value of 'c'.
- If a color is missing from the 'm' colorscheme but is available in the 'c' one, it will be evaluated for its proximity to white or black.
- If a color is missing from the 'g' colorscheme but is available in the 'c' one, it will be calculated blabla. If a color is missing from the 'g' and 'c' colorscheme but is available in the 'm' one, it will be used instead of the default value of 'g';
Its constructor takes a string.
Example:
var bang = new XPMColor('!');
Called without argument, this function will return the symbolic name
that was previously bound to it. With an argument it will bind to the
given name s
.
The default value is 'None'.
Called without argument, this function will return the color from the
'c' colorscheme that was previously bound to it. With an argument it
will bind to the given name c
.
The value c
can be specified by giving a color name, which will be
resolved with XPMNameResolver, or a hex value in the form #rrggbb
. The
XPM format support the '%' followed by a HSV code, but this is not
implemented.
The default value is 'rgba(0, 0, 0, 0)'.
Called without argument, this function will return the color from the
'm' colorscheme that was previously bound to it. With an argument it
will bind to the given name c
.
The value m
can be either "black" or "white".
The default value is 'white'.
Called without argument, this function will return the color from the
'g' colorscheme that was previously bound to it. With an argument it
will bind to the given name c
.
The value g
can be any grey color in hex value: #F1F1F1, #0B0B0B,
#111111, ...
The default value is '#FFFFFF'.
Called without argument, this function will return the color from the
'g4' colorscheme that was previously bound to it. With an argument it
will bind to the given name c
.
The value g4
can be any 4-bits grey color in hex value: #111111,
#222222, #333333, ...
The default value is '#FFFFFF'.
This object will be called whenever a color name is used in the 'c' colorscheme. A dummy default one is provided, but it will only return a random color.
Two implementations are included in separate files:
- xpmnr_x11.js: Provide X11 color name to rgba;
- xpmnr_picons.js: Provide Picons color name to hex;
Some documentation on the XPM file format is available here: http://www.xfree86.org/current/xpm.pdf