/** * $Id:$ * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** * * The contents of this file may be used under the terms of either the GNU * General Public License Version 2 or later (the "GPL", see * http://www.gnu.org/licenses/gpl.html ), or the Blender License 1.0 or * later (the "BL", see http://www.blender.org/BL/ ) which has to be * bought from the Blender Foundation to become active, in which case the * above mentioned GPL option does not apply. * * The Original Code is Copyright (C) 1997 by Ton Roosendaal, Frank van Beek and Joeri Kassenaar. * All rights reserved. * * The Original Code is: all of this file. * * Contributor(s): none yet. * * ***** END GPL/BL DUAL LICENSE BLOCK ***** */ #ifndef __GL_IMAGE_H__ #define __GL_IMAGE_H__ #ifdef __cplusplus extern "C" { #endif /* * Defines for image files . . . . * * Paul Haeberli - 1984 * Look in /usr/people/4Dgifts/iristools/imgtools for example code! * */ #include #define IMAGIC 0732 /* colormap of images */ #define CM_NORMAL 0 /* file contains rows of values which * are either RGB values (zsize == 3) * or greyramp values (zsize == 1) */ #define CM_DITHERED 1 #define CM_SCREEN 2 /* file contains data which is a screen * image; getrow returns buffer which * can be displayed directly with * writepixels */ #define CM_COLORMAP 3 /* a colormap file */ #define TYPEMASK 0xff00 #define BPPMASK 0x00ff #define ITYPE_VERBATIM 0x0000 #define ITYPE_RLE 0x0100 #define ISRLE(type) (((type) & 0xff00) == ITYPE_RLE) #define ISVERBATIM(type) (((type) & 0xff00) == ITYPE_VERBATIM) #define BPP(type) ((type) & BPPMASK) #define RLE(bpp) (ITYPE_RLE | (bpp)) #define VERBATIM(bpp) (ITYPE_VERBATIM | (bpp)) #define IBUFSIZE(pixels) ((pixels+(pixels>>6))<<2) #define RLE_NOP 0x00 #define ierror(p) (((p)->flags&_IOERR)!=0) #define ifileno(p) ((p)->file) #define getpix(p) (--(p)->cnt>=0 ? *(p)->ptr++ : ifilbuf(p)) #define putpix(p,x) (--(p)->cnt>=0 \ ? ((int)(*(p)->ptr++=(unsigned)(x))) \ : iflsbuf(p,(unsigned)(x))) typedef struct { unsigned short imagic; /* stuff saved on disk . . */ unsigned short type; unsigned short dim; unsigned short xsize; unsigned short ysize; unsigned short zsize; unsigned int min; unsigned int max; unsigned int wastebytes; char name[80]; unsigned int colormap; int file; /* stuff used in core only */ unsigned short flags; short dorev; short x; short y; short z; short cnt; unsigned short *ptr; unsigned short *base; unsigned short *tmpbuf; unsigned int offset; unsigned int rleend; /* for rle images */ unsigned int *rowstart; /* for rle images */ int *rowsize; /* for rle images */ } IMAGE; IMAGE *icreate(); /* * IMAGE *iopen(char *file, char *mode, unsigned int type, unsigned int dim, * unsigned int xsize, unsigned int ysize, unsigned int zsize); * IMAGE *fiopen(int f, char *mode, unsigned int type, unsigned int dim, * unsigned int xsize, unsigned int ysize, unsigned int zsize); * * ...while iopen and fiopen can take an extended set of parameters, the * last five are optional, so a more correct prototype would be: * * IMAGE *iopen(char *file, char *mode, ...); * IMAGE *fiopen(int f, char *mode, ...); * * unsigned short *ibufalloc(IMAGE *image); * int ifilbuf(IMAGE *image); * int iflush(IMAGE *image); * unsigned int iflsbuf(IMAGE *image, unsigned int c); * void isetname(IMAGE *image, char *name); * void isetcolormap(IMAGE *image, int colormap); * int iclose(IMAGE *image); * * int putrow(IMAGE *image, unsigned short *buffer, unsigned int y, unsigned int z); * int getrow(IMAGE *image, unsigned short *buffer, unsigned int y, unsigned int z); * */ IMAGE *iopen(); IMAGE *icreate(); unsigned short *ibufalloc(); #define IMAGEDEF /* for backwards compatibility */ #ifdef __cplusplus } #endif #endif /* !__GL_IMAGE_H__ */