/* $Id: tif_predict.h,v 1.9 2016-10-31 17:24:26 erouault Exp $ */12/*3* Copyright (c) 1995-1997 Sam Leffler4* Copyright (c) 1995-1997 Silicon Graphics, Inc.5*6* Permission to use, copy, modify, distribute, and sell this software and7* its documentation for any purpose is hereby granted without fee, provided8* that (i) the above copyright notices and this permission notice appear in9* all copies of the software and related documentation, and (ii) the names of10* Sam Leffler and Silicon Graphics may not be used in any advertising or11* publicity relating to the software without the specific, prior written12* permission of Sam Leffler and Silicon Graphics.13*14* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,15* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY16* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.17*18* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR19* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,20* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,21* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF22* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE23* OF THIS SOFTWARE.24*/2526#ifndef _TIFFPREDICT_27#define _TIFFPREDICT_28/*29* ``Library-private'' Support for the Predictor Tag30*/3132typedef int (*TIFFEncodeDecodeMethod)(TIFF* tif, uint8* buf, tmsize_t size);3334/*35* Codecs that want to support the Predictor tag must place36* this structure first in their private state block so that37* the predictor code can cast tif_data to find its state.38*/39typedef struct {40int predictor; /* predictor tag value */41tmsize_t stride; /* sample stride over data */42tmsize_t rowsize; /* tile/strip row size */4344TIFFCodeMethod encoderow; /* parent codec encode/decode row */45TIFFCodeMethod encodestrip; /* parent codec encode/decode strip */46TIFFCodeMethod encodetile; /* parent codec encode/decode tile */47TIFFEncodeDecodeMethod encodepfunc; /* horizontal differencer */4849TIFFCodeMethod decoderow; /* parent codec encode/decode row */50TIFFCodeMethod decodestrip; /* parent codec encode/decode strip */51TIFFCodeMethod decodetile; /* parent codec encode/decode tile */52TIFFEncodeDecodeMethod decodepfunc; /* horizontal accumulator */5354TIFFVGetMethod vgetparent; /* super-class method */55TIFFVSetMethod vsetparent; /* super-class method */56TIFFPrintMethod printdir; /* super-class method */57TIFFBoolMethod setupdecode; /* super-class method */58TIFFBoolMethod setupencode; /* super-class method */59} TIFFPredictorState;6061#if defined(__cplusplus)62extern "C" {63#endif64extern int TIFFPredictorInit(TIFF*);65extern int TIFFPredictorCleanup(TIFF*);66#if defined(__cplusplus)67}68#endif69#endif /* _TIFFPREDICT_ */7071/* vim: set ts=8 sts=8 sw=8 noet: */72/*73* Local Variables:74* mode: c75* c-basic-offset: 876* fill-column: 7877* End:78*/798081