#pragma warn -use static char *sccsid = "@(#)TIFF/tif_compress.c 1.15, Copyright (c) Sam Leffler, Dieter Linde, "__DATE__; #pragma warn .use /* * Copyright (c) 1988, 1990 by Sam Leffler, Oct 8 1990 * All rights reserved. * * This file is provided for unrestricted use provided that this legend is included on all tape media and as a part of the * software program in whole or part. Users may copy, modify or distribute this file at will. * * TIFF Library * * Compression Scheme Configuration Support. */ #include "tiffio.h" static struct cscheme { u_short scheme; int (*init)(TIFF *); } CompressionSchemes[] = { { COMPRESSION_NONE, TIFFInitDumpMode }, { COMPRESSION_LZW, TIFFInitLZW }, { COMPRESSION_PACKBITS, TIFFInitPackBits }, #ifdef PICIO_SUPPORT { COMPRESSION_PICIO, TIFFInitPicio }, #endif /* PICIO_SUPPORT */ #ifdef THUNDER_SUPPORT { COMPRESSION_THUNDERSCAN, TIFFInitThunderScan }, #endif /* THUNDER_SUPPORT */ #ifdef NEXT_SUPPORT { COMPRESSION_NEXT, TIFFInitNeXT }, #endif /* NEXT_SUPPORT */ #ifdef SGI_SUPPORT { COMPRESSION_SGIRLE, TIFFInitSGI }, #endif /* SGI_SUPPORT */ { COMPRESSION_CCITTRLE, TIFFInitCCITTRLE }, { COMPRESSION_CCITTRLEW, TIFFInitCCITTRLEW }, { COMPRESSION_CCITTFAX3, TIFFInitCCITTFax3 }, { COMPRESSION_CCITTFAX4, TIFFInitCCITTFax4 }, }; #define NSCHEMES (sizeof(CompressionSchemes) / sizeof(CompressionSchemes[0])) /**************************************************************************** * */ int TIFFSetCompressionScheme( TIFF *tif, u_short scheme ) { register struct cscheme *c; for (c = CompressionSchemes; c < &CompressionSchemes[NSCHEMES]; c++) if (c->scheme == scheme) { tif->tif_stripdecode = NULL; tif->tif_stripencode = NULL; tif->tif_encodestrip = NULL; tif->tif_close = NULL; tif->tif_seek = NULL; tif->tif_cleanup = NULL; tif->tif_flags &= ~TIFF_NOBITREV; tif->tif_options = 0; return((*c->init)(tif)); } TIFFError("TIFFSetCompressionScheme", "unknown data compression algorithm %u", tif->tif_name, scheme); return(0); }