LCOV - code coverage report
Current view: directory - frmts/gtiff/libtiff - tif_codec.c (source / functions) Found Hit Coverage
Test: gdal_filtered.info Lines: 21 7 33.3 %
Date: 2011-12-18 Functions: 3 1 33.3 %

       1                 : /* $Id: tif_codec.c,v 1.15 2010-12-14 12:53:00 dron Exp $ */
       2                 : 
       3                 : /*
       4                 :  * Copyright (c) 1988-1997 Sam Leffler
       5                 :  * Copyright (c) 1991-1997 Silicon Graphics, Inc.
       6                 :  *
       7                 :  * Permission to use, copy, modify, distribute, and sell this software and 
       8                 :  * its documentation for any purpose is hereby granted without fee, provided
       9                 :  * that (i) the above copyright notices and this permission notice appear in
      10                 :  * all copies of the software and related documentation, and (ii) the names of
      11                 :  * Sam Leffler and Silicon Graphics may not be used in any advertising or
      12                 :  * publicity relating to the software without the specific, prior written
      13                 :  * permission of Sam Leffler and Silicon Graphics.
      14                 :  * 
      15                 :  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
      16                 :  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
      17                 :  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
      18                 :  * 
      19                 :  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
      20                 :  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
      21                 :  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
      22                 :  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
      23                 :  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
      24                 :  * OF THIS SOFTWARE.
      25                 :  */
      26                 : 
      27                 : /*
      28                 :  * TIFF Library
      29                 :  *
      30                 :  * Builtin Compression Scheme Configuration Support.
      31                 :  */
      32                 : #include "tiffiop.h"
      33                 : 
      34                 : static int NotConfigured(TIFF*, int);
      35                 : 
      36                 : #ifndef LZW_SUPPORT
      37                 : #define TIFFInitLZW NotConfigured
      38                 : #endif
      39                 : #ifndef PACKBITS_SUPPORT
      40                 : #define TIFFInitPackBits NotConfigured
      41                 : #endif
      42                 : #ifndef THUNDER_SUPPORT
      43                 : #define TIFFInitThunderScan NotConfigured
      44                 : #endif
      45                 : #ifndef NEXT_SUPPORT
      46                 : #define TIFFInitNeXT NotConfigured
      47                 : #endif
      48                 : #ifndef JPEG_SUPPORT
      49                 : #define TIFFInitJPEG NotConfigured
      50                 : #endif
      51                 : #ifndef OJPEG_SUPPORT
      52                 : #define TIFFInitOJPEG NotConfigured
      53                 : #endif
      54                 : #ifndef CCITT_SUPPORT
      55                 : #define TIFFInitCCITTRLE NotConfigured
      56                 : #define TIFFInitCCITTRLEW NotConfigured
      57                 : #define TIFFInitCCITTFax3 NotConfigured
      58                 : #define TIFFInitCCITTFax4 NotConfigured
      59                 : #endif
      60                 : #ifndef JBIG_SUPPORT
      61                 : #define TIFFInitJBIG NotConfigured
      62                 : #endif
      63                 : #ifndef ZIP_SUPPORT
      64                 : #define TIFFInitZIP NotConfigured
      65                 : #endif
      66                 : #ifndef PIXARLOG_SUPPORT
      67                 : #define TIFFInitPixarLog NotConfigured
      68                 : #endif
      69                 : #ifndef LOGLUV_SUPPORT
      70                 : #define TIFFInitSGILog NotConfigured
      71                 : #endif
      72                 : #ifndef LZMA_SUPPORT
      73                 : #define TIFFInitLZMA NotConfigured
      74                 : #endif
      75                 : 
      76                 : /*
      77                 :  * Compression schemes statically built into the library.
      78                 :  */
      79                 : #ifdef VMS
      80                 : const TIFFCodec _TIFFBuiltinCODECS[] = {
      81                 : #else
      82                 : TIFFCodec _TIFFBuiltinCODECS[] = {
      83                 : #endif
      84                 :     { "None",   COMPRESSION_NONE, TIFFInitDumpMode },
      85                 :     { "LZW",    COMPRESSION_LZW,  TIFFInitLZW },
      86                 :     { "PackBits", COMPRESSION_PACKBITS, TIFFInitPackBits },
      87                 :     { "ThunderScan",  COMPRESSION_THUNDERSCAN,TIFFInitThunderScan },
      88                 :     { "NeXT",   COMPRESSION_NEXT, TIFFInitNeXT },
      89                 :     { "JPEG",   COMPRESSION_JPEG, TIFFInitJPEG },
      90                 :     { "Old-style JPEG", COMPRESSION_OJPEG,  TIFFInitOJPEG },
      91                 :     { "CCITT RLE",  COMPRESSION_CCITTRLE, TIFFInitCCITTRLE },
      92                 :     { "CCITT RLE/W",  COMPRESSION_CCITTRLEW,  TIFFInitCCITTRLEW },
      93                 :     { "CCITT Group 3",  COMPRESSION_CCITTFAX3,  TIFFInitCCITTFax3 },
      94                 :     { "CCITT Group 4",  COMPRESSION_CCITTFAX4,  TIFFInitCCITTFax4 },
      95                 :     { "ISO JBIG", COMPRESSION_JBIG, TIFFInitJBIG },
      96                 :     { "Deflate",  COMPRESSION_DEFLATE,  TIFFInitZIP },
      97                 :     { "AdobeDeflate",   COMPRESSION_ADOBE_DEFLATE , TIFFInitZIP }, 
      98                 :     { "PixarLog", COMPRESSION_PIXARLOG, TIFFInitPixarLog },
      99                 :     { "SGILog",   COMPRESSION_SGILOG, TIFFInitSGILog },
     100                 :     { "SGILog24", COMPRESSION_SGILOG24, TIFFInitSGILog },
     101                 :     { "LZMA",   COMPRESSION_LZMA, TIFFInitLZMA },
     102                 :     { NULL,             0,                      NULL }
     103                 : };
     104                 : 
     105                 : static int
     106               0 : _notConfigured(TIFF* tif)
     107                 : {
     108               0 :   const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression);
     109                 :         char compression_code[20];
     110                 :         
     111               0 :         sprintf( compression_code, "%d", tif->tif_dir.td_compression );
     112               0 :   TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
     113                 :                      "%s compression support is not configured", 
     114                 :                      c ? c->name : compression_code );
     115               0 :   return (0);
     116                 : }
     117                 : 
     118                 : static int
     119               0 : NotConfigured(TIFF* tif, int scheme)
     120                 : {
     121                 :   (void) scheme;
     122                 : 
     123               0 :   tif->tif_fixuptags = _notConfigured;
     124               0 :   tif->tif_decodestatus = FALSE;
     125               0 :   tif->tif_setupdecode = _notConfigured;
     126               0 :   tif->tif_encodestatus = FALSE;
     127               0 :   tif->tif_setupencode = _notConfigured;
     128               0 :   return (1);
     129                 : }
     130                 : 
     131                 : /************************************************************************/
     132                 : /*                       TIFFIsCODECConfigured()                        */
     133                 : /************************************************************************/
     134                 : 
     135                 : /**
     136                 :  * Check whether we have working codec for the specific coding scheme.
     137                 :  *
     138                 :  * @return returns 1 if the codec is configured and working. Otherwise
     139                 :  * 0 will be returned.
     140                 :  */
     141                 : 
     142                 : int
     143           10133 : TIFFIsCODECConfigured(uint16 scheme)
     144                 : {
     145           10133 :   const TIFFCodec* codec = TIFFFindCODEC(scheme);
     146                 : 
     147           10133 :   if(codec == NULL) {
     148               0 :     return 0;
     149                 :   }
     150           10133 :   if(codec->init == NULL) {
     151               0 :     return 0;
     152                 :   }
     153           10133 :   if(codec->init != NotConfigured){
     154            9596 :     return 1;
     155                 :   }
     156             537 :   return 0;
     157                 : }
     158                 : 
     159                 : /*
     160                 :  * Local Variables:
     161                 :  * mode: c
     162                 :  * c-basic-offset: 8
     163                 :  * fill-column: 78
     164                 :  * End:
     165                 :  */

Generated by: LCOV version 1.7