321 lines
13 KiB
HTML
321 lines
13 KiB
HTML
|
<HTML>
|
||
|
<HEAD>
|
||
|
<TITLE>
|
||
|
Changes in TIFF v3.6.0
|
||
|
</TITLE>
|
||
|
</HEAD>
|
||
|
|
||
|
<BODY BGCOLOR=white>
|
||
|
<FONT FACE="Helvetica, Arial, Sans">
|
||
|
<FONT FACE="Helvetica, Arial, Sans">
|
||
|
|
||
|
<BASEFONT SIZE=4>
|
||
|
<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
|
||
|
<BASEFONT SIZE=3>
|
||
|
|
||
|
<UL>
|
||
|
<HR SIZE=4 WIDTH=65% ALIGN=left>
|
||
|
<B>Current Version</B>: v3.6.0<BR>
|
||
|
<B>Previous Version</B>: <A HREF=v3.5.7.html>v3.5.7</a><BR>
|
||
|
<B>Master FTP Site</B>: <A HREF="ftp://ftp.remotesensing.org/pub/libtiff">ftp.remotesensing.org</a>, directory pub/libtiff</A><BR>
|
||
|
<B>Master HTTP Site</B>: <A HREF="http://www.libtiff.org/">http://www.libtiff.org</a>
|
||
|
<HR SIZE=4 WIDTH=65% ALIGN=left>
|
||
|
</UL>
|
||
|
|
||
|
<P>
|
||
|
This document describes the changes made to the software between the
|
||
|
<I>previous</I> and <I>current</I> versions (see above).
|
||
|
If you don't find something listed here, then it was not done in this
|
||
|
timeframe, or it was not considered important enough to be mentioned.
|
||
|
The following information is located here:
|
||
|
<UL>
|
||
|
<LI><A HREF="#hightlights">Major Changes</A>
|
||
|
<LI><A HREF="#configure">Changes in the software configuration</A>
|
||
|
<LI><A HREF="#libtiff">Changes in libtiff</A>
|
||
|
<LI><A HREF="#tools">Changes in the tools</A>
|
||
|
<LI><A HREF="#lzwkit">Changes in the LZW compression kit</A>
|
||
|
</UL>
|
||
|
<p>
|
||
|
<P><HR WIDTH=65% ALIGN=left>
|
||
|
|
||
|
<!--------------------------------------------------------------------------->
|
||
|
|
||
|
<A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A>
|
||
|
|
||
|
<ul>
|
||
|
<li> New utility <b>raw2tiff</b> for converting raw rasters into TIFF files.
|
||
|
<li> Lots of new <b>tiff2ps</b> options.
|
||
|
<li> Lots of bug fixes for LZW, JPEG and OJPEG compression.
|
||
|
</ul>
|
||
|
|
||
|
<h3>Custom Tag Support</h3>
|
||
|
|
||
|
The approach to extending libtiff with custom tags has changed radically.
|
||
|
Previously, all internally supported TIFF tags had a place in the
|
||
|
private TIFFDirectory structure within libtiff to hold the values (if read),
|
||
|
and a "field number" (ie. FIELD_SUBFILETYPE) used to identify that tag.
|
||
|
However, every time a new tag was added to the core, the size of the
|
||
|
TIFFDirectory structure would changing, breaking any dynamically linked
|
||
|
software that used the private data structures.<p>
|
||
|
|
||
|
Also, any tag not recognised
|
||
|
by libtiff would not be read and accessable to applications without some
|
||
|
fairly complicated work on the applications part to pre-register the tags
|
||
|
as exemplified by the support for "Geo"TIFF tags by libgeotiff layered on
|
||
|
libtiff. <p>
|
||
|
|
||
|
Amoung other things this approach required the extension code
|
||
|
to access the private libtiff structures ... which made the higher level
|
||
|
non-libtiff code be locked into a specific version of libtiff at compile time.
|
||
|
This caused no end of bug reports!<p>
|
||
|
|
||
|
The new approach is for libtiff to read all tags from TIFF files. Those that
|
||
|
aren't recognised as "core tags" (those having an associated FIELD_ value,
|
||
|
and place for storage in the TIFFDirectory structure) are now read into a
|
||
|
dynamic list of extra tags (td_customValues in TIFFDirectory). When a new
|
||
|
tag code is encountered for the first time in a given TIFF file, a new
|
||
|
anonymous tag definition is created for the tag in the tag definition list.
|
||
|
The type, and some other metadata is worked out from the instance encountered.
|
||
|
These fields are known as "custom tags". <p>
|
||
|
|
||
|
Custom tags can be set and fetched normally using TIFFSetField() and
|
||
|
TIFFGetField(), and appear pretty much like normal tags to application code.
|
||
|
However, they have no impact on internal libtiff processing (such as
|
||
|
compression). Some utilities, such as tiffcp will now copy these custom
|
||
|
tags to the new output files. <p>
|
||
|
|
||
|
As well as the internal work with custom tags, new C API entry points
|
||
|
were added so that extension libraries, such as libgeotiff, could
|
||
|
define new tags more easily without accessing internal data structures.
|
||
|
Because tag handling of extension tags is done via the "custom fields"
|
||
|
mechanism as well, the definition provided externally mostly serves to provide
|
||
|
a meaningful name for the tag.
|
||
|
|
||
|
The addition of "custom tags" and the altered approach to extending libtiff
|
||
|
with externally defined tags is the primary reason for the shift to the
|
||
|
3.6.x version number from 3.5.x.<p>
|
||
|
|
||
|
<P><HR WIDTH=65% ALIGN=left>
|
||
|
<!--------------------------------------------------------------------------->
|
||
|
|
||
|
<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
|
||
|
|
||
|
<UL>
|
||
|
<li> configure: Set -DPIXARLOG_SUPPORT option along with -DZIP_SUPPORT.
|
||
|
<li> html/Makefile.in: Updated to use groffhtml for generating html pages
|
||
|
from man pages.
|
||
|
<li> configure, libtiff/Makefile.in: Added SCO OpenServer 5.0.6 support
|
||
|
from John H. DuBois III.
|
||
|
<li> libtiff/{Makefile.vc, libtiff.def}: Missed declarations added.
|
||
|
|
||
|
<li> libtiff/Makefile.in, tools/Makefile.in: Shared library will not
|
||
|
be stripped when installing, utility binaries will do be stripped. As per bug
|
||
|
93.
|
||
|
<li> man/Makefile.in: Patch DESTDIR handling as per bug 95.
|
||
|
|
||
|
<li> configure: OpenBSD changes for Sparc64 and DSO version as per bug 96.
|
||
|
|
||
|
<li> config.site/configure: added support for OJPEG=yes option to enable
|
||
|
OJPEG support from config.site.
|
||
|
|
||
|
<li> config.guess, config.sub: Updated from ftp.gnu.org/pub/config.
|
||
|
|
||
|
<li> configure: Modify CheckForBigEndian so it can work in a cross
|
||
|
compiled situation.
|
||
|
|
||
|
<li> configure, libtiff/Makefile.in: Changes for building on MacOS 10.1
|
||
|
as per bug 94.
|
||
|
|
||
|
<li> html/Makefile.in: added missing images per bug 92.
|
||
|
|
||
|
<li> port/Makefile.in: fixed clean target per bug 92.
|
||
|
</UL>
|
||
|
|
||
|
<P><HR WIDTH=65% ALIGN=left>
|
||
|
|
||
|
<!--------------------------------------------------------------------------->
|
||
|
|
||
|
<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
|
||
|
|
||
|
|
||
|
<UL>
|
||
|
<li> html/man/*.html: Web pages regenerated from man pages.
|
||
|
<li> libtiff/tif_jpeg.c: Hack to ensure that "boolean" is defined properly
|
||
|
on Windows so as to avoid the structure size mismatch error from libjpeg
|
||
|
(bug 188).
|
||
|
<li> libtiff/tiff.h: #ifdef USING_VISUALAGE around previous Visual Age
|
||
|
AIX porting hack as it screwed up gcc. (bug 39)
|
||
|
<li> libtiff/tiff.h: added COMPRESSION_JP2000 (34712) for LEAD tools
|
||
|
custom compression.
|
||
|
<li> libtiff/tif_dirread.c: Another fix for the fetching SBYTE arrays
|
||
|
by the TIFFFetchByteArray() function. (bug 52)
|
||
|
<li> libtiff/{tiffio.h, tif_dir.h}: TIFFDataWidth() declaration moved to
|
||
|
the tiffio.h header file, added man page.
|
||
|
<li> libtiff/tif_dirread.c: Expand v[2] to v[4] in TIFFFetchShortPair()
|
||
|
as per bug 196.
|
||
|
<li> libtiff/tif_lzw.c: Additional consistency checking added in
|
||
|
LZWDecode() and LZWDecodeCompat() fixing bugs 190 and 100.
|
||
|
<li> libtiff/tif_lzw.c:
|
||
|
Added check for valid code lengths in LZWDecode() and
|
||
|
LZWDecodeCompat(). Fixes bug 115.
|
||
|
<li> tif_getimage.c: Ensure that TIFFRGBAImageBegin() returns the
|
||
|
return code from the underlying pick function as per bug 177.
|
||
|
|
||
|
<li> libtiff/{tif_jpeg.c,tif_strip.c,tif_print.c}: Hacked tif_jpeg.c to
|
||
|
fetch TIFFTAG_YCBCRSUBSAMPLING from the jpeg data stream if it isn't
|
||
|
present in the tiff tags as per bug 168.
|
||
|
|
||
|
<li> libtiff/tif_jpeg.c: Fixed problem with setting of nrows in
|
||
|
JPEGDecode() as per bug 129.
|
||
|
|
||
|
<li> libtiff/tif_read.c, libtiff/tif_write.c: TIFFReadScanline() and
|
||
|
TIFFWriteScanline() now set tif_row explicitly in case the codec has
|
||
|
fooled with the value as per bug 129.
|
||
|
|
||
|
<li> libtiff/tif_ojpeg.c: Major upgrade from Scott. Details in bug 156.
|
||
|
|
||
|
<li> libtiff/tif_open.c: Pointers to custom procedures
|
||
|
in TIFFClientOpen() are checked to be not NULL-pointers.
|
||
|
|
||
|
<li> libtiff/tif_lzw.c: Assertions in LZWDecode and LZWDecodeCompat
|
||
|
replaced by warnings. Now libtiff should read corrupted LZW-compressed
|
||
|
files by skipping bad strips as per bug 100.
|
||
|
|
||
|
<li> libtiff/: tif_dirwrite.c, tif_write.c, tiffio.h:
|
||
|
TIFFCheckpointDirectory() routine added as per bug 124. The TIFFWriteDirectory
|
||
|
man pages discusses this new function as well as the related
|
||
|
TIFFRewriteDirectory().
|
||
|
|
||
|
<li> libtiff/: tif_codec.c, tif_compress.c, tiffiop.h, tif_getimage.c:
|
||
|
Introduced
|
||
|
additional members tif->tif_decodestatus and tif->tif_encodestatus
|
||
|
for correct handling of unconfigured codecs (we should not try to read
|
||
|
data or to define data size without correct codecs). See bug 119.
|
||
|
|
||
|
<li> tif_dirread.c: avoid div-by-zero if rowbytes is zero in chop func as
|
||
|
per bug 111.
|
||
|
|
||
|
<li> libtiff/: tiff.h, tif_dir.c, tif_dir.h, tif_dirinfo.c, tif_dirread.c,
|
||
|
tif_dirwrite.c: Dwight Kelly added get/put code for new tag XMLPACKET as
|
||
|
defined in Adobe XMP Technote. Added missing INKSET tag value from TIFF 6.0
|
||
|
spec INKSET_MULTIINK (=2). Added missing tags from Adobe TIFF technotes:
|
||
|
CLIPPATH, XCLIPPATHUNITS, YCLIPPATHUNITS, OPIIMAGEID, OPIPROXY and
|
||
|
INDEXED. Added PHOTOMETRIC tag value from TIFF technote 4 ICCLAB (=9).
|
||
|
|
||
|
<li> libtiff/tif_getimage.c: Additional check for supported codecs added in
|
||
|
TIFFRGBAImageOK, TIFFReadRGBAImage, TIFFReadRGBAStrip and TIFFReadRGBATile now
|
||
|
use TIFFRGBAImageOK before reading a per bug 110.
|
||
|
|
||
|
<li> libtiff/: tif_dir.c, tif_dir.h, tif_dirinfo.c, tif_dirread.c,
|
||
|
tif_dirwrite.c: Added routine TIFFDataWidth for detrmining
|
||
|
TIFFDataType sizes instead of working with tiffDataWidth array
|
||
|
directly as per bug 109.
|
||
|
|
||
|
<li> libtiff/tif_getimage.c: Added support for correct handling
|
||
|
`Orientation' tag in gtTileContig as per bug 23. Should be added in other gt*
|
||
|
functions as well, but I have not images for testing yet.
|
||
|
|
||
|
<li>libtiff/: tif_dirinfo.c, tif_dirwrite.c: Added possibility to
|
||
|
read broken TIFFs with LONG type used for TIFFTAG_COMPRESSION,
|
||
|
TIFFTAG_BITSPERSAMPLE, TIFFTAG_PHOTOMETRIC as per bug 99.
|
||
|
|
||
|
<li> libtiff/{tiff.h,tif_fax3.c}: Add support for __arch64__ as per bug 94.
|
||
|
|
||
|
<li> libtiff/tif_read.c: Fixed TIFFReadEncodedStrip() to fail if the
|
||
|
decodestrip function returns anything not greater than zero as per bug 97.
|
||
|
|
||
|
<li> libtiff/tif_jpeg.c: fixed computation of segment_width for
|
||
|
tiles files to avoid error about it not matching the
|
||
|
cinfo.d.image_width values ("JPEGPreDecode: Improper JPEG strip/tile
|
||
|
size.") for ITIFF files. Apparently the problem was incorporated since
|
||
|
3.5.5, presumably during the OJPEG/JPEG work recently.
|
||
|
|
||
|
<li> libtiff/tif_getimage.c: If DEFAULT_EXTRASAMPLE_AS_ALPHA is 1
|
||
|
(defined in tiffconf.h - 1 by default) then the RGBA interface
|
||
|
will assume that a fourth extra sample is ASSOCALPHA if the
|
||
|
EXTRASAMPLE value isn't set for it. This changes the behaviour of
|
||
|
the library, but makes it work better with RGBA files produced by
|
||
|
lots of applications that don't mark the alpha values properly.
|
||
|
As per bugs 93 and 65.
|
||
|
|
||
|
<li> libtiff/tif_jpeg.c: allow jpeg data stream sampling values to
|
||
|
override those from tiff directory. This makes this work with
|
||
|
ImageGear generated files.
|
||
|
|
||
|
</UL>
|
||
|
|
||
|
<P><HR WIDTH=65% ALIGN=left>
|
||
|
|
||
|
<!-------------------------------------------------------------------------->
|
||
|
|
||
|
<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
|
||
|
|
||
|
<UL>
|
||
|
|
||
|
<li> raw2tiff.c: New utility for turning raw raster images into TIFF files
|
||
|
written by Andrey Kiselev.
|
||
|
|
||
|
<li> tiff2ps: Sebastian Eken provided patches (bug 200) to add new these new
|
||
|
switches:
|
||
|
<ul>
|
||
|
<li> <b>-b #</b>: for a bottom margin of # inches
|
||
|
<li> <b>-c</b>: center image
|
||
|
<li> <b>-l #</b>: for a left margin of # inches
|
||
|
<li> <b>-r</b>: rotate the image by 180 degrees
|
||
|
</ul>
|
||
|
|
||
|
Also, new features merged with code for shrinking/overlapping.
|
||
|
Previously added -c and -n switches (for overriding PS units) renamed
|
||
|
in -x and -y respectively.
|
||
|
|
||
|
<li> tools/tiff2ps.c: Don't emit BeginData/EndData DSC comments
|
||
|
since we are unable to properly include the amount to skip as per bug 80.
|
||
|
|
||
|
<li> tools/tiff2ps.c: Added workaround for some software that may crash
|
||
|
when last strip of image contains fewer number of scanlines than
|
||
|
specified by the `/Height' variable as per bug 164.
|
||
|
|
||
|
<li> tools/tiff2ps, man/tiff2ps.1: Patch from John Williams to add new
|
||
|
functionality for tiff2ps utility splitting long images in several pages as
|
||
|
per bug 142.
|
||
|
|
||
|
<li> tools/tiff2ps: New commandline switches to override resolution
|
||
|
units obtained from the input file per bug 131.
|
||
|
|
||
|
<li> tools/fax2tiff.c: Updated to reflect latest changes in libtiff per bug
|
||
|
125.
|
||
|
|
||
|
<li> tools/tiff2ps: Division by zero fixed as per bug 88.
|
||
|
|
||
|
<li> tools/: tifcp.c: Added support for 'Orientation' tag in tiffcp
|
||
|
utility (at cpStripToTile routine).
|
||
|
|
||
|
<li> tools/tiffdump.c: include TIFFTAG_JPEGTABLES in tag list.
|
||
|
|
||
|
<li> tools/tiffset.c: fix bug in error reporting.
|
||
|
|
||
|
</UL>
|
||
|
|
||
|
<P><HR WIDTH=65% ALIGN=left>
|
||
|
|
||
|
<!--------------------------------------------------------------------------->
|
||
|
|
||
|
<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A>
|
||
|
<UL>
|
||
|
|
||
|
<li> Fixed distribution to include contrib/addtiffo/tif_ovrcache.{c,h}.
|
||
|
<li> libtiff/contrib/win95: renamed to contrib/win_dib. Added new
|
||
|
Tiffile.cpp example of converting TIFF files into a DIB on Win32 as per
|
||
|
bug 143.
|
||
|
|
||
|
</UL>
|
||
|
|
||
|
<A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
|
||
|
|
||
|
<HR>
|
||
|
|
||
|
Last updated $Date: 2002-10-10 05:28:53 $.
|
||
|
|
||
|
</BODY>
|
||
|
</HTML>
|