+
+
+TIFF CHANGE INFORMATION
+
+
+
+
+
+This document describes the changes made to the software between the
+previous and current 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:
+
+
+
+
+
+
+MAJOR CHANGES:
+
+
+ - New utility raw2tiff
+for converting raw rasters into TIFF files.
+
- Lots of new tiff2ps options.
+
- Lots of new fax2tiff options.
+
- Lots of bug fixes for LZW, JPEG and OJPEG compression.
+
+
+Custom Tag Support
+
+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.
+
+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.
+
+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!
+
+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".
+
+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.
+
+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.
+
+
+
+
+CHANGES IN THE SOFTWARE CONFIGURATION:
+
+
+- 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.
+
+
- configure: Set -DPIXARLOG_SUPPORT option along with -DZIP_SUPPORT.
+
+
- html/Makefile.in: Updated to use groffhtml for generating html pages
+from man pages.
+
+
- configure, libtiff/Makefile.in: Added SCO OpenServer 5.0.6 support
+from John H. DuBois III.
+
+
- libtiff/{Makefile.vc, libtiff.def}: Missed declarations added.
+
+
- libtiff/Makefile.in, tools/Makefile.in: Shared library will not be
+stripped when installing, utility binaries will do be stripped. As per bug 93.
+
+
- man/Makefile.in: Patch DESTDIR handling as per bug 95.
+
+
- configure: OpenBSD changes for Sparc64 and DSO version as per bug 96.
+
+
- config.site/configure: added support for OJPEG=yes option to enable
+OJPEG support from config.site.
+
+
- config.guess, config.sub: Updated from ftp.gnu.org/pub/config.
+
+
- configure: Modify CheckForBigEndian so it can work in a cross
+compiled situation.
+
+
- configure, libtiff/Makefile.in: Changes for building on MacOS 10.1
+as per bug 94.
+
+
- html/Makefile.in: added missing images per bug 92.
+
+
- port/Makefile.in: fixed clean target per bug 92.
+
+
+
+
+
+
+CHANGES IN LIBTIFF:
+
+
+
+- libtiff/tif_getimage.c: New function TIFFReadRGBAImageOriented()
+implemented to retrieve raster array with user-specified origin position.
+
+
- libtiff/tif_fax3.c: Fix wrong line numbering.
+
+
- libtiff/tif_dirread.c: Check field counter against number of fields.
+
+
- Store a list of opened IFD to prevent directory looping.
+
+
- 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.
+
+
- libtiff/tif_lzw.c: fixed so that decoder state isn't allocated till
+LZWSetupDecode(). Needed to read LZW files in "r+" mode.
+
+
- libtiff/tif_dir.c: fixed up the tif_postdecode settings responsible
+for byte swapping complex image data.
+
+
- libtiff/tif_open.c: Removed error if opening a compressed file
+in update mode bug (198).
+
+
- 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.
+
+
- html/man/*.html: Web pages regenerated from man pages.
+
+
- 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).
+
+
- libtiff/tiff.h: #ifdef USING_VISUALAGE around previous Visual Age
+AIX porting hack as it screwed up gcc. (bug 39)
+
+
- libtiff/tiff.h: added COMPRESSION_JP2000 (34712) for LEAD tools
+custom compression.
+
+
- libtiff/tif_dirread.c: Another fix for the fetching SBYTE arrays
+by the TIFFFetchByteArray() function. (bug 52)
+
+
- libtiff/tif_dirread.c: Expand v[2] to v[4] in TIFFFetchShortPair()
+as per bug 196.
+
+
- libtiff/tif_lzw.c: Additional consistency checking added in
+LZWDecode() and LZWDecodeCompat() fixing bugs 190 and 100.
+
+
- libtiff/tif_lzw.c: Added check for valid code lengths in LZWDecode()
+and LZWDecodeCompat(). Fixes bug 115.
+
+
- tif_getimage.c: Ensure that TIFFRGBAImageBegin() returns the
+return code from the underlying pick function as per bug 177.
+
+
- 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.
+
+
- libtiff/tif_jpeg.c: Fixed problem with setting of nrows in
+JPEGDecode() as per bug 129.
+
+
- 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.
+
+
- libtiff/tif_ojpeg.c: Major upgrade from Scott. Details in bug 156.
+
+
- libtiff/tif_open.c: Pointers to custom procedures
+in TIFFClientOpen() are checked to be not NULL-pointers.
+
+
- 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.
+
+
- libtiff/: tif_dirwrite.c, tif_write.c, tiffio.h:
+TIFFCheckpointDirectory()
+routine added as per bug 124. The
+TIFFWriteDirectory
+man page discusses this new function as well as the related
+TIFFRewriteDirectory().
+
+
- 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.
+
+
- tif_dirread.c: avoid div-by-zero if rowbytes is zero in chop func as
+per bug 111.
+
+
- 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).
+
+
- 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.
+
+
- libtiff/: tif_dir.c, tif_dir.h, tif_dirinfo.c, tif_dirread.c,
+tif_dirwrite.c: Added routine
+TIFFDataWidth for determining
+TIFFDataType sizes instead of working with tiffDataWidth array
+directly as per bug 109.
+
+
- 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.
+
+
- libtiff/{tiff.h,tif_fax3.c}: Add support for __arch64__ as per bug 94.
+
+
- libtiff/tif_read.c: Fixed TIFFReadEncodedStrip() to fail if the
+decodestrip function returns anything not greater than zero as per bug 97.
+
+
- 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.
+
+
- 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.
+
+
- libtiff/tif_jpeg.c: allow jpeg data stream sampling values to
+override those from tiff directory. This makes this work with
+ImageGear generated files.
+
+
+
+
+
+
+
+CHANGES IN THE TOOLS:
+
+
+
+- tiff2ps: Added page size setting
+when creating PS Level 2.
+
+
- tiff2ps: Fixed PS comment emitted when
+FlateDecode is being used.
+
+
- tiffsplit: increased the maximum
+number of pages that can be split.
+
+
- raw2tiff: Added option `-p' to
+explicitly select color space of input image data.
+
+
- tiffmedian: Suppiort for large
+(> 2GB) images.
+
+
- ppm2tiff: Fixed possible endless loop.
+
+
- tiff2rgba: Switched to use
+TIFFReadRGBAImageOriented()
+instead of TIFFReadRGBAImage().
+
+
- tiffcmp: Fixed problem with unused data
+comparing (bug 349). `-z' option now can be used to set the number of reported
+different bytes.
+
+
- tiffcp: Added possibility to specify
+value -1 to -r option to get the entire image as one strip (bug 343).
+
+
- tiffcp: Set the correct RowsPerStrip
+and PageNumber values (bug 343).
+
+
- fax2tiff: Page numbering fixed (bug
+341).
+
+
- ppm2tiff: PPM header parser improved:
+now able to skip comments.
+
+
- tiff2ps: Force deadzone printing when
+EPS output specified (bug 325).
+
+
- tiff2ps: 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).
+
+
- tiffcp: Fixed problem with colorspace
+conversion for JPEG encoded images (bugs 23 and 275)
+
+
- fax2tiff: Applied patch from
+Julien Gaulmin. More switches for fax2tiff tool for better control
+of input and output (bugs 272 and 293).
+
+
- raw2tiff:
+New utility for turning raw raster images into TIFF files
+written by Andrey Kiselev.
+
+
- tiff2ps:
+Sebastian Eken provided patches (bug 200) to add new these new
+switches:
+
+ - -b #: for a bottom margin of # inches
+
- -c: center image
+
- -l #: for a left margin of # inches
+
- -r: rotate the image by 180 degrees
+
+
+Also, new features merged with code for shrinking/overlapping.
+
+ - tiff2ps: Don't emit BeginData/EndData
+DSC comments since we are unable to properly include the amount to skip
+as per bug 80.
+
+
- tiff2ps: 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.
+
+
- tiff2ps: Patch from John Williams to add new
+functionality for tiff2ps utility splitting long images in several pages as
+per bug 142. New switches:
+
+ - -H #: split image if height is more than # inches
+
- -L #: overLap split images by # inches
+
+
+ - tiff2ps: New commandline
+switches to override resolution units obtained from the input file per bug 131:
+
+ - -x: override resolution units as centimeters
+
- -y: override resolution units as inches
+
+
+ - fax2tiff: Updated to reflect
+latest changes in libtiff per bug 125.
+
+
- tiff2ps: Division by zero fixed as per bug 88.
+
+
- tiffcp:
+Added support for 'Orientation' tag.
+
+
- tiffdump:
+include TIFFTAG_JPEGTABLES in tag list.
+
+
- tiffset: fix bug in error reporting.
+
+
+
+
+
+
+
+CHANGES IN THE CONTRIB AREA:
+
+
+- Fixed distribution to include contrib/addtiffo/tif_ovrcache.{c,h}.
+
- 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.
+
+
+
+
+
+CHANGES IN THE LZW COMPRESSION
+KIT:
+
+
+- LZW compression kit synchronized with actual libtiff version.
+
+
+
+
TIFF home page.
+
+
+
+Last updated $Date: 2003/10/04 11:38:17 $.
+
+
+