||FreeBSD File Formats Manual
rle - Run length encoded file format produced by the rle library
The output file format is (note: all words are 16 bits, and in PDP-11 byte
- Word 0
- A "magic" number 0xcc52. (Byte order 0x52, 0xcc.)
- Words 1-4
- The structure (chars saved in PDP-11 order)
short xpos, /* Lower left corner
xsize, /* Size of saved box
- Byte 10
- (flags) The following flags are defined:
- (0x1) If set, clear the frame buffer to background color before
- (0x2) If set, no background color is supplied. If H_CLEARFIRST is
also set, it should be ignored (or alternatively, a clear-to-black
operation could be performed).
- (0x4) If set, an alpha channel is saved as color channel -1. The alpha
channel does not contribute to the count of colors in ncolors.
- (0x8) If set, comments will follow the color map in the header.
- Byte 11
- (ncolors) Number of color channels present. 0 means load only the
color map (if present), 1 means a B&W image, 3 means a normal color
- Byte 12
- (pixelbits) Number of bits per pixel, per color channel. Values
greater than 8 currently will not work.
- Byte 13
- (ncmap) Number of color map channels present. Need not be identical
to ncolors. If this is non-zero, the color map follows immediately
after the background colors.
- Byte 14
- (cmaplen) Log base 2 of the number of entries in the color map for
each color channel. I.e., would be 8 for a color map with 256
- Bytes 15-...
- The background color. There are ncolors bytes of background color.
If ncolors is even, an extra padding byte is inserted to end on a
16 bit boundary. The background color is only present if
H_NO_BACKGROUND is not set in flags. IF H_NO
BACKGROUND is set, there is a single filler byte. Background color is
ignored, but present, if H_CLEARFIRST is not set in flags.
If ncmap is non-zero, then the color map will follow as
ncmap*2^cmaplen 16 bit words. The color map data is left
justified in each word.
If the H_COMMENT flag is set, a set of comments will follow. The
first 16 bit word gives the length of the comments in bytes. If this is
odd, a filler byte will be appended to the comments. The comments are
interpreted as a sequence of null terminated strings which should be, by
convention, of the form name=value, or just name.
Following the setup information is the Run Length Encoded image. Each
instruction consists of an opcode, a datum and possibly one or more
following words (all words are 16 bits). The opcode is encoded in the
first byte of the instruction word. Instructions come in either a short or
long form. In the short form, the datum is in the second byte of the
instruction word; in the long form, the datum is a 16 bit value in the
word following the instruction word. Long form instructions are
distinguished by having the 0x40 bit set in the opcode byte. The
instruction opcodes are:
- SkipLines (1)
- The datum is an unsigned number to be added to the current Y
- SetColor (2)
- The datum indicates which color is to be loaded with the data described by
the following ByteData and RunData instructions. Typically, 0→red,
1→green, 2→blue. The operation also resets the X position to
the initial X (i.e. a carriage return operation is performed).
- SkipPixels (3)
- The datum is an unsigned number to be added to the current X
- ByteData (5)
- The datum is one less than the number of bytes of color data following. If
the number of bytes is odd, a filler byte will be appended to the end of
the byte string to make an integral number of 16-bit words. The X position
is incremented to follow the last byte of data.
- RunData (6)
- The datum is one less than the run length. The following word contains (in
its lower 8 bits) the color of the run. The X position is incremented to
follow the last byte in the run.
- EOF (7)
- This opcode indicates the logical end of image data. A physical
end-of-file will also serve as well. The EOF opcode may be used to
concatenate several images in a single file.
Spencer W. Thomas, Todd Fuqua
Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.