X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b47c832e5529dc6c632536b4665a005f0a85aec8..2b9a7d4cc2f5f55df3d83f7cf2160cf9a509a4f2:/src/tiff/tif_compress.c diff --git a/src/tiff/tif_compress.c b/src/tiff/tif_compress.c index 10e5e9ffe3..dbc73c6f50 100644 --- a/src/tiff/tif_compress.c +++ b/src/tiff/tif_compress.c @@ -36,13 +36,21 @@ TIFFNoEncode(TIFF* tif, char* method) { const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression); - if (c) - TIFFError(tif->tif_name, "%s %s encoding is not implemented", - c->name, method); - else + if (c) { + if (! strncmp(c->name, "LZW", 3) ){ + TIFFError(tif->tif_name, + "%s %s encoding is no longer implemented due to Unisys patent enforcement", + c->name, method); + } else { + TIFFError(tif->tif_name, "%s %s encoding is not implemented", + c->name, method); + } + } + else { TIFFError(tif->tif_name, - "Compression scheme %u %s encoding is not implemented", + "Compression scheme %u %s encoding is not implemented", tif->tif_dir.td_compression, method); + } return (-1); } @@ -125,11 +133,13 @@ static void _TIFFvoid(TIFF* tif) { (void) tif; } void _TIFFSetDefaultCompressionState(TIFF* tif) { + tif->tif_decodestatus = TRUE; tif->tif_setupdecode = _TIFFtrue; tif->tif_predecode = _TIFFNoPreCode; tif->tif_decoderow = _TIFFNoRowDecode; tif->tif_decodestrip = _TIFFNoStripDecode; tif->tif_decodetile = _TIFFNoTileDecode; + tif->tif_encodestatus = TRUE; tif->tif_setupencode = _TIFFtrue; tif->tif_preencode = _TIFFNoPreCode; tif->tif_postencode = _TIFFtrue; @@ -147,7 +157,7 @@ _TIFFSetDefaultCompressionState(TIFF* tif) int TIFFSetCompressionScheme(TIFF* tif, int scheme) { - const TIFFCodec *c = TIFFFindCODEC(scheme); + const TIFFCodec *c = TIFFFindCODEC((uint16) scheme); _TIFFSetDefaultCompressionState(tif); /* @@ -200,9 +210,11 @@ TIFFRegisterCODEC(uint16 scheme, const char* name, TIFFInitMethod init) cd->info->init = init; cd->next = registeredCODECS; registeredCODECS = cd; - } else + } else { TIFFError("TIFFRegisterCODEC", "No space to register compression scheme %s", name); + return NULL; + } return (cd->info); }