]> git.saurik.com Git - wxWidgets.git/blob - src/tiff/html/support.html
Extract wxPipeInputStream and wxPipeOutputStream in a header.
[wxWidgets.git] / src / tiff / html / support.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html lang="en">
3 <head>
4 <title>TIFF 6.0 Specification Coverage</title>
5 <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
6 <meta http-equiv="content-language" content="en">
7 <style type="text/css">
8 <!--
9 th {text-align: left; vertical-align: top; font-style: italic; font-weight: normal}
10 -->
11 </style>
12 </head>
13 <body lang="en" text="#000000" bgcolor="#ffffff" link="#0000ff" alink="#0000ff" vlink="#0000ff">
14 <table border="0" cellspacing="0" cellpadding="0">
15 <tr>
16 <td style="padding-left: 1em; padding-right: 1em"><img src="images/strike.gif" width="128" height="100" alt=""></td>
17 <td>
18 <h1>TIFF 6.0 Specification Coverage</h1>
19 <p>
20 The library is capable of dealing with images that are written to
21 follow the 5.0 or 6.0 TIFF spec. There is also considerable support
22 for some of the more esoteric portions of the 6.0 TIFF spec.
23 </p>
24 </td>
25 </tr>
26 </table>
27 <br>
28 <table border="1" cellspacing="0" cellpadding="5">
29 <tr>
30 <th>Core requirements</th>
31 <td>
32 <p>
33 Both <tt>"MM"</tt> and <tt>"II"</tt> byte orders are handled.
34 Both packed and separated planar configuration of samples.
35 Any number of samples per pixel (memory permitting).
36 Any image width and height (memory permitting).
37 Multiple subfiles can be read and written.
38 Editing is <b>not</b> supported in that related subfiles (e.g.
39 a reduced resolution version of an image) are not automatically
40 updated.
41 </p>
42 <p>
43 Tags handled: <tt>ExtraSamples</tt>, <tt>ImageWidth</tt>,
44 <tt>ImageLength</tt>, <tt>NewSubfileType</tt>, <tt>ResolutionUnit</tt>.
45 <tt>Rowsperstrip</tt>, <tt>StripOffsets</tt>, <tt>StripByteCounts</tt>,
46 <tt>XResolution</tt>, <tt>YResolution</tt>
47 </p>
48 </td>
49 </tr>
50 <tr>
51 <th>Tiled Images</th>
52 <td><tt>TileWidth</tt>, <tt>TileLength</tt>, <tt>TileOffsets</tt>,
53 <tt>TileByteCounts</tt></td>
54 </tr>
55 <tr>
56 <th>Image Colorimetry Information</th>
57 <td><tt>WhitePoint</tt>, <tt>PrimaryChromaticities</tt>, <tt>TransferFunction</tt>,
58 <tt>ReferenceBlackWhite</tt></td>
59 </tr>
60 <tr>
61 <th>Class B for bilevel images</th>
62 <td><tt>SamplesPerPixel</tt> = 1<br>
63 <tt>BitsPerSample</tt> = 1<br>
64 <tt>Compression</tt> = 1 (none), 2 (CCITT 1D), or 32773 (PackBits)<br>
65 <tt>PhotometricInterpretation</tt> = 0 (Min-is-White), 1 (Min-is-Black)</td>
66 </tr>
67 <tr>
68 <th>Class G for grayscale images</th>
69 <td><tt>SamplesPerPixel</tt> = 1<br>
70 <tt>BitsPerSample</tt> = 4, 8<br>
71 <tt>Compression</tt> = 1 (none) 5 (LZW)<br>
72 <tt>PhotometricInterpretation</tt> = 0 (Min-is-White), 1 (Min-is-Black)</td>
73 </tr>
74 <tr>
75 <th>Class P for palette color images</th>
76 <td><tt>SamplesPerPixel</tt> = 1<br>
77 <tt>BitsPerSample</tt> = 1-8<br>
78 <tt>Compression</tt> = 1 (none) 5 (LZW)<br>
79 <tt>PhotometricInterpretation</tt> = 3 (Palette RGB)<br>
80 <tt>ColorMap</tt></td>
81 </tr>
82 <tr>
83 <th>Class R for RGB full color images</th>
84 <td><tt>SamplesPerPixel</tt> = 3<br>
85 <tt>BitsPerSample</tt> = &lt;8,8,8&gt;<br>
86 <tt>PlanarConfiguration</tt> = 1, 2<br>
87 <tt>Compression</tt> = 1 (none) 5 (LZW)<br>
88 <tt>PhotometricInterpretation</tt> = 2 (RGB)</td>
89 </tr>
90 <tr>
91 <th>Class F for facsimile</th>
92 <td>(<i>Class B tags plus...</i>)<br>
93 <tt>Compression</tt> = 3 (CCITT Group 3), 4 (CCITT Group 4)<br>
94 <tt>FillOrder</tt> = 1 (MSB), 2 (LSB)<br>
95 <tt>Group3Options</tt> = 1 (2d encoding), 4 (zero fill), 5 (2d+fill)<br>
96 <tt>ImageWidth</tt> = 1728, 2048, 2482<br>
97 <tt>NewSubFileType</tt> = 2<br>
98 <tt>ResolutionUnit</tt> = 2 (Inch), 3 (Centimeter)<br>
99 <tt>PageNumber</tt>,
100 <tt>XResolution</tt>,
101 <tt>YResolution</tt>,
102 <tt>Software</tt>,
103 <tt>BadFaxLines</tt>,
104 <tt>CleanFaxData</tt>,
105 <tt>ConsecutiveBadFaxLines</tt>,
106 <tt>DateTime</tt>,
107 <tt>DocumentName</tt>,
108 <tt>ImageDescription</tt>,
109 <tt>Orientation</tt></td>
110 </tr>
111 <tr>
112 <th>Class S for separated images</th>
113 <td><tt>SamplesPerPixel</tt> = 4<br>
114 <tt>PlanarConfiguration</tt> = 1, 2<br>
115 <tt>Compression</tt> = 1 (none), 5 (LZW)<br>
116 <tt>PhotometricInterpretation</tt> = 5 (Separated)<br>
117 <tt>InkSet</tt> = 1 (CMYK)<br>
118 <tt>DotRange</tt>,
119 <tt>InkNames</tt>,
120 <tt>DotRange</tt>,
121 <tt>TargetPrinter</tt></td>
122 </tr>
123 <tr>
124 <th>Class Y for YCbCr images</th>
125 <td><tt>SamplesPerPixel</tt> = 3<br>
126 <tt>BitsPerSample</tt> = &lt;8,8,8&gt;<br>
127 <tt>PlanarConfiguration</tt> = 1, 2<br>
128 <tt>Compression</tt> = 1 (none), 5 (LZW), 7 (JPEG)<br>
129 <tt>PhotometricInterpretation</tt> = 6 (YCbCr)<br>
130 <tt>YCbCrCoefficients</tt>,
131 <tt>YCbCrSubsampling</tt>,
132 <tt>YCbCrPositioning</tt><br>
133 (<i>colorimetry info from Appendix H; see above</i>)</td>
134 </tr>
135 <tr>
136 <th>Class "JPEG" for JPEG images (per TTN2)</th>
137 <td><tt>PhotometricInterpretation</tt> = 1 (grayscale), 2 (RGB), 5 (CMYK), 6 (YCbCr)<br>
138 (<i>Class Y tags if YCbCr</i>)<br>
139 (<i>Class S tags if CMYK</i>)<br>
140 <tt>Compression</tt> = 7 (JPEG)</td>
141 </tr>
142 </table>
143 <p>
144 In addition, the library supports some optional compression algorithms
145 that are, in some cases, of dubious value.
146 </p>
147 <table border="0" cellspacing="0" cellpadding="2">
148 <tr><th>Compression tag value</th><th>Compression algorithm</th></tr>
149 <tr><td>32766</td><td>NeXT 2-bit encoding</td></tr>
150 <tr><td>32809</td><td>ThunderScan 4-bit encoding</td></tr>
151 <tr><td>32909</td><td>Pixar companded 11-bit ZIP encoding</td></tr>
152 <tr><td>32946</td><td>PKZIP-style Deflate encoding (experimental)</td></tr>
153 <tr><td>34676</td><td>SGI 32-bit Log Luminance encoding (experimental)</td></tr>
154 <tr><td>34677</td><td>SGI 24-bit Log Luminance encoding (experimental)</td></tr>
155 </table>
156 <br>
157 <p>
158 Note that there is no support for the JPEG-related tags defined
159 in the 6.0 specification; the JPEG support is based on the post-6.0
160 proposal given in TIFF Technical Note #2.
161 </p>
162 <table>
163 <tr>
164 <td valign=top><img src="images/info.gif" width="32" height="32" alt=""></td>
165 <td>For more information on the experimental Log Luminance encoding
166 consult the materials available at
167 <a href="http://www.anyhere.com/gward/pixformat/tiffluv.html">http://www.anyhere.com/gward/pixformat/tiffluv.html</a>.</td>
168 </tr>
169 </table>
170 <br>
171 <p>
172 The following table shows the tags that are recognized
173 and how they are used by the library. If no use is indicated,
174 then the library reads and writes the tag, but does not use it internally.
175 </p>
176 <table border="1" cellspacing="0" cellpadding="5">
177 <tr>
178 <th>Tag Name</th>
179 <th>Value</th>
180 <th>R/W</th>
181 <th>Library's Use (Comments)</th>
182 </tr>
183 <tr>
184 <td><tt>NewSubFileType</tt></td>
185 <td>254</td>
186 <td>R/W</td>
187 <td>none (called <tt>SubFileType</tt> in &lt;tiff.h&gt;)</td>
188 </tr>
189 <tr>
190 <td><tt>SubFileType</tt></td>
191 <td>255</td>
192 <td>R/W</td>
193 <td>none (called <tt>OSubFileType</tt> in &lt;tiff.h&gt;)</td>
194 </tr>
195 <tr>
196 <td><tt>ImageWidth</tt></td>
197 <td>256</td>
198 <td>R/W</td>
199 <td>lots</td>
200 </tr>
201 <tr>
202 <td><tt>ImageLength</tt></td>
203 <td>257</td>
204 <td>R/W</td>
205 <td>lots</td>
206 </tr>
207 <tr>
208 <td><tt>BitsPerSample</tt></td>
209 <td>258</td>
210 <td>R/W</td>
211 <td>lots</td>
212 </tr>
213 <tr>
214 <td><tt>Compression</tt></td>
215 <td>259</td>
216 <td>R/W</td>
217 <td>to select appropriate codec</td>
218 </tr>
219 <tr>
220 <td><tt>PhotometricInterpretation</tt></td>
221 <td>262</td>
222 <td>R/W</td>
223 <td>lots</td>
224 </tr>
225 <tr>
226 <td><tt>Thresholding</tt></td>
227 <td>263</td>
228 <td>R/W</td>
229 <td>&nbsp;</td>
230 </tr>
231 <tr>
232 <td><tt>CellWidth</tt></td>
233 <td>264</td>
234 <td>&nbsp;</td>
235 <td>parsed but ignored</td>
236 </tr>
237 <tr>
238 <td><tt>CellLength</tt></td>
239 <td>265</td>
240 <td>&nbsp;</td>
241 <td>parsed but ignored</td>
242 </tr>
243 <tr>
244 <td><tt>FillOrder</tt></td>
245 <td>266</td>
246 <td>R/W</td>
247 <td>control bit order</td>
248 </tr>
249 <tr>
250 <td><tt>DocumentName</tt></td>
251 <td>269</td>
252 <td>R/W</td>
253 <td>&nbsp;</td>
254 </tr>
255 <tr>
256 <td><tt>ImageDescription</tt></td>
257 <td>270</td>
258 <td>R/W</td>
259 <td>&nbsp;</td>
260 </tr>
261 <tr>
262 <td><tt>Make</tt></td>
263 <td>271</td>
264 <td>R/W</td>
265 <td>&nbsp;</td>
266 </tr>
267 <tr>
268 <td><tt>Model</tt></td>
269 <td>272</td>
270 <td>R/W</td>
271 <td>&nbsp;</td>
272 </tr>
273 <tr>
274 <td><tt>StripOffsets</tt></td>
275 <td>273</td>
276 <td>R/W</td>
277 <td>data i/o</td>
278 </tr>
279 <tr>
280 <td><tt>Orientation</tt></td>
281 <td>274</td>
282 <td>R/W</td>
283 <td>&nbsp;</td>
284 </tr>
285 <tr>
286 <td><tt>SamplesPerPixel</tt></td>
287 <td>277</td>
288 <td>R/W</td>
289 <td>lots</td>
290 </tr>
291 <tr>
292 <td><tt>RowsPerStrip</tt></td>
293 <td>278</td>
294 <td>R/W</td>
295 <td>data i/o</td>
296 </tr>
297 <tr>
298 <td><tt>StripByteCounts</tt></td>
299 <td>279</td>
300 <td>R/W</td>
301 <td>data i/o</td>
302 </tr>
303 <tr>
304 <td><tt>MinSampleValue</tt></td>
305 <td>280</td>
306 <td>R/W</td>
307 <td>&nbsp;</td>
308 </tr>
309 <tr>
310 <td><tt>MaxSampleValue</tt></td>
311 <td>281</td>
312 <td>R/W</td>
313 <td>&nbsp;</td>
314 </tr>
315 <tr>
316 <td><tt>XResolution</tt></td>
317 <td>282</td>
318 <td>R/W</td>
319 <td>&nbsp;</td>
320 </tr>
321 <tr>
322 <td><tt>YResolution</tt></td>
323 <td>283</td>
324 <td>R/W</td>
325 <td>used by Group 3 2d encoder</td>
326 </tr>
327 <tr>
328 <td><tt>PlanarConfiguration</tt></td>
329 <td>284</td>
330 <td>R/W</td>
331 <td>data i/o</td>
332 </tr>
333 <tr>
334 <td><tt>PageName</tt></td>
335 <td>285</td>
336 <td>R/W</td>
337 <td>&nbsp;</td>
338 </tr>
339 <tr>
340 <td><tt>XPosition</tt></td>
341 <td>286</td>
342 <td>R/W</td>
343 <td>&nbsp;</td>
344 </tr>
345 <tr>
346 <td><tt>YPosition</tt></td>
347 <td>286</td>
348 <td>R/W</td>
349 <td>&nbsp;</td>
350 </tr>
351 <tr>
352 <td><tt>FreeOffsets</tt></td>
353 <td>288</td>
354 <td>&nbsp;</td>
355 <td>parsed but ignored</td>
356 </tr>
357 <tr>
358 <td><tt>FreeByteCounts</tt></td>
359 <td>289</td>
360 <td>&nbsp;</td>
361 <td>parsed but ignored</td>
362 </tr>
363 <tr>
364 <td><tt>GrayResponseUnit</tt></td>
365 <td>290</td>
366 <td>&nbsp;</td>
367 <td>parsed but ignored</td>
368 </tr>
369 <tr>
370 <td><tt>GrayResponseCurve</tt></td>
371 <td>291</td>
372 <td>&nbsp;</td>
373 <td>parsed but ignored</td>
374 </tr>
375 <tr>
376 <td><tt>Group3Options</tt></td>
377 <td>292</td>
378 <td>R/W</td>
379 <td>used by Group 3 codec</td>
380 </tr>
381 <tr>
382 <td><tt>Group4Options</tt></td>
383 <td>293</td>
384 <td>R/W</td>
385 <td>&nbsp;</td>
386 </tr>
387 <tr>
388 <td><tt>ResolutionUnit</tt></td>
389 <td>296</td>
390 <td>R/W</td>
391 <td>used by Group 3 2d encoder</td>
392 </tr>
393 <tr>
394 <td><tt>PageNumber</tt></td>
395 <td>297</td>
396 <td>R/W</td>
397 <td>&nbsp;</td>
398 </tr>
399 <tr>
400 <td><tt>ColorResponseUnit</tt></td>
401 <td>300</td>
402 <td>&nbsp;</td>
403 <td>parsed but ignored</td>
404 </tr>
405 <tr>
406 <td><tt>TransferFunction</tt></td>
407 <td>301</td>
408 <td>R/W</td>
409 <td>&nbsp;</td>
410 </tr>
411 <tr>
412 <td><tt>Software</tt></td>
413 <td>305</td>
414 <td>R/W</td>
415 <td>&nbsp;</td>
416 </tr>
417 <tr>
418 <td><tt>DateTime</tt></td>
419 <td>306</td>
420 <td>R/W</td>
421 <td>&nbsp;</td>
422 </tr>
423 <tr>
424 <td><tt>Artist</tt></td>
425 <td>315</td>
426 <td>R/W</td>
427 <td>&nbsp;</td>
428 </tr>
429 <tr>
430 <td><tt>HostComputer</tt></td>
431 <td>316</td>
432 <td>R/W</td>
433 <td>&nbsp;</td>
434 </tr>
435 <tr>
436 <td><tt>Predictor</tt></td>
437 <td>317</td>
438 <td>R/W</td>
439 <td>used by LZW codec</td>
440 </tr>
441 <tr>
442 <td><tt>WhitePoint</tt></td>
443 <td>318</td>
444 <td>R/W</td>
445 <td>&nbsp;</td>
446 </tr>
447 <tr>
448 <td><tt>PrimaryChromacities</tt></td>
449 <td>319</td>
450 <td>R/W</td>
451 <td>&nbsp;</td>
452 </tr>
453 <tr>
454 <td><tt>ColorMap</tt></td>
455 <td>320</td>
456 <td>R/W</td>
457 <td>&nbsp;</td>
458 </tr>
459 <tr>
460 <td><tt>TileWidth</tt></td>
461 <td>322</td>
462 <td>R/W</td>
463 <td>data i/o</td>
464 </tr>
465 <tr>
466 <td><tt>TileLength</tt></td>
467 <td>323</td>
468 <td>R/W</td>
469 <td>data i/o</td>
470 </tr>
471 <tr>
472 <td><tt>TileOffsets</tt></td>
473 <td>324</td>
474 <td>R/W</td>
475 <td>data i/o</td>
476 </tr>
477 <tr>
478 <td><tt>TileByteCounts</tt></td>
479 <td>324</td>
480 <td>R/W</td>
481 <td>data i/o</td>
482 </tr>
483 <tr>
484 <td><tt>BadFaxLines</tt></td>
485 <td>326</td>
486 <td>R/W</td>
487 <td>&nbsp;</td>
488 </tr>
489 <tr>
490 <td><tt>CleanFaxData</tt></td>
491 <td>327</td>
492 <td>R/W</td>
493 <td>&nbsp;</td>
494 </tr>
495 <tr>
496 <td><tt>ConsecutiveBadFaxLines</tt></td>
497 <td>328</td>
498 <td>R/W</td>
499 <td>&nbsp;</td>
500 </tr>
501 <tr>
502 <td><tt>SubIFD</tt></td>
503 <td>330</td>
504 <td>R/W</td>
505 <td>subimage descriptor support</td>
506 </tr>
507 <tr>
508 <td><tt>InkSet</tt></td>
509 <td>332</td>
510 <td>R/W</td>
511 <td>&nbsp;</td>
512 </tr>
513 <tr>
514 <td><tt>InkNames</tt></td>
515 <td>333</td>
516 <td>R/W</td>
517 <td>&nbsp;</td>
518 </tr>
519 <tr>
520 <td><tt>DotRange</tt></td>
521 <td>336</td>
522 <td>R/W</td>
523 <td>&nbsp;</td>
524 </tr>
525 <tr>
526 <td><tt>TargetPrinter</tt></td>
527 <td>337</td>
528 <td>R/W</td>
529 <td>&nbsp;</td>
530 </tr>
531 <tr>
532 <td><tt>ExtraSamples</tt></td>
533 <td>338</td>
534 <td>R/W</td>
535 <td>lots</td>
536 </tr>
537 <tr>
538 <td><tt>SampleFormat</tt></td>
539 <td>339</td>
540 <td>R/W</td>
541 <td>&nbsp;</td>
542 </tr>
543 <tr>
544 <td><tt>SMinSampleValue</tt></td>
545 <td>340</td>
546 <td>R/W</td>
547 <td>&nbsp;</td>
548 </tr>
549 <tr>
550 <td><tt>SMaxSampleValue</tt></td>
551 <td>341</td>
552 <td>R/W</td>
553 <td>&nbsp;</td>
554 </tr>
555 <tr>
556 <td><tt>JPEGTables</tt></td>
557 <td>347</td>
558 <td>R/W</td>
559 <td>used by JPEG codec</td>
560 </tr>
561 <tr>
562 <td><tt>YCbCrCoefficients</tt></td>
563 <td>529</td>
564 <td>R/W</td>
565 <td>used by <tt>TIFFReadRGBAImage</tt> support</td>
566 </tr>
567 <tr>
568 <td><tt>YCbCrSubsampling</tt></td>
569 <td>530</td>
570 <td>R/W</td>
571 <td>tile/strip size calculations</td>
572 </tr>
573 <tr>
574 <td><tt>YCbCrPositioning</tt></td>
575 <td>531</td>
576 <td>R/W</td>
577 <td>&nbsp;</td>
578 </tr>
579 <tr>
580 <td><tt>ReferenceBlackWhite</tt></td>
581 <td>532</td>
582 <td>R/W</td>
583 <td>&nbsp;</td>
584 </tr>
585 <tr>
586 <td><tt>Matteing</tt></td>
587 <td>32995</td>
588 <td>R</td>
589 <td>none (obsoleted by <tt>ExtraSamples</tt> tag)</td>
590 </tr>
591 <tr>
592 <td><tt>DataType</tt></td>
593 <td>32996</td>
594 <td>R</td>
595 <td>none (obsoleted by <tt>SampleFormat</tt> tag)</td>
596 </tr>
597 <tr>
598 <td><tt>ImageDepth</tt></td>
599 <td>32997</td>
600 <td>R/W</td>
601 <td>tile/strip calculations</td>
602 </tr>
603 <tr>
604 <td><tt>TileDepth</tt></td>
605 <td>32998</td>
606 <td>R/W</td>
607 <td>tile/strip calculations</td>
608 </tr>
609 <tr>
610 <td><tt>StoNits</tt></td>
611 <td>37439</td>
612 <td>R/W</td>
613 <td>&nbsp;</td>
614 </tr>
615 </table>
616 <p>
617 The <tt>Matteing</tt> and <tt>DataType</tt>
618 tags have been obsoleted by the 6.0
619 <tt>ExtraSamples</tt> and <tt>SampleFormat</tt> tags.
620 Consult the documentation on the
621 <tt>ExtraSamples</tt> tag and Associated Alpha for elaboration. Note however
622 that if you use Associated Alpha, you are expected to save data that is
623 pre-multipled by Alpha. If this means nothing to you, check out
624 Porter &amp; Duff's paper in the '84 SIGGRAPH proceedings: "Compositing Digital
625 Images".
626 </p>
627 <p>
628 The <tt>ImageDepth</tt>
629 tag is a non-standard, but registered tag that specifies
630 the Z-dimension of volumetric data. The combination of <tt>ImageWidth</tt>,
631 <tt>ImageLength</tt>, and <tt>ImageDepth</tt>,
632 defines a 3D volume of pixels that are
633 further specified by <tt>BitsPerSample</tt> and
634 <tt>SamplesPerPixel</tt>. The <tt>TileDepth</tt>
635 tag (also non-standard, but registered) can be used to specified a
636 subvolume "tiling" of a volume of data.
637 </p>
638 <p>
639 The Colorimetry, and CMYK tags are additions that appear in TIFF 6.0.
640 Consult the TIFF 6.0 specification included in the <b>doc</b> directory
641 and <a href="document.html">online</a>.
642 </p>
643 <p>
644 The JPEG-related tag is specified in
645 <a href="TIFFTechNote2.html">TIFF Technical Note #2</a> which defines
646 a revised JPEG-in-TIFF scheme (revised over that appendix that was
647 part of the TIFF 6.0 specification).
648 </p>
649 <hr>
650 <p>
651 Last updated: $Date: 2005/12/28 06:53:18 $
652 </p>
653 </body>
654 </html>
655