1 /* 2 * Copyright (c) 1995-1997 Sam Leffler 3 * Copyright (c) 1995-1997 Silicon Graphics, Inc. 4 * 5 * Permission to use, copy, modify, distribute, and sell this software and 6 * its documentation for any purpose is hereby granted without fee, provided 7 * that (i) the above copyright notices and this permission notice appear in 8 * all copies of the software and related documentation, and (ii) the names of 9 * Sam Leffler and Silicon Graphics may not be used in any advertising or 10 * publicity relating to the software without the specific, prior written 11 * permission of Sam Leffler and Silicon Graphics. 12 * 13 * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 14 * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 15 * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 16 * 17 * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR 18 * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, 19 * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 20 * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 21 * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 22 * OF THIS SOFTWARE. 23 */ 24 25 #ifndef _TIFFPREDICT_ 26 #define _TIFFPREDICT_ 27 28 #include "tiffio.h" 29 #include "tiffiop.h" 30 31 /* 32 * ``Library-private'' Support for the Predictor Tag 33 */ 34 35 typedef int (*TIFFEncodeDecodeMethod)(TIFF *tif, uint8_t *buf, tmsize_t size); 36 37 /* 38 * Codecs that want to support the Predictor tag must place 39 * this structure first in their private state block so that 40 * the predictor code can cast tif_data to find its state. 41 */ 42 typedef struct 43 { 44 int predictor; /* predictor tag value */ 45 tmsize_t stride; /* sample stride over data */ 46 tmsize_t rowsize; /* tile/strip row size */ 47 48 TIFFCodeMethod encoderow; /* parent codec encode/decode row */ 49 TIFFCodeMethod encodestrip; /* parent codec encode/decode strip */ 50 TIFFCodeMethod encodetile; /* parent codec encode/decode tile */ 51 TIFFEncodeDecodeMethod encodepfunc; /* horizontal differencer */ 52 53 TIFFCodeMethod decoderow; /* parent codec encode/decode row */ 54 TIFFCodeMethod decodestrip; /* parent codec encode/decode strip */ 55 TIFFCodeMethod decodetile; /* parent codec encode/decode tile */ 56 TIFFEncodeDecodeMethod decodepfunc; /* horizontal accumulator */ 57 58 TIFFVGetMethod vgetparent; /* super-class method */ 59 TIFFVSetMethod vsetparent; /* super-class method */ 60 TIFFPrintMethod printdir; /* super-class method */ 61 TIFFBoolMethod setupdecode; /* super-class method */ 62 TIFFBoolMethod setupencode; /* super-class method */ 63 } TIFFPredictorState; 64 65 #if defined(__cplusplus) 66 extern "C" 67 { 68 #endif 69 extern int TIFFPredictorInit(TIFF *); 70 extern int TIFFPredictorCleanup(TIFF *); 71 #if defined(__cplusplus) 72 } 73 #endif 74 #endif /* _TIFFPREDICT_ */ 75