new update from Scott
This commit is contained in:
parent
19ebdba611
commit
d3daae9697
@ -1552,6 +1552,18 @@ OJPEGVSetField(register TIFF *tif,ttag_t tag,va_list ap)
|
|||||||
|
|
||||||
switch (tag)
|
switch (tag)
|
||||||
{
|
{
|
||||||
|
# ifdef COLORIMETRY_SUPPORT
|
||||||
|
|
||||||
|
/* If a "ReferenceBlackWhite" TIFF tag appears in the file explicitly, undo
|
||||||
|
any modified default definition that we might have installed below, then
|
||||||
|
install the real one.
|
||||||
|
*/
|
||||||
|
case TIFFTAG_REFERENCEBLACKWHITE : if (td->td_refblackwhite)
|
||||||
|
{
|
||||||
|
_TIFFfree(td->td_refblackwhite);
|
||||||
|
td->td_refblackwhite = 0;
|
||||||
|
};
|
||||||
|
# endif /* COLORIMETRY_SUPPORT */
|
||||||
default : return
|
default : return
|
||||||
(*sp->vsetparent)(tif,tag,ap);
|
(*sp->vsetparent)(tif,tag,ap);
|
||||||
# ifdef COLORIMETRY_SUPPORT
|
# ifdef COLORIMETRY_SUPPORT
|
||||||
@ -1569,19 +1581,24 @@ OJPEGVSetField(register TIFF *tif,ttag_t tag,va_list ap)
|
|||||||
"PhotometricInterpretation" tag should always appear before an optional
|
"PhotometricInterpretation" tag should always appear before an optional
|
||||||
"ReferenceBlackWhite" tag. So, we slyly peek ahead when we discover the
|
"ReferenceBlackWhite" tag. So, we slyly peek ahead when we discover the
|
||||||
desired photometry, by installing modified black and white reference
|
desired photometry, by installing modified black and white reference
|
||||||
levels. We install a pointer to a statically-allocated array, which
|
levels.
|
||||||
lets it be overridden without "dangling" memory references, and which
|
|
||||||
should be reasonably safe since most client applications treat this data
|
|
||||||
as "read only".
|
|
||||||
*/
|
*/
|
||||||
case TIFFTAG_PHOTOMETRIC :
|
case TIFFTAG_PHOTOMETRIC :
|
||||||
if ( (v32 = (*sp->vsetparent)(tif,tag,ap))
|
if ( (v32 = (*sp->vsetparent)(tif,tag,ap))
|
||||||
&& td->td_photometric == PHOTOMETRIC_YCBCR )
|
&& td->td_photometric == PHOTOMETRIC_YCBCR
|
||||||
{
|
)
|
||||||
static float refbw[6]={0,255,128,255,128,255};
|
if (td->td_refblackwhite = _TIFFmalloc(6*sizeof(float)))
|
||||||
|
{ register long top = 1 << td->td_bitspersample;
|
||||||
|
|
||||||
td->td_refblackwhite = _TIFFmalloc(sizeof(float)*6);
|
td->td_refblackwhite[0] = 0;
|
||||||
_TIFFmemcpy( td->td_refblackwhite, refbw, sizeof(float)*6 );
|
td->td_refblackwhite[1] = td->td_refblackwhite[3] =
|
||||||
|
td->td_refblackwhite[5] = top - 1;
|
||||||
|
td->td_refblackwhite[2] = td->td_refblackwhite[4] = top >> 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TIFFError(tif->tif_name,"Cannot define default reference black and white levels");
|
||||||
|
v32 = 0;
|
||||||
};
|
};
|
||||||
return v32;
|
return v32;
|
||||||
# endif /* COLORIMETRY_SUPPORT */
|
# endif /* COLORIMETRY_SUPPORT */
|
||||||
|
Loading…
Reference in New Issue
Block a user