1$Header: /usr/people/sam/tiff/RCS/CHANGES-v3.0,v 1.5 1992/03/31 11:31:03 sam Exp $
2
3TIFF Software "Release" 3.00 (changes since 2.4.2 release)
4----------------------------------------------------------
5Changes in libtiff:
6    o the mkg3states program has been made more portable
7    o global library data structures can now be compiled as const
8      (this is important for building shared libraries)
9    o the file machdep.h is no longer needed and has been purged
10    o the format of the include file generated by mkg3states
11      has been altered so that applications can access the
12      Group 3 and Group 4 compression machinery more easily
13      (see tools/fax2tiff and contrib/fax2ps for examples)
14    o a new -c option has been added to mkg3states to generate
15      const data structures
16    o the function prototyping macros now fail at compile time
17      if the library is configured to not use prototypes and
18      not use varargs
19    o two new functions, TIFFGetFieldDefaulted and TIFFVGetFieldDefaulted,
20      for getting either a tag's value or a default value
21      (if one exists) have been added
22    o a new function TIFFReadRGBAImage has been added to read
23      an entire image into memory and return it in a common
24      format (packed into 32-bit pixels)
25    o function prototype inconsistencies for TIFFMapFileContents
26      and TIFFUnmapFileContents have been fixed
27    o the directory handling code has been broken up into
28      4 separate files:
29	tif_dir.c	routines for getting & setting tag values
30	tif_dirinfo.c	information about known tags
31	tif_dirread.c	directory reading support
32	tif_dirwrite.c	directory writing support
33    o the directory handling code has been substantially reworked
34      to eliminate many special cases and add more general reading
35      and writing support routines; this is mainly for supporting
36      the 6.0 tags
37    o the code that deduces a value for StripByteCounts when the
38      tag is not present has been improved slightly
39    o the directory reading code is now more careful about checking
40      count fields and tag definitions (when known)
41    o support has been added for the color information tags that are
42      to appear in TIFF 6.0: WhitePoint, PrimaryChromaticities,
43      ReferenceBlackWhite, and TransferFunction
44    o support has been added for the JPEG tags that are to appear
45      in TIFF 6.0 (but still no compression/decompression code yet):
46      JPEGProc, JPEGRestartInterval, JPEGQTables, JPEGACTables,
47      JPEGDCTables
48    o support has been added for the CMYK tags that are to appear
49      in TIFF 6.0: InkSet, InkNames, DotRange, TargetPrinter
50    o support has been added for the YCbCr tags that are to appear
51      in TIFF 6.0: YCbCrCoefficients, YCbCrSubsampling, YCbCrPositioning
52    o support has been added for some 6.0 tags that replace SGI-private
53      tags previously supported by the library: ExtraSamples, SampleFormat
54    o the reading and writing of packed sampled YCbCr data by strip
55      or tile works correctly (i.e. buffer sizes are calculated
56      according to the sampling factors and the Y...YCbCr packing)
57    o it is no longer necessary to call TIFFFlushData before a
58      call to TIFFWriteDirectory; this is now handled automatically;
59      old code that did this will still work as the library is
60      now more intelligent about doing end-of-strip work only once
61      per strip
62    o the values for certain tags are now checked when the tag's
63      value is set; e.g. FillOrder may only be FILLORDER_LSB2MSB
64      or FILLORDER_MSB2LSB
65    o old tags obsoleted by changes in TIFF 6.0 have been removed:
66      ColorResponseUnit, ColorResponseCurves, GrayResponseUnit,
67      GrayResponseCurve
68    o a bug whereby the library could leak memory if directories
69      were read in a non-sequential order has been fixed
70    o a bug in the Group 3 2D/Group 4 decoding+encoding routines
71      whereby the reference scanline was not reset to white at the
72      start of each strip after the first has been fixed
73    o bugs in the Group 3 2D/Group 4 decoding routine logic for
74      several (slightly obscure) cases were fixed
75    o a bug in the LZW encoding routine that could result in invalid
76      codes being generated was fixed (this only happened in a
77      low probability situation where the encoding process was
78      considered "poor" and the library attempted to reset its
79      encoding state to improve the compression performance)
80    o a new routine, TIFFCurrentDirectory has been added; it
81      returns the index of the current directory -- suitable for
82      passing to TIFFSetDirectory
83    o TIFFPrintDirectory has been updated to reflect the changes
84      in the tags supported by the library
85    o an obscure case in TIFFReadEncodedStrip where an error could
86      occur without a diagnostic has been corrected
87    o the private Picio and SGI RLE compression codes have been deleted
88      (along with the associated code)
89    o the JPEG compression code has been renumbered to reflect the
90      value that it will have in TIFF 6.0
91    o support has been added for the the HalftoneHints tag that
92      is to appear in TIFF 6.0
93    o support has been added for using the library under VMS
94    o the bit reversal routine TIFFReverseBits has been made faster
95    o a bug in the TIFFWriteTile routine where the tile size might
96      be used before it's calculated has been fixed
97    o some portability problems with 16-bit machines such as the
98      Macintosh have been fixed
99    o the library now treats RATIONAL values as the ratio of two
100      unsigned 32-bit quantities; it used to treat them as the ratio
101      of two *signed* values
102    o the library now supports all the new 6.0 tag data types except DOUBLE
103    o the SUBFILE_COMPAT configuration define has been removed
104      (compatibility for SHORT SubfileType tags is always included).
105    o a new global variable, TIFFVersion, has been added -- it is a
106      string giving the version and copyright information for the library
107
108(Note, since the 2.5 BETA version the following user-visible
109 modifications have been made:
110    o the ReferenceBlackWhite tag changed from LONG to RATIONAL
111      with a corresponding change in the parameters to TIFFGetField
112      and TIFFSetField; LONG values may still be read, but only
113      RATIONAL values are now written
114    o the SGI-specific Matteing and DataType tags have been replaced
115      by the new ExtraSamples and SampleFormat tags; the library will
116      accept the old tags, but only generate the new tags
117    o several bugs in the handling of the JPEG tags have been fixed
118    o a bug in the Group 3 2D and Group 4 decoding routines was fixed
119    o Group 3 2d tag bits are no longer included in the EOL
120      byte-aligning logic: that is, EOL codes are consistently aligned
121      to byte boundaries and any 2d tag bits are placed in the byte
122      that follows
123    o the writing of the TileByteCounts and TileOffsets tags has been
124      corrected
125    o the library now treats RATIONAL values as the ratio of two
126      unsigned 32-bit quantities; it used to treat them as the ratio
127      of two *signed* values
128)
129(Note, since the 3.0 BETA version the following user-visible
130 modifications have been made:
131    o a bug that caused RTC to be written at the end of each
132      Group 4-encoded strip has been fixed
133    o support for the DotRange tag was fixed
134    o the PhotometricInterpretation, Orientation, and ResolutionUnit
135      tags no longer may be modified once data is written (for the
136      Group 3 compression algorithm)
137    o portability problems with the IEEE floating point conversion
138      code have been fixed
139    o the PackBits encoding algorithm now breaks strips and tiles
140      up into row-sized units to avoid problems caused by encoding by
141      strip/tile and then decoding by scanline
142)
143
144Changes in the tools:
145    o a new tool for converting PBM+ files, ppm2tiff, has been added
146    o a new tool for converting an RGB, grayscale, or bilevel image
147      to a sampled YCbCr image, rgb2ycbcr, has been added
148    o a new tool for splitting multi-image files into multiple single-image
149      files, tiffsplit, has been added
150    o the fax2tiff utility has been rewritten to use the library
151      decoding routines; because of this, it can now decode Group 4
152      data as well as Group 3 data
153    o all references to obsolete tags such as ColorResponseCurves
154      were deleted
155    o the picio2tiff utility was purged for lack of use
156    o the pixargt utility was purged for lack of use
157    o a bug in ras2tiff that caused the default value of RowsPerStrip
158      to be large was fixed
159    o tiffgt (SGI version) now continues in the face of decoding
160      errors unless a -s flag is specified; support for displaying
161      YCbCr data has been added; also, the -v (verbose)
162      flag has been changed to alter the window title strip rather
163      than print to the terminal; finally, a bug that caused certain
164      kinds of images larger than the screen to not be displayed
165      properly was fixed
166    o the PostScript generated by tiff2ps has been changed
167      slightly to conform to the latest Adobe document conventions;
168      also, several bugs were fixed and support was added for converting
169      CMYK images
170    o a bug in tiffcmp that caused it to dump core was fixed
171    o tiffcp has been enhanced so that it can be used to generate a
172      multipage file from multiple source files; it now checks the
173      colormap to see if it is an 8-bit colormap and, if so, coerces
174      it to be 16-bit in the resultant file; it copies more tags;
175      and it copies the most common data organization more efficiently
176    o tiffdump has been updated to reflect the new tags added to the
177      library for TIFF 6.0
178    o tiffdump is now more resilient in the face of bad tag types
179      and read errors; also, a longstanding bug whereby 2 SHORT
180      values packed into an offset field were printed out of order
181      has been fixed
182    o tiffinfo has new -l and -m options to specify the FillOrder
183      of the input file as LSB-to-MSB and MSB-to-LSB, respectively
184    o tiffinfo now reads data by strip and tile (e.g. for the -D option)
185    o tiffcmp can now compare 1, 2, and 4 bit data
186    o a public domain version of getopt is now included with the tools
187    o the tools have been ported to VMS
188
189Changes in the documentation:
190    o the section 3 manual pages have been renamed to reflect full
191      function names and a Makefile now exists for creating links
192      when multiple functions are described in a single manual page
193      (NOTE that this means that many file names are now much longer
194      than 14 characters.)
195    o a draft copy of the TIFF 6.0 spec is in PostScript form
196    o the obsolete 5.0spec has been removed
197
198Changes in the contrib software:
199    o a new program, fax2ps, was contributed by Sam Leffler; it
200      converts bilevel TIFF images to a compressed PostScript
201      that is typically much faster to print than the PostScript
202      generated by tiff2ps
203    o a vms area contains scripts and data files for building the
204      library and tools under the VMS operating system
205    o an xv area contains patches to add TIFF support to version
206      2.00 of the XV program (xv versions >=2.10 include this support)
207