LCOV - code coverage report
Current view: top level - frmts/gtiff/libtiff - tif_dumpmode.c (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 32 40 80.0 %
Date: 2024-11-21 22:18:42 Functions: 4 5 80.0 %

          Line data    Source code
       1             : /*
       2             :  * Copyright (c) 1988-1997 Sam Leffler
       3             :  * Copyright (c) 1991-1997 Silicon Graphics, Inc.
       4             :  *
       5             :  * Permission to use, copy, modify, distribute, and sell this software and
       6             :  * its documentation for any purpose is hereby granted without fee, provided
       7             :  * that (i) the above copyright notices and this permission notice appear in
       8             :  * all copies of the software and related documentation, and (ii) the names of
       9             :  * Sam Leffler and Silicon Graphics may not be used in any advertising or
      10             :  * publicity relating to the software without the specific, prior written
      11             :  * permission of Sam Leffler and Silicon Graphics.
      12             :  *
      13             :  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
      14             :  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
      15             :  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
      16             :  *
      17             :  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
      18             :  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
      19             :  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
      20             :  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
      21             :  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
      22             :  * OF THIS SOFTWARE.
      23             :  */
      24             : 
      25             : /*
      26             :  * TIFF Library.
      27             :  *
      28             :  * "Null" Compression Algorithm Support.
      29             :  */
      30             : #include "tiffiop.h"
      31             : 
      32       32177 : static int DumpFixupTags(TIFF *tif)
      33             : {
      34             :     (void)tif;
      35       32177 :     return (1);
      36             : }
      37             : 
      38             : /*
      39             :  * Encode a hunk of pixels.
      40             :  */
      41       20000 : static int DumpModeEncode(TIFF *tif, uint8_t *pp, tmsize_t cc, uint16_t s)
      42             : {
      43             :     (void)s;
      44       40000 :     while (cc > 0)
      45             :     {
      46             :         tmsize_t n;
      47             : 
      48       20000 :         n = cc;
      49       20000 :         if (tif->tif_rawcc + n > tif->tif_rawdatasize)
      50           0 :             n = tif->tif_rawdatasize - tif->tif_rawcc;
      51             : 
      52       20000 :         assert(n > 0);
      53             : 
      54             :         /*
      55             :          * Avoid copy if client has setup raw
      56             :          * data buffer to avoid extra copy.
      57             :          */
      58       20000 :         if (tif->tif_rawcp != pp)
      59       20000 :             _TIFFmemcpy(tif->tif_rawcp, pp, n);
      60       20000 :         tif->tif_rawcp += n;
      61       20000 :         tif->tif_rawcc += n;
      62       20000 :         pp += n;
      63       20000 :         cc -= n;
      64       20000 :         if (tif->tif_rawcc >= tif->tif_rawdatasize && !TIFFFlushData1(tif))
      65           0 :             return (0);
      66             :     }
      67       20000 :     return (1);
      68             : }
      69             : 
      70             : /*
      71             :  * Decode a hunk of pixels.
      72             :  */
      73        3549 : static int DumpModeDecode(TIFF *tif, uint8_t *buf, tmsize_t cc, uint16_t s)
      74             : {
      75             :     static const char module[] = "DumpModeDecode";
      76             :     (void)s;
      77        3549 :     if (tif->tif_rawcc < cc)
      78             :     {
      79           0 :         TIFFErrorExtR(tif, module,
      80             :                       "Not enough data for scanline %" PRIu32
      81             :                       ", expected a request for at most %" TIFF_SSIZE_FORMAT
      82             :                       " bytes, got a request for %" TIFF_SSIZE_FORMAT " bytes",
      83             :                       tif->tif_row, tif->tif_rawcc, cc);
      84           0 :         return (0);
      85             :     }
      86             :     /*
      87             :      * Avoid copy if client has setup raw
      88             :      * data buffer to avoid extra copy.
      89             :      */
      90        3549 :     if (tif->tif_rawcp != buf)
      91        3549 :         _TIFFmemcpy(buf, tif->tif_rawcp, cc);
      92        3549 :     tif->tif_rawcp += cc;
      93        3549 :     tif->tif_rawcc -= cc;
      94        3549 :     return (1);
      95             : }
      96             : 
      97             : /*
      98             :  * Seek forwards nrows in the current strip.
      99             :  */
     100           0 : static int DumpModeSeek(TIFF *tif, uint32_t nrows)
     101             : {
     102           0 :     tif->tif_rawcp += nrows * tif->tif_scanlinesize;
     103           0 :     tif->tif_rawcc -= nrows * tif->tif_scanlinesize;
     104           0 :     return (1);
     105             : }
     106             : 
     107             : /*
     108             :  * Initialize dump mode.
     109             :  */
     110      118787 : int TIFFInitDumpMode(TIFF *tif, int scheme)
     111             : {
     112             :     (void)scheme;
     113      118787 :     tif->tif_fixuptags = DumpFixupTags;
     114      118787 :     tif->tif_decoderow = DumpModeDecode;
     115      118787 :     tif->tif_decodestrip = DumpModeDecode;
     116      118787 :     tif->tif_decodetile = DumpModeDecode;
     117      118787 :     tif->tif_encoderow = DumpModeEncode;
     118      118787 :     tif->tif_encodestrip = DumpModeEncode;
     119      118787 :     tif->tif_encodetile = DumpModeEncode;
     120      118787 :     tif->tif_seek = DumpModeSeek;
     121      118787 :     return (1);
     122             : }

Generated by: LCOV version 1.14