123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434 |
- <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.remotesensing.org/libtiff">
- http://www.remotesensing.org/libtiff</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="#contrib">Changes in the contrib area</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 <a href=./man/raw2tiff.1.html>raw2tiff</a>
- for converting raw rasters into TIFF files.
- <li> Lots of new <a href=./man/tiff2ps.1.html>tiff2ps</a> options.
- <li> Lots of new <a href=./man/fax2tiff.1.html>fax2tiff</a> 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, config.site: Fix for large files (>2GiB) support. New
- option in the config.site: LARGEFILE="yes". Should be enougth for the large
- files I/O.
- <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> libtiff/tif_getimage.c: New function <A
- HREF="./man/TIFFReadRGBAImage.3t.html">TIFFReadRGBAImageOriented()</A>
- implemented to retrieve raster array with user-specified origin position.
- <li> libtiff/tif_fax3.c: Fix wrong line numbering.
- <li> libtiff/tif_dirread.c: Check field counter against number of fields.
- <li> Store a list of opened IFD to prevent directory looping.
- <li> libtiff/tif_jpeg.c: modified segment_height calculation to always
- be a full height tile for tiled images. Also changed error to just
- be a warning.
- <li> libtiff/tif_lzw.c: fixed so that decoder state isn't allocated till
- LZWSetupDecode(). Needed to read LZW files in "r+" mode.
-
- <li> libtiff/tif_dir.c: fixed up the tif_postdecode settings responsible
- for byte swapping complex image data.
-
- <li> libtiff/tif_open.c: Removed error if opening a compressed file
- in update mode bug (198).
- <li> libtiff/tif_write.c: TIFFWriteCheck() now fails if the image is
- a pre-existing compressed image. That is, image writing to pre-existing
- compressed images is not allowed.
- <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/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:
- <a href=./man/TIFFWriteDirectory.3t.html>TIFFCheckpointDirectory()</a>
- routine added as per bug 124. The
- <a href=./man/TIFFWriteDirectory.3t.html>TIFFWriteDirectory</a>
- man page discusses this new function as well as the related
- <a href=./man/TIFFWriteDirectory.3t.html>TIFFRewriteDirectory()</a>.
- <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
- <a href=./man/TIFFDataWidth.3t.html>TIFFDataWidth</a> for determining
- TIFFDataType sizes instead of working with tiffDataWidth array
- directly as per bug 109.
- <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> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Added page size setting
- when creating PS Level 2.
- <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Fixed PS comment emitted when
- FlateDecode is being used.
- <li> <a href=./man/tiffsplit.1.html>tiffsplit</a>: increased the maximum
- number of pages that can be split.
- <li> <a href=./man/raw2tiff.1.html>raw2tiff</a>: Added option `-p' to
- explicitly select color space of input image data.
- <li> <a href=./man/tiffmedian.1.html>tiffmedian</a>: Suppiort for large
- (> 2GB) images.
- <li> <a href=./man/ppm2tiff.1.html>ppm2tiff</a>: Fixed possible endless loop.
- <li> <a href=./man/tiff2rgba.1.html>tiff2rgba</a>: Switched to use
- <A HREF="./man/TIFFReadRGBAImage.3t.html">TIFFReadRGBAImageOriented()</A>
- instead of <A HREF="./man/TIFFReadRGBAImage.3t.html">TIFFReadRGBAImage()</A>.
- <li> <a href=./man/tiffcmp.1.html>tiffcmp</a>: Fixed problem with unused data
- comparing (bug 349). `-z' option now can be used to set the number of reported
- different bytes.
- <li> <a href=./man/tiffcp.1.html>tiffcp</a>: Added possibility to specify
- value -1 to -r option to get the entire image as one strip (bug 343).
- <li> <a href=./man/tiffcp.1.html>tiffcp</a>: Set the correct RowsPerStrip
- and PageNumber values (bug 343).
-
- <li> <a href=./man/fax2tiff.1.html>fax2tiff</a>: Page numbering fixed (bug
- 341).
- <li> <a href=./man/ppm2tiff.1.html>ppm2tiff</a>: PPM header parser improved:
- now able to skip comments.
- <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Force deadzone printing when
- EPS output specified (bug 325).
- <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Add ability to generate
- PS Level 3. It basically allows one to use the /flateDecode filter for ZIP
- compressed TIFF images. Patch supplied by Tom Kacvinsky (bug 328).
-
- <li> <a href=./man/tiffcp.1.html>tiffcp</a>: Fixed problem with colorspace
- conversion for JPEG encoded images (bugs 23 and 275)
- <li> <a href=./man/fax2tiff.1.html>fax2tiff</a>: Applied patch from
- Julien Gaulmin. More switches for fax2tiff tool for better control
- of input and output (bugs 272 and 293).
- <li> <a href=./man/raw2tiff.1.html>raw2tiff</a>:
- New utility for turning raw raster images into TIFF files
- written by Andrey Kiselev.
- <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>:
- 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.
- <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Don't emit BeginData/EndData
- DSC comments since we are unable to properly include the amount to skip
- as per bug 80.
- <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: 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> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Patch from John Williams to add new
- functionality for tiff2ps utility splitting long images in several pages as
- per bug 142. New switches:
- <ul>
- <li> <b>-H #</b>: split image if height is more than # inches
- <li> <b>-L #</b>: overLap split images by # inches
- </ul>
- <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: New commandline
- switches to override resolution units obtained from the input file per bug 131:
- <ul>
- <li> <b>-x</b>: override resolution units as centimeters
- <li> <b>-y</b>: override resolution units as inches
- </ul>
- <li> <a href=./man/fax2tiff.1.html>fax2tiff</a>: Updated to reflect
- latest changes in libtiff per bug 125.
- <li> tiff2ps: Division by zero fixed as per bug 88.
- <li> <a href=./man/tiffcp.1.html>tiffcp<a>:
- Added support for 'Orientation' tag.
- <li> <a href=./man/tiffdump.1.html>tiffdump</a>:
- include TIFFTAG_JPEGTABLES in tag list.
- <li> tiffset: 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 NAME="lzwkit"><B><FONT SIZE=+3>C</FONT>HANGES IN THE LZW COMPRESSION
- KIT:</B></A>
- <UL>
- <li> LZW compression kit synchronized with actual libtiff version.
- </UL>
- <A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
- <HR>
- Last updated $Date: 2003-10-04 11:38:17 $.
- </BODY>
- </HTML>
|