|
1 <HTML> |
|
2 <HEAD> |
|
3 <TITLE> |
|
4 Changes in TIFF v3.6.0 |
|
5 </TITLE> |
|
6 </HEAD> |
|
7 |
|
8 <BODY BGCOLOR=white> |
|
9 <FONT FACE="Helvetica, Arial, Sans"> |
|
10 <FONT FACE="Helvetica, Arial, Sans"> |
|
11 |
|
12 <BASEFONT SIZE=4> |
|
13 <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> |
|
14 <BASEFONT SIZE=3> |
|
15 |
|
16 <UL> |
|
17 <HR SIZE=4 WIDTH=65% ALIGN=left> |
|
18 <B>Current Version</B>: v3.6.0<BR> |
|
19 <B>Previous Version</B>: <A HREF=v3.5.7.html>v3.5.7</a><BR> |
|
20 <B>Master FTP Site</B>: <A HREF="ftp://ftp.remotesensing.org/pub/libtiff"> |
|
21 ftp.remotesensing.org</a>, directory pub/libtiff</A><BR> |
|
22 <B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff"> |
|
23 http://www.remotesensing.org/libtiff</a> |
|
24 <HR SIZE=4 WIDTH=65% ALIGN=left> |
|
25 </UL> |
|
26 |
|
27 <P> |
|
28 This document describes the changes made to the software between the |
|
29 <I>previous</I> and <I>current</I> versions (see above). |
|
30 If you don't find something listed here, then it was not done in this |
|
31 timeframe, or it was not considered important enough to be mentioned. |
|
32 The following information is located here: |
|
33 <UL> |
|
34 <LI><A HREF="#hightlights">Major Changes</A> |
|
35 <LI><A HREF="#configure">Changes in the software configuration</A> |
|
36 <LI><A HREF="#libtiff">Changes in libtiff</A> |
|
37 <LI><A HREF="#tools">Changes in the tools</A> |
|
38 <LI><A HREF="#contrib">Changes in the contrib area</A> |
|
39 <LI><A HREF="#lzwkit">Changes in the LZW compression kit</A> |
|
40 </UL> |
|
41 <p> |
|
42 <P><HR WIDTH=65% ALIGN=left> |
|
43 |
|
44 <!---------------------------------------------------------------------------> |
|
45 |
|
46 <A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A> |
|
47 |
|
48 <ul> |
|
49 <li> New utility <a href=./man/raw2tiff.1.html>raw2tiff</a> |
|
50 for converting raw rasters into TIFF files. |
|
51 <li> Lots of new <a href=./man/tiff2ps.1.html>tiff2ps</a> options. |
|
52 <li> Lots of new <a href=./man/fax2tiff.1.html>fax2tiff</a> options. |
|
53 <li> Lots of bug fixes for LZW, JPEG and OJPEG compression. |
|
54 </ul> |
|
55 |
|
56 <h3>Custom Tag Support</h3> |
|
57 |
|
58 The approach to extending libtiff with custom tags has changed radically. |
|
59 Previously, all internally supported TIFF tags had a place in the |
|
60 private TIFFDirectory structure within libtiff to hold the values (if read), |
|
61 and a "field number" (ie. FIELD_SUBFILETYPE) used to identify that tag. |
|
62 However, every time a new tag was added to the core, the size of the |
|
63 TIFFDirectory structure would changing, breaking any dynamically linked |
|
64 software that used the private data structures.<p> |
|
65 |
|
66 Also, any tag not recognised |
|
67 by libtiff would not be read and accessable to applications without some |
|
68 fairly complicated work on the applications part to pre-register the tags |
|
69 as exemplified by the support for "Geo"TIFF tags by libgeotiff layered on |
|
70 libtiff. <p> |
|
71 |
|
72 Amoung other things this approach required the extension code |
|
73 to access the private libtiff structures ... which made the higher level |
|
74 non-libtiff code be locked into a specific version of libtiff at compile time. |
|
75 This caused no end of bug reports!<p> |
|
76 |
|
77 The new approach is for libtiff to read all tags from TIFF files. Those that |
|
78 aren't recognised as "core tags" (those having an associated FIELD_ value, |
|
79 and place for storage in the TIFFDirectory structure) are now read into a |
|
80 dynamic list of extra tags (td_customValues in TIFFDirectory). When a new |
|
81 tag code is encountered for the first time in a given TIFF file, a new |
|
82 anonymous tag definition is created for the tag in the tag definition list. |
|
83 The type, and some other metadata is worked out from the instance encountered. |
|
84 These fields are known as "custom tags". <p> |
|
85 |
|
86 Custom tags can be set and fetched normally using TIFFSetField() and |
|
87 TIFFGetField(), and appear pretty much like normal tags to application code. |
|
88 However, they have no impact on internal libtiff processing (such as |
|
89 compression). Some utilities, such as tiffcp will now copy these custom |
|
90 tags to the new output files. <p> |
|
91 |
|
92 As well as the internal work with custom tags, new C API entry points |
|
93 were added so that extension libraries, such as libgeotiff, could |
|
94 define new tags more easily without accessing internal data structures. |
|
95 Because tag handling of extension tags is done via the "custom fields" |
|
96 mechanism as well, the definition provided externally mostly serves to provide |
|
97 a meaningful name for the tag. |
|
98 |
|
99 The addition of "custom tags" and the altered approach to extending libtiff |
|
100 with externally defined tags is the primary reason for the shift to the |
|
101 3.6.x version number from 3.5.x.<p> |
|
102 |
|
103 <P><HR WIDTH=65% ALIGN=left> |
|
104 <!---------------------------------------------------------------------------> |
|
105 |
|
106 <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> |
|
107 |
|
108 <UL> |
|
109 <li> configure, config.site: Fix for large files (>2GiB) support. New |
|
110 option in the config.site: LARGEFILE="yes". Should be enougth for the large |
|
111 files I/O. |
|
112 |
|
113 <li> configure: Set -DPIXARLOG_SUPPORT option along with -DZIP_SUPPORT. |
|
114 |
|
115 <li> html/Makefile.in: Updated to use groffhtml for generating html pages |
|
116 from man pages. |
|
117 |
|
118 <li> configure, libtiff/Makefile.in: Added SCO OpenServer 5.0.6 support |
|
119 from John H. DuBois III. |
|
120 |
|
121 <li> libtiff/{Makefile.vc, libtiff.def}: Missed declarations added. |
|
122 |
|
123 <li> libtiff/Makefile.in, tools/Makefile.in: Shared library will not be |
|
124 stripped when installing, utility binaries will do be stripped. As per bug 93. |
|
125 |
|
126 <li> man/Makefile.in: Patch DESTDIR handling as per bug 95. |
|
127 |
|
128 <li> configure: OpenBSD changes for Sparc64 and DSO version as per bug 96. |
|
129 |
|
130 <li> config.site/configure: added support for OJPEG=yes option to enable |
|
131 OJPEG support from config.site. |
|
132 |
|
133 <li> config.guess, config.sub: Updated from ftp.gnu.org/pub/config. |
|
134 |
|
135 <li> configure: Modify CheckForBigEndian so it can work in a cross |
|
136 compiled situation. |
|
137 |
|
138 <li> configure, libtiff/Makefile.in: Changes for building on MacOS 10.1 |
|
139 as per bug 94. |
|
140 |
|
141 <li> html/Makefile.in: added missing images per bug 92. |
|
142 |
|
143 <li> port/Makefile.in: fixed clean target per bug 92. |
|
144 </UL> |
|
145 |
|
146 <P><HR WIDTH=65% ALIGN=left> |
|
147 |
|
148 <!---------------------------------------------------------------------------> |
|
149 |
|
150 <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> |
|
151 |
|
152 <UL> |
|
153 |
|
154 <li> libtiff/tif_getimage.c: New function <A |
|
155 HREF="./man/TIFFReadRGBAImage.3t.html">TIFFReadRGBAImageOriented()</A> |
|
156 implemented to retrieve raster array with user-specified origin position. |
|
157 |
|
158 <li> libtiff/tif_fax3.c: Fix wrong line numbering. |
|
159 |
|
160 <li> libtiff/tif_dirread.c: Check field counter against number of fields. |
|
161 |
|
162 <li> Store a list of opened IFD to prevent directory looping. |
|
163 |
|
164 <li> libtiff/tif_jpeg.c: modified segment_height calculation to always |
|
165 be a full height tile for tiled images. Also changed error to just |
|
166 be a warning. |
|
167 |
|
168 <li> libtiff/tif_lzw.c: fixed so that decoder state isn't allocated till |
|
169 LZWSetupDecode(). Needed to read LZW files in "r+" mode. |
|
170 |
|
171 <li> libtiff/tif_dir.c: fixed up the tif_postdecode settings responsible |
|
172 for byte swapping complex image data. |
|
173 |
|
174 <li> libtiff/tif_open.c: Removed error if opening a compressed file |
|
175 in update mode bug (198). |
|
176 |
|
177 <li> libtiff/tif_write.c: TIFFWriteCheck() now fails if the image is |
|
178 a pre-existing compressed image. That is, image writing to pre-existing |
|
179 compressed images is not allowed. |
|
180 |
|
181 <li> html/man/*.html: Web pages regenerated from man pages. |
|
182 |
|
183 <li> libtiff/tif_jpeg.c: Hack to ensure that "boolean" is defined properly |
|
184 on Windows so as to avoid the structure size mismatch error from libjpeg |
|
185 (bug 188). |
|
186 |
|
187 <li> libtiff/tiff.h: #ifdef USING_VISUALAGE around previous Visual Age |
|
188 AIX porting hack as it screwed up gcc. (bug 39) |
|
189 |
|
190 <li> libtiff/tiff.h: added COMPRESSION_JP2000 (34712) for LEAD tools |
|
191 custom compression. |
|
192 |
|
193 <li> libtiff/tif_dirread.c: Another fix for the fetching SBYTE arrays |
|
194 by the TIFFFetchByteArray() function. (bug 52) |
|
195 |
|
196 <li> libtiff/tif_dirread.c: Expand v[2] to v[4] in TIFFFetchShortPair() |
|
197 as per bug 196. |
|
198 |
|
199 <li> libtiff/tif_lzw.c: Additional consistency checking added in |
|
200 LZWDecode() and LZWDecodeCompat() fixing bugs 190 and 100. |
|
201 |
|
202 <li> libtiff/tif_lzw.c: Added check for valid code lengths in LZWDecode() |
|
203 and LZWDecodeCompat(). Fixes bug 115. |
|
204 |
|
205 <li> tif_getimage.c: Ensure that TIFFRGBAImageBegin() returns the |
|
206 return code from the underlying pick function as per bug 177. |
|
207 |
|
208 <li> libtiff/{tif_jpeg.c,tif_strip.c,tif_print.c}: Hacked tif_jpeg.c to |
|
209 fetch TIFFTAG_YCBCRSUBSAMPLING from the jpeg data stream if it isn't |
|
210 present in the tiff tags as per bug 168. |
|
211 |
|
212 <li> libtiff/tif_jpeg.c: Fixed problem with setting of nrows in |
|
213 JPEGDecode() as per bug 129. |
|
214 |
|
215 <li> libtiff/tif_read.c, libtiff/tif_write.c: TIFFReadScanline() and |
|
216 TIFFWriteScanline() now set tif_row explicitly in case the codec has |
|
217 fooled with the value as per bug 129. |
|
218 |
|
219 <li> libtiff/tif_ojpeg.c: Major upgrade from Scott. Details in bug 156. |
|
220 |
|
221 <li> libtiff/tif_open.c: Pointers to custom procedures |
|
222 in TIFFClientOpen() are checked to be not NULL-pointers. |
|
223 |
|
224 <li> libtiff/tif_lzw.c: Assertions in LZWDecode and LZWDecodeCompat |
|
225 replaced by warnings. Now libtiff should read corrupted LZW-compressed |
|
226 files by skipping bad strips as per bug 100. |
|
227 |
|
228 <li> libtiff/: tif_dirwrite.c, tif_write.c, tiffio.h: |
|
229 <a href=./man/TIFFWriteDirectory.3t.html>TIFFCheckpointDirectory()</a> |
|
230 routine added as per bug 124. The |
|
231 <a href=./man/TIFFWriteDirectory.3t.html>TIFFWriteDirectory</a> |
|
232 man page discusses this new function as well as the related |
|
233 <a href=./man/TIFFWriteDirectory.3t.html>TIFFRewriteDirectory()</a>. |
|
234 |
|
235 <li> libtiff/: tif_codec.c, tif_compress.c, tiffiop.h, tif_getimage.c: |
|
236 Introduced |
|
237 additional members tif->tif_decodestatus and tif->tif_encodestatus |
|
238 for correct handling of unconfigured codecs (we should not try to read |
|
239 data or to define data size without correct codecs). See bug 119. |
|
240 |
|
241 <li> tif_dirread.c: avoid div-by-zero if rowbytes is zero in chop func as |
|
242 per bug 111. |
|
243 |
|
244 <li> libtiff/: tiff.h, tif_dir.c, tif_dir.h, tif_dirinfo.c, tif_dirread.c, |
|
245 tif_dirwrite.c: Dwight Kelly added get/put code for new tag XMLPACKET as |
|
246 defined in Adobe XMP Technote. Added missing INKSET tag value from TIFF 6.0 |
|
247 spec INKSET_MULTIINK (=2). Added missing tags from Adobe TIFF technotes: |
|
248 CLIPPATH, XCLIPPATHUNITS, YCLIPPATHUNITS, OPIIMAGEID, OPIPROXY and |
|
249 INDEXED. Added PHOTOMETRIC tag value from TIFF technote 4 ICCLAB (=9). |
|
250 |
|
251 <li> libtiff/tif_getimage.c: Additional check for supported codecs added in |
|
252 TIFFRGBAImageOK, TIFFReadRGBAImage, TIFFReadRGBAStrip and TIFFReadRGBATile now |
|
253 use TIFFRGBAImageOK before reading a per bug 110. |
|
254 |
|
255 <li> libtiff/: tif_dir.c, tif_dir.h, tif_dirinfo.c, tif_dirread.c, |
|
256 tif_dirwrite.c: Added routine |
|
257 <a href=./man/TIFFDataWidth.3t.html>TIFFDataWidth</a> for determining |
|
258 TIFFDataType sizes instead of working with tiffDataWidth array |
|
259 directly as per bug 109. |
|
260 |
|
261 <li>libtiff/: tif_dirinfo.c, tif_dirwrite.c: Added possibility to |
|
262 read broken TIFFs with LONG type used for TIFFTAG_COMPRESSION, |
|
263 TIFFTAG_BITSPERSAMPLE, TIFFTAG_PHOTOMETRIC as per bug 99. |
|
264 |
|
265 <li> libtiff/{tiff.h,tif_fax3.c}: Add support for __arch64__ as per bug 94. |
|
266 |
|
267 <li> libtiff/tif_read.c: Fixed TIFFReadEncodedStrip() to fail if the |
|
268 decodestrip function returns anything not greater than zero as per bug 97. |
|
269 |
|
270 <li> libtiff/tif_jpeg.c: fixed computation of segment_width for |
|
271 tiles files to avoid error about it not matching the |
|
272 cinfo.d.image_width values ("JPEGPreDecode: Improper JPEG strip/tile |
|
273 size.") for ITIFF files. Apparently the problem was incorporated since |
|
274 3.5.5, presumably during the OJPEG/JPEG work recently. |
|
275 |
|
276 <li> libtiff/tif_getimage.c: If DEFAULT_EXTRASAMPLE_AS_ALPHA is 1 |
|
277 (defined in tiffconf.h - 1 by default) then the RGBA interface |
|
278 will assume that a fourth extra sample is ASSOCALPHA if the |
|
279 EXTRASAMPLE value isn't set for it. This changes the behaviour of |
|
280 the library, but makes it work better with RGBA files produced by |
|
281 lots of applications that don't mark the alpha values properly. |
|
282 As per bugs 93 and 65. |
|
283 |
|
284 <li> libtiff/tif_jpeg.c: allow jpeg data stream sampling values to |
|
285 override those from tiff directory. This makes this work with |
|
286 ImageGear generated files. |
|
287 |
|
288 </UL> |
|
289 |
|
290 <P><HR WIDTH=65% ALIGN=left> |
|
291 |
|
292 <!--------------------------------------------------------------------------> |
|
293 |
|
294 <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> |
|
295 |
|
296 <UL> |
|
297 |
|
298 <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Added page size setting |
|
299 when creating PS Level 2. |
|
300 |
|
301 <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Fixed PS comment emitted when |
|
302 FlateDecode is being used. |
|
303 |
|
304 <li> <a href=./man/tiffsplit.1.html>tiffsplit</a>: increased the maximum |
|
305 number of pages that can be split. |
|
306 |
|
307 <li> <a href=./man/raw2tiff.1.html>raw2tiff</a>: Added option `-p' to |
|
308 explicitly select color space of input image data. |
|
309 |
|
310 <li> <a href=./man/tiffmedian.1.html>tiffmedian</a>: Suppiort for large |
|
311 (> 2GB) images. |
|
312 |
|
313 <li> <a href=./man/ppm2tiff.1.html>ppm2tiff</a>: Fixed possible endless loop. |
|
314 |
|
315 <li> <a href=./man/tiff2rgba.1.html>tiff2rgba</a>: Switched to use |
|
316 <A HREF="./man/TIFFReadRGBAImage.3t.html">TIFFReadRGBAImageOriented()</A> |
|
317 instead of <A HREF="./man/TIFFReadRGBAImage.3t.html">TIFFReadRGBAImage()</A>. |
|
318 |
|
319 <li> <a href=./man/tiffcmp.1.html>tiffcmp</a>: Fixed problem with unused data |
|
320 comparing (bug 349). `-z' option now can be used to set the number of reported |
|
321 different bytes. |
|
322 |
|
323 <li> <a href=./man/tiffcp.1.html>tiffcp</a>: Added possibility to specify |
|
324 value -1 to -r option to get the entire image as one strip (bug 343). |
|
325 |
|
326 <li> <a href=./man/tiffcp.1.html>tiffcp</a>: Set the correct RowsPerStrip |
|
327 and PageNumber values (bug 343). |
|
328 |
|
329 <li> <a href=./man/fax2tiff.1.html>fax2tiff</a>: Page numbering fixed (bug |
|
330 341). |
|
331 |
|
332 <li> <a href=./man/ppm2tiff.1.html>ppm2tiff</a>: PPM header parser improved: |
|
333 now able to skip comments. |
|
334 |
|
335 <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Force deadzone printing when |
|
336 EPS output specified (bug 325). |
|
337 |
|
338 <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Add ability to generate |
|
339 PS Level 3. It basically allows one to use the /flateDecode filter for ZIP |
|
340 compressed TIFF images. Patch supplied by Tom Kacvinsky (bug 328). |
|
341 |
|
342 <li> <a href=./man/tiffcp.1.html>tiffcp</a>: Fixed problem with colorspace |
|
343 conversion for JPEG encoded images (bugs 23 and 275) |
|
344 |
|
345 <li> <a href=./man/fax2tiff.1.html>fax2tiff</a>: Applied patch from |
|
346 Julien Gaulmin. More switches for fax2tiff tool for better control |
|
347 of input and output (bugs 272 and 293). |
|
348 |
|
349 <li> <a href=./man/raw2tiff.1.html>raw2tiff</a>: |
|
350 New utility for turning raw raster images into TIFF files |
|
351 written by Andrey Kiselev. |
|
352 |
|
353 <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: |
|
354 Sebastian Eken provided patches (bug 200) to add new these new |
|
355 switches: |
|
356 <ul> |
|
357 <li> <b>-b #</b>: for a bottom margin of # inches |
|
358 <li> <b>-c</b>: center image |
|
359 <li> <b>-l #</b>: for a left margin of # inches |
|
360 <li> <b>-r</b>: rotate the image by 180 degrees |
|
361 </ul> |
|
362 |
|
363 Also, new features merged with code for shrinking/overlapping. |
|
364 |
|
365 <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Don't emit BeginData/EndData |
|
366 DSC comments since we are unable to properly include the amount to skip |
|
367 as per bug 80. |
|
368 |
|
369 <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Added workaround for some |
|
370 software that may crash when last strip of image contains fewer number |
|
371 of scanlines than specified by the `/Height' variable as per bug 164. |
|
372 |
|
373 <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Patch from John Williams to add new |
|
374 functionality for tiff2ps utility splitting long images in several pages as |
|
375 per bug 142. New switches: |
|
376 <ul> |
|
377 <li> <b>-H #</b>: split image if height is more than # inches |
|
378 <li> <b>-L #</b>: overLap split images by # inches |
|
379 </ul> |
|
380 |
|
381 <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: New commandline |
|
382 switches to override resolution units obtained from the input file per bug 131: |
|
383 <ul> |
|
384 <li> <b>-x</b>: override resolution units as centimeters |
|
385 <li> <b>-y</b>: override resolution units as inches |
|
386 </ul> |
|
387 |
|
388 <li> <a href=./man/fax2tiff.1.html>fax2tiff</a>: Updated to reflect |
|
389 latest changes in libtiff per bug 125. |
|
390 |
|
391 <li> tiff2ps: Division by zero fixed as per bug 88. |
|
392 |
|
393 <li> <a href=./man/tiffcp.1.html>tiffcp<a>: |
|
394 Added support for 'Orientation' tag. |
|
395 |
|
396 <li> <a href=./man/tiffdump.1.html>tiffdump</a>: |
|
397 include TIFFTAG_JPEGTABLES in tag list. |
|
398 |
|
399 <li> tiffset: fix bug in error reporting. |
|
400 |
|
401 </UL> |
|
402 |
|
403 <P><HR WIDTH=65% ALIGN=left> |
|
404 |
|
405 <!---------------------------------------------------------------------------> |
|
406 |
|
407 <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A> |
|
408 <UL> |
|
409 |
|
410 <li> Fixed distribution to include contrib/addtiffo/tif_ovrcache.{c,h}. |
|
411 <li> libtiff/contrib/win95: renamed to contrib/win_dib. Added new |
|
412 Tiffile.cpp example of converting TIFF files into a DIB on Win32 as per |
|
413 bug 143. |
|
414 |
|
415 </UL> |
|
416 |
|
417 <!---------------------------------------------------------------------------> |
|
418 |
|
419 <A NAME="lzwkit"><B><FONT SIZE=+3>C</FONT>HANGES IN THE LZW COMPRESSION |
|
420 KIT:</B></A> |
|
421 <UL> |
|
422 |
|
423 <li> LZW compression kit synchronized with actual libtiff version. |
|
424 |
|
425 </UL> |
|
426 |
|
427 <A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR> |
|
428 |
|
429 <HR> |
|
430 |
|
431 Last updated $Date: 2003/10/04 11:38:17 $. |
|
432 |
|
433 </BODY> |
|
434 </HTML> |