BUILDMAP(3)BUILDMAP(3)NAMEbuildmap - create a color map array from an RLE file header.
rle_pixel ** buildmap( the_hdr, minmap, orig_gamma, new_gamma )
rle_hdr * the_hdr;
double orig_gamma, new_gamma;
The color map in the rle_hdr(3) structure is not in the most easily
used form. The function buildmap returns a pointer to a colormap array
with certain minimum dimensions, making it a little easier to implement
color mapping in a program. The color map from first argument,
the_hdr, is used to build the result. If no map is present in the_hdr,
then an identity map of the minimum size will be returned.
The returned color map will have at least minmap rows or channels, each
of which is at least 256 entries long (so that indexing into the color
map with an 8 bit rle_pixel value will always succeed.)
The color map from the_hdr will be composed with a gamma compensation
curve to account for the gamma of the display for which the input color
map was presumably computed. The argument orig_gamma specifies the
gamma of the compensation curve. It would typically be the gamma of
the original display.
If gamma is 0, then if a picture comment image_gamma=i_gamma is
present, gamma will be set to 1.0/i_gamma. Otherwise, if a comment
display_gamma=d_gamma is present, gamma will be set to d_gamma. The
gamma compensation value for pixel i is 255*(i/255)^gamma.
If this color map will be used directly for another display, the gamma
of this new display should be passed in new_gamma.
The returned value is a pointer to an array of pointers to arrays of
rle_pixel values. It may be doubly indexed in C code, so that if cmap
is the return value, the RGB color mapping for a pixel pixval is
(cmap[pixval], cmap[pixval], cmap[pixval]).
Generally, unless the user explicitly specifies the image or original
display gamma (e.g., as with the -i or -I flags of getx11(1), you
should pass 0 for orig_gamma. This lets buildmap use the value from
the_hdr, if it is present.
If you are going to use the result of buildmap to generate values to be
dithered, new_gamma should always be 1.0, and the display gamma (-g in
getx11) should be passed to dithermap(3). If you are not planning to
dither, then pass the user supplied display gamma as new_gamma.
The color map storage allocated by buildmap can be released by calling
free( map ).
SEE ALSOdithermap(3), rle_hdr(3), librle(3), RLE(5).
Spencer W. Thomas, University of Utah
4th Berkeley Distribution 3/6/85 BUILDMAP(3)