ReactOS 0.4.15-dev-8127-g6338913
tif_dumpmode.c
Go to the documentation of this file.
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
31#include <precomp.h>
32
33static int
35{
36 (void) tif;
37 return (1);
38}
39
40/*
41 * Encode a hunk of pixels.
42 */
43static int
45{
46 (void) s;
47 while (cc > 0) {
48 tmsize_t n;
49
50 n = cc;
51 if (tif->tif_rawcc + n > tif->tif_rawdatasize)
52 n = tif->tif_rawdatasize - tif->tif_rawcc;
53
54 assert( n > 0 );
55
56 /*
57 * Avoid copy if client has setup raw
58 * data buffer to avoid extra copy.
59 */
60 if (tif->tif_rawcp != pp)
61 _TIFFmemcpy(tif->tif_rawcp, pp, n);
62 tif->tif_rawcp += n;
63 tif->tif_rawcc += n;
64 pp += n;
65 cc -= n;
66 if (tif->tif_rawcc >= tif->tif_rawdatasize &&
67 !TIFFFlushData1(tif))
68 return (0);
69 }
70 return (1);
71}
72
73/*
74 * Decode a hunk of pixels.
75 */
76static int
78{
79 static const char module[] = "DumpModeDecode";
80 (void) s;
81 if (tif->tif_rawcc < cc) {
82#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
84"Not enough data for scanline %lu, expected a request for at most %I64d bytes, got a request for %I64d bytes",
85 (unsigned long) tif->tif_row,
86 (signed __int64) tif->tif_rawcc,
87 (signed __int64) cc);
88#else
90"Not enough data for scanline %lu, expected a request for at most %lld bytes, got a request for %lld bytes",
91 (unsigned long) tif->tif_row,
92 (signed long long) tif->tif_rawcc,
93 (signed long long) cc);
94#endif
95 return (0);
96 }
97 /*
98 * Avoid copy if client has setup raw
99 * data buffer to avoid extra copy.
100 */
101 if (tif->tif_rawcp != buf)
102 _TIFFmemcpy(buf, tif->tif_rawcp, cc);
103 tif->tif_rawcp += cc;
104 tif->tif_rawcc -= cc;
105 return (1);
106}
107
108/*
109 * Seek forwards nrows in the current strip.
110 */
111static int
113{
114 tif->tif_rawcp += nrows * tif->tif_scanlinesize;
115 tif->tif_rawcc -= nrows * tif->tif_scanlinesize;
116 return (1);
117}
118
119/*
120 * Initialize dump mode.
121 */
122int
124{
125 (void) scheme;
133 tif->tif_seek = DumpModeSeek;
134 return (1);
135}
136/*
137 * Local Variables:
138 * mode: c
139 * c-basic-offset: 8
140 * fill-column: 78
141 * End:
142 */
unsigned short uint16
Definition: types.h:30
unsigned int uint32
Definition: types.h:32
unsigned char uint8
Definition: types.h:28
#define __int64
Definition: basetyps.h:16
#define assert(x)
Definition: debug.h:53
GLdouble s
Definition: gl.h:2039
GLdouble n
Definition: glext.h:7729
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
uint32_t cc
Definition: isohybrid.c:75
DWORD scheme
Definition: tiffiop.h:115
TIFFCodeMethod tif_encodestrip
Definition: tiffiop.h:183
TIFFSeekMethod tif_seek
Definition: tiffiop.h:187
TIFFCodeMethod tif_encodetile
Definition: tiffiop.h:185
tmsize_t tif_scanlinesize
Definition: tiffiop.h:193
TIFFBoolMethod tif_fixuptags
Definition: tiffiop.h:173
tmsize_t tif_rawcc
Definition: tiffiop.h:200
TIFFCodeMethod tif_decodestrip
Definition: tiffiop.h:182
thandle_t tif_clientdata
Definition: tiffiop.h:207
TIFFCodeMethod tif_decoderow
Definition: tiffiop.h:180
TIFFCodeMethod tif_encoderow
Definition: tiffiop.h:181
uint32 tif_row
Definition: tiffiop.h:159
tmsize_t tif_rawdatasize
Definition: tiffiop.h:196
uint8 * tif_rawcp
Definition: tiffiop.h:199
TIFFCodeMethod tif_decodetile
Definition: tiffiop.h:184
int TIFFInitDumpMode(TIFF *tif, int scheme)
Definition: tif_dumpmode.c:123
static int DumpModeSeek(TIFF *tif, uint32 nrows)
Definition: tif_dumpmode.c:112
static int DumpModeDecode(TIFF *tif, uint8 *buf, tmsize_t cc, uint16 s)
Definition: tif_dumpmode.c:77
static int DumpFixupTags(TIFF *tif)
Definition: tif_dumpmode.c:34
static int DumpModeEncode(TIFF *tif, uint8 *pp, tmsize_t cc, uint16 s)
Definition: tif_dumpmode.c:44
void TIFFErrorExt(thandle_t fd, const char *module, const char *fmt,...)
Definition: tif_error.c:65
void _TIFFmemcpy(void *d, const void *s, tmsize_t c)
Definition: tif_unix.c:344
int TIFFFlushData1(TIFF *tif)
Definition: tif_write.c:803
TIFF_SSIZE_T tmsize_t
Definition: tiffio.h:65