This is PixMon-0.3, a pixel graphics backend.
It is intended by the following:
Many people just want to display bitmap data, w/o knowing any details
from X. PIXMON simply expects packages on standard input, starting with
a header containing rightangle coordinates followed by a color value for
each point in there.
It is also useful when porting brain damaged PC-software, which directly
writes into the video memory.
Features:
o Auto-rescale when changing the window size
o Loadable colormaps, you can display the same data with
different colors
o Autodetect of mono servers, using dithering instead of colors
o Run length encoding supported
Drawbacks/problems:
o No interaction
o Could be faster
o No private color maps
o My first X-program, ugly code :-(
Soon to come:
PlayMate, the PixMon package animator.
Options:
-dx num
-dy num
numbers of dots in x/y-direction
-width num
-height num
-geometry WxH+X+Y
window geometry
-scale float-num
initial number of pixels per dot
-cmap filename[.cmap]
path name of a color table
-dither
force dithering even on color servers
-fg
-bg
fore/background color (dithering only)
The package header is defined as
typedef struct {
unsigned short magic;
unsigned short type;
short x;
short y;
unsigned short dx;
unsigned short dy;
unsigned short sizelo;
unsigned short sizehi;
} ImgHdr;
magic:
used to determine byte sex, must
be initialized to PIX_MAGIC
type:
one of
PIX_DATA
Include the pixel data following
the header into the picture
(without displaying instantly)
PIX_FLUSH
Display the internal PixMap.
PIX_DATA | PIX_FLUSH
Include the pixel data following
the header into the picture
and display it instantly
x, y:
Position of this package relative to
the upper-left corner of the window
dx, dy:
Width and height (in dots, not in pixels)
of this package
sizelo, sizehi:
Size of the following pixel data. If
sizehi*0x10000+sizelo < dx*dy, PixMon
expects run length encoded data.
Run length encoding:
If RLE is detected (see above), the value
PIX_RLE (0xFF) is treated as an escape value,
so the number of colors is reduced by one.
To encode your data, use the function rle_encode
from rle.c.
Example:
char mybuffer[MBSIZE];
...
rle_encode(mybuffer, MBSIZE, PIX_RLE);
Color maps:
PixMon loads a color map on startup time.
Color map are ASCII files containing up
256 lines. Each line defines a color's
red, green and blue intensity (0..255).
Compatibility:
PixMon was developed and tested on SunOS Release 4.1
and Linux-0.99pl[0-7], both with X11R5. X11R4 servers
also seem to work. Obsolete X-calls will be replaced,
so if it works with X11R3 now, the next release probably
won't.
Bugs and comments to
/---------------------------------------------------------------------\
| Joachim Sprave sprave@ls11.informatik.uni-dormund.de |
| //////\\ |
| Univ. Dortmund / \ P.O. Box 50 05 00 |
| Dept. CS _| _ _ |_ 4600 Dortmund 50 |
| Systems Analysis |.|-(.)-(.)+.| Tel.: +49-231-755 2637 |
\------------------ \| J |/ -----------------------------------/
\ --- /
\ /
"####"