1 typedef struct _TIFFImageIter TIFFImageIter;
2 
3 /* The callback function is called for each "block" of image pixel data after
4    it has been read from the file and decoded. This image pixel data is in the
5    buffer pp, and this data represents the image pixels from (x,y) to
6    (x+w,y+h). It is stored in pixel format, so each pixel contains
7    img->samplesperpixel consecutive samples each containing img->bitspersample
8    bits of data. The array pp is ordered in h consecutive rows of w+fromskew
9    pixels each. */
10 typedef void (*ImageIterTileContigRoutine)
11     (TIFFImageIter*, void *, uint32, uint32, uint32, uint32, int32,
12 	unsigned char*);
13 #define	DECLAREContigCallbackFunc(name) \
14 static void name(\
15     TIFFImageIter* img, \
16     void* user_data, \
17     uint32 x, uint32 y, \
18     uint32 w, uint32 h, \
19     int32 fromskew, \
20     u_char* pp \
21 )
22 
23 typedef void (*ImageIterTileSeparateRoutine)
24     (TIFFImageIter*, void *, uint32, uint32, uint32, uint32, int32,
25 	unsigned char*, unsigned char*, unsigned char*, unsigned char*);
26 #define	DECLARESepCallbackFunc(name) \
27 static void name(\
28     TIFFImageIter* img, \
29     void* user_data, \
30     uint32 x, uint32 y, \
31     uint32 w, uint32 h,\
32     int32 fromskew, \
33     u_char* r, u_char* g, u_char* b, u_char* a\
34 )
35 
36 struct _TIFFImageIter {
37 	TIFF*	tif;				/* image handle */
38 	int	stoponerr;			/* stop on read error */
39 	int	isContig;			/* data is packed/separate */
40 	int	alpha;				/* type of alpha data present */
41 	uint32	width;				/* image width */
42 	uint32	height;				/* image height */
43 	uint16	bitspersample;			/* image bits/sample */
44 	uint16	samplesperpixel;		/* image samples/pixel */
45 	uint16	orientation;			/* image orientation */
46 	uint16	photometric;			/* image photometric interp */
47 	uint16*	redcmap;			/* colormap pallete */
48 	uint16*	greencmap;
49 	uint16*	bluecmap;
50 						/* get image data routine */
51 	int	(*get)(TIFFImageIter*, void *udata, uint32, uint32);
52 	union {
53 	    void (*any)(TIFFImageIter*);
54 	    ImageIterTileContigRoutine		contig;
55 	    ImageIterTileSeparateRoutine	separate;
56 	} callback;				/* fn to exec for each block */
57 };
58