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* 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 int predictor; /* predictor tag value */ 44 tmsize_t stride; /* sample stride over data */ 45 tmsize_t rowsize; /* tile/strip row size */ 46 47 TIFFCodeMethod encoderow; /* parent codec encode/decode row */ 48 TIFFCodeMethod encodestrip; /* parent codec encode/decode strip */ 49 TIFFCodeMethod encodetile; /* parent codec encode/decode tile */ 50 TIFFEncodeDecodeMethod encodepfunc; /* horizontal differencer */ 51 52 TIFFCodeMethod decoderow; /* parent codec encode/decode row */ 53 TIFFCodeMethod decodestrip; /* parent codec encode/decode strip */ 54 TIFFCodeMethod decodetile; /* parent codec encode/decode tile */ 55 TIFFEncodeDecodeMethod decodepfunc; /* horizontal accumulator */ 56 57 TIFFVGetMethod vgetparent; /* super-class method */ 58 TIFFVSetMethod vsetparent; /* super-class method */ 59 TIFFPrintMethod printdir; /* super-class method */ 60 TIFFBoolMethod setupdecode; /* super-class method */ 61 TIFFBoolMethod setupencode; /* super-class method */ 62 } TIFFPredictorState; 63 64 #if defined(__cplusplus) 65 extern "C" { 66 #endif 67 extern int TIFFPredictorInit(TIFF*); 68 extern int TIFFPredictorCleanup(TIFF*); 69 #if defined(__cplusplus) 70 } 71 #endif 72 #endif /* _TIFFPREDICT_ */ 73 74 /* vim: set ts=8 sts=8 sw=8 noet: */ 75 /* 76 * Local Variables: 77 * mode: c 78 * c-basic-offset: 8 79 * fill-column: 78 80 * End: 81 */ 82