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