]>
Commit | Line | Data |
---|---|---|
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> |