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