| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /** Extended interfaces for JPEG, JPEG2000 and JBIG2 decoders **/ |
| typedef struct |
| { |
| /** Initialize the decoding context, with memory allocator provided by FPDFEMB. |
| Implementation should return a pointer to the decoding context. |
| */ |
| void* (*Init)(void* (*alloc_func)(unsigned int), void (*free_func)(void*)); |
| |
| /** Finish with the decoding. */ |
| void (*Finish)(void* pContext); |
| |
| /** Input JPEG encoded data from the source. |
| This function may be called multiple times during decoding progress. |
| */ |
| void (*Input)(void* pContext, const unsigned char* src_buf, unsigned long src_size); |
| |
| /** Read the header information. Return non-zero for success, 0 for failure */ |
| int (*ReadHeader)(void* pContext); |
| |
| /** Get info from the decoder, including image width, height and number of components */ |
| void (*GetInfo)(void* pContext, int* width, int* height, int* nComps); |
| |
| /** Read one scanline from decoded image */ |
| int (*ReadScanline)(void* pContext, unsigned char* dest_buf); |
| |
| /** Get number of available source bytes left in the input stream */ |
| unsigned long (*GetAvailInput)(void* pContext); |
| } FPDFEMB_JPEG_DECODER; |
| |
| void FPDFEMB_SetJpegDecoder(FPDFEMB_JPEG_DECODER* pDecoder); |
| |
| typedef struct |
| { |
| /** Initialize the decoder with the full source data. |
| Implementation should return a pointer to the context. |
| */ |
| void* (*Init)(const unsigned char* src_buf, unsigned long src_size); |
| |
| /** Destroy the context */ |
| void (*Finish)(void* context); |
| |
| /** Get image info from the context, including width, height, number of components |
| in original codestream, and number of components in output image. For some |
| particular type of encoded image, like paletted image, these two numbers of |
| components may vary. |
| */ |
| void (*GetInfo)(void* context, unsigned long* width, unsigned long* height, |
| unsigned long* codestream_nComps, unsigned long* output_nComps); |
| |
| /** Do the real data decoding, output to a pre-allocated buffer. |
| bTranslateColor indicates whether the decoder should use JPEG2000 embedded |
| color space info to translate image into sRGB color space. |
| "offsets" array describes the byte order of all components. For example, |
| {2,1,0} means the first components is output to last byte. |
| */ |
| void (*Decode)(void* context, unsigned char* dest_buf, int pitch, |
| int bTranslateColor, unsigned char* offsets); |
| } FPDFEMB_JPEG2000_DECODER; |
| |
| void FPDFEMB_SetJpeg2000Decoder(FPDFEMB_JPEG2000_DECODER* pDecoder); |
| |
| typedef struct |
| { |
| /** Do the whole decoding process. Supplied parameters include width, height, source image |
| data and size, global data and size (can be shared among different images), destination |
| buffer and scanline pitch in dest buffer. |
| */ |
| void (*Decode)(unsigned long width, unsigned long height, const unsigned char* src_buf, |
| unsigned long src_size, const unsigned char* global_buf, unsigned long global_size, |
| unsigned char* dest_buf, int dest_pitch); |
| } FPDFEMB_JBIG2_DECODER; |
| |
| void FPDFEMB_SetJbig2Decoder(FPDFEMB_JBIG2_DECODER* pDecoder); |
| |
| #ifdef __cplusplus |
| }; |
| #endif |