]> git.saurik.com Git - wxWidgets.git/blobdiff - src/tiff/tif_compress.c
Backed-out PNG8 patch (no time to look at why
[wxWidgets.git] / src / tiff / tif_compress.c
index 97a08c20797043bee89f617d6e18ce1489a4424a..dbc73c6f50368c486402281bf33db9237281ff15 100644 (file)
@@ -4,23 +4,23 @@
  * Copyright (c) 1988-1997 Sam Leffler
  * Copyright (c) 1991-1997 Silicon Graphics, Inc.
  *
- * Permission to use, copy, modify, distribute, and sell this software and
+ * Permission to use, copy, modify, distribute, and sell this software and 
  * its documentation for any purpose is hereby granted without fee, provided
  * that (i) the above copyright notices and this permission notice appear in
  * all copies of the software and related documentation, and (ii) the names of
  * Sam Leffler and Silicon Graphics may not be used in any advertising or
  * publicity relating to the software without the specific, prior written
  * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
+ * 
+ * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
+ * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
+ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
+ * 
  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+ * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
+ * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
  * OF THIS SOFTWARE.
  */
 
@@ -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);
 }
 
@@ -122,14 +130,16 @@ _TIFFNoPreCode(TIFF* tif, tsample_t s)
 static int _TIFFtrue(TIFF* tif) { (void) tif; return (1); }
 static void _TIFFvoid(TIFF* tif) { (void) tif; }
 
-void LINKAGEMODE
+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);
 }