version 1.1 | | version 1.2 |
---|
| | |
* Routines for reading and writing IFF files | | * Routines for reading and writing IFF files |
* | | * |
* $Log$ | | * $Log$ |
* Revision 1.1 1999/06/14 22:04:40 donut | | * Revision 1.2 2003/03/09 06:34:09 donut |
* Initial revision | | * change byte typedef to sbyte to avoid conflict with win32 byte which is unsigned |
| | * |
| | * Revision 1.1.1.1 1999/06/14 22:04:40 donut |
| | * Import of d1x 1.37 source. |
* | | * |
* Revision 1.43 1994/12/08 19:03:17 john | | * Revision 1.43 1994/12/08 19:03:17 john |
* Added code to use cfile. | | * Added code to use cfile. |
| | |
#define mskHasTransparentColor 2 | | #define mskHasTransparentColor 2 |
| | |
//Palette entry structure | | //Palette entry structure |
typedef struct pal_entry {byte r,g,b;} pal_entry; | | typedef struct pal_entry {sbyte r,g,b;} pal_entry; |
| | |
//structure of the header in the file | | //structure of the header in the file |
typedef struct iff_bitmap_header { | | typedef struct iff_bitmap_header { |
| | |
short type; //see types above | | short type; //see types above |
short transparentcolor; //which color is transparent (if any) | | short transparentcolor; //which color is transparent (if any) |
short pagewidth,pageheight; //width & height of source screen | | short pagewidth,pageheight; //width & height of source screen |
byte nplanes; //number of planes (8 for 256 color image) | | sbyte nplanes; //number of planes (8 for 256 color image) |
byte masking,compression; //see constants above | | sbyte masking,compression; //see constants above |
byte xaspect,yaspect; //aspect ratio (usually 5/6) | | sbyte xaspect,yaspect; //aspect ratio (usually 5/6) |
pal_entry palette[256]; //the palette for this bitmap | | pal_entry palette[256]; //the palette for this bitmap |
ubyte *raw_data; //ptr to array of data | | ubyte *raw_data; //ptr to array of data |
short row_size; //offset to next row | | short row_size; //offset to next row |
| | |
int convert_ilbm_to_pbm(iff_bitmap_header *bmheader) | | int convert_ilbm_to_pbm(iff_bitmap_header *bmheader) |
{ | | { |
int x,y,p; | | int x,y,p; |
byte *new_data,*destptr,*rowptr; | | sbyte *new_data,*destptr,*rowptr; |
int bytes_per_row,byteofs; | | int bytes_per_row,byteofs; |
ubyte checkmask,newbyte,setbit; | | ubyte checkmask,newbyte,setbit; |
| | |
MALLOC( new_data, byte, bmheader->w * bmheader->h ); | | MALLOC( new_data, sbyte, bmheader->w * bmheader->h ); |
if (new_data == NULL) return IFF_NO_MEM; | | if (new_data == NULL) return IFF_NO_MEM; |
| | |
destptr = new_data; | | destptr = new_data; |
| | |
| | |
//if bm->bm_data is set, use it (making sure w & h are correct), else | | //if bm->bm_data is set, use it (making sure w & h are correct), else |
//allocate the memory | | //allocate the memory |
int iff_parse_bitmap(FFILE *ifile,grs_bitmap *bm,int bitmap_type,byte *palette,grs_bitmap *prev_bm) | | int iff_parse_bitmap(FFILE *ifile,grs_bitmap *bm,int bitmap_type,sbyte *palette,grs_bitmap *prev_bm) |
{ | | { |
int ret; //return code | | int ret; //return code |
iff_bitmap_header bmheader; | | iff_bitmap_header bmheader; |
| | |
| | |
//like iff_read_bitmap(), but reads into a bitmap that already exists, | | //like iff_read_bitmap(), but reads into a bitmap that already exists, |
//without allocating memory for the bitmap. | | //without allocating memory for the bitmap. |
int iff_read_into_bitmap(char *ifilename,grs_bitmap *bm,byte *palette) | | int iff_read_into_bitmap(char *ifilename,grs_bitmap *bm,sbyte *palette) |
{ | | { |
int ret; //return code | | int ret; //return code |
FFILE ifile; | | FFILE ifile; |