| OLD | NEW |
| (Empty) |
| 1 /* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_dumpmode.c,v 1.14 2011-04-
02 20:54:09 bfriesen 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 * "Null" Compression Algorithm Support. | |
| 31 */ | |
| 32 #include "tiffiop.h" | |
| 33 | |
| 34 static int | |
| 35 DumpFixupTags(TIFF* tif) | |
| 36 { | |
| 37 (void) tif; | |
| 38 return (1); | |
| 39 } | |
| 40 | |
| 41 /* | |
| 42 * Encode a hunk of pixels. | |
| 43 */ | |
| 44 static int | |
| 45 DumpModeEncode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s) | |
| 46 { | |
| 47 (void) s; | |
| 48 while (cc > 0) { | |
| 49 tmsize_t n; | |
| 50 | |
| 51 n = cc; | |
| 52 if (tif->tif_rawcc + n > tif->tif_rawdatasize) | |
| 53 n = tif->tif_rawdatasize - tif->tif_rawcc; | |
| 54 | |
| 55 assert( n > 0 ); | |
| 56 | |
| 57 /* | |
| 58 * Avoid copy if client has setup raw | |
| 59 * data buffer to avoid extra copy. | |
| 60 */ | |
| 61 if (tif->tif_rawcp != pp) | |
| 62 _TIFFmemcpy(tif->tif_rawcp, pp, n); | |
| 63 tif->tif_rawcp += n; | |
| 64 tif->tif_rawcc += n; | |
| 65 pp += n; | |
| 66 cc -= n; | |
| 67 if (tif->tif_rawcc >= tif->tif_rawdatasize && | |
| 68 !TIFFFlushData1(tif)) | |
| 69 return (-1); | |
| 70 } | |
| 71 return (1); | |
| 72 } | |
| 73 | |
| 74 /* | |
| 75 * Decode a hunk of pixels. | |
| 76 */ | |
| 77 static int | |
| 78 DumpModeDecode(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s) | |
| 79 { | |
| 80 static const char module[] = "DumpModeDecode"; | |
| 81 (void) s; | |
| 82 if (tif->tif_rawcc < cc) { | |
| 83 #if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__)) | |
| 84 TIFFErrorExt(tif->tif_clientdata, module, | |
| 85 "Not enough data for scanline %lu, expected a request for at most %I64d bytes, g
ot a request for %I64d bytes", | |
| 86 (unsigned long) tif->tif_row, | |
| 87 (signed __int64) tif->tif_rawcc, | |
| 88 (signed __int64) cc); | |
| 89 #else | |
| 90 TIFFErrorExt(tif->tif_clientdata, module, | |
| 91 "Not enough data for scanline %lu, expected a request for at most %lld bytes, go
t a request for %lld bytes", | |
| 92 (unsigned long) tif->tif_row, | |
| 93 (signed long long) tif->tif_rawcc, | |
| 94 (signed long long) cc); | |
| 95 #endif | |
| 96 return (0); | |
| 97 } | |
| 98 /* | |
| 99 * Avoid copy if client has setup raw | |
| 100 * data buffer to avoid extra copy. | |
| 101 */ | |
| 102 if (tif->tif_rawcp != buf) | |
| 103 _TIFFmemcpy(buf, tif->tif_rawcp, cc); | |
| 104 tif->tif_rawcp += cc; | |
| 105 tif->tif_rawcc -= cc; | |
| 106 return (1); | |
| 107 } | |
| 108 | |
| 109 /* | |
| 110 * Seek forwards nrows in the current strip. | |
| 111 */ | |
| 112 static int | |
| 113 DumpModeSeek(TIFF* tif, uint32 nrows) | |
| 114 { | |
| 115 tif->tif_rawcp += nrows * tif->tif_scanlinesize; | |
| 116 tif->tif_rawcc -= nrows * tif->tif_scanlinesize; | |
| 117 return (1); | |
| 118 } | |
| 119 | |
| 120 /* | |
| 121 * Initialize dump mode. | |
| 122 */ | |
| 123 int | |
| 124 TIFFInitDumpMode(TIFF* tif, int scheme) | |
| 125 { | |
| 126 (void) scheme; | |
| 127 tif->tif_fixuptags = DumpFixupTags; | |
| 128 tif->tif_decoderow = DumpModeDecode; | |
| 129 tif->tif_decodestrip = DumpModeDecode; | |
| 130 tif->tif_decodetile = DumpModeDecode; | |
| 131 tif->tif_encoderow = DumpModeEncode; | |
| 132 tif->tif_encodestrip = DumpModeEncode; | |
| 133 tif->tif_encodetile = DumpModeEncode; | |
| 134 tif->tif_seek = DumpModeSeek; | |
| 135 return (1); | |
| 136 } | |
| 137 /* | |
| 138 * Local Variables: | |
| 139 * mode: c | |
| 140 * c-basic-offset: 8 | |
| 141 * fill-column: 78 | |
| 142 * End: | |
| 143 */ | |
| 144 | |
| OLD | NEW |