BigTIFF upgrade in progress - widespread temp mess - does not compile now
This commit is contained in:
parent
ff1d8bf5c1
commit
8872f01002
@ -1,4 +1,4 @@
|
|||||||
/* $Id: tif_thunder.c,v 1.7 2007-03-31 01:41:11 joris Exp $ */
|
/* $Id: tif_thunder.c,v 1.8 2007-04-10 16:45:42 joris Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988-1997 Sam Leffler
|
* Copyright (c) 1988-1997 Sam Leffler
|
||||||
@ -60,19 +60,20 @@ static const int threebitdeltas[8] = { 0, 1, 2, 3, 0, -3, -2, -1 };
|
|||||||
if (npixels++ & 1) \
|
if (npixels++ & 1) \
|
||||||
*op++ |= lastpixel; \
|
*op++ |= lastpixel; \
|
||||||
else \
|
else \
|
||||||
op[0] = (tidataval_t) (lastpixel << 4); \
|
op[0] = (uint8) (lastpixel << 4); \
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
ThunderDecode(TIFF* tif, tidata_t op, tsize_t maxpixels)
|
ThunderDecode(TIFF* tif, uint8* op, tmsize_t maxpixels)
|
||||||
{
|
{
|
||||||
|
static const char module[] = "ThunderDecode";
|
||||||
register unsigned char *bp;
|
register unsigned char *bp;
|
||||||
register tsize_t cc;
|
register tmsize_t cc;
|
||||||
unsigned int lastpixel;
|
unsigned int lastpixel;
|
||||||
tsize_t npixels;
|
tmsize_t npixels;
|
||||||
|
|
||||||
bp = (unsigned char *)tif->tif_rawcp;
|
bp = (unsigned char *)tif->tif_rawcp;
|
||||||
cc = tif->tif_rawcc; ddd
|
cc = tif->tif_rawcc;
|
||||||
lastpixel = 0;
|
lastpixel = 0;
|
||||||
npixels = 0;
|
npixels = 0;
|
||||||
while (cc > 0 && npixels < maxpixels) {
|
while (cc > 0 && npixels < maxpixels) {
|
||||||
@ -93,7 +94,7 @@ ThunderDecode(TIFF* tif, tidata_t op, tsize_t maxpixels)
|
|||||||
npixels += n;
|
npixels += n;
|
||||||
if (npixels < maxpixels) {
|
if (npixels < maxpixels) {
|
||||||
for (; n > 0; n -= 2)
|
for (; n > 0; n -= 2)
|
||||||
*op++ = (tidataval_t) lastpixel;
|
*op++ = (uint8) lastpixel;
|
||||||
}
|
}
|
||||||
if (n == -1)
|
if (n == -1)
|
||||||
*--op &= 0xf0;
|
*--op &= 0xf0;
|
||||||
@ -118,29 +119,36 @@ ThunderDecode(TIFF* tif, tidata_t op, tsize_t maxpixels)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tif->tif_rawcp = (tidata_t) bp;
|
tif->tif_rawcp = (uint8*) bp;
|
||||||
tif->tif_rawcc = cc; ddd
|
tif->tif_rawcc = cc;
|
||||||
if (npixels != maxpixels) {
|
if (npixels != maxpixels) {
|
||||||
TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
|
TIFFErrorExt(tif->tif_clientdata, module,
|
||||||
"ThunderDecode: %s data at scanline %ld (%lu != %lu)",
|
"%s data at scanline %lud (%llu != %llu)",
|
||||||
npixels < maxpixels ? "Not enough" : "Too much",
|
npixels < maxpixels ? "Not enough" : "Too much",
|
||||||
(long) tif->tif_row, (long) npixels, (long) maxpixels);
|
(unsigned long) tif->tif_row, (unsigned long long) npixels,
|
||||||
|
(unsigned long long) maxpixels);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
ThunderDecodeRow(TIFF* tif, tidata_t buf, tsize_t occ, uint16 s)
|
ThunderDecodeRow(TIFF* tif, uint8* buf, tmsize_t occ, uint16 s)
|
||||||
{
|
{
|
||||||
tidata_t row = buf;
|
static const char module[] = "ThunderDecodeRow";
|
||||||
|
uint8* row = buf;
|
||||||
|
|
||||||
(void) s;
|
(void) s;
|
||||||
while ((long)occ > 0) {
|
if (occ % tif->tif_scanlinesize)
|
||||||
|
{
|
||||||
|
TIFFErrorExt(tif->tif_clientdata, module, "Fractional scanlines cannot be read");
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
while (occ > 0) {
|
||||||
if (!ThunderDecode(tif, row, tif->tif_dir.td_imagewidth))
|
if (!ThunderDecode(tif, row, tif->tif_dir.td_imagewidth))
|
||||||
return (0);
|
return (0);
|
||||||
occ -= tif->tif_scanlinesize; ddd
|
occ -= tif->tif_scanlinesize;
|
||||||
row += tif->tif_scanlinesize; ddd
|
row += tif->tif_scanlinesize;
|
||||||
}
|
}
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
@ -149,8 +157,8 @@ int
|
|||||||
TIFFInitThunderScan(TIFF* tif, int scheme)
|
TIFFInitThunderScan(TIFF* tif, int scheme)
|
||||||
{
|
{
|
||||||
(void) scheme;
|
(void) scheme;
|
||||||
tif->tif_decoderow = ThunderDecodeRow; ddd
|
tif->tif_decoderow = ThunderDecodeRow;
|
||||||
tif->tif_decodestrip = ThunderDecodeRow; ddd
|
tif->tif_decodestrip = ThunderDecodeRow;
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
#endif /* THUNDER_SUPPORT */
|
#endif /* THUNDER_SUPPORT */
|
||||||
|
Loading…
Reference in New Issue
Block a user