NAME
rle_getraw - Read run length encoded data
from an RLE file.
rle_freeraw - Free pixel storage allocated by
rle_getraw.
SYNOPSIS
#include <rle.h>
#include <rle_raw.h>
unsigned int rle_getraw( the_hdr, scanraw, nraw )
rle_hdr * the_hdr;
rle_op ** scanraw;
int * nraw;
void rle_freeraw( the_hdr, scanraw, nraw );
rle_hdr * the_hdr;
rle_op ** scanraw;
int * nraw;
DESCRIPTION
Rle_getraw can be used to read information
from an RLE file in the "raw" form.
The scanraw argument is an array of pointers
to arrays of rle_op(3) structures. Each
rle_op structure specifies a run or sequence
of pixel values. The array nraw gives the
number of rle_op structures for each channel.
I.e., nraw[i] is the length of the array
pointed to by scanraw[i].
Return value is the current scanline number.
Returns 32768 at EOF.
Sufficient space must be allocated in the
arrays of rle_op structures to hold the data
read from the file. A function,
rle_raw_alloc(3), is provided to make this
easier. The storage required by any pixel
sequences in the input will be dynamically
allocated by rle_getraw.
The pixel storage allocated dynamically by
rle_getraw(3) must be freed to avoid memory
leaks. This is most easily accomplished by
calling rle_freeraw. The argument scanraw
points to an array of rle_op structures, with
nraw indicating the number of structures in
each channel. All pixel data arrays will be
freed by the call to rle_freeraw.
EXAMPLE
The usual code looks something like
rle_hdr in_hdr, out_hdr;
rle_op **raw;
int *nraw;
while ( rle_getraw( &in_hdr, raw, nraw ) != 32768 )
{
/* Process data. */
rle_putraw( &out_hdr, raw, nraw );
rle_freeraw( &in_hdr, raw, nraw );
}
SEE ALSO
rle_hdr(3), rle_op(3), rle_putraw(3),
rle_raw_alloc(3), rle_raw_free(3),
rle_getrow(3), rle_getskip(3), librle(3),
RLE(5).
AUTHOR
Spencer W. Thomas
University of Utah
9