~ubuntu-branches/ubuntu/quantal/tiff/quantal

« back to all changes in this revision

Viewing changes to html/v3.6.0.html

  • Committer: Bazaar Package Importer
  • Author(s): Jay Berkenbilt
  • Date: 2009-08-28 15:44:23 UTC
  • mfrom: (1.1.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20090828154423-7oisj77n302jrroa
Tags: 3.9.1-1
New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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>