/* * This software is copyrighted as noted below. It may be freely copied, * modified, and redistributed, provided that the copyright notice is * preserved on all copies. * * There is no warranty or other guarantee of fitness for this software, * it is provided solely "as is". Bug reports or fixes may be sent * to the author, who may or may not act on them as he desires. * * You may not include this software in a program or other software product * without supplying the source, or without informing the end-user that the * source is available for no extra charge. * * If you modify this software, you should include a notice giving the * name of the person performing the modification, the date of modification, * and the reason for such modification. */ /* * rle_raw.h - Definitions for rle_getraw/rle_putraw. * * Author: Spencer W. Thomas * Computer Science Dept. * University of Utah * Date: Mon Jul 7 1986 * Copyright (c) 1986, Spencer W. Thomas */ #ifndef RLE_RAW_H #define RLE_RAW_H #ifdef __cplusplus /* Cfront 2.0 or g++ */ #ifndef c_plusplus #define c_plusplus #endif extern "C" { #endif #include "rle_code.h" /***************************************************************** * TAG( rle_op ) * * Struct representing one rle opcode. */ typedef struct rle_op { int opcode; /* one of RByteDataOp or RRunDataOp */ int xloc; /* X location this op starts at */ int length; /* length of run or data */ union { rle_pixel * pixels; /* for ByteData */ int run_val; /* for RunData */ } u; } rle_op; #ifdef USE_PROTOTYPES /***************************************************************** * TAG( rle_raw_alloc ) * * Allocate buffer space for use by rle_getraw and rle_putraw. */ extern int rle_raw_alloc( rle_hdr *the_hdr, rle_op ***scanp, int **nrawp ); /***************************************************************** * TAG( rle_raw_free ) * * Free buffer space allocated by rle_raw_alloc. */ extern void rle_raw_free( rle_hdr *the_hdr, rle_op **scanp, int *nrawp ); /***************************************************************** * TAG( rle_getraw ) * * Get a raw scanline from the input file. */ extern unsigned int rle_getraw( rle_hdr *the_hdr, rle_op *scanraw[], int nraw[] ); /***************************************************************** * TAG( rle_freeraw ) * * Free all the pixel arrays in the raw scan struct. */ extern void rle_freeraw( rle_hdr * the_hdr, rle_op *scanraw[], int nraw[] ); /***************************************************************** * TAG( rle_putraw ) * * Put raw scanline data to the output file. */ extern void rle_putraw( rle_op **scanraw, int *nraw, rle_hdr *the_hdr ); /***************************************************************** * TAG( rle_rawtorow ) * * Convert raw data to "row" type scanline data. */ extern void rle_rawtorow( rle_hdr *the_hdr, rle_op **scanraw, int *nraw, rle_pixel **outrows ); #else /* Return value decls only. See above for detailed declarations. */ /* From rle_getraw.c. */ extern unsigned int rle_getraw(); extern void rle_freeraw(); /* From rle_putraw.c. */ extern void rle_putraw(); /* From rle_raw_alc.c. */ extern int rle_raw_alloc(); extern void rle_raw_free(); /* From rle_rawrow.c. */ extern void rle_rawtorow(); #endif #ifdef __cplusplus } #endif #endif /* RLE_RAW_H */