1typedef 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. */
10typedef void (*ImageIterTileContigRoutine)
11    (TIFFImageIter*, void *, uint32, uint32, uint32, uint32, int32,
12	unsigned char*);
13#define	DECLAREContigCallbackFunc(name) \
14static 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
23typedef void (*ImageIterTileSeparateRoutine)
24    (TIFFImageIter*, void *, uint32, uint32, uint32, uint32, int32,
25	unsigned char*, unsigned char*, unsigned char*, unsigned char*);
26#define	DECLARESepCallbackFunc(name) \
27static 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
36struct _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/*
59 * Local Variables:
60 * mode: c
61 * c-basic-offset: 8
62 * fill-column: 78
63 * End:
64 */
65