DragonFly On-Line Manual Pages
    
    
	
RLE(5)                   DragonFly File Formats Manual                  RLE(5)
NAME
       rle - Run length encoded file format produced by the rle library
DESCRIPTION
       The output file format is (note: all words are 16 bits, and in PDP-11
       byte order):
       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
                          ypos,
                          xsize,                      /* Size of saved box
                          ysize;
              }
       Byte 10
              (flags) The following flags are defined:
            H_CLEARFIRST
                   (0x1) If set, clear the frame buffer to background color
                   before restoring.
            H_NO_BACKGROUND
                   (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).
            H_ALPHA
                   (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.
            H_COMMENT
                   (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 image.
       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 entries.
       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
              position.
       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
              position.
       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.
SEE ALSO
       librle(3)
AUTHOR
       Spencer W. Thomas, Todd Fuqua
4th Berkeley Distribution           9/14/82                             RLE(5)