$Header: /usr/people/sam/tiff/RCS/CHANGES-v2.5,v 1.3 92/02/10 15:02:27 sam Exp $

TIFF Software "Release" 2.5 BETA+ (changes since 2.4.2 release)
--------------------------------------------------------------
Changes in libtiff:
    o the mkg3states program has been made more portable
    o global library data structures can now be compiled as const
      (this is important for building shared libraries)
    o the file machdep.h is no longer needed and has been purged
    o the format of the include file generated by mkg3states
      has been altered so that applications can access the
      Group 3 and Group 4 compression machinery more easily
      (see tools/fax2tiff and contrib/fax2ps for examples)
    o a new -c option has been added to mkg3states to generate
      const data structures
    o the function prototyping macros now fail at compile time
      if the library is configured to not use prototypes and
      not use varargs
    o two new functions, TIFFGetFieldDefaulted and TIFFVGetFieldDefaulted,
      for getting either a tag's value or a default value
      (if one exists) have been added
    o a new function TIFFReadRGBAImage has been added to read
      an entire image into memory and return it in a common
      format (packed into 32-bit pixels)
    o function prototype inconsistencies for TIFFMapFileContents
      and TIFFUnmapFileContents have been fixed
    o the directory handling code has been broken up into
      4 separate files:
	tif_dir.c	routines for getting & setting tag values
	tif_dirinfo.c	information about known tags
	tif_dirread.c	directory reading support
	tif_dirwrite.c	directory writing support
    o the directory handling code has been substantially reworked
      to eliminate many special cases and add more general reading
      and writing support routines; this is mainly for supporting
      the 6.0 tags
    o the code that deduces a value for StripByteCounts when the
      tag is not present has been improved slightly
    o the directory reading code is now more careful about checking
      count fields and tag definitions (when known)
    o support has been added for the color information tags that are
      to appear in TIFF 6.0: WhitePoint, PrimaryChromaticities,
      ReferenceBlackWhite, and TransferFunction
    o support has been added for the JPEG tags that are to appear
      in TIFF 6.0 (but still no compression/decompression code yet):
      JPEGProc, JPEGRestartInterval, JPEGQTables, JPEGACTables,
      JPEGDCTables
    o support has been added for the CMYK tags that are to appear
      in TIFF 6.0: InkSet, InkNames, DotRange, TargetPrinter
    o support has been added for the YCbCr tags that are to appear
      in TIFF 6.0: YCbCrCoefficients, YCbCrSubsampling, YCbCrPositioning
    o the reading and writing of packed sampled YCbCr data by strip
      or tile works correctly (i.e. buffer sizes are calculated
      according to the sampling factors and the Y...YCbCr packing)
    o it is no longer necessary to call TIFFFlushData before a
      call to TIFFWriteDirectory; this is now handled automatically;
      old code that did this will still work as the library is
      now more intelligent about doing end-of-strip work only once
      per strip
    o the values for certain tags are now checked when the tag's
      value is set; e.g. FillOrder may only be FILLORDER_LSB2MSB
      or FILLORDER_MSB2LSB
    o old tags obsoleted by changes in TIFF 6.0 have been removed:
      ColorResponseUnit, ColorResponseCurves, GrayResponseUnit,
      GrayResponseCurve
    o a bug whereby the library could leak memory if directories
      were read in a non-sequential order has been fixed
    o a bug in the Group 3 2D/Group 4 decoding+encoding routines
      whereby the reference scanline was not reset to white at the
      start of each strip after the first has been fixed
    o bugs in the Group 3 2D/Group 4 decoding routine logic for
      several (slightly obscure) cases were fixed
    o a bug in the LZW encoding routine that could result in invalid
      codes being generated was fixed (this only happened in a
      low probability situation where the encoding process was
      considered "poor" and the library attempted to reset its
      encoding state to improve the compression performance)
    o a new routine, TIFFCurrentDirectory has been added; it
      returns the index of the current directory -- suitable for
      passing to TIFFSetDirectory
    o TIFFPrintDirectory has been updated to reflect the changes
      in the tags supported by the library
    o an obscure case in TIFFReadEncodedStrip where an error could
      occur without a diagnostic has been corrected
    o the private Picio and SGI RLE compression codes have been deleted
      (along with the associated code)
    o the JPEG compression code has been renumbered to reflect the
      value that it will have in TIFF 6.0
    o support has been added for the the HalftoneHints tag that
      is to appear in TIFF 6.0
    o support has been added for using the library under VMS
    o the bit reversal routine TIFFReverseBits has been made faster
    o a bug in the TIFFWriteTile routine where the tile size might
      be used before it's calculated has been fixed
    o some portability problems with 16-bit machines such as the
      Macintosh have been fixed

(Note, since the 2.5 BETA version the following user-visible
 modifications have been made:
    o the ReferenceBlackWhite tag changed from LONG to RATIONAL
      with a corresponding change in the parameters to TIFFGetField
      and TIFFSetField
    o the SGI-specific Matteing tag has been replaced by the new
      ExtraSamples tag; the library will accept the Matteing tag,
      but only generate the ExtraSamples tag
    o several bugs in the handling of the JPEG tags have been fixed
    o a bug in the Group 3 2D and Group 4 decoding routines was fixed
    o Group 3 2d tag bits are no longer included in the EOL
      byte-aligning logic: that is, EOL codes are consistently aligned
      to byte boundaries and any 2d tag bits are placed in the byte
      that follows
    o the writing of the TileByteCounts and TileOffsets tags has been
      corrected
)

Changes in the tools:
    o a new tool for converting PBM+ files, ppm2tiff, has been added
    o a new tool for converting an RGB, grayscale, or bilevel image
      to a sampled YCbCr image, rgb2ycbcr, has been added
    o the fax2tiff utility has been rewritten to use the library
      decoding routines; because of this, it can now decode Group 4
      data as well as Group 3 data
    o all references to obsolete tags such as ColorResponseCurves
      were deleted
    o the picio2tiff utility was purged for lack of use
    o the pixargt utility was purged for lack of use
    o a bug in ras2tiff that caused the default value of RowsPerStrip
      to be large was fixed
    o tiffgt (SGI version) now continues in the face of decoding
      errors unless a -s flag is specified; support for displaying
      YCbCr data has been added; also, the -v (verbose)
      flag has been changed to alter the window title strip rather
      than print to the terminal; finally, a bug that caused certain
      kinds of images larger than the screen to not be displayed
      properly was fixed
    o the PostScript generated by tiff2ps has been changed
      slightly to conform to the latest Adobe document conventions
    o a bug in tiffcmp that caused it to dump core was fixed
    o tiffcp has been enhanced so that it can be used to generate a
      multipage file from multiple source files; also tiffcp now
      checks the colormap to see if it is an 8-bit colormap and,
      if so, coerces it to be 16-bit in the resultant file
    o tiffdump has been updated to reflect the new tags added to the
      library for TIFF 6.0
    o tiffdump is now more resilient in the face of bad tag types
      and read errors
    o tiffinfo has new -l and -m options to specify the FillOrder
      of the input file as LSB-to-MSB and MSB-to-LSB, respectively
    o tiffinfo now reads data by strip and tile (e.g. for the -D option)
    o tiffcmp can now compare 1, 2, and 4 bit data
    o a public domain version of getopt is now included with the tools
    o the tools have been ported to VMS

Changes in the documentation:
    o the section 3 manual pages have been renamed to reflect full
      function names and a Makefile now exists for creating links
      when multiple functions are described in a single manual page
      (NOTE that this means that many file names are now much longer
      than 14 characters.)
    o two new documents describe proposed additions for the TIFF 6.0
      spec for handling Associated Alpha data (what was previously
      done with the Matteing tag)

Changes in the contrib software:
    o a new program, fax2ps, was contributed by Sam Leffler; it
      converts bilevel TIFF images to a compressed PostScript
      that is typically much faster to print than the PostScript
      generated by tiff2ps
    o a vms area contains scripts and data files for building the
      library and tools under VMS
