|  | typedef struct Rawimage Rawimage; | 
|  |  | 
|  | struct Rawimage | 
|  | { | 
|  | Rectangle	r; | 
|  | uchar	*cmap; | 
|  | int		cmaplen; | 
|  | int		nchans; | 
|  | uchar	*chans[4]; | 
|  | int		chandesc; | 
|  | int		chanlen; | 
|  |  | 
|  | int		fields;    	/* defined by format */ | 
|  | int		gifflags;	/* gif only; graphics control extension flag word */ | 
|  | int		gifdelay;	/* gif only; graphics control extension delay in cs */ | 
|  | int		giftrindex;	/* gif only; graphics control extension transparency index */ | 
|  | int		gifloopcount;	/* number of times to loop in animation; 0 means forever */ | 
|  | }; | 
|  |  | 
|  | enum | 
|  | { | 
|  | /* Channel descriptors */ | 
|  | CRGB	= 0,	/* three channels, no map */ | 
|  | CYCbCr	= 1,	/* three channels, no map, level-shifted 601 color space */ | 
|  | CY	= 2,	/* one channel, luminance */ | 
|  | CRGB1	= 3,	/* one channel, map present */ | 
|  | CRGBV	= 4,	/* one channel, map is RGBV, understood */ | 
|  | CRGB24	= 5,	/* one channel in correct data order for loadimage(RGB24) */ | 
|  | CRGBA32	= 6,	/* one channel in correct data order for loadimage(RGBA32) */ | 
|  | CYA16	= 7,	/* one channel in correct data order for loadimage(Grey8+Alpha8) */ | 
|  | CRGBVA16= 8,	/* one channel in correct data order for loadimage(CMAP8+Alpha8) */ | 
|  |  | 
|  | /* GIF flags */ | 
|  | TRANSP	= 1, | 
|  | INPUT	= 2, | 
|  | DISPMASK = 7<<2 | 
|  | }; | 
|  |  | 
|  |  | 
|  | enum{	/* PNG flags */ | 
|  | II_GAMMA =	1 << 0, | 
|  | II_COMMENT =	1 << 1 | 
|  | }; | 
|  |  | 
|  | typedef struct ImageInfo { | 
|  | ulong	fields_set; | 
|  | double	gamma; | 
|  | char	*comment; | 
|  | } ImageInfo; | 
|  |  | 
|  |  | 
|  | Rawimage**	readjpg(int, int); | 
|  | Rawimage**	Breadjpg(Biobuf *b, int); | 
|  | Rawimage**	readpng(int, int); | 
|  | Rawimage**	Breadpng(Biobuf *b, int); | 
|  | Rawimage**	readgif(int, int); | 
|  | Rawimage**	readpixmap(int, int); | 
|  | Rawimage*	torgbv(Rawimage*, int); | 
|  | Rawimage*	totruecolor(Rawimage*, int); | 
|  | int		writerawimage(int, Rawimage*); | 
|  | void*		_remaperror(char*, ...); | 
|  |  | 
|  | #ifndef _MEMDRAW_H_ | 
|  | typedef struct Memimage Memimage;	/* avoid necessity to include memdraw.h */ | 
|  | #endif | 
|  |  | 
|  | char*		startgif(Biobuf*, Image*, int); | 
|  | char*		writegif(Biobuf*, Image*, char*, int, int); | 
|  | void		endgif(Biobuf*); | 
|  | char*		memstartgif(Biobuf*, Memimage*, int); | 
|  | char*		memwritegif(Biobuf*, Memimage*, char*, int, int); | 
|  | void		memendgif(Biobuf*); | 
|  | Image*		onechan(Image*); | 
|  | Memimage*	memonechan(Memimage*); | 
|  |  | 
|  | char*		writeppm(Biobuf*, Image*, char*); | 
|  | char*		memwriteppm(Biobuf*, Memimage*, char*); | 
|  | Image*		multichan(Image*); | 
|  | Memimage*	memmultichan(Memimage*); | 
|  |  | 
|  | char*		memwritepng(Biobuf*, Memimage*, ImageInfo*); | 
|  | extern int drawlog2[]; |