# PaCkAgE DaTaStReAm libtiff 1 14158 # end of header 07070100041323000081a40000000000000000000000014cc7a4520000010d0000010000010006ffffffffffffffff0000001000000000libtiff/pkginfoPKG=libtiff NAME=libtiff 3.9.4 SPARC 64bit Solaris 10 VERSION=3.9.4 PSTAMP=27th October 2010 VENDOR=The TIFF Project EMAIL=http://www.libtiff.org/ DESC=Tag Image File Format library ARCH=sparc CATEGORY=utility CLASSES=none BASEDIR=/ ISTATES=S s 1 2 3 RSTATES=S s 1 2 3 07070100041322000081a40000000000000000000000014cc7a452000059a60000010000010006ffffffffffffffff0000000f00000000libtiff/pkgmap: 1 14158 1 d none /usr ? ? ? 1 d none /usr/local ? ? ? 1 d none /usr/local/bin 0755 root root 1 f none /usr/local/bin/bmp2tiff 0755 root root 37296 64388 1288152098 1 f none /usr/local/bin/fax2ps 0755 root root 36960 40573 1288152098 1 f none /usr/local/bin/fax2tiff 0755 root root 39616 45002 1288152098 1 f none /usr/local/bin/gif2tiff 0755 root root 37632 44312 1288152099 1 f none /usr/local/bin/pal2rgb 0755 root root 30360 44820 1288152099 1 f none /usr/local/bin/ppm2tiff 0755 root root 28368 51761 1288152099 1 f none /usr/local/bin/ras2tiff 0755 root root 26320 14008 1288152099 1 f none /usr/local/bin/raw2tiff 0755 root root 40504 18046 1288152099 1 f none /usr/local/bin/rgb2ycbcr 0755 root root 38400 18917 1288152099 1 f none /usr/local/bin/thumbnail 0755 root root 41896 12592 1288152099 1 f none /usr/local/bin/tiff2bw 0755 root root 33192 46237 1288152099 1 f none /usr/local/bin/tiff2pdf 0755 root root 163488 60437 1288152099 1 f none /usr/local/bin/tiff2ps 0755 root root 101104 58581 1288152099 1 f none /usr/local/bin/tiff2rgba 0755 root root 38744 56168 1288152099 1 f none /usr/local/bin/tiffcmp 0755 root root 42480 25466 1288152100 1 f none /usr/local/bin/tiffcp 0755 root root 84520 27343 1288152100 1 f none /usr/local/bin/tiffcrop 0755 root root 260336 38397 1288152100 1 f none /usr/local/bin/tiffdither 0755 root root 27576 47893 1288152100 1 f none /usr/local/bin/tiffdump 0755 root root 43328 34052 1288152100 1 f none /usr/local/bin/tiffinfo 0755 root root 34640 16397 1288152100 1 f none /usr/local/bin/tiffmedian 0755 root root 44128 41061 1288152100 1 f none /usr/local/bin/tiffset 0755 root root 22432 8345 1288152100 1 f none /usr/local/bin/tiffsplit 0755 root root 25848 47941 1288152100 1 d none /usr/local/include 0755 root root 1 f none /usr/local/include/tiff.h 0644 root root 33813 5266 1288152098 1 f none /usr/local/include/tiffconf.h 0644 root root 2966 44579 1288152098 1 f none /usr/local/include/tiffio.h 0644 root root 20514 22204 1288152098 1 f none /usr/local/include/tiffio.hxx 0644 root root 1706 64443 1288152098 1 f none /usr/local/include/tiffvers.h 0644 root root 410 33983 1288152098 1 d none /usr/local/lib 0755 root root 1 f none /usr/local/lib/libtiff.a 0644 root root 1669096 29916 1288152097 1 f none /usr/local/lib/libtiff.la 0755 root root 981 20383 1288152097 1 s none /usr/local/lib/libtiff.so=libtiff.so.3.9.4 1 s none /usr/local/lib/libtiff.so.3=libtiff.so.3.9.4 1 f none /usr/local/lib/libtiff.so.3.9.4 0755 root root 1414744 11625 1288152097 1 f none /usr/local/lib/libtiffxx.a 0644 root root 175688 40397 1288152098 1 f none /usr/local/lib/libtiffxx.la 0755 root root 1021 24450 1288152097 1 s none /usr/local/lib/libtiffxx.so=libtiffxx.so.3.9.4 1 s none /usr/local/lib/libtiffxx.so.3=libtiffxx.so.3.9.4 1 f none /usr/local/lib/libtiffxx.so.3.9.4 0755 root root 179184 46875 1288152097 1 d none /usr/local/share 0755 root root 1 d none /usr/local/share/doc 0755 root root 1 d none /usr/local/share/doc/tiff-3.9.4 0755 root root 1 f none /usr/local/share/doc/tiff-3.9.4/COPYRIGHT 0644 root root 1146 24878 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/ChangeLog 0644 root root 156929 50359 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/README 0644 root root 2363 64378 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/README.vms 0644 root root 415 36486 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/RELEASE-DATE 0644 root root 9 409 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/TODO 0644 root root 433 38408 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/VERSION 0644 root root 6 262 1288152103 1 d none /usr/local/share/doc/tiff-3.9.4/html 0755 root root 1 f none /usr/local/share/doc/tiff-3.9.4/html/TIFFTechNote2.html 0644 root root 35698 56351 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/addingtags.html 0644 root root 11806 17920 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/bugs.html 0644 root root 2646 36227 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/build.html 0644 root root 41097 43214 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/contrib.html 0644 root root 3739 44622 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/document.html 0644 root root 1473 58624 1288152102 1 d none /usr/local/share/doc/tiff-3.9.4/html/images 0755 root root 1 f none /usr/local/share/doc/tiff-3.9.4/html/images.html 0644 root root 1088 25842 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/back.gif 0644 root root 1000 57523 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/bali.jpg 0644 root root 26152 3841 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/cat.gif 0644 root root 12477 46529 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/cover.jpg 0644 root root 20189 54187 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/cramps.gif 0644 root root 13137 65025 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/dave.gif 0644 root root 8220 9830 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/info.gif 0644 root root 131 13254 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/jello.jpg 0644 root root 13744 44108 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/jim.gif 0644 root root 14493 34382 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/note.gif 0644 root root 264 27579 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/oxford.gif 0644 root root 6069 19540 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/quad.jpg 0644 root root 23904 9714 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/ring.gif 0644 root root 4275 6539 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/smallliz.jpg 0644 root root 16463 56666 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/strike.gif 0644 root root 5610 63212 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/warning.gif 0644 root root 287 33837 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/index.html 0644 root root 5180 34963 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/internals.html 0644 root root 19236 61140 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/intro.html 0644 root root 2394 14686 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/libtiff.html 0644 root root 37433 3865 1288152102 1 d none /usr/local/share/doc/tiff-3.9.4/html/man 0755 root root 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFClose.3tiff.html 0644 root root 2479 61577 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFDataWidth.3tiff.html 0644 root root 2556 440 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFError.3tiff.html 0644 root root 3247 61796 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFFlush.3tiff.html 0644 root root 3345 1018 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFGetField.3tiff.html 0644 root root 22715 62683 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFOpen.3tiff.html 0644 root root 13700 30818 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFPrintDirectory.3tiff.html 0644 root root 4733 29907 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFRGBAImage.3tiff.html 0644 root root 12310 32199 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadDirectory.3tiff.html 0644 root root 8102 20699 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadEncodedStrip.3tiff.html 0644 root root 4299 16714 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadEncodedTile.3tiff.html 0644 root root 4133 2512 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadRGBAImage.3tiff.html 0644 root root 10482 57113 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadRGBAStrip.3tiff.html 0644 root root 7481 15979 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadRGBATile.3tiff.html 0644 root root 8477 23837 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadRawStrip.3tiff.html 0644 root root 3340 1622 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadRawTile.3tiff.html 0644 root root 3425 8760 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadScanline.3tiff.html 0644 root root 5257 33842 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadTile.3tiff.html 0644 root root 4278 13474 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFSetDirectory.3tiff.html 0644 root root 3828 44745 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFSetField.3tiff.html 0644 root root 20661 40654 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFWarning.3tiff.html 0644 root root 3354 5179 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFWriteDirectory.3tiff.html 0644 root root 6486 20142 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFWriteEncodedStrip.3tiff.html 0644 root root 5093 17835 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFWriteEncodedTile.3tiff.html 0644 root root 4894 65501 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFWriteRawStrip.3tiff.html 0644 root root 4511 30922 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFWriteRawTile.3tiff.html 0644 root root 3978 52553 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFWriteScanline.3tiff.html 0644 root root 7387 21847 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFWriteTile.3tiff.html 0644 root root 3638 24702 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFbuffer.3tiff.html 0644 root root 3880 56067 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFcodec.3tiff.html 0644 root root 3700 36379 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFcolor.3tiff.html 0644 root root 22763 38401 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFmemory.3tiff.html 0644 root root 3569 24358 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFquery.3tiff.html 0644 root root 5166 26855 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFsize.3tiff.html 0644 root root 2748 18773 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFstrip.3tiff.html 0644 root root 4356 27631 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFswab.3tiff.html 0644 root root 3492 16799 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFtile.3tiff.html 0644 root root 5014 12559 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/fax2ps.1.html 0644 root root 7741 41792 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/fax2tiff.1.html 0644 root root 14713 2891 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/gif2tiff.1.html 0644 root root 3893 45303 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/index.html 0644 root root 3790 56530 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/libtiff.3tiff.html 0644 root root 63263 20543 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/pal2rgb.1.html 0644 root root 5244 27845 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/ppm2tiff.1.html 0644 root root 3979 55617 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/ras2tiff.1.html 0644 root root 4056 63601 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/raw2tiff.1.html 0644 root root 12746 22952 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/rgb2ycbcr.1.html 0644 root root 4242 13893 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/sgi2tiff.1.html 0644 root root 4036 61106 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/thumbnail.1.html 0644 root root 4068 62287 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiff2bw.1.html 0644 root root 4057 58373 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiff2pdf.1.html 0644 root root 17942 52087 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiff2ps.1.html 0644 root root 13074 2584 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiff2rgba.1.html 0644 root root 4588 46235 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiffcmp.1.html 0644 root root 4401 21333 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiffcp.1.html 0644 root root 15340 7618 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiffcrop.1.html 0644 root root 25157 19307 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiffdither.1.html 0644 root root 5556 57851 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiffdump.1.html 0644 root root 4416 26025 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiffgt.1.html 0644 root root 12753 40239 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiffinfo.1.html 0644 root root 4454 22654 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiffmedian.1.html 0644 root root 5154 21562 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiffset.1.html 0644 root root 4920 53929 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiffsplit.1.html 0644 root root 2927 32702 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiffsv.1.html 0644 root root 6184 44851 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/misc.html 0644 root root 3830 47522 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/support.html 0644 root root 17694 38207 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/tools.html 0644 root root 6753 54513 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.4beta007.html 0644 root root 3895 57824 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.4beta016.html 0644 root root 4023 63698 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.4beta018.html 0644 root root 2647 16657 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.4beta024.html 0644 root root 5338 48930 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.4beta028.html 0644 root root 5982 38739 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.4beta029.html 0644 root root 2769 27191 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.4beta031.html 0644 root root 3325 11457 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.4beta032.html 0644 root root 2694 14206 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.4beta033.html 0644 root root 2288 45574 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.4beta034.html 0644 root root 2161 40628 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.4beta035.html 0644 root root 1792 9316 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.4beta036.html 0644 root root 4567 53581 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.5.1.html 0644 root root 2171 39739 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.5.2.html 0644 root root 3273 63078 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.5.3.html 0644 root root 4259 27015 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.5.4.html 0644 root root 2376 56403 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.5.5.html 0644 root root 4999 8041 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.5.6-beta.html 0644 root root 6106 47933 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.5.7.html 0644 root root 10028 52126 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.6.0.html 0644 root root 16785 42163 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.6.1.html 0644 root root 6825 30061 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.7.0.html 0644 root root 4160 54053 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.7.0alpha.html 0644 root root 9100 30351 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.7.0beta.html 0644 root root 4962 59595 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.7.0beta2.html 0644 root root 3621 6707 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.7.1.html 0644 root root 8197 21401 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.7.2.html 0644 root root 8026 6653 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.7.3.html 0644 root root 8255 25576 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.7.4.html 0644 root root 4265 6050 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.8.0.html 0644 root root 6832 36599 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.8.1.html 0644 root root 8059 7619 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.8.2.html 0644 root root 4290 6716 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.9.0beta.html 0644 root root 11721 1774 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.9.1.html 0644 root root 3195 41873 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.9.2.html 0644 root root 3398 54382 1288152103 1 d none /usr/local/share/man 0755 root root 1 d none /usr/local/share/man/man1 0755 root root 1 f none /usr/local/share/man/man1/bmp2tiff.1 0644 root root 2765 26159 1288152102 1 f none /usr/local/share/man/man1/fax2ps.1 0644 root root 4731 4915 1288152102 1 f none /usr/local/share/man/man1/fax2tiff.1 0644 root root 7963 11955 1288152102 1 f none /usr/local/share/man/man1/gif2tiff.1 0644 root root 2609 12059 1288152102 1 f none /usr/local/share/man/man1/pal2rgb.1 0644 root root 3311 9543 1288152102 1 f none /usr/local/share/man/man1/ppm2tiff.1 0644 root root 2970 42210 1288152102 1 f none /usr/local/share/man/man1/ras2tiff.1 0644 root root 3009 47720 1288152102 1 f none /usr/local/share/man/man1/raw2tiff.1 0644 root root 5442 60207 1288152102 1 f none /usr/local/share/man/man1/rgb2ycbcr.1 0644 root root 3148 60612 1288152102 1 f none /usr/local/share/man/man1/sgi2tiff.1 0644 root root 2839 33261 1288152102 1 f none /usr/local/share/man/man1/thumbnail.1 0644 root root 2904 39846 1288152102 1 f none /usr/local/share/man/man1/tiff2bw.1 0644 root root 2810 27410 1288152102 1 f none /usr/local/share/man/man1/tiff2pdf.1 0644 root root 7042 65516 1288152102 1 f none /usr/local/share/man/man1/tiff2ps.1 0644 root root 6995 60316 1288152102 1 f none /usr/local/share/man/man1/tiff2rgba.1 0644 root root 3498 28297 1288152102 1 f none /usr/local/share/man/man1/tiffcmp.1 0644 root root 2839 34220 1288152102 1 f none /usr/local/share/man/man1/tiffcp.1 0644 root root 8243 47887 1288152102 1 f none /usr/local/share/man/man1/tiffcrop.1 0644 root root 22690 35422 1288152102 1 f none /usr/local/share/man/man1/tiffdither.1 0644 root root 3835 54002 1288152102 1 f none /usr/local/share/man/man1/tiffdump.1 0644 root root 2855 35063 1288152102 1 f none /usr/local/share/man/man1/tiffgt.1 0644 root root 6686 41775 1288152102 1 f none /usr/local/share/man/man1/tiffinfo.1 0644 root root 2723 21938 1288152102 1 f none /usr/local/share/man/man1/tiffmedian.1 0644 root root 3386 16479 1288152102 1 f none /usr/local/share/man/man1/tiffset.1 0644 root root 2450 60347 1288152102 1 f none /usr/local/share/man/man1/tiffsplit.1 0644 root root 2161 38730 1288152102 1 f none /usr/local/share/man/man1/tiffsv.1 0644 root root 4143 17534 1288152102 1 d none /usr/local/share/man/man3 0755 root root 1 f none /usr/local/share/man/man3/TIFFClose.3tiff 0644 root root 2033 27842 1288152102 1 f none /usr/local/share/man/man3/TIFFDataWidth.3tiff 0644 root root 2105 30792 1288152102 1 f none /usr/local/share/man/man3/TIFFError.3tiff 0644 root root 2632 14991 1288152102 1 f none /usr/local/share/man/man3/TIFFFlush.3tiff 0644 root root 2532 4707 1288152102 1 f none /usr/local/share/man/man3/TIFFGetField.3tiff 0644 root root 7886 32085 1288152102 1 f none /usr/local/share/man/man3/TIFFOpen.3tiff 0644 root root 9625 36273 1288152102 1 f none /usr/local/share/man/man3/TIFFPrintDirectory.3tiff 0644 root root 2560 65446 1288152102 1 f none /usr/local/share/man/man3/TIFFRGBAImage.3tiff 0644 root root 9301 64164 1288152102 1 f none /usr/local/share/man/man3/TIFFReadDirectory.3tiff 0644 root root 6175 5586 1288152102 1 f none /usr/local/share/man/man3/TIFFReadEncodedStrip.3tiff 0644 root root 3051 52180 1288152102 1 f none /usr/local/share/man/man3/TIFFReadEncodedTile.3tiff 0644 root root 2992 46578 1288152102 1 f none /usr/local/share/man/man3/TIFFReadRGBAImage.3tiff 0644 root root 6705 31066 1288152102 1 f none /usr/local/share/man/man3/TIFFReadRGBAStrip.3tiff 0644 root root 5801 19331 1288152102 1 f none /usr/local/share/man/man3/TIFFReadRGBATile.3tiff 0644 root root 5834 20941 1288152102 1 f none /usr/local/share/man/man3/TIFFReadRawStrip.3tiff 0644 root root 2505 2872 1288152102 1 f none /usr/local/share/man/man3/TIFFReadRawTile.3tiff 0644 root root 2586 9682 1288152102 1 f none /usr/local/share/man/man3/TIFFReadScanline.3tiff 0644 root root 3837 57426 1288152102 1 f none /usr/local/share/man/man3/TIFFReadTile.3tiff 0644 root root 3148 57957 1288152102 1 f none /usr/local/share/man/man3/TIFFSetDirectory.3tiff 0644 root root 2888 37427 1288152102 1 f none /usr/local/share/man/man3/TIFFSetField.3tiff 0644 root root 7167 43320 1288152102 1 f none /usr/local/share/man/man3/TIFFWarning.3tiff 0644 root root 2699 21233 1288152102 1 f none /usr/local/share/man/man3/TIFFWriteDirectory.3tiff 0644 root root 5368 561 1288152102 1 f none /usr/local/share/man/man3/TIFFWriteEncodedStrip.3tiff 0644 root root 3609 35582 1288152102 1 f none /usr/local/share/man/man3/TIFFWriteEncodedTile.3tiff 0644 root root 3454 20958 1288152102 1 f none /usr/local/share/man/man3/TIFFWriteRawStrip.3tiff 0644 root root 3226 65525 1288152102 1 f none /usr/local/share/man/man3/TIFFWriteRawTile.3tiff 0644 root root 2981 43508 1288152102 1 f none /usr/local/share/man/man3/TIFFWriteScanline.3tiff 0644 root root 5656 21649 1288152102 1 f none /usr/local/share/man/man3/TIFFWriteTile.3tiff 0644 root root 2781 23969 1288152102 1 f none /usr/local/share/man/man3/TIFFbuffer.3tiff 0644 root root 3260 8081 1288152102 1 f none /usr/local/share/man/man3/TIFFcodec.3tiff 0644 root root 3088 54852 1288152102 1 f none /usr/local/share/man/man3/TIFFcolor.3tiff 0644 root root 7881 21169 1288152102 1 f none /usr/local/share/man/man3/TIFFmemory.3tiff 0644 root root 2944 39927 1288152102 1 f none /usr/local/share/man/man3/TIFFquery.3tiff 0644 root root 4343 26745 1288152102 1 f none /usr/local/share/man/man3/TIFFsize.3tiff 0644 root root 2241 45953 1288152102 1 f none /usr/local/share/man/man3/TIFFstrip.3tiff 0644 root root 3655 38831 1288152102 1 f none /usr/local/share/man/man3/TIFFswab.3tiff 0644 root root 2917 37434 1288152102 1 f none /usr/local/share/man/man3/TIFFtile.3tiff 0644 root root 4171 11010 1288152102 1 f none /usr/local/share/man/man3/libtiff.3tiff 0644 root root 18342 60809 1288152102 1 i checkinstall 785 2565 1288152145 1 i pkginfo 269 20597 1288152146 07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!07070100041323000081a40000000000000000000000014cc7a4520000010d0000010000010006ffffffffffffffff0000000800000000pkginfoPKG=libtiff NAME=libtiff 3.9.4 SPARC 64bit Solaris 10 VERSION=3.9.4 PSTAMP=27th October 2010 VENDOR=The TIFF Project EMAIL=http://www.libtiff.org/ DESC=Tag Image File Format library ARCH=sparc CATEGORY=utility CLASSES=none BASEDIR=/ ISTATES=S s 1 2 3 RSTATES=S s 1 2 3 07070100041322000081a40000000000000000000000014cc7a452000059a60000010000010006ffffffffffffffff0000000700000000pkgmap: 1 14158 1 d none /usr ? ? ? 1 d none /usr/local ? ? ? 1 d none /usr/local/bin 0755 root root 1 f none /usr/local/bin/bmp2tiff 0755 root root 37296 64388 1288152098 1 f none /usr/local/bin/fax2ps 0755 root root 36960 40573 1288152098 1 f none /usr/local/bin/fax2tiff 0755 root root 39616 45002 1288152098 1 f none /usr/local/bin/gif2tiff 0755 root root 37632 44312 1288152099 1 f none /usr/local/bin/pal2rgb 0755 root root 30360 44820 1288152099 1 f none /usr/local/bin/ppm2tiff 0755 root root 28368 51761 1288152099 1 f none /usr/local/bin/ras2tiff 0755 root root 26320 14008 1288152099 1 f none /usr/local/bin/raw2tiff 0755 root root 40504 18046 1288152099 1 f none /usr/local/bin/rgb2ycbcr 0755 root root 38400 18917 1288152099 1 f none /usr/local/bin/thumbnail 0755 root root 41896 12592 1288152099 1 f none /usr/local/bin/tiff2bw 0755 root root 33192 46237 1288152099 1 f none /usr/local/bin/tiff2pdf 0755 root root 163488 60437 1288152099 1 f none /usr/local/bin/tiff2ps 0755 root root 101104 58581 1288152099 1 f none /usr/local/bin/tiff2rgba 0755 root root 38744 56168 1288152099 1 f none /usr/local/bin/tiffcmp 0755 root root 42480 25466 1288152100 1 f none /usr/local/bin/tiffcp 0755 root root 84520 27343 1288152100 1 f none /usr/local/bin/tiffcrop 0755 root root 260336 38397 1288152100 1 f none /usr/local/bin/tiffdither 0755 root root 27576 47893 1288152100 1 f none /usr/local/bin/tiffdump 0755 root root 43328 34052 1288152100 1 f none /usr/local/bin/tiffinfo 0755 root root 34640 16397 1288152100 1 f none /usr/local/bin/tiffmedian 0755 root root 44128 41061 1288152100 1 f none /usr/local/bin/tiffset 0755 root root 22432 8345 1288152100 1 f none /usr/local/bin/tiffsplit 0755 root root 25848 47941 1288152100 1 d none /usr/local/include 0755 root root 1 f none /usr/local/include/tiff.h 0644 root root 33813 5266 1288152098 1 f none /usr/local/include/tiffconf.h 0644 root root 2966 44579 1288152098 1 f none /usr/local/include/tiffio.h 0644 root root 20514 22204 1288152098 1 f none /usr/local/include/tiffio.hxx 0644 root root 1706 64443 1288152098 1 f none /usr/local/include/tiffvers.h 0644 root root 410 33983 1288152098 1 d none /usr/local/lib 0755 root root 1 f none /usr/local/lib/libtiff.a 0644 root root 1669096 29916 1288152097 1 f none /usr/local/lib/libtiff.la 0755 root root 981 20383 1288152097 1 s none /usr/local/lib/libtiff.so=libtiff.so.3.9.4 1 s none /usr/local/lib/libtiff.so.3=libtiff.so.3.9.4 1 f none /usr/local/lib/libtiff.so.3.9.4 0755 root root 1414744 11625 1288152097 1 f none /usr/local/lib/libtiffxx.a 0644 root root 175688 40397 1288152098 1 f none /usr/local/lib/libtiffxx.la 0755 root root 1021 24450 1288152097 1 s none /usr/local/lib/libtiffxx.so=libtiffxx.so.3.9.4 1 s none /usr/local/lib/libtiffxx.so.3=libtiffxx.so.3.9.4 1 f none /usr/local/lib/libtiffxx.so.3.9.4 0755 root root 179184 46875 1288152097 1 d none /usr/local/share 0755 root root 1 d none /usr/local/share/doc 0755 root root 1 d none /usr/local/share/doc/tiff-3.9.4 0755 root root 1 f none /usr/local/share/doc/tiff-3.9.4/COPYRIGHT 0644 root root 1146 24878 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/ChangeLog 0644 root root 156929 50359 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/README 0644 root root 2363 64378 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/README.vms 0644 root root 415 36486 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/RELEASE-DATE 0644 root root 9 409 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/TODO 0644 root root 433 38408 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/VERSION 0644 root root 6 262 1288152103 1 d none /usr/local/share/doc/tiff-3.9.4/html 0755 root root 1 f none /usr/local/share/doc/tiff-3.9.4/html/TIFFTechNote2.html 0644 root root 35698 56351 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/addingtags.html 0644 root root 11806 17920 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/bugs.html 0644 root root 2646 36227 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/build.html 0644 root root 41097 43214 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/contrib.html 0644 root root 3739 44622 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/document.html 0644 root root 1473 58624 1288152102 1 d none /usr/local/share/doc/tiff-3.9.4/html/images 0755 root root 1 f none /usr/local/share/doc/tiff-3.9.4/html/images.html 0644 root root 1088 25842 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/back.gif 0644 root root 1000 57523 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/bali.jpg 0644 root root 26152 3841 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/cat.gif 0644 root root 12477 46529 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/cover.jpg 0644 root root 20189 54187 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/cramps.gif 0644 root root 13137 65025 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/dave.gif 0644 root root 8220 9830 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/info.gif 0644 root root 131 13254 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/jello.jpg 0644 root root 13744 44108 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/jim.gif 0644 root root 14493 34382 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/note.gif 0644 root root 264 27579 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/oxford.gif 0644 root root 6069 19540 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/quad.jpg 0644 root root 23904 9714 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/ring.gif 0644 root root 4275 6539 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/smallliz.jpg 0644 root root 16463 56666 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/strike.gif 0644 root root 5610 63212 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/images/warning.gif 0644 root root 287 33837 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/index.html 0644 root root 5180 34963 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/internals.html 0644 root root 19236 61140 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/intro.html 0644 root root 2394 14686 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/libtiff.html 0644 root root 37433 3865 1288152102 1 d none /usr/local/share/doc/tiff-3.9.4/html/man 0755 root root 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFClose.3tiff.html 0644 root root 2479 61577 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFDataWidth.3tiff.html 0644 root root 2556 440 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFError.3tiff.html 0644 root root 3247 61796 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFFlush.3tiff.html 0644 root root 3345 1018 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFGetField.3tiff.html 0644 root root 22715 62683 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFOpen.3tiff.html 0644 root root 13700 30818 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFPrintDirectory.3tiff.html 0644 root root 4733 29907 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFRGBAImage.3tiff.html 0644 root root 12310 32199 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadDirectory.3tiff.html 0644 root root 8102 20699 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadEncodedStrip.3tiff.html 0644 root root 4299 16714 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadEncodedTile.3tiff.html 0644 root root 4133 2512 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadRGBAImage.3tiff.html 0644 root root 10482 57113 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadRGBAStrip.3tiff.html 0644 root root 7481 15979 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadRGBATile.3tiff.html 0644 root root 8477 23837 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadRawStrip.3tiff.html 0644 root root 3340 1622 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadRawTile.3tiff.html 0644 root root 3425 8760 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadScanline.3tiff.html 0644 root root 5257 33842 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadTile.3tiff.html 0644 root root 4278 13474 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFSetDirectory.3tiff.html 0644 root root 3828 44745 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFSetField.3tiff.html 0644 root root 20661 40654 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFWarning.3tiff.html 0644 root root 3354 5179 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFWriteDirectory.3tiff.html 0644 root root 6486 20142 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFWriteEncodedStrip.3tiff.html 0644 root root 5093 17835 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFWriteEncodedTile.3tiff.html 0644 root root 4894 65501 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFWriteRawStrip.3tiff.html 0644 root root 4511 30922 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFWriteRawTile.3tiff.html 0644 root root 3978 52553 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFWriteScanline.3tiff.html 0644 root root 7387 21847 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFWriteTile.3tiff.html 0644 root root 3638 24702 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFbuffer.3tiff.html 0644 root root 3880 56067 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFcodec.3tiff.html 0644 root root 3700 36379 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFcolor.3tiff.html 0644 root root 22763 38401 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFmemory.3tiff.html 0644 root root 3569 24358 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFquery.3tiff.html 0644 root root 5166 26855 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFsize.3tiff.html 0644 root root 2748 18773 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFstrip.3tiff.html 0644 root root 4356 27631 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFswab.3tiff.html 0644 root root 3492 16799 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/TIFFtile.3tiff.html 0644 root root 5014 12559 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/fax2ps.1.html 0644 root root 7741 41792 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/fax2tiff.1.html 0644 root root 14713 2891 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/gif2tiff.1.html 0644 root root 3893 45303 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/index.html 0644 root root 3790 56530 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/libtiff.3tiff.html 0644 root root 63263 20543 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/pal2rgb.1.html 0644 root root 5244 27845 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/ppm2tiff.1.html 0644 root root 3979 55617 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/ras2tiff.1.html 0644 root root 4056 63601 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/raw2tiff.1.html 0644 root root 12746 22952 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/rgb2ycbcr.1.html 0644 root root 4242 13893 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/sgi2tiff.1.html 0644 root root 4036 61106 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/thumbnail.1.html 0644 root root 4068 62287 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiff2bw.1.html 0644 root root 4057 58373 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiff2pdf.1.html 0644 root root 17942 52087 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiff2ps.1.html 0644 root root 13074 2584 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiff2rgba.1.html 0644 root root 4588 46235 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiffcmp.1.html 0644 root root 4401 21333 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiffcp.1.html 0644 root root 15340 7618 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiffcrop.1.html 0644 root root 25157 19307 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiffdither.1.html 0644 root root 5556 57851 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiffdump.1.html 0644 root root 4416 26025 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiffgt.1.html 0644 root root 12753 40239 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiffinfo.1.html 0644 root root 4454 22654 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiffmedian.1.html 0644 root root 5154 21562 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiffset.1.html 0644 root root 4920 53929 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiffsplit.1.html 0644 root root 2927 32702 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/man/tiffsv.1.html 0644 root root 6184 44851 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/misc.html 0644 root root 3830 47522 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/support.html 0644 root root 17694 38207 1288152102 1 f none /usr/local/share/doc/tiff-3.9.4/html/tools.html 0644 root root 6753 54513 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.4beta007.html 0644 root root 3895 57824 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.4beta016.html 0644 root root 4023 63698 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.4beta018.html 0644 root root 2647 16657 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.4beta024.html 0644 root root 5338 48930 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.4beta028.html 0644 root root 5982 38739 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.4beta029.html 0644 root root 2769 27191 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.4beta031.html 0644 root root 3325 11457 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.4beta032.html 0644 root root 2694 14206 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.4beta033.html 0644 root root 2288 45574 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.4beta034.html 0644 root root 2161 40628 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.4beta035.html 0644 root root 1792 9316 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.4beta036.html 0644 root root 4567 53581 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.5.1.html 0644 root root 2171 39739 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.5.2.html 0644 root root 3273 63078 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.5.3.html 0644 root root 4259 27015 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.5.4.html 0644 root root 2376 56403 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.5.5.html 0644 root root 4999 8041 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.5.6-beta.html 0644 root root 6106 47933 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.5.7.html 0644 root root 10028 52126 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.6.0.html 0644 root root 16785 42163 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.6.1.html 0644 root root 6825 30061 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.7.0.html 0644 root root 4160 54053 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.7.0alpha.html 0644 root root 9100 30351 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.7.0beta.html 0644 root root 4962 59595 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.7.0beta2.html 0644 root root 3621 6707 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.7.1.html 0644 root root 8197 21401 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.7.2.html 0644 root root 8026 6653 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.7.3.html 0644 root root 8255 25576 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.7.4.html 0644 root root 4265 6050 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.8.0.html 0644 root root 6832 36599 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.8.1.html 0644 root root 8059 7619 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.8.2.html 0644 root root 4290 6716 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.9.0beta.html 0644 root root 11721 1774 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.9.1.html 0644 root root 3195 41873 1288152103 1 f none /usr/local/share/doc/tiff-3.9.4/html/v3.9.2.html 0644 root root 3398 54382 1288152103 1 d none /usr/local/share/man 0755 root root 1 d none /usr/local/share/man/man1 0755 root root 1 f none /usr/local/share/man/man1/bmp2tiff.1 0644 root root 2765 26159 1288152102 1 f none /usr/local/share/man/man1/fax2ps.1 0644 root root 4731 4915 1288152102 1 f none /usr/local/share/man/man1/fax2tiff.1 0644 root root 7963 11955 1288152102 1 f none /usr/local/share/man/man1/gif2tiff.1 0644 root root 2609 12059 1288152102 1 f none /usr/local/share/man/man1/pal2rgb.1 0644 root root 3311 9543 1288152102 1 f none /usr/local/share/man/man1/ppm2tiff.1 0644 root root 2970 42210 1288152102 1 f none /usr/local/share/man/man1/ras2tiff.1 0644 root root 3009 47720 1288152102 1 f none /usr/local/share/man/man1/raw2tiff.1 0644 root root 5442 60207 1288152102 1 f none /usr/local/share/man/man1/rgb2ycbcr.1 0644 root root 3148 60612 1288152102 1 f none /usr/local/share/man/man1/sgi2tiff.1 0644 root root 2839 33261 1288152102 1 f none /usr/local/share/man/man1/thumbnail.1 0644 root root 2904 39846 1288152102 1 f none /usr/local/share/man/man1/tiff2bw.1 0644 root root 2810 27410 1288152102 1 f none /usr/local/share/man/man1/tiff2pdf.1 0644 root root 7042 65516 1288152102 1 f none /usr/local/share/man/man1/tiff2ps.1 0644 root root 6995 60316 1288152102 1 f none /usr/local/share/man/man1/tiff2rgba.1 0644 root root 3498 28297 1288152102 1 f none /usr/local/share/man/man1/tiffcmp.1 0644 root root 2839 34220 1288152102 1 f none /usr/local/share/man/man1/tiffcp.1 0644 root root 8243 47887 1288152102 1 f none /usr/local/share/man/man1/tiffcrop.1 0644 root root 22690 35422 1288152102 1 f none /usr/local/share/man/man1/tiffdither.1 0644 root root 3835 54002 1288152102 1 f none /usr/local/share/man/man1/tiffdump.1 0644 root root 2855 35063 1288152102 1 f none /usr/local/share/man/man1/tiffgt.1 0644 root root 6686 41775 1288152102 1 f none /usr/local/share/man/man1/tiffinfo.1 0644 root root 2723 21938 1288152102 1 f none /usr/local/share/man/man1/tiffmedian.1 0644 root root 3386 16479 1288152102 1 f none /usr/local/share/man/man1/tiffset.1 0644 root root 2450 60347 1288152102 1 f none /usr/local/share/man/man1/tiffsplit.1 0644 root root 2161 38730 1288152102 1 f none /usr/local/share/man/man1/tiffsv.1 0644 root root 4143 17534 1288152102 1 d none /usr/local/share/man/man3 0755 root root 1 f none /usr/local/share/man/man3/TIFFClose.3tiff 0644 root root 2033 27842 1288152102 1 f none /usr/local/share/man/man3/TIFFDataWidth.3tiff 0644 root root 2105 30792 1288152102 1 f none /usr/local/share/man/man3/TIFFError.3tiff 0644 root root 2632 14991 1288152102 1 f none /usr/local/share/man/man3/TIFFFlush.3tiff 0644 root root 2532 4707 1288152102 1 f none /usr/local/share/man/man3/TIFFGetField.3tiff 0644 root root 7886 32085 1288152102 1 f none /usr/local/share/man/man3/TIFFOpen.3tiff 0644 root root 9625 36273 1288152102 1 f none /usr/local/share/man/man3/TIFFPrintDirectory.3tiff 0644 root root 2560 65446 1288152102 1 f none /usr/local/share/man/man3/TIFFRGBAImage.3tiff 0644 root root 9301 64164 1288152102 1 f none /usr/local/share/man/man3/TIFFReadDirectory.3tiff 0644 root root 6175 5586 1288152102 1 f none /usr/local/share/man/man3/TIFFReadEncodedStrip.3tiff 0644 root root 3051 52180 1288152102 1 f none /usr/local/share/man/man3/TIFFReadEncodedTile.3tiff 0644 root root 2992 46578 1288152102 1 f none /usr/local/share/man/man3/TIFFReadRGBAImage.3tiff 0644 root root 6705 31066 1288152102 1 f none /usr/local/share/man/man3/TIFFReadRGBAStrip.3tiff 0644 root root 5801 19331 1288152102 1 f none /usr/local/share/man/man3/TIFFReadRGBATile.3tiff 0644 root root 5834 20941 1288152102 1 f none /usr/local/share/man/man3/TIFFReadRawStrip.3tiff 0644 root root 2505 2872 1288152102 1 f none /usr/local/share/man/man3/TIFFReadRawTile.3tiff 0644 root root 2586 9682 1288152102 1 f none /usr/local/share/man/man3/TIFFReadScanline.3tiff 0644 root root 3837 57426 1288152102 1 f none /usr/local/share/man/man3/TIFFReadTile.3tiff 0644 root root 3148 57957 1288152102 1 f none /usr/local/share/man/man3/TIFFSetDirectory.3tiff 0644 root root 2888 37427 1288152102 1 f none /usr/local/share/man/man3/TIFFSetField.3tiff 0644 root root 7167 43320 1288152102 1 f none /usr/local/share/man/man3/TIFFWarning.3tiff 0644 root root 2699 21233 1288152102 1 f none /usr/local/share/man/man3/TIFFWriteDirectory.3tiff 0644 root root 5368 561 1288152102 1 f none /usr/local/share/man/man3/TIFFWriteEncodedStrip.3tiff 0644 root root 3609 35582 1288152102 1 f none /usr/local/share/man/man3/TIFFWriteEncodedTile.3tiff 0644 root root 3454 20958 1288152102 1 f none /usr/local/share/man/man3/TIFFWriteRawStrip.3tiff 0644 root root 3226 65525 1288152102 1 f none /usr/local/share/man/man3/TIFFWriteRawTile.3tiff 0644 root root 2981 43508 1288152102 1 f none /usr/local/share/man/man3/TIFFWriteScanline.3tiff 0644 root root 5656 21649 1288152102 1 f none /usr/local/share/man/man3/TIFFWriteTile.3tiff 0644 root root 2781 23969 1288152102 1 f none /usr/local/share/man/man3/TIFFbuffer.3tiff 0644 root root 3260 8081 1288152102 1 f none /usr/local/share/man/man3/TIFFcodec.3tiff 0644 root root 3088 54852 1288152102 1 f none /usr/local/share/man/man3/TIFFcolor.3tiff 0644 root root 7881 21169 1288152102 1 f none /usr/local/share/man/man3/TIFFmemory.3tiff 0644 root root 2944 39927 1288152102 1 f none /usr/local/share/man/man3/TIFFquery.3tiff 0644 root root 4343 26745 1288152102 1 f none /usr/local/share/man/man3/TIFFsize.3tiff 0644 root root 2241 45953 1288152102 1 f none /usr/local/share/man/man3/TIFFstrip.3tiff 0644 root root 3655 38831 1288152102 1 f none /usr/local/share/man/man3/TIFFswab.3tiff 0644 root root 2917 37434 1288152102 1 f none /usr/local/share/man/man3/TIFFtile.3tiff 0644 root root 4171 11010 1288152102 1 f none /usr/local/share/man/man3/libtiff.3tiff 0644 root root 18342 60809 1288152102 1 i checkinstall 785 2565 1288152145 1 i pkginfo 269 20597 1288152146 0707010004142a000041ed0000000000000000000000024cc7a452000000000000010000010006ffffffffffffffff0000000800000000install0707010004142b000081ed0000000000000000000000014cc7a451000003110000010000010006ffffffffffffffff0000001500000000install/checkinstall#!/bin/sh # expected_bits="64" expected_release="5.10" expected_platform="sparc" # release=`uname -r` platform=`uname -p` bits=`isainfo -b` # if [ ${platform} != ${expected_platform} ]; then echo "\n\n\n\tThis package must be installed on a ${expected_platform} architecture\n" echo "\tAborting installation.\n\n\n" exit 1 fi if [ ${release} != ${expected_release} ]; then echo "\n\n\n\tThis package must be installed on a ${expected_release} machine\n" echo "\tAborting installation.\n\n\n" exit 1 fi if [ ${bits} != ${expected_bits} ]; then echo "\n\n\n\tThis package must be installed on a ${expected_bits} bit machine\n" echo "\tYour machine is running a ${bits} bit O.S. currently\n" echo "\tAborting installation.\n\n\n" exit 1 fi exit 0 07070100041324000041ed0000000000000000000000034cc7a452000000000000010000010006ffffffffffffffff0000000500000000root07070100041326000041ed0000000000000000000000034cc7a452000000000000010000010006ffffffffffffffff0000000900000000root/usr07070100041327000041ed0000000000000000000000064cc7a452000000000000010000010006ffffffffffffffff0000000f00000000root/usr/local0707010004134e000041ed0000000000000000000000044cc7a452000000000000010000010006ffffffffffffffff0000001500000000root/usr/local/share0707010004134f000041ed0000000000000000000000034cc7a452000000000000010000010006ffffffffffffffff0000001900000000root/usr/local/share/doc07070100041350000041ed0000000000000000000000034cc7a452000000000000010000010006ffffffffffffffff0000002400000000root/usr/local/share/doc/tiff-3.9.407070100041355000081a40000000000000000000000014cc7a427000000090000010000010006ffffffffffffffff0000003100000000root/usr/local/share/doc/tiff-3.9.4/RELEASE-DATE20100615 07070100041354000081a40000000000000000000000014cc7a4270000019f0000010000010006ffffffffffffffff0000002f00000000root/usr/local/share/doc/tiff-3.9.4/README.vmsDear OpenVMS user to make this library, execute $@CONFIGURE $@BUILD Build process should be error and warning free. When process will be finished, LIBTIFF$STRATUP.COM file containing all required definitions, will be created. Please call it from system startup procedure or individual user procedure LOGIN.COM To link software with libtiff, use TIFF:LIBTIFF.OPT best regards, Alexey Chupahin, elvis_75@mail.ru 07070100041357000081a40000000000000000000000014cc7a427000000060000010000010006ffffffffffffffff0000002c00000000root/usr/local/share/doc/tiff-3.9.4/VERSION3.9.4 07070100041356000081a40000000000000000000000014cc7a427000001b10000010000010006ffffffffffffffff0000002900000000root/usr/local/share/doc/tiff-3.9.4/TODO# $Header: /cvs/maptools/cvsroot/libtiff/TODO,v 1.6 2002/10/10 05:28:43 warmerda Exp $ o gif2tiff segaulting on selected images o tiffcmp read data by strip/tile instead of scanline o YCbCr sampling support o extracate colorspace conversion support o look at isolating all codecs from TIFF library o JPEG colormode order dependency problem o Write documentation on how do extend tags, and how the custom field stuff all works. 07070100041351000081a40000000000000000000000014cc7a4270000047a0000010000010006ffffffffffffffff0000002e00000000root/usr/local/share/doc/tiff-3.9.4/COPYRIGHTCopyright (c) 1988-1997 Sam Leffler Copyright (c) 1991-1997 Silicon Graphics, Inc. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that (i) the above copyright notices and this permission notice appear in all copies of the software and related documentation, and (ii) the names of Sam Leffler and Silicon Graphics may not be used in any advertising or publicity relating to the software without the specific, prior written permission of Sam Leffler and Silicon Graphics. THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 07070100041353000081a40000000000000000000000014cc7a4270000093b0000010000010006ffffffffffffffff0000002b00000000root/usr/local/share/doc/tiff-3.9.4/README$Header: /cvs/maptools/cvsroot/libtiff/README,v 1.5 2004/10/30 13:44:45 dron Exp $ TIFF Software Distribution -------------------------- This file is just a placeholder; all the documentation is now in HTML in the html directory. To view the documentation point your favorite WWW viewer at html/index.html; e.g. netscape html/index.html If you don't have an HTML viewer then you can read the HTML source or fetch a PostScript version of this documentation from the directory ftp://ftp.remotesensing.org/pub/libtiff/ If you can't hack either of these options then basically what you want to do is: % ./configure % make % su # make install More information, email contacts, and mailing list information can be found online at http://www.remotesensing.org/libtiff/. Use and Copyright ----------------- Silicon Graphics has seen fit to allow us to give this work away. It is free. There is no support or guarantee of any sort as to its operations, correctness, or whatever. If you do anything useful with all or parts of it you need to honor the copyright notices. I would also be interested in knowing about it and, hopefully, be acknowledged. The legal way of saying that is: Copyright (c) 1988-1997 Sam Leffler Copyright (c) 1991-1997 Silicon Graphics, Inc. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that (i) the above copyright notices and this permission notice appear in all copies of the software and related documentation, and (ii) the names of Sam Leffler and Silicon Graphics may not be used in any advertising or publicity relating to the software without the specific, prior written permission of Sam Leffler and Silicon Graphics. THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 07070100041358000041ed0000000000000000000000044cc7a452000000000000010000010006ffffffffffffffff0000002900000000root/usr/local/share/doc/tiff-3.9.4/html070701000413c7000081a40000000000000000000000014cc7a42700000a860000010000010006ffffffffffffffff0000003a00000000root/usr/local/share/doc/tiff-3.9.4/html/v3.4beta032.html Changes in TIFF v3.4beta032 TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:


CHANGES IN THE SOFTWARE CONFIGURATION:


CHANGES IN LIBTIFF:


CHANGES IN THE TOOLS:


CHANGES IN THE CONTRIBUTED SOFTWARE: TIFF home page.

Sam Leffler / sam@engr.sgi.com Last updated $Date: 1999/08/09 20:21:21 $.
070701000413dd000081a40000000000000000000000014cc7a42700001f5a0000010000010006ffffffffffffffff0000003500000000root/usr/local/share/doc/tiff-3.9.4/html/v3.7.2.html Changes in TIFF v3.7.2 TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:


MAJOR CHANGES:
  • Maintainance release. Many bugfixes in the build environment and compatibility improvements.


CHANGES IN THE SOFTWARE CONFIGURATION:


CHANGES IN LIBTIFF:


CHANGES IN THE TOOLS:


CHANGES IN THE CONTRIB AREA:
  • No changes.
Last updated $Date: 2005/03/15 15:17:44 $. 070701000413cb000081a40000000000000000000000014cc7a427000011d70000010000010006ffffffffffffffff0000003a00000000root/usr/local/share/doc/tiff-3.9.4/html/v3.4beta036.html Changes in TIFF v3.4beta036 TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:


CHANGES IN THE SOFTWARE CONFIGURATION:
  • support was added for building the library as a DSO under HP-UX with the native C compiler
  • tools are now built with explicit pathnames for the DSO under IRIX, Solaris, and Linux
  • DSO configuration support for Linux was changed to require that libc.so only be readable (not executable)


CHANGES IN LIBTIFF:
  • support was add for ICC: NumberOfInks, and ICCProfile
  • a memory leak caused by doing TIFFSetDirectory(0) was fixed
  • a bug was fixed whereby certain multi-directory files were not properly handled when accessed by mapping the data into memory
  • the strip chopping support is now always compiled into the library with the default usage controlled by a STRIPCHOP_DEFAULT configuration parameter
  • the strip chopping support no longer chops tiled images
  • all static strings are now const--for shared libraries
  • the logic for estimating the strip size of images without a StripByteCounts tag was improved by handling PlanarContig images differently from PlanarSeparate
  • a bug was fixed in the G3 codec when converting the Y resolution of data specified in metric units
  • a bug was fixed in the G3/G4 decoder for data where lines terminate with a v0 code
  • the TIFFRGBAImage support was changed to scale 16-bit colormap entries more conservatively to avoid problems with applications that do not generate fully saturated pixel values
  • the LZW decoder was changed to use a more conservative scheme when bounds checking the hash table array; this avoids pitfalls with systems that load objects into memory in unusual locations
  • a bug was fixed in TIFFPrintDirectory's handling of the InkNames tag
  • TIFFPrintDirectory now understands NumberOfInks and ICC-related tags
  • the routines for reading image data now provide more useful information when a read error is encountered
  • support was added for compiling with Microsoft Visual C++ 4.0


CHANGES IN THE TOOLS:
  • a bug was fixed in pal2rgb's colormap handling
  • tiff2ps now includes John Wehle's changes for maintaining the aspect ratio of images when scaling and for honoring the deadzone on a page when generating PostScript Level II
  • tiff2ps does a better job guarding against the mishandling of greyscale images
  • tiff2ps now correctly converts X- and Y-resolution values specified in metric units
  • tiffdump has a new -m option to control the maximum number of indirect data values printed for a tag (by default 24)
  • tiffdump understands several new tags
  • tiffdump now shows any terminating null in ASCII strings
  • tiffinfo now suppresses strip chopping when interpreting an image; a new -z option has been added to enable strip chopping
TIFF home page.

Sam Leffler / sam@engr.sgi.com Last updated $Date: 1999/08/09 20:21:21 $.
070701000413c0000081a40000000000000000000000014cc7a42700000f370000010000010006ffffffffffffffff0000003a00000000root/usr/local/share/doc/tiff-3.9.4/html/v3.4beta007.html Changes in TIFF v3.4beta007 TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:


CHANGES IN THE SOFTWARE CONFIGURATION:
  • bit order was corrected for Pentium systems
  • a new define, HOST_BIGENDIAN, was added for code that wants to statically use information about native cpu byte order


CHANGES IN LIBTIFF:
  • the G3/G4 decoder was replaced by a new one that is faster and has smaller state tables
  • Niles Ritter's client tag extension hooks were added
  • a new routine TIFFCurrentDirOffset was added for applications that want to find out the file offset of a TIFF directory
  • the calculation of the number of strips in an image was corected for images with certain esoteric configurations
  • a potential memory leak (very unlikely) was plugged
  • the TIFFReadRGBAImage support was completely rewritten and new, more flexible support was added for reading images into a fixed-format raster
  • YCbCr to RGB conversion done in the TIFFReadRGBAImage support was optimized
  • a bug in JPEG support calculation of strip size was corrected
  • the LZW decoder was changed to initialize the code table to zero to lessen potential problems that arise when invalid data is decoded
  • tiffcomp.h is now aware of OS/2
  • some function prototypes in tiffio.h and tiffiop.h that contained parameter names have been changed to avoid complaints from certain compilers


CHANGES IN THE PORTABILITY SUPPORT:
  • Makefile.in has been corrected to use the parameters chosen by the configure script


CHANGES IN THE TOOLS:
  • fax2ps has been rewritten and moved over from the user contributed software
  • an uninitialized variable in pal2rgb has been fixed
  • ras2tiff now converts 24-bit RGB raster data so that samples are written in the proper order
  • tiff2ps has been updated to include fixes and enhancements from Alberto Accomazzi
  • tiffcp now has a -o option to select a directory by file offset
  • tiffinfo is now capable of displaying the raw undecoded image data in a file
  • tiffgt has been rewritten to use the new TIFFRGBAImage support and to handle multiple files
TIFF home page.

Sam Leffler / sam@engr.sgi.com Last updated $Date: 1999/08/09 20:21:21 $.
070701000413d4000081a40000000000000000000000014cc7a427000041910000010000010006ffffffffffffffff0000003500000000root/usr/local/share/doc/tiff-3.9.4/html/v3.6.0.html Changes in TIFF v3.6.0 TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:


MAJOR CHANGES:
  • New utility raw2tiff for converting raw rasters into TIFF files.
  • Lots of new tiff2ps options.
  • Lots of new fax2tiff options.
  • Lots of bug fixes for LZW, JPEG and OJPEG compression.

Custom Tag Support

The approach to extending libtiff with custom tags has changed radically. Previously, all internally supported TIFF tags had a place in the private TIFFDirectory structure within libtiff to hold the values (if read), and a "field number" (ie. FIELD_SUBFILETYPE) used to identify that tag. However, every time a new tag was added to the core, the size of the TIFFDirectory structure would changing, breaking any dynamically linked software that used the private data structures.

Also, any tag not recognised by libtiff would not be read and accessable to applications without some fairly complicated work on the applications part to pre-register the tags as exemplified by the support for "Geo"TIFF tags by libgeotiff layered on libtiff.

Amoung other things this approach required the extension code to access the private libtiff structures ... which made the higher level non-libtiff code be locked into a specific version of libtiff at compile time. This caused no end of bug reports!

The new approach is for libtiff to read all tags from TIFF files. Those that aren't recognised as "core tags" (those having an associated FIELD_ value, and place for storage in the TIFFDirectory structure) are now read into a dynamic list of extra tags (td_customValues in TIFFDirectory). When a new tag code is encountered for the first time in a given TIFF file, a new anonymous tag definition is created for the tag in the tag definition list. The type, and some other metadata is worked out from the instance encountered. These fields are known as "custom tags".

Custom tags can be set and fetched normally using TIFFSetField() and TIFFGetField(), and appear pretty much like normal tags to application code. However, they have no impact on internal libtiff processing (such as compression). Some utilities, such as tiffcp will now copy these custom tags to the new output files.

As well as the internal work with custom tags, new C API entry points were added so that extension libraries, such as libgeotiff, could define new tags more easily without accessing internal data structures. Because tag handling of extension tags is done via the "custom fields" mechanism as well, the definition provided externally mostly serves to provide a meaningful name for the tag. The addition of "custom tags" and the altered approach to extending libtiff with externally defined tags is the primary reason for the shift to the 3.6.x version number from 3.5.x.


CHANGES IN THE SOFTWARE CONFIGURATION:
  • configure, config.site: Fix for large files (>2GiB) support. New option in the config.site: LARGEFILE="yes". Should be enougth for the large files I/O.
  • configure: Set -DPIXARLOG_SUPPORT option along with -DZIP_SUPPORT.
  • html/Makefile.in: Updated to use groffhtml for generating html pages from man pages.
  • configure, libtiff/Makefile.in: Added SCO OpenServer 5.0.6 support from John H. DuBois III.
  • libtiff/{Makefile.vc, libtiff.def}: Missed declarations added.
  • libtiff/Makefile.in, tools/Makefile.in: Shared library will not be stripped when installing, utility binaries will do be stripped. As per bug 93.
  • man/Makefile.in: Patch DESTDIR handling as per bug 95.
  • configure: OpenBSD changes for Sparc64 and DSO version as per bug 96.
  • config.site/configure: added support for OJPEG=yes option to enable OJPEG support from config.site.
  • config.guess, config.sub: Updated from ftp.gnu.org/pub/config.
  • configure: Modify CheckForBigEndian so it can work in a cross compiled situation.
  • configure, libtiff/Makefile.in: Changes for building on MacOS 10.1 as per bug 94.
  • html/Makefile.in: added missing images per bug 92.
  • port/Makefile.in: fixed clean target per bug 92.


CHANGES IN LIBTIFF:
  • libtiff/tif_getimage.c: New function TIFFReadRGBAImageOriented() implemented to retrieve raster array with user-specified origin position.
  • libtiff/tif_fax3.c: Fix wrong line numbering.
  • libtiff/tif_dirread.c: Check field counter against number of fields.
  • Store a list of opened IFD to prevent directory looping.
  • libtiff/tif_jpeg.c: modified segment_height calculation to always be a full height tile for tiled images. Also changed error to just be a warning.
  • libtiff/tif_lzw.c: fixed so that decoder state isn't allocated till LZWSetupDecode(). Needed to read LZW files in "r+" mode.
  • libtiff/tif_dir.c: fixed up the tif_postdecode settings responsible for byte swapping complex image data.
  • libtiff/tif_open.c: Removed error if opening a compressed file in update mode bug (198).
  • libtiff/tif_write.c: TIFFWriteCheck() now fails if the image is a pre-existing compressed image. That is, image writing to pre-existing compressed images is not allowed.
  • html/man/*.html: Web pages regenerated from man pages.
  • libtiff/tif_jpeg.c: Hack to ensure that "boolean" is defined properly on Windows so as to avoid the structure size mismatch error from libjpeg (bug 188).
  • libtiff/tiff.h: #ifdef USING_VISUALAGE around previous Visual Age AIX porting hack as it screwed up gcc. (bug 39)
  • libtiff/tiff.h: added COMPRESSION_JP2000 (34712) for LEAD tools custom compression.
  • libtiff/tif_dirread.c: Another fix for the fetching SBYTE arrays by the TIFFFetchByteArray() function. (bug 52)
  • libtiff/tif_dirread.c: Expand v[2] to v[4] in TIFFFetchShortPair() as per bug 196.
  • libtiff/tif_lzw.c: Additional consistency checking added in LZWDecode() and LZWDecodeCompat() fixing bugs 190 and 100.
  • libtiff/tif_lzw.c: Added check for valid code lengths in LZWDecode() and LZWDecodeCompat(). Fixes bug 115.
  • tif_getimage.c: Ensure that TIFFRGBAImageBegin() returns the return code from the underlying pick function as per bug 177.
  • libtiff/{tif_jpeg.c,tif_strip.c,tif_print.c}: Hacked tif_jpeg.c to fetch TIFFTAG_YCBCRSUBSAMPLING from the jpeg data stream if it isn't present in the tiff tags as per bug 168.
  • libtiff/tif_jpeg.c: Fixed problem with setting of nrows in JPEGDecode() as per bug 129.
  • libtiff/tif_read.c, libtiff/tif_write.c: TIFFReadScanline() and TIFFWriteScanline() now set tif_row explicitly in case the codec has fooled with the value as per bug 129.
  • libtiff/tif_ojpeg.c: Major upgrade from Scott. Details in bug 156.
  • libtiff/tif_open.c: Pointers to custom procedures in TIFFClientOpen() are checked to be not NULL-pointers.
  • libtiff/tif_lzw.c: Assertions in LZWDecode and LZWDecodeCompat replaced by warnings. Now libtiff should read corrupted LZW-compressed files by skipping bad strips as per bug 100.
  • libtiff/: tif_dirwrite.c, tif_write.c, tiffio.h: TIFFCheckpointDirectory() routine added as per bug 124. The TIFFWriteDirectory man page discusses this new function as well as the related TIFFRewriteDirectory().
  • libtiff/: tif_codec.c, tif_compress.c, tiffiop.h, tif_getimage.c: Introduced additional members tif->tif_decodestatus and tif->tif_encodestatus for correct handling of unconfigured codecs (we should not try to read data or to define data size without correct codecs). See bug 119.
  • tif_dirread.c: avoid div-by-zero if rowbytes is zero in chop func as per bug 111.
  • libtiff/: tiff.h, tif_dir.c, tif_dir.h, tif_dirinfo.c, tif_dirread.c, tif_dirwrite.c: Dwight Kelly added get/put code for new tag XMLPACKET as defined in Adobe XMP Technote. Added missing INKSET tag value from TIFF 6.0 spec INKSET_MULTIINK (=2). Added missing tags from Adobe TIFF technotes: CLIPPATH, XCLIPPATHUNITS, YCLIPPATHUNITS, OPIIMAGEID, OPIPROXY and INDEXED. Added PHOTOMETRIC tag value from TIFF technote 4 ICCLAB (=9).
  • libtiff/tif_getimage.c: Additional check for supported codecs added in TIFFRGBAImageOK, TIFFReadRGBAImage, TIFFReadRGBAStrip and TIFFReadRGBATile now use TIFFRGBAImageOK before reading a per bug 110.
  • libtiff/: tif_dir.c, tif_dir.h, tif_dirinfo.c, tif_dirread.c, tif_dirwrite.c: Added routine TIFFDataWidth for determining TIFFDataType sizes instead of working with tiffDataWidth array directly as per bug 109.
  • libtiff/: tif_dirinfo.c, tif_dirwrite.c: Added possibility to read broken TIFFs with LONG type used for TIFFTAG_COMPRESSION, TIFFTAG_BITSPERSAMPLE, TIFFTAG_PHOTOMETRIC as per bug 99.
  • libtiff/{tiff.h,tif_fax3.c}: Add support for __arch64__ as per bug 94.
  • libtiff/tif_read.c: Fixed TIFFReadEncodedStrip() to fail if the decodestrip function returns anything not greater than zero as per bug 97.
  • libtiff/tif_jpeg.c: fixed computation of segment_width for tiles files to avoid error about it not matching the cinfo.d.image_width values ("JPEGPreDecode: Improper JPEG strip/tile size.") for ITIFF files. Apparently the problem was incorporated since 3.5.5, presumably during the OJPEG/JPEG work recently.
  • libtiff/tif_getimage.c: If DEFAULT_EXTRASAMPLE_AS_ALPHA is 1 (defined in tiffconf.h - 1 by default) then the RGBA interface will assume that a fourth extra sample is ASSOCALPHA if the EXTRASAMPLE value isn't set for it. This changes the behaviour of the library, but makes it work better with RGBA files produced by lots of applications that don't mark the alpha values properly. As per bugs 93 and 65.
  • libtiff/tif_jpeg.c: allow jpeg data stream sampling values to override those from tiff directory. This makes this work with ImageGear generated files.


CHANGES IN THE TOOLS:
  • tiff2ps: Added page size setting when creating PS Level 2.
  • tiff2ps: Fixed PS comment emitted when FlateDecode is being used.
  • tiffsplit: increased the maximum number of pages that can be split.
  • raw2tiff: Added option `-p' to explicitly select color space of input image data.
  • tiffmedian: Suppiort for large (> 2GB) images.
  • ppm2tiff: Fixed possible endless loop.
  • tiff2rgba: Switched to use TIFFReadRGBAImageOriented() instead of TIFFReadRGBAImage().
  • tiffcmp: Fixed problem with unused data comparing (bug 349). `-z' option now can be used to set the number of reported different bytes.
  • tiffcp: Added possibility to specify value -1 to -r option to get the entire image as one strip (bug 343).
  • tiffcp: Set the correct RowsPerStrip and PageNumber values (bug 343).
  • fax2tiff: Page numbering fixed (bug 341).
  • ppm2tiff: PPM header parser improved: now able to skip comments.
  • tiff2ps: Force deadzone printing when EPS output specified (bug 325).
  • tiff2ps: Add ability to generate PS Level 3. It basically allows one to use the /flateDecode filter for ZIP compressed TIFF images. Patch supplied by Tom Kacvinsky (bug 328).
  • tiffcp: Fixed problem with colorspace conversion for JPEG encoded images (bugs 23 and 275)
  • fax2tiff: Applied patch from Julien Gaulmin. More switches for fax2tiff tool for better control of input and output (bugs 272 and 293).
  • raw2tiff: New utility for turning raw raster images into TIFF files written by Andrey Kiselev.
  • tiff2ps: Sebastian Eken provided patches (bug 200) to add new these new switches:
    • -b #: for a bottom margin of # inches
    • -c: center image
    • -l #: for a left margin of # inches
    • -r: rotate the image by 180 degrees
    Also, new features merged with code for shrinking/overlapping.
  • tiff2ps: Don't emit BeginData/EndData DSC comments since we are unable to properly include the amount to skip as per bug 80.
  • tiff2ps: Added workaround for some software that may crash when last strip of image contains fewer number of scanlines than specified by the `/Height' variable as per bug 164.
  • tiff2ps: Patch from John Williams to add new functionality for tiff2ps utility splitting long images in several pages as per bug 142. New switches:
    • -H #: split image if height is more than # inches
    • -L #: overLap split images by # inches
  • tiff2ps: New commandline switches to override resolution units obtained from the input file per bug 131:
    • -x: override resolution units as centimeters
    • -y: override resolution units as inches
  • fax2tiff: Updated to reflect latest changes in libtiff per bug 125.
  • tiff2ps: Division by zero fixed as per bug 88.
  • tiffcp: Added support for 'Orientation' tag.
  • tiffdump: include TIFFTAG_JPEGTABLES in tag list.
  • tiffset: fix bug in error reporting.


CHANGES IN THE CONTRIB AREA:
  • Fixed distribution to include contrib/addtiffo/tif_ovrcache.{c,h}.
  • libtiff/contrib/win95: renamed to contrib/win_dib. Added new Tiffile.cpp example of converting TIFF files into a DIB on Win32 as per bug 143.
CHANGES IN THE LZW COMPRESSION KIT:
  • LZW compression kit synchronized with actual libtiff version.
TIFF home page.

Last updated $Date: 2003/10/04 11:38:17 $. 07070100041373000081a40000000000000000000000014cc7a4260000095a0000010000010006ffffffffffffffff0000003400000000root/usr/local/share/doc/tiff-3.9.4/html/intro.html Introduction to the TIFF Documentation

Introduction to the TIFF Documentation

The following definitions are used throughout this documentation. They are consistent with the terminology used in the TIFF 6.0 specification.

Sample
The unit of information stored in an image; often called a channel elsewhere. Sample values are numbers, usually unsigned integers, but possibly in some other format if the SampleFormat tag is specified in a TIFF
Pixel
A collection of one or more samples that go together.
Row
An Nx1 rectangular collection of pixels.
Tile
An NxM rectangular organization of data (or pixels).
Strip
A tile whose width is the full image width.
Compression
A scheme by which pixel or sample data are stored in an encoded form, specifically with the intent of reducing the storage cost.
Codec
Software that implements the decoding and encoding algorithms of a compression scheme.

In order to better understand how TIFF works (and consequently this software) it is important to recognize the distinction between the physical organization of image data as it is stored in a TIFF and how the data is interpreted and manipulated as pixels in an image. TIFF supports a wide variety of storage and data compression schemes that can be used to optimize retrieval time and/or minimize storage space. These on-disk formats are independent of the image characteristics; it is the responsibility of the TIFF reader to process the on-disk storage into an in-memory format suitable for an application. Furthermore, it is the responsibility of the application to properly interpret the visual characteristics of the image data. TIFF defines a framework for specifying the on-disk storage format and image characteristics with few restrictions. This permits significant complexity that can be daunting. Good applications that handle TIFF work by handling as wide a range of storage formats as possible, while constraining the acceptable image characteristics to those that make sense for the application.


Last updated: $Date: 1999/08/09 20:21:21 $ 070701000413e2000081a40000000000000000000000014cc7a427000010c20000010000010006ffffffffffffffff0000003500000000root/usr/local/share/doc/tiff-3.9.4/html/v3.8.2.html Changes in TIFF v3.8.2 TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:


MAJOR CHANGES:
  • Bug-fix release.


CHANGES IN THE SOFTWARE CONFIGURATION:


CHANGES IN LIBTIFF:
  • tif_strip.c: Take subsampling in account when calculating TIFFScanlineSize().
  • tif_jpeg.c, tif_fax3.c, tif_zip.c, tif_pixarlog.c, tif_lzw.c, tif_luv.c: Use _TIFFSetDefaultCompressionState() in all codec cleanup methods. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1120
  • tif_jpeg.c: Do not cleanup codec state in TIFFInitJPEG(). As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1119
  • tif_dir.c: Use double type instead of dblparam_t.
  • tif_dirread.c: Do not check the PlanarConfig tag presence in TIFFReadDirectory, because it is always set at the start of function and we allow TIFFs without that tag set.


CHANGES IN THE TOOLS:


CHANGES IN THE CONTRIB AREA:
Last updated $Date: 2006/03/23 14:54:01 $. 0707010004135e000081a40000000000000000000000014cc7a426000005c10000010000010006ffffffffffffffff0000003700000000root/usr/local/share/doc/tiff-3.9.4/html/document.html TIFF Documentation

TIFF Documentation

A copy of the 6.0 specification is available from Adobe at http://partners.adobe.com/public/developer/en/tiff/TIFF6.pdf, or from the libtiff ftp site at ftp://ftp.remotesensing.org/pub/libtiff/doc/TIFF6.pdf.

Draft TIFF Technical Note #2 covers problems with the TIFF 6.0 design for embedding JPEG-compressed data in TIFF, and describes an alternative.

Other Adobe information on TIFF can be retrieved from: http://partners.adobe.com/public/developer/tiff/index.html

Joris Van Damme maintains a list of known tags and their descriptions and definitions. It is available online at http://www.awaresystems.be/imaging/tiff/tifftags.html

There is a FAQ, related both to TIFF format and libtiff library: http://www.awaresystems.be/imaging/tiff/faq.html


Last updated: $Date: 2009-08-20 22:31:00 $
07070100041371000081a40000000000000000000000014cc7a4260000143c0000010000010006ffffffffffffffff0000003400000000root/usr/local/share/doc/tiff-3.9.4/html/index.html LibTIFF - TIFF Library and Utilities

LibTIFF - TIFF Library and Utilities


Home Page http://www.remotesensing.org/libtiff/
Home Page Mirror http://libtiff.maptools.org/
Latest Stable Release v3.9.4
Master Download Site ftp.remotesensing.org, directory pub/libtiff
Mirror Download Site http://libtiff.maptools.org/dl/
Windows Binaries GnuWin32 Project
Mailing List tiff@lists.maptools.org, Subscription, Archive. Please, read the TIFF FAQ before asking questions.
Anonymous CVS export CVSROOT=:pserver:cvsanon@cvs.maptools.org:/cvs/maptools/cvsroot
cvs login

(use empty password)
cvs checkout -r branch-3-9 libtiff
to get stable libtiff branch, or
cvs checkout libtiff
to get bleeding edge development version of libtiff from CVS HEAD.

This software provides support for the Tag Image File Format (TIFF), a widely used format for storing image data. The latest version of the TIFF specification is available on-line in several different formats.

Included in this software distribution is a library, libtiff, for reading and writing TIFF, a small collection of tools for doing simple manipulations of TIFF images, and documentation on the library and tools. Libtiff is a portable software, it was built and tested on various systems: UNIX flavors (Linux, BSD, Solaris, MacOS X), Windows, OpenVMS. It should be possible to port libtiff and additional tools on other OSes.

The library, along with associated tool programs, should handle most of your needs for reading and writing TIFF images on 32- and 64-bit machines. This software can also be used on older 16-bit systems though it may require some effort and you may need to leave out some of the compression support.

The software was originally authored and maintained by Sam Leffler. While he keeps a fatherly eye on the mailing list, he is no longer responsible for day to day maintenance.

Questions should be sent to the TIFF mailing list: tiff@lists.maptools.org, with a subscription interface at http://lists.maptools.org/mailman/listinfo/tiff.

The persons responsible for putting up this site and putting together versions >= 3.5.1 are Frank Warmerdam, Andrey Kiselev, Bob Friesenhahn, Joris Van Damme and Lee Howard.

The following sections are included in this documentation:


Last updated $Date: 2010-06-11 22:02:15 $.

070701000413d8000081a40000000000000000000000014cc7a4270000238c0000010000010006ffffffffffffffff0000003a00000000root/usr/local/share/doc/tiff-3.9.4/html/v3.7.0alpha.html Changes in TIFF v3.7.0alpha TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:


MAJOR CHANGES:
  • Significant changes in software configuration: we are switched to GNU autotools now.
  • tiffset: tiffset now can set any libtiff supported tags. Tags can be supplied by the mnemonic name or number.


CHANGES IN THE SOFTWARE CONFIGURATION:
  • Get rid of the old configuration system and switch to GNU autotools.


CHANGES IN LIBTIFF:


CHANGES IN THE TOOLS:
  • tiffset: tiffset now can set any libtiff supported tags. Tags can be supplied by the mnemonic name or number.
  • ycbcr.c: fixed main() declaration as per: http://bugzilla.remotesensing.org/show_bug.cgi?id=513.
  • tiffsplit: Don't forget to copy Photometric Interpretation tag.
  • tiffsplit: Fixed problem with unproperly written multibyte files. Now output files will be written using the same byte order flag as in the input image. See .
  • tiffsplit: Copy JPEGTables tag contents for JPEG compressed images. Reported by Artem Mirolubov.
  • tiffcp: Close output file on normal exit.
  • tiffcp: Don't emit warnings when Orientation tag does not present in the input image.
  • tiffcp: Properly set Photometric Interpretation in case of JPEG compression of grayscale images.
  • tiffcp: Fixed problem with wrong interpretation of the InkNames tag as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=466. Memory leak fixed.
  • tiffcp: Fixed problem with wrong Photometric setting for non-RGB images.


CHANGES IN THE CONTRIB AREA:
  • Outdated stuff removed.
  • Almost all programs are sinchronized with the current libtiff and should compile without problems.
CHANGES IN THE LZW COMPRESSION KIT:
  • No changes.
TIFF home page.

Last updated $Date: 2006/03/18 17:12:47 $. 070701000413ce000081a40000000000000000000000014cc7a42700000cc90000010000010006ffffffffffffffff0000003500000000root/usr/local/share/doc/tiff-3.9.4/html/v3.5.2.html Changes in TIFF v3.5.2 TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:


CHANGES IN THE SOFTWARE CONFIGURATION:
  • Corrected alpha versioning.
  • Removed distinction between alpha and release targets in Makefile.in.
  • Added release.stamp target, which tags cvs tree, and updates "RELEASE-DATE"
  • Added releasediff target, which diffs tree with source as of date in "RELEASE-DATE"
  • Ticked up version to 3.5.2 (alpha 01 -- but I think we'll moving away from alpha/non-alpha distinctions).


CHANGES IN LIBTIFF:
  • Added IRIX/gcc, and OSF/1 4.x support on behalf of Albert Chin-A-Young
  • Added TIFFReassignTagToIgnore() API on behalf of Bruce Cameron . Man page still pending.
  • pre-remove so link before softlink in LINUXdso action in libtiff/Makefile.in to avoid failure on LINUXdso builds other than the first.
  • Fixed problem with cvtcmap() in tif_getimage.c modifying the colormaps owned by the TIFF handle itself when trying to fixup wrong (eight bit) colormaps. Corrected by maintaining a private copy of the colormap.
  • Added TIFFReadRGBATile()/TIFFReadRGBAStrip() support in tif_getimage.c.
  • Applied "a" mode fix to tif_win32.c/TIFFOpen() as suggested by Christopher Lawton
  • Set O_BINARY for tif_unix.c open() ... used on cygwin for instance.
  • Added CYGWIN case in configure.
  • Applied Francois Dagand's patch to handle fax decompression bug. (sizes >= 65536 were failing)


CHANGES IN THE TOOLS:
  • Added addtiffo (add overviews to a TIFF file) in contrib. Didn't put it in tools since part of it is in C++.
TIFF home page.

Last updated $Date: 2004/11/26 14:37:20 $. 070701000413cf000081a40000000000000000000000014cc7a427000010a30000010000010006ffffffffffffffff0000003500000000root/usr/local/share/doc/tiff-3.9.4/html/v3.5.3.html Changes in TIFF v3.5.3 TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:

The ChangeLog will follow, but please note the most important change: LZW compression has been removed.

Unisys has the patent on LZW compression and have been very active in their enforcement of late, demanding payments of $5000 or more from websites using unlicensed software to create GIF's. They could well do the same do persons using libtiff to create LZW compressed TIFF images.

From Burn All GIF's Day:
The catch is that it appears to be difficult or impossible to get a Unisys license to use LZW in free software that complies with the Open Source Definition

Unfortunatly, the removal of LZW compression means that saved image size has grown dramatically. Without a change in the TIFF spec to support another lossless compression format, this is unavoidable.

The library can use zip for lossless compression, but as this is not part of the spec, TIFFs using zip compression may not work with other software

We will be making a patch available that will contain the LZW compression code for users who have either obtained a license from Unisys or are willing to risk it.

LZW decompression is unchanged.


CHANGES IN THE SOFTWARE CONFIGURATION:
  • Added zip creation to release makefile target


CHANGES IN LIBTIFF:
  • Added html for TIFFWriteTile.3t man page.
  • Added some changes to tif_write.c to support rewriting existing fixed sized tiles and strips. Code mods disabled by default, only enabled if REWRITE_HACK is defined for now.
  • Added TIFFWriteTile.3t man page.
  • Added notes on use of makefile.vc in build.html, and fixed email subscription address.
  • Fixed apocalypse-inducing y2k bug in contrib/ras/ras2tiff.c
  • Did some casts cleaning up to reduce compiler warnings in tif_fax3.c, from Bruce Carmeron -- modifications of changes made by Frank (sun cc still complained on cast).
  • fixed various VC++ warnings as suggested by Gilles Vollant .
  • Modified TIFFquery.3t man pages info on TIFFIsByteSwapped() to not imply applications are responsible for image data swapping.
  • HTML-ized the man pages, added to html/man
  • Removed LZW Compression to comply with Unisys patent extortion.
  • Corrected one remaining 16 -> 32 bit value in tif_fax3.c, From Ivo Penzar Added patch from Ivo Penzar to have TiffAdvanceDirectory handle memory mapped files.


CHANGES IN THE TOOLS:
  • Fixed apocalypse-inducing y2k bug in contrib/ras/ras2tiff.c
TIFF home page.

Last updated $Date: 2004/11/26 14:37:20 $. 070701000413c1000081a40000000000000000000000014cc7a42700000fb70000010000010006ffffffffffffffff0000003a00000000root/usr/local/share/doc/tiff-3.9.4/html/v3.4beta016.html Changes in TIFF v3.4beta016 TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:


CHANGES IN THE SOFTWARE CONFIGURATION:
  • support was added for configuring the Deflate codec
  • support was added for the HTML documentation
  • codecs that are not configured for inclusion in the library are no longer compiled


CHANGES IN LIBTIFF:
  • support was added for registering new codecs external to the library and for overriding the codecs that are builtin to the library
  • emulation support for the old DataType tag was improved
  • suppport was added for the SMinSampleValue and SMaxSampleValue tags
  • the library no longer ignores TileWidth and TileLength tags whose values are not a multiple of 16 (per the spec); this permits old, improperly written, images to be read
  • the support for the Predictor tag was placed in a reusable module so that it can be shared by multiple codecs
  • experimental compression support was added for the Deflate algorithm (using the freely available zlib package)
  • a new routine, TIFFWriteBufferSetup was added a la the routine TIFFReadBufferSetup
  • the DSO version of the library is now statically linked with the JPEG and Deflate libraries; this means applications that link against the DSO do not also need to link against these ancillary libraries


CHANGES IN THE TOOLS:
  • all the tools now use common code to process compress-oriented arguments
  • tiffdump should now compile on a Macintosh with MPW


CHANGES IN THE MANUAL PAGES:
  • everything was updated


CHANGES IN THE DOCUMENTATION:
  • everything was updated


CHANGES IN CONTRIBUTED SOFTWARE:
  • contrib/dbs/xtiff was made to compile
  • contrib/mac-mpw is new support for compiling the software on a Macintosh under MPW; consult the documentation for details
  • contrib/tags is information on how to use the tag extenion facilities; consult contrib/tags/README for details
TIFF home page.

Sam Leffler / sam@engr.sgi.com Last updated $Date: 1999/08/09 20:21:21 $.
070701000413e5000081a40000000000000000000000014cc7a42700000c7b0000010000010006ffffffffffffffff0000003500000000root/usr/local/share/doc/tiff-3.9.4/html/v3.9.1.html Changes in TIFF v3.9.1 TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:


MAJOR CHANGES:
  • This is a bug-fix release for several bugs (two of which are dire) which were discovered in the 3.9.0 release.


CHANGES IN THE SOFTWARE CONFIGURATION:
  • Several defines were missing from tif_config.vc.h which are necessary to compile the library using MSVC.
  • Colorized tests were actually not enabled as expected. Parallel tests mode is now also enabled so that tests can be run in parallel, and test output is sent to .log files.


CHANGES IN LIBTIFF:
  • libtiff/tif_write.c (TIFFAppendToStrip): Remove cast which caused libtiff to output a wrong last strip with byte-count and strip-offset of zero. This cast was added on the day of the 3.9.0 release.
  • libtiff/tif_dirwrite.c: Back out changes from 2007-11-22 that resulted in the final strip not being written in some circumstances. http://bugzilla.maptools.org/show_bug.cgi?id=2088


CHANGES IN THE TOOLS:
  • None


CHANGES IN THE CONTRIB AREA:
  • None
Last updated $Date: 2009-08-28 18:49:02 $. 070701000413d3000081a40000000000000000000000014cc7a4270000272c0000010000010006ffffffffffffffff0000003500000000root/usr/local/share/doc/tiff-3.9.4/html/v3.5.7.html Changes in TIFF v3.5.7 TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:


CHANGES IN THE SOFTWARE CONFIGURATION:
  • libtiff/libtiff.def: Brent Roman submitted new version adding serveral missing entry points. Also add a few other entry points later.
  • configure, Makefile.in, etc: added support for OPTIMIZER being set from config.site.
  • config.guess: updated wholesale to an FSF version apparently from 1998 (as opposed to 1994). This is mainly inspired by providing for MacOS X support.
  • configure/config.site: modified to check if -lm is needed for MACHDEPLIBS if not supplied by config.site. Needed for Darwin.
  • libtiff/tiff.h: Applied hac to try and resolve the problem with the inttypes.h include file on AIX. (Bug 39)
  • configure, *Makefile.in: Various changes to improve configuration for HP/UX specifically, and also in general. (Bug 40) They include:
    • Try to handle /usr/bin/sh instead of /bin/sh where necessary.
    • Upgrade to HP/UX 10.x+ compiler, linker and dso options.
    • Fixed mmap() test to avoid MMAP_FIXED ... it isn't available on HP
    • Use -${MAKEFLAGS} in sub makes from makefiles.
    • Fixed SCRIPT_SH/SHELL handling.
  • configure: Changes for DSO generation on AIX provided by John Marquart .
  • configure, libtiff/Makefile.in: Modified to build DSOs properly on Darwin thanks to Robert Krajewski (rpk@alum.mit.edu) and Keisuke Fujii (fujiik@jlcuxf.kek.jp).
  • configure, libtiff/Makefile.in: applied OpenBSD patches as per bug 61.
  • Makefile.in: added DESTDIR support as per bug 60.
  • libtiff/tif_jpeg.c: Define HAVE_BOOLEAN on windows if RPCNDR.H has been included.
  • man/Makefile.in: add TIFFClientOpen link as per debian submitted bug 66.
  • libtiff/Makefile.in: Fixed @DSOSUB_VERSION to be @DSOSUF_VERSION@ in two places.


CHANGES IN LIBTIFF:
  • tif_fax3.c: keep rw_mode flag internal to fax3 state to remember whether we are encoding or decoding. This is to ensure graceful recovery if TIFFClientOpen() discovers an attempt to open a compressed file for "r+" access, and subsequently close it, as it resets the tif_mode flag to O_RDONLY in this case to avoid writes, confusing the compressor's concept of whether it is in encode or decode mode.
  • tif_luv.c/tiff.h/tiffio.h: New version of TIFF LogLuv (SGILOG) modules contributed by Greg Ward (greg@shutterfly.com). He writes:
    1. I improved the gamut-mapping function in tif_luv.c for imaginary colors, because some images were being super-saturated on the input side and this resulted in some strange color shifts in the output.
    2. I added a psuedotag in tiff.h to control random dithering during LogLuv encoding. This is turned off by default for 32-bit LogLuv and on for 24-bit LogLuv output. Dithering improves the average color accuracy over the image.
    3. I added a #define for LOG_LUV_PUBLIC, which is enabled by default in tiffio.h, to expose internal routines for converting between LogLuv and XYZ coordinates. This is helpful for writing more efficient, specialized conversion routines, especially for reading LogLuv files.
  • libtiff/tif_dirinfo.c: don't declare tiffFieldInfo static on VMS.
  • Added TIFFTAG_COPYRIGHT support.
  • tif_getimage.c: Added support for 16bit minisblack/miniswhite images in RGBA interface.
  • libtiff/tif_dirinfo.c: removed duplicate TIFFTAG_PHOTOSHOP as per bug 44.
  • libtiff/tif_dirwrite.c: Added support for TIFF_VARIABLE2 in the case of writing TIFF_BYTE/TIFF_SBYTE fields as per bug 43.
  • libtiff/tif_dirinfo.c: Modified the TIFF_BYTE definition for TIFFTAG_PHOTOSHOP to use a writecount of TIFF_VARIABLE2 (-3) to force use of uint32 counts instead of short counts.
  • libtiff/tif_dirinfo.c: moved pixar and copyright flags to ensure everything is in order.
  • Integrated experimental OJPEG support from Scott Marovich of HP.
  • libtiff/tif_open.c: Seek back to zero after failed read, before writing header.
  • libtiff/tiff.h, libtiff/tif_fax3.c: added check for __LP64__ when checking for 64 bit architectures as per bugzilla bug 67.
  • libtiff/tif_getimage.c: Use memmove() instead of TIFFmemcpy() in TIFFReadRGBATile() to avoid issues in cases of overlapping buffers. See Bug 69 in Bugzilla.
  • libtiff/tif_getimage.c: Don't complain for CMYK (separated) images with more than four samples per pixel as per bug 73.
  • libtiff/tif_getimage.c: relax handling of contig case where there are extra samples that are supposed to be ignored as per bug 75. This should now work for 8bit greyscale or palletted images.
  • libtiff/tif_packbits.c: fixed memory overrun error as per bug 77.
  • libtiff/tif_getimage.c: Fixed problem with reading strips or tiles that don't start on a tile boundary. Fix contributed by Josep Vallverdu (from HP), and further described in bug 47.
  • libtif/tif_fax3.c: Removed #ifdef PURIFY logic, and modified to always use the "safe" version, even if there is a very slight cost in performance as per bug 54.
  • libtiff/tif_lzw.c: added dummy LZWSetupEncode() to report an error about LZW not being available.
  • libtiff/tif_dir.c: propagate failure to initialize compression back from TIFFSetField() as an error status, so applications can detect failure.
  • libtiff/tif_lzw.c: Avoid MS VC++ 5.0 optimization bug as per bug 78.
  • libtiff/tif_dirwrite.c: added TIFFRewriteDirectory() function. Updated TIFFWriteDirectory man page to include TIFFRewriteDirectory.
  • libtiff/tiff.h: I have created COMPRESSION_CCITT_T4, COMPRESSION_CCITT_T6, TIFFTAG_T4OPTIONS and TIFFTAG_T6OPTIONS aliases in keeping with TIFF 6.0 standard in tiff.h as per bug 83.
  • Added PHOTOMETRIC_ITULAB as per bug 90.


CHANGES IN THE TOOLS:
  • Brent Roman contributed updated tiffcp utility (and tiffcp.1) with support for extracting subimages with the ,n syntax, and also adding the -b bias removal flag.
  • tiff2ps.c/tiff2ps.1: Substantial changes to tiff2ps by Bruce A. Mallett, including a faster encoder, fixes for level 2 PostScript, and support for the imagemask operator.
  • fax2ps.c: Helge (libtiff at oldach.net) submitted fix that corrects behaviour for non-Letter paper sizes. (Bug 35) It fixes two problems:
    Without scaling (-S) the fax is now centered on the page size specified with -H and/or -W. Before, fax2ps was using an obscure and practially useless algorithm to allocate the image relative to Letter sized paper which sometime sled to useless whitespace on the paper, while at the same time cutting of the faxes printable area at the opposite border.
    Second, scaling now preserves aspect ratio, which makes unusual faxes (in particular short ones) print properly.
  • thumbnail.c: changed default output compression to packbits from LZW since LZW isn't generally available.
  • tiff2rgba.c: added -n flag to avoid emitting alpha component. Also added a man page for tiff2rgba.
  • tiffcmp.c: Fixed multi samples per pixel support for ContigCompare as per bug 53. Updated bug section of tiffcmp.1 to note tiled file issues.
  • libtiff/tif_getimage.c: Fixed so that failure is properly reported by gtTileContig, gtStripContig, gtTileSeparate and gtStripSeparate as per bug 51.


CHANGES IN THE LZW COMPRESSION KIT:
  • Rewrote lzw patching process so that is required to enable full LZW support is to drop the tif_lzw.c from the libtiff-lzw-compression-kit over the one in the libtiff directory.
  • Some changes were made to make recovery from failure to initialize the LZW compressor more graceful.
  • Note that as distributed libtiff support LZW decompression, but not LZW compression.
CHANGES IN THE CONTRIB AREA:
  • Fixed distribution to include contrib/addtiffo/tif_ovrcache.{c,h}.
TIFF home page.

Last updated $Date: 2004/11/26 14:37:20 $. 07070100041375000041ed0000000000000000000000024cc7a452000000000000010000010006ffffffffffffffff0000002d00000000root/usr/local/share/doc/tiff-3.9.4/html/man070701000413b0000081a40000000000000000000000014cc7a426000011310000010000010006ffffffffffffffff0000003c00000000root/usr/local/share/doc/tiff-3.9.4/html/man/tiffcmp.1.html TIFFCMP

TIFFCMP

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
BUGS
SEE ALSO

NAME

tiffcmp − compare two TIFF files

SYNOPSIS

tiffcmp [ options ] file1.tif file2.tif

DESCRIPTION

Tiffcmp compares the tags and data in two files created according to the Tagged Image File Format, Revision 6.0. The schemes used for compressing data in each file are immaterial when data are compared−data are compared on a scanline-by-scanline basis after decompression. Most directory tags are checked; notable exceptions are: GrayResponseCurve, ColorResponseCurve, and ColorMap tags. Data will not be compared if any of the BitsPerSample, SamplesPerPixel, or ImageWidth values are not equal. By default, tiffcmp will terminate if it encounters any difference.

OPTIONS

−l

List each byte of image data that differs between the files.

−z number

List specified number of image data bytes that differs between the files.

−t

Ignore any differences in directory tags.

BUGS

Tags that are not recognized by the library are not compared; they may also generate spurious diagnostics.

The image data of tiled files is not compared, since the TIFFReadScanline() function is used. An error will be reported for tiled files.

The pixel and/or sample number reported in differences may be off in some exotic cases.

SEE ALSO

pal2rgb(1), tiffcp(1), tiffmedian(1), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


070701000413b4000081a40000000000000000000000014cc7a426000015b40000010000010006ffffffffffffffff0000003f00000000root/usr/local/share/doc/tiff-3.9.4/html/man/tiffdither.1.html TIFFDITHER

TIFFDITHER

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
NOTES
SEE ALSO

NAME

tiffdither − convert a greyscale image to bilevel using dithering

SYNOPSIS

tiffdither [ options ] input.tif output.tif

DESCRIPTION

tiffdither converts a single channel 8-bit greyscale image to a bilevel image using Floyd-Steinberg error propagation with thresholding.

OPTIONS

−c

Specify the compression to use for data written to the output file: none for no compression, packbits for PackBits compression, lzw for Lempel-Ziv & Welch compression, zip for Deflate compression, g3 for CCITT Group 3 (T.4) compression, and g4 for CCITT Group 4 (T.6) compression. By default tiffdither will compress data according to the value of the Compression tag found in the source file.

The CCITT Group 3 and Group 4 compression algorithms can only be used with bilevel data.

Group 3 compression can be specified together with several T.4-specific options: 1d for 1-dimensional encoding, 2d for 2-dimensional encoding, and fill to force each encoded scanline to be zero-filled so that the terminating EOL code lies on a byte boundary. Group 3-specific options are specified by appending a ‘‘:’’-separated list to the ‘‘g3’’ option; e.g. −c g3:2d:fill to get 2D-encoded data with byte-aligned EOL codes.

LZW compression can be specified together with a predictor value. A predictor value of 2 causes each scanline of the output image to undergo horizontal differencing before it is encoded; a value of 1 forces each scanline to be encoded without differencing. LZW-specific options are specified by appending a ‘‘:’’-separated list to the ‘‘lzw’’ option; e.g. −c lzw:2 for LZW compression with horizontal differencing.

−f

Specify the bit fill order to use in writing output data. By default, tiffdither will create a new file with the same fill order as the original. Specifying −f lsb2msb will force data to be written with the FillOrder tag set to LSB2MSB , while −f msb2lsb will force data to be written with the Fill- Order tag set to MSB2LSB .

−t

Set the threshold value for dithering. By default the threshold value is 128.

NOTES

The dither algorithm is taken from the tiffmedian(1) program (written by Paul Heckbert).

SEE ALSO

pal2rgb(1), fax2tiff(1), tiffinfo(1), tiffcp(1), tiff2bw(1), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


070701000413a9000081a40000000000000000000000014cc7a42600000fc40000010000010006ffffffffffffffff0000003d00000000root/usr/local/share/doc/tiff-3.9.4/html/man/sgi2tiff.1.html SGI2TIFF

SGI2TIFF

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
BUGS
SEE ALSO

NAME

sgi2tiff − create a TIFF file from an SGI image file

SYNOPSIS

sgi2tiff [ options ] input.rgb output.tif

DESCRIPTION

sgi2tiff converts a file in the SGI image format to TIFF. By default, the TIFF image is created with data samples packed (PlanarConfiguration=1), compressed with the Lempel-Ziv & Welch algorithm (Compression=5), and with each strip no more than 8 kilobytes. These characteristics can overridden, or explicitly specified with the options described below.

OPTIONS

−c

Specify a compression scheme to use when writing image data: −c none for no compression, −c packbits for the PackBits compression algorithm), −c jpeg for the baseline JPEG compression algorithm, −c zip for the Deflate compression algorithm, and −c lzw for Lempel-Ziv & Welch (the default).

−p

Explicitly select the planar configuration used in organizing data samples in the output image: −p contig for samples packed contiguously, and −p separate for samples stored separately. By default samples are packed.

−r

Write data with a specified number of rows per strip; by default the number of rows/strip is selected so that each strip is approximately 8 kilobytes.

BUGS

Does not record colormap information.

SEE ALSO

tiffinfo(1), tiffcp(1), tiffmedian(1), libtiff(3)

Libtiff library home page: http://www.remotesensing.org/libtiff/


070701000413a1000081a40000000000000000000000014cc7a42600000ece0000010000010006ffffffffffffffff0000003800000000root/usr/local/share/doc/tiff-3.9.4/html/man/index.htmlLibtiff HTML manpage index 07070100041391000081a40000000000000000000000014cc7a4260000119f0000010000010006ffffffffffffffff0000004a00000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFWriteRawStrip.3tiff.html TIFFWriteRawstrip

TIFFWriteRawstrip

NAME
SYNOPSIS
DESCRIPTION
NOTES
RETURN VALUES
DIAGNOSTICS
SEE ALSO

NAME

TIFFWriteRawStrip − write a strip of raw data to an open TIFF file

SYNOPSIS

#include <tiffio.h>

tsize_t TIFFWriteRawStrip(TIFF *tif, tstrip_t strip, tdata_t buf, tsize_t size)

DESCRIPTION

Append size bytes of raw data to the specified strip.

NOTES

The strip number must be valid according to the current settings of the ImageLength and RowsPerStrip tags. An image may be dynamically grown by increasing the value of ImageLength prior to each call to TIFFWriteRawStrip.

RETURN VALUES

−1 is returned if an error occurred. Otherwise, the value of size is returned.

DIAGNOSTICS

All error messages are directed to the TIFFError(3TIFF) routine.

%s: File not open for writing. The file was opened for reading, not writing.

Can not write scanlines to a tiled image. The image is assumed to be organized in tiles because the TileWidth and TileLength tags have been set with TIFFSetField(3TIFF).

%s: Must set "ImageWidth" before writing data. The image’s width has not be set before the first write. See TIFFSetField(3TIFF) for information on how to do this.

%s: Must set "PlanarConfiguration" before writing data. The organization of data has not be defined before the first write. See TIFFSetField(3TIFF) for information on how to do this.

%s: No space for strip arrays". There was not enough space for the arrays that hold strip offsets and byte counts.

%s: Strip %d out of range, max %d. The specified strip is not a valid strip according to the currently specified image dimensions.

SEE ALSO

TIFFOpen(3TIFF), TIFFWriteEncodedStrip(3TIFF), TIFFWriteScanline(3TIFF), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


070701000413a0000081a40000000000000000000000014cc7a42600000f350000010000010006ffffffffffffffff0000003d00000000root/usr/local/share/doc/tiff-3.9.4/html/man/gif2tiff.1.html GIF2TIFF

GIF2TIFF

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
NOTES
BUGS
SEE ALSO

NAME

gif2tiff − create a TIFF file from a GIF87 format image file

SYNOPSIS

gif2tiff [ options ] input.gif output.tif

DESCRIPTION

Gif2tiff converts a file in the GIF87 format to TIFF. The TIFF image is created as a palette image, with samples compressed with the Lempel-Ziv & Welch algorithm (Compression=5). These characteristics can overridden, or explicitly specified with the options described below.

OPTIONS

−c

Specify a compression scheme to use when writing image data: −c none for no compression, −c packbits for the PackBits compression algorithm, −c zip for the Deflate compression algorithm, and −c lzw for Lempel-Ziv & Welch (the default).

−r

Write data with a specified number of rows per strip; by default the number of rows/strip is selected so that each strip is approximately 8 kilobytes.

NOTES

The program is based on Paul Haeberli’s fromgif program which, in turn, is based on Marcel J.E. Mol’s GIF reader.

BUGS

Should have more options to control output format.

SEE ALSO

pal2rgb(1), tiffinfo(1), tiffcp(1), tiffmedian(1), libtiff(3)

Libtiff library home page: http://www.remotesensing.org/libtiff/


07070100041398000081a40000000000000000000000014cc7a42600000df10000010000010006ffffffffffffffff0000004300000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFmemory.3tiff.html MEMORY

MEMORY

NAME
SYNOPSIS
DESCRIPTION
DIAGNOSTICS
SEE ALSO

NAME

_TIFFmalloc, _TIFFrealloc, _TIFFfree, _TIFFmemset, _TIFFmemcpy, _TIFFmemcmp, − memory management-related functions for use with TIFF files

SYNOPSIS

#include <tiffio.h>

tdata_t _TIFFmalloc(tsize_t size);
tdata_t _TIFFrealloc(tdata_t
buffer, tsize_t size);
void _TIFFfree(tdata_t
buffer);
void _TIFFmemset(tdata_t
s, int c, tsize_t n);
void _TIFFmemcpy(tdata_t
dest, const tdata_t src, tsize_t n);
int _TIFFmemcmp(const tdata_t
s1, const tdata_t s2, tsize_t n);

DESCRIPTION

These routines are provided for writing portable software that uses libtiff; they hide any memory-management related issues, such as dealing with segmented architectures found on 16-bit machines.

_TIFFmalloc and _TIFFrealloc are used to dynamically allocate and reallocate memory used by libtiff; such as memory passed into the I/O routines. Memory allocated through these interfaces is released back to the system using the _TIFFfree routine.

Memory allocated through one of the above interfaces can be set to a known value using _TIFFmemset, copied to another memory location using _TIFFmemcpy, or compared for equality using _TIFFmemcmp. These routines conform to the equivalent ANSI C routines: memset, memcpy, and memcmp, repsectively.

DIAGNOSTICS

None.

SEE ALSO

malloc(3), memory(3), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


070701000413b9000081a40000000000000000000000014cc7a426000013380000010000010006ffffffffffffffff0000003c00000000root/usr/local/share/doc/tiff-3.9.4/html/man/tiffset.1.html TIFFSET

TIFFSET

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
EXAMPLES
SEE ALSO

NAME

tiffset − set a field in a TIFF header

SYNOPSIS

tiffset [ options ] filename.tif

DESCRIPTION

Tiffset sets the value of a TIFF header to a specified value.

OPTIONS

−s tagnumber [ count ] value ...

Set the value of the named tag to the value or values specified.

−sf tagnumber filename

Set the value of the tag to the contents of filename. This option is supported for ASCII tags only.

EXAMPLES

The following example sets the image description tag (270) of a.tif to the contents of the file descrip:

tiffset −sf 270 descrip a.tif

The following example sets the artist tag (315) of a.tif to the string ‘‘Anonymous’’:

tiffset −s 305 Anonymous a.tif

This example sets the resolution of the file a.tif to 300 dpi:

tiffset −s 296 2 a.tif
tiffset −s 282 300.0 a.tif
tiffset −s 283 300.0 a.tif

SEE ALSO

tiffdump(1), tiffinfo(1), tiffcp(1), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


0707010004137c000081a40000000000000000000000014cc7a4260000127d0000010000010006ffffffffffffffff0000004b00000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFPrintDirectory.3tiff.html TIFFPrintDirectory

TIFFPrintDirectory

NAME
SYNOPSIS
DESCRIPTION
NOTES
RETURN VALUES
DIAGNOSTICS
SEE ALSO

NAME

TIFFPrintDirectory − print a description of a TIFF directory

SYNOPSIS

#include <tiffio.h>

void TIFFPrintDirectory(TIFF *tif, FILE *fd, long flags)

DESCRIPTION

TIFFPrintDirectory prints a description of the current directory in the specified TIFF file to the standard I/O output stream fd. The flags parameter is used to control the level of detail of the printed information; it is a bit-or of the flags defined in tiffio.h:

#define TIFFPRINT_NONE 0x0 /* no extra info */

#define

TIFFPRINT_STRIPS

0x1

/* strips/tiles info */

#define

TIFFPRINT_CURVES

0x2

/* color/gray response curves */

#define

TIFFPRINT_COLORMAP

0x4

/* colormap */

#define

TIFFPRINT_JPEGQTABLES

0x100

/* JPEG Q matrices */

#define

TIFFPRINT_JPEGACTABLES

0x200

/* JPEG AC tables */

#define

TIFFPRINT_JPEGDCTABLES

0x200

/* JPEG DC tables */

NOTES

In C++ the flags parameter defaults to 0.

RETURN VALUES

None.

DIAGNOSTICS

None.

SEE ALSO

libtiff(3TIFF), TIFFOpen(3TIFF), TIFFReadDirectory(3TIFF), TIFFSetDirectory(3TIFF)


070701000413a4000081a40000000000000000000000014cc7a42600000f8b0000010000010006ffffffffffffffff0000003d00000000root/usr/local/share/doc/tiff-3.9.4/html/man/ppm2tiff.1.html PPM2TIFF

PPM2TIFF

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
SEE ALSO

NAME

ppm2tiff − create a TIFF file from PPM, PGM and PBM image files

SYNOPSIS

ppm2tiff [ options ] [ input.ppm ] output.tif

DESCRIPTION

ppm2tiff converts a file in the PPM, PGM and PBM image formats to TIFF. By default, the TIFF image is created with data samples packed (PlanarConfiguration=1), compressed with the Packbits algorithm (Compression=32773), and with each strip no more than 8 kilobytes. These characteristics can be overridden, or explicitly specified with the options described below

If the PPM file contains greyscale data, then the PhotometricInterpretation tag is set to 1 (min-is-black), otherwise it is set to 2 (RGB).

If no PPM file is specified on the command line, ppm2tiff will read from the standard input.

OPTIONS

−c

Specify a compression scheme to use when writing image data: none for no compression, packbits for PackBits compression (will be used by default), lzw for Lempel-Ziv & Welch compression, jpeg for baseline JPEG compression, zip for Deflate compression, g3 for CCITT Group 3 (T.4) compression, and g4 for CCITT Group 4 (T.6) compression.

−r

Write data with a specified number of rows per strip; by default the number of rows/strip is selected so that each strip is approximately 8 kilobytes.

−R

Mark the resultant image to have the specified X and Y resolution (in dots/inch).

SEE ALSO

tiffinfo(1), tiffcp(1), tiffmedian(1), libtiff(3)

Libtiff library home page: http://www.remotesensing.org/libtiff/


0707010004137d000081a40000000000000000000000014cc7a426000030160000010000010006ffffffffffffffff0000004600000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFRGBAImage.3tiff.html TIFFRGBAImage

TIFFRGBAImage

NAME
SYNOPSIS
DESCRIPTION
ALTERNATE RASTER FORMATS
SIMULTANEOUS RASTER STORE AND DISPLAY
SUPPORTING ADDITIONAL TIFF FORMATS
NOTES
RETURN VALUES
DIAGNOSTICS
SEE ALSO

NAME

TIFFRGBAImageOK, TIFFRGBAImageBegin, TIFFRGBAImageGet, TIFFRGBAImageEnd − read and decode an image into a raster

SYNOPSIS

#include <tiffio.h>

typedef unsigned char TIFFRGBValue; typedef struct _TIFFRGBAImage TIFFRGBAImage;

int TIFFRGBAImageOK(TIFF *tif, char emsg[1024])
int TIFFRGBAImageBegin(TIFFRGBAImage *
img, TIFF* tif, int stopOnError, char emsg[1024])
int TIFFRGBAImageGet(TIFFRGBAImage *
img, uint32* raster, uint32 width , uint32 height)
void TIFFRGBAImageEnd(TIFFRGBAImage *
img)

DESCRIPTION

The routines described here provide a high-level interface through which TIFF images may be read into memory. Images may be strip- or tile-based and have a variety of different characteristics: bits/sample, samples/pixel, photometric, etc. Decoding state is encapsulated in a TIFFRGBAImage structure making it possible to capture state for multiple images and quickly switch between them. The target raster format can be customized to a particular application’s needs by installing custom routines that manipulate image data according to application requirements.

The default usage for these routines is: check if an image can be processed using TIFFRGBAImageOK, construct a decoder state block using TIFFRGBAImageBegin, read and decode an image into a target raster using TIFFRGBAImageGet, and then release resources using TIFFRGBAImageEnd. TIFFRGBAImageGet can be called multiple times to decode an image using different state parameters. If multiple images are to be displayed and there is not enough space for each of the decoded rasters, multiple state blocks can be managed and then calls can be made to TIFFRGBAImageGet as needed to display an image.

The generated raster is assumed to be an array of width times height 32-bit entries, where width must be less than or equal to the width of the image (height may be any non-zero size). If the raster dimensions are smaller than the image, the image data is cropped to the raster bounds. If the raster height is greater than that of the image, then the image data are placed in the lower part of the raster. (Note that the raster is assume to be organized such that the pixel at location (x,y) is raster[y*width+x]; with the raster origin in the lower-left hand corner.)

Raster pixels are 8-bit packed red, green, blue, alpha samples. The macros TIFFGetR, TIFFGetG, TIFFGetB, and TIFFGetA should be used to access individual samples. Images without Associated Alpha matting information have a constant Alpha of 1.0 (255).

TIFFRGBAImageGet converts non-8-bit images by scaling sample values. Palette, grayscale, bilevel, CMYK , and YCbCr images are converted to RGB transparently. Raster pixels are returned uncorrected by any colorimetry information present in the directory.

The parameter stopOnError specifies how to act if an error is encountered while reading the image. If stopOnError is non-zero, then an error will terminate the operation; otherwise TIFFRGBAImageGet will continue processing data until all the possible data in the image have been requested.

ALTERNATE RASTER FORMATS

To use the core support for reading and processing TIFF images, but write the resulting raster data in a different format one need only override the ‘‘put methods’’ used to store raster data. These methods are are defined in the TIFFRGBAImage structure and initially setup by TIFFRGBAImageBegin to point to routines that pack raster data in the default ABGR pixel format. Two different routines are used according to the physical organization of the image data in the file: PlanarConfiguration=1 (packed samples), and PlanarConfiguration=2 (separated samples). Note that this mechanism can be used to transform the data before storing it in the raster. For example one can convert data to colormap indices for display on a colormap display.

SIMULTANEOUS RASTER STORE AND DISPLAY

It is simple to display an image as it is being read into memory by overriding the put methods as described above for supporting alternate raster formats. Simply keep a reference to the default put methods setup by TIFFRGBAImageBegin and then invoke them before or after each display operation. For example, the tiffgt(1) utility uses the following put method to update the display as the raster is being filled:

static void
putContigAndDraw(TIFFRGBAImage* img, uint32* raster,
    uint32 x, uint32 y, uint32 w, uint32 h,
    int32 fromskew, int32 toskew,
    unsigned char* cp)
{
    (*putContig)(img, raster, x, y, w, h, fromskew, toskew, cp);
    if (x+w == width) {
     w = width;
     if (img->orientation == ORIENTATION_TOPLEFT)
         lrectwrite(0, y-(h-1), w-1, y, raster-x-(h-1)*w);
     else
         lrectwrite(0, y, w-1, y+h-1, raster);
    }
}

(the original routine provided by the library is saved in the variable putContig.)

SUPPORTING ADDITIONAL TIFF FORMATS

The TIFFRGBAImage routines support the most commonly encountered flavors of TIFF. It is possible to extend this support by overriding the ‘‘get method’’ invoked by TIFFRGBAImageGet to read TIFF image data. Details of doing this are a bit involved, it is best to make a copy of an existing get method and modify it to suit the needs of an application.

NOTES

Samples must be either 1, 2, 4, 8, or 16 bits. Colorimetric samples/pixel must be either 1, 3, or 4 (i.e. SamplesPerPixel minus ExtraSamples).

Palette image colormaps that appear to be incorrectly written as 8-bit values are automatically scaled to 16-bits.

RETURN VALUES

All routines return 1 if the operation was successful. Otherwise, 0 is returned if an error was encountered and stopOnError is zero.

DIAGNOSTICS

All error messages are directed to the TIFFError(3TIFF) routine.

Sorry, can not handle %d-bit pictures. The image had BitsPerSample other than 1, 2, 4, 8, or 16.

Sorry, can not handle %d-channel images. The image had SamplesPerPixel other than 1, 3, or 4.

Missing needed "PhotometricInterpretation" tag. The image did not have a tag that describes how to display the data.

No "PhotometricInterpretation" tag, assuming RGB. The image was missing a tag that describes how to display it, but because it has 3 or 4 samples/pixel, it is assumed to be RGB.

No "PhotometricInterpretation" tag, assuming min-is-black. The image was missing a tag that describes how to display it, but because it has 1 sample/pixel, it is assumed to be a grayscale or bilevel image.

No space for photometric conversion table. There was insufficient memory for a table used to convert image samples to 8-bit RGB.

Missing required "Colormap" tag. A Palette image did not have a required Colormap tag.

No space for tile buffer. There was insufficient memory to allocate an i/o buffer.

No space for strip buffer. There was insufficient memory to allocate an i/o buffer.

Can not handle format. The image has a format (combination of BitsPerSample, SamplesPerPixel, and PhotometricInterpretation) that can not be handled.

No space for B&W mapping table. There was insufficient memory to allocate a table used to map grayscale data to RGB.

No space for Palette mapping table. There was insufficient memory to allocate a table used to map data to 8-bit RGB.

SEE ALSO

TIFFOpen(3TIFF), TIFFReadRGBAImage(3TIFF), TIFFReadRGBAImageOriented(3TIFF), TIFFReadRGBAStrip(3TIFF), TIFFReadRGBATile(3TIFF), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


0707010004138f000081a40000000000000000000000014cc7a4260000131e0000010000010006ffffffffffffffff0000004d00000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFWriteEncodedTile.3tiff.html TIFFWriteEncodedTile

TIFFWriteEncodedTile

NAME
SYNOPSIS
DESCRIPTION
NOTES
RETURN VALUES
DIAGNOSTICS
SEE ALSO

NAME

TIFFWritedEncodedTile − compress and write a tile of data to an open TIFF file

SYNOPSIS

#include <tiffio.h>

tsize_t TIFFWriteEncodedTile(TIFF *tif, ttile_t tile, tdata_t buf, tsize_t size)

DESCRIPTION

Compress size bytes of raw data from buf and append the result to the end of the specified tile. Note that the value of tile is a ‘‘raw tile number.’’ That is, the caller must take into account whether or not the data are organized in separate places (PlanarConfiguration=2). TIFFComputeTile automatically does this when converting an (x,y,z,sample) coordinate quadruple to a tile number.

NOTES

The library writes encoded data using the native machine byte order. Correctly implemented TIFF readers are expected to do any necessary byte-swapping to correctly process image data with BitsPerSample greater than 8.

RETURN VALUES

−1 is returned if an error was encountered. Otherwise, the value of size is returned.

DIAGNOSTICS

All error messages are directed to the TIFFError(3TIFF) routine.

%s: File not open for writing. The file was opened for reading, not writing.

Can not write tiles to a stripped image. The image is assumed to be organized in strips because neither of the TileWidth or TileLength tags have been set with TIFFSetField(3TIFF).

%s: Must set "ImageWidth" before writing data. The image’s width has not be set before the first write. See TIFFSetField(3TIFF) for information on how to do this.

%s: Must set "PlanarConfiguration" before writing data. The organization of data has not be defined before the first write. See TIFFSetField(3TIFF) for information on how to do this.

%s: No space for tile arrays". There was not enough space for the arrays that hold tile offsets and byte counts.

SEE ALSO

TIFFOpen(3TIFF), TIFFWriteTile(3TIFF), TIFFWriteRawTile(3TIFF), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


0707010004138c000081a40000000000000000000000014cc7a42600000d1a0000010000010006ffffffffffffffff0000004400000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFWarning.3tiff.html TIFFWarning

TIFFWarning

NAME
SYNOPSIS
DESCRIPTION
RETURN VALUES
SEE ALSO

NAME

TIFFWarning, TIFFSetWarningHandler − library warning interface

SYNOPSIS

#include <tiffio.h>

void TIFFWarning(const char *module, const char *fmt, ...)

#include <stdargh.h>

typedef void (*TIFFWarningHandler)(const char *module, const char *fmt, va_list ap);

TIFFWarningHandler TIFFSetWarningHandler(TIFFWarningHandler handler);

DESCRIPTION

TIFFWarning invokes the library-wide warning handler function to (normally) write a warning message to the stderr. The fmt parameter is a printf(3S) format string, and any number arguments can be supplied. The module parameter is interpreted as a string that, if non-zero, should be printed before the message; it typically is used to identify the software module in which a warning is detected.

Applications that desire to capture control in the event of a warning should use TIFFSetWarningHandler to override the default warning handler. A NULL (0) warning handler function may be installed to suppress error messages.

RETURN VALUES

TIFFSetWarningHandler returns a reference to the previous error handling function.

SEE ALSO

TIFFError(3TIFF), libtiff(3TIFF), printf(3)

Libtiff library home page: http://www.remotesensing.org/libtiff/


070701000413a3000081a40000000000000000000000014cc7a4260000147c0000010000010006ffffffffffffffff0000003c00000000root/usr/local/share/doc/tiff-3.9.4/html/man/pal2rgb.1.html PAL2RGB

PAL2RGB

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
BUGS
SEE ALSO

NAME

pal2rgb − convert a palette color TIFF image to a full color image

SYNOPSIS

pal2rgb [ options ] input.tif output.tif

DESCRIPTION

Pal2rgb converts a palette color TIFF image to a full color image by applying the colormap of the palette image to each sample to generate a full color RGB image.

OPTIONS

Options that affect the interpretation of input data are:

−C

This option overrides the default behavior of pal2rgb in determining whether or not colormap entries contain 16-bit or 8-bit values. By default the colormap is inspected and if no colormap entry greater than 255 is found, the colormap is assumed to have only 8-bit values; otherwise 16-bit values (as required by the TIFF specification) are assumed. The −C option can be used to explicitly specify the number of bits for colormap entries: −C 8 for 8-bit values, −C 16 for 16-bit values.

Options that affect the output file format are:

−p

Explicitly select the planar configuration used in organizing data samples in the output image: −p contig for samples packed contiguously, and −p separate for samples stored separately. By default samples are packed.

−c

Use the specific compression algorithm to encoded image data in the output file: −c packbits for Macintosh Packbits, −c lzw for Lempel-Ziv & Welch, −c zip for Deflate, −c none for no compression. If no compression-related option is specified, the input file’s compression algorithm is used.

−r

Explicitly specify the number of rows in each strip of the output file. If the −r option is not specified, a number is selected such that each output strip has approximately 8 kilobytes of data in it.

BUGS

Only 8-bit images are handled.

SEE ALSO

tiffinfo(1), tiffcp(1), tiffmedian(1), libtiff(3)

Libtiff library home page: http://www.remotesensing.org/libtiff/


070701000413ad000081a40000000000000000000000014cc7a426000033120000010000010006ffffffffffffffff0000003c00000000root/usr/local/share/doc/tiff-3.9.4/html/man/tiff2ps.1.html TIFF2PS

TIFF2PS

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
EXAMPLES
BUGS
SEE ALSO

NAME

tiff2ps − convert a TIFF image to PostScript™

SYNOPSIS

tiff2ps [ options ] input.tif ...

DESCRIPTION

tiff2ps reads TIFF images and writes PostScript or Encapsulated PostScript (EPS) on the standard output. By default, tiff2ps writes Encapsulated PostScript for the first image in the specified TIFF image file.

By default, tiff2ps will generate PostScript that fills a printed area specified by the TIFF tags in the input file. If the file does not contain XResolution or YResolution tags, then the printed area is set according to the image dimensions. The −w and −h options (see below) can be used to set the dimensions of the printed area in inches; overriding any relevant TIFF tags.

The PostScript generated for RGB, palette, and CMYK images uses the colorimage operator. The PostScript generated for greyscale and bilevel images uses the image operator. When the colorimage operator is used, PostScript code to emulate this operator on older PostScript printers is also generated. Note that this emulation code can be very slow.

Color images with associated alpha data are composited over a white background.

OPTIONS

−1

Generate PostScript Level 1 (the default).

−2

Generate PostScript Level 2.

−3

Generate PostScript Level 3. It basically allows one to use the /flateDecode filter for ZIP compressed TIFF images.

−a

Generate output for all IFDs (pages) in the input file.

−b

Specify the bottom margin for the output (in inches). This does not affect the height of the printed image.

−c

Center the image in the output. This option only shows an effect if both the −w and the −h option are given.

−d

Set the initial TIFF directory to the specified directory number. (NB: Directories are numbered starting at zero.) This option is useful for selecting individual pages in a multi-page (e.g. facsimile) file.

−e

Force the generation of Encapsulated PostScript (implies −z).

−h

Specify the vertical size of the printed area (in inches).

−H

Specify the maximum height of image (in inches). Images with larger sizes will be split in several pages. Option −L may be used for specifying size of split images overlapping.

−i

Enable/disable pixel interpolation. This option requires a single numeric value: zero to disable pixel interpolation and non-zero to enable. The default is enabled.

−L

Specify the size of overlapping for split images (in inches). Used in conjunction with −H option.

−l

Specify the left margin for the output (in inches). This does not affect the width of the printed image.

−m

Where possible render using the imagemask PostScript operator instead of the image operator. When this option is specified tiff2ps will use imagemask for rendering 1 bit deep images. If this option is not specified or if the image depth is greater than 1 then the image operator is used.

−o

Set the initial TIFF directory to the IFD at the specified file offset. This option is useful for selecting thumbnail images and the like which are hidden using the SubIFD tag.

−p

Force the generation of (non-Encapsulated) PostScript.

−r

Rotate image by 180 degrees.

−s

Generate output for a single IFD (page) in the input file.

−w

Specify the horizontal size of the printed area (in inches).

−x

Override resolution units specified in the TIFF as centimeters.

−y

Override resolution units specified in the TIFF as inches.

−z

When generating PostScript Level 2, data is scaled so that it does not image into the deadzone on a page (the outer margin that the printing device is unable to mark). This option suppresses this behavior. When PostScript Level 1 is generated, data is imaged to the entire printed page and this option has no affect.

EXAMPLES

The following generates PostScript Level 2 for all pages of a facsimile:

tiff2ps −a2 fax.tif | lpr

Note also that if you have version 2.6.1 or newer of Ghostscript then you can efficiently preview facsimile generated with the above command.

To generate Encapsulated PostScript for a the image at directory 2 of an image use:

tiff2ps −d 1 foo.tif

(Notice that directories are numbered starting at zero.)

If you have a long image, it may be split in several pages:

tiff2ps −h11 −w8.5 −H14 −L.5 foo.tif > foo.ps

The page size is set to 8.5x11 by −w and −h options. We will accept a small amount of vertical compression, so −H set to 14. Any pages between 11 and 14 inches will be fit onto one page. Pages longer than 14 inches are cut off at 11 and continued on the next page. The −L.5 option says to repeat a half inch on the next page (to improve readability).

BUGS

Because PostScript does not support the notion of a colormap, 8-bit palette images produce 24-bit PostScript images. This conversion results in output that is six times bigger than the original image and which takes a long time to send to a printer over a serial line. Matters are even worse for 4-, 2-, and 1-bit palette images.

Does not handle tiled images when generating PostScript Level I output.

SEE ALSO

pal2rgb(1), tiffinfo(1), tiffcp(1), tiffgt(1), tiffmedian(1), tiff2bw(1), tiffsv(1), libtiff(3)

Libtiff library home page: http://www.remotesensing.org/libtiff/


0707010004139a000081a40000000000000000000000014cc7a42600000abc0000010000010006ffffffffffffffff0000004100000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFsize.3tiff.html TIFFSIZE

TIFFSIZE

NAME
SYNOPSIS
DESCRIPTION
DIAGNOSTICS
SEE ALSO

NAME

TIFFScanlineSize, TIFFRasterScanlineSize, − return the size of various items associated with an open TIFF file

SYNOPSIS

#include <tiffio.h>

tsize_t TIFFRasterScanlineSize(TIFF *tif)
tsize_t TIFFScanlineSize(TIFF *
tif)

DESCRIPTION

TIFFScanlineSize returns the size in bytes of a row of data as it would be returned in a call to TIFFReadScanline, or as it would be expected in a call to TIFFWriteScanline.

TIFFRasterScanlineSize returns the size in bytes of a complete decoded and packed raster scanline. Note that this value may be different from the value returned by TIFFScanlineSize if data is stored as separate planes.

DIAGNOSTICS

None.

SEE ALSO

TIFFOpen(3TIFF), TIFFReadScanline(3TIFF), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


07070100041378000081a40000000000000000000000014cc7a42600000caf0000010000010006ffffffffffffffff0000004200000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFError.3tiff.html TIFFError

TIFFError

NAME
SYNOPSIS
DESCRIPTION
RETURN VALUES
SEE ALSO

NAME

TIFFError, TIFFSetErrorHandler − library error handling interface

SYNOPSIS

#include <tiffio.h>

void TIFFError(const char *module, const char *fmt, ...)

#include <stdarg.h>

typedef void (*TIFFErrorHandler)(const char *module, const char *fmt, va_list ap);
TIFFErrorHandler TIFFSetErrorHandler(TIFFErrorHandler handler);

DESCRIPTION

TIFFError invokes the library-wide error handling function to (normally) write an error message to the stderr. The fmt parameter is a printf(3S) format string, and any number arguments can be supplied. The module parameter, if non-zero, is printed before the message; it typically is used to identify the software module in which an error is detected.

Applications that desire to capture control in the event of an error should use TIFFSetErrorHandler to override the default error handler. A NULL (0) error handling function may be installed to suppress error messages.

RETURN VALUES

TIFFSetErrorHandler returns a reference to the previous error handling function.

SEE ALSO

TIFFWarning(3TIFF), libtiff(3TIFF), printf(3)

Libtiff library home page: http://www.remotesensing.org/libtiff/


0707010004138a000081a40000000000000000000000014cc7a426000050b50000010000010006ffffffffffffffff0000004500000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFSetField.3tiff.html TIFFSetField

TIFFSetField

NAME
SYNOPSIS
DESCRIPTION
RETURN VALUES
DIAGNOSTICS
SEE ALSO

NAME

TIFFSetField, TIFFVSetField − set the value(s) of a tag in a TIFF file open for writing

SYNOPSIS

#include <tiffio.h>

int TIFFSetField(TIFF *tif, ttag_t tag, ...)

#include <stdarg.h>

int TIFFVSetField(TIFF *tif, ttag_t tag, va_list ap)

DESCRIPTION

TIFFSetField sets the value of a field or pseudo-tag in the current directory associated with the open TIFF file tif. (A pseudo-tag is a parameter that is used to control the operation of the TIFF library but whose value is not read or written to the underlying file.) To set the value of a field the file must have been previously opened for writing with TIFFOpen(3TIFF); pseudo-tags can be set whether the file was opened for reading or writing. The field is identified by tag, one of the values defined in the include file tiff.h (see also the table below). The actual value is specified using a variable argument list, as prescribed by the stdarg(3) interface (or, on some machines, the varargs(3) interface.)

TIFFVSetField is functionally equivalent to TIFFSetField except that it takes a pointer to a variable argument list. TIFFVSetField is useful for writing routines that are layered on top of the functionality provided by TIFFSetField.

The tags understood by libtiff, the number of parameter values, and the expected types for the parameter values are shown below. The data types are: char* is null-terminated string and corresponds to the ASCII data type; uint16 is an unsigned 16-bit value; uint32 is an unsigned 32-bit value; uint16* is an array of unsigned 16-bit values. void* is an array of data values of unspecified type.

Consult the TIFF specification for information on the meaning of each tag.

Tag Name Count Types Notes

TIFFTAG_ARTIST

1

char*

TIFFTAG_BADFAXLINES

1

uint32

TIFFTAG_BITSPERSAMPLE

1

uint16

TIFFTAG_CLEANFAXDATA

1

uint16

TIFFTAG_COLORMAP

3

uint16*

1<<BitsPerSample arrays

TIFFTAG_COMPRESSION

1

uint16

TIFFTAG_CONSECUTIVEBADFAXLINES

1

uint32

TIFFTAG_COPYRIGHT

1

char*

TIFFTAG_DATETIME

1

char*

TIFFTAG_DOCUMENTNAME

1

char*

TIFFTAG_DOTRANGE

2

uint16

TIFFTAG_EXTRASAMPLES

2

uint16,uint16*

† count & types array

TIFFTAG_FAXFILLFUNC

1

TIFFFaxFillFunc

G3/G4 compression pseudo-tag

TIFFTAG_FAXMODE

1

int

† G3/G4 compression pseudo-tag

TIFFTAG_FILLORDER

1

uint16

TIFFTAG_GROUP3OPTIONS

1

uint32

TIFFTAG_GROUP4OPTIONS

1

uint32

TIFFTAG_HALFTONEHINTS

2

uint16

TIFFTAG_HOSTCOMPUTER

1

char*

TIFFTAG_ICCPROFILE

2

uint32,void*

count, profile data

TIFFTAG_IMAGEDEPTH

1

uint32

TIFFTAG_IMAGEDESCRIPTION

1

char*

TIFFTAG_IMAGELENGTH

1

uint32

TIFFTAG_IMAGEWIDTH

1

uint32

TIFFTAG_INKNAMES

2

uint16, char*

TIFFTAG_INKSET

1

uint16

TIFFTAG_JPEGCOLORMODE

1

int

† JPEG pseudo-tag

TIFFTAG_JPEGQUALITY

1

int

JPEG pseudo-tag

TIFFTAG_JPEGTABLES

2

uint32*,void*

† count & tables

TIFFTAG_JPEGTABLESMODE

1

int

† JPEG pseudo-tag

TIFFTAG_MAKE

1

char*

TIFFTAG_MATTEING

1

uint16

TIFFTAG_MAXSAMPLEVALUE

1

uint16

TIFFTAG_MINSAMPLEVALUE

1

uint16

TIFFTAG_MODEL

1

char*

TIFFTAG_ORIENTATION

1

uint16

TIFFTAG_PAGENAME

1

char*

TIFFTAG_PAGENUMBER

2

uint16

TIFFTAG_PHOTOMETRIC

1

uint16

TIFFTAG_PHOTOSHOP

?

uint32,void*

count, data

TIFFTAG_PLANARCONFIG

1

uint16

TIFFTAG_PREDICTOR

1

uint16

TIFFTAG_PRIMARYCHROMATICITIES

1

float*

6-entry array

TIFFTAG_REFERENCEBLACKWHITE

1

float*

† 2*SamplesPerPixel array

TIFFTAG_RESOLUTIONUNIT

1

uint16

TIFFTAG_RICHTIFFIPTC

2

uint32,void*

count, data

TIFFTAG_ROWSPERSTRIP

1

uint32

† must be > 0

TIFFTAG_SAMPLEFORMAT

1

uint16

TIFFTAG_SAMPLESPERPIXEL

1

uint16

† value must be <= 4

TIFFTAG_SMAXSAMPLEVALUE

1

double

TIFFTAG_SMINSAMPLEVALUE

1

double

TIFFTAG_SOFTWARE

1

char*

TIFFTAG_STONITS

1

double

TIFFTAG_SUBFILETYPE

1

uint32

TIFFTAG_SUBIFD

2

uint16,uint32*

count & offsets array

TIFFTAG_TARGETPRINTER

1

char*

TIFFTAG_THRESHHOLDING

1

uint16

TIFFTAG_TILEDEPTH

1

uint32

TIFFTAG_TILELENGTH

1

uint32

† must be a multiple of 8

TIFFTAG_TILEWIDTH

1

uint32

† must be a multiple of 8

TIFFTAG_TRANSFERFUNCTION

1 or 3‡ uint16*

1<<BitsPerSample entry arrays

TIFFTAG_WHITEPOINT

1

float*

2-entry array

TIFFTAG_XMLPACKET

2

uint32,void*

count, data

TIFFTAG_XPOSITION

1

float

TIFFTAG_XRESOLUTION

1

float

TIFFTAG_YCBCRCOEFFICIENTS

1

float*

† 3-entry array

TIFFTAG_YCBCRPOSITIONING

1

uint16

TIFFTAG_YCBCRSAMPLING

2

uint16

TIFFTAG_YPOSITION

1

float

TIFFTAG_YRESOLUTION

1

float

† Tag may not have its values changed once data is written.
‡ If SamplesPerPixel is one, then a single array is passed; otherwise three arrays should be passed.
* The contents of this field are quite complex. See The ICC Profile Format Specification, Annex B.3 "Embedding ICC Profiles in TIFF Files" (available at http://www.color.org) for an explanation.

RETURN VALUES

1 is returned if the operation was successful. Otherwise, 0 is returned if an error was detected.

DIAGNOSTICS

All error messages are directed to the TIFFError(3TIFF) routine.

%s: Cannot modify tag "%s" while writing. Data has already been written to the file, so the specified tag’s value can not be changed. This restriction is applied to all tags that affect the format of written data.

%d: Bad value for "%s". An invalid value was supplied for the named tag.

SEE ALSO

TIFFOpen(3TIFF), TIFFGetField(3TIFF), TIFFSetDirectory(3TIFF), TIFFWriteDirectory(3TIFF), TIFFReadDirectory(3TIFF), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


0707010004139e000081a40000000000000000000000014cc7a42600001e3d0000010000010006ffffffffffffffff0000003b00000000root/usr/local/share/doc/tiff-3.9.4/html/man/fax2ps.1.html FAX2PS

FAX2PS

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
DIAGNOSTICS
NOTES
BUGS
SEE ALSO

NAME

fax2ps − convert a TIFF facsimile to compressed PostScript™

SYNOPSIS

fax2ps [ options ] [ file ... ]

DESCRIPTION

fax2ps reads one or more TIFF facsimile image files and prints a compressed form of PostScript on the standard output that is suitable for printing.

By default, each page is scaled to reflect the image dimensions and resolutions stored in the file. The −x and −y options can be used to specify the horizontal and vertical image resolutions (lines/inch), respectively. If the −S option is specified, each page is scaled to fill an output page. The default output page is 8.5 by 11 inches. Alternate page dimensions can be specified in inches with the −W and −H options.

By default fax2ps generates PostScript for all pages in the file. The −p option can be used to select one or more pages from a multi-page document.

fax2ps generates a compressed form of PostScript that is optimized for sending pages of text to a PostScript printer attached to a host through a low-speed link (such as a serial line). Each output page is filled with white and then only the black areas are drawn. The PostScript specification of the black drawing operations is optimized by using a special font that encodes the move-draw operations required to fill the black regions on the page. This compression scheme typically results in a substantially reduced PostScript description, relative to the straightforward imaging of the page with a PostScript image operator. This algorithm can, however, be ineffective for continuous-tone and white-on-black images. For these images, it sometimes is more efficient to send the raster bitmap image directly; see tiff2ps(1).

OPTIONS

−p number

Print only the indicated page. Multiple pages may be printed by specifying this option more than once.

−x resolution

Use resolution as the horizontal resolution, in dots/inch, of the image data. By default this value is taken from the file.

−y resolution

Use resolution as the vertical resolution, in lines/inch, of the image data. By default this value is taken from the file.

−S

Scale each page of image data to fill the output page dimensions. By default images are presented according to the dimension information recorded in the TIFF file.

−W width

Use width as the width, in inches, of the output page.

−H height

Use height as the height, in inches, of the output page.

DIAGNOSTICS

Some messages about malformed TIFF images come from the TIFF library.

Various messages about badly formatted facsimile images may be generated due to transmission errors in received facsimile. fax2ps attempts to recover from such data errors by resynchronizing decoding at the end of the current scanline. This can result in long horizontal black lines in the resultant PostScript image.

NOTES

If the destination printer supports PostScript Level II then it is always faster to just send the encoded bitmap generated by the tiff2ps(1) program.

BUGS

fax2ps should probably figure out when it is doing a poor job of compressing the output and just generate PostScript to image the bitmap raster instead.

SEE ALSO

tiff2ps(1), libtiff(3)

Libtiff library home page: http://www.remotesensing.org/libtiff/


0707010004138d000081a40000000000000000000000014cc7a426000019560000010000010006ffffffffffffffff0000004b00000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFWriteDirectory.3tiff.html TIFFWriteDirectory

TIFFWriteDirectory

NAME
SYNOPSIS
DESCRIPTION
RETURN VALUES
DIAGNOSTICS
SEE ALSO

NAME

TIFFWriteDirectory, TIFFRewriteDirectory, TIFFCheckpointDirectory − write the current directory in an open TIFF file

SYNOPSIS

#include <tiffio.h>

int TIFFWriteDirectory(TIFF *tif)
int TIFFRewriteDirectory(TIFF *
tif)
int TIFFCheckpointDirectory(TIFF *
tif)

DESCRIPTION

TIFFWriteDirectory will write the contents of the current directory to the file and setup to create a new subfile in the same file. Applications only need to call TIFFWriteDirectory when writing multiple subfiles to a single TIFF file. TIFFWriteDirectory is automatically called by TIFFClose and TIFFFlush to write a modified directory if the file is open for writing.

The TIFFRewriteDirectory function operates similarly to TIFFWriteDirectory, but can be called with directories previously read or written that already have an established location in the file. It will rewrite the directory, but instead of place it at it’s old location (as TIFFWriteDirectory would) it will place them at the end of the file, correcting the pointer from the preceeding directory or file header to point to it’s new location. This is particularly important in cases where the size of the directory and pointed to data has grown, so it won’t fit in the space available at the old location.

The TIFFCheckpointDirectory writes the current state of the tiff directory into the file to make what is currently in the file readable. Unlike TIFFWriteDirectory, TIFFCheckpointDirectory does not free up the directory data structures in memory, so they can be updated (as strips/tiles are written) and written again. Reading such a partial file you will at worst get a tiff read error for the first strip/tile encountered that is incomplete, but you will at least get all the valid data in the file before that. When the file is complete, just use TIFFWriteDirectory as usual to finish it off cleanly.

RETURN VALUES

1 is returned when the contents are successfully written to the file. Otherwise, 0 is returned if an error was encountered when writing the directory contents.

DIAGNOSTICS

All error messages are directed to the TIFFError(3TIFF) routine.

Error post-encoding before directory write. Before writing the contents of the current directory, any pending data are flushed. This message indicates that an error occurred while doing this.

Error flushing data before directory write. Before writing the contents of the current directory, any pending data are flushed. This message indicates that an error occurred while doing this.

Cannot write directory, out of space. There was not enough space to allocate a temporary area for the directory that was to be written.

Error writing directory count. A write error occurred when writing the count of fields in the directory.

Error writing directory contents. A write error occurred when writing the directory fields.

Error writing directory link. A write error occurred when writing the link to the next directory.

Error writing data for field "%s". A write error occurred when writing indirect data for the specified field.

Error writing TIFF header. A write error occurred when re-writing header at the front of the file.

Error fetching directory count. A read error occurred when fetching the directory count field for a previous directory. This can occur when setting up a link to the directory that is being written.

Error fetching directory link. A read error occurred when fetching the directory link field for a previous directory. This can occur when setting up a link to the directory that is being written.

SEE ALSO

TIFFOpen(3TIFF), TIFFError(3TIFF), TIFFReadDirectory(3TIFF), TIFFSetDirectory(3TIFF), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


07070100041387000081a40000000000000000000000014cc7a426000010b60000010000010006ffffffffffffffff0000004500000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadTile.3tiff.html TIFFReadTile

TIFFReadTile

NAME
SYNOPSIS
DESCRIPTION
NOTES
RETURN VALUES
DIAGNOSTICS
SEE ALSO

NAME

TIFFReadTile − read and decode a tile of data from an open TIFF file

SYNOPSIS

#include <tiffio.h>

tsize_t TIFFReadTile(TIFF *tif, tdata_t buf, uint32 x, uint32 y, uint32 z, tsample_t sample)

DESCRIPTION

Return the data for the tile containing the specified coordinates. The data placed in buf are returned decompressed and, typically, in the native byte- and bit-ordering, but are otherwise packed (see further below). The buffer must be large enough to hold an entire tile of data. Applications should call the routine TIFFTileSize to find out the size (in bytes) of a tile buffer. The x and y parameters are always used by TIFFReadTile. The z parameter is used if the image is deeper than 1 slice (ImageDepth>1). The sample parameter is used only if data are organized in separate planes (PlanarConfiguration=2).

NOTES

The library attempts to hide bit- and byte-ordering differences between the image and the native machine by converting data to the native machine order. Bit reversal is done if the FillOrder tag is opposite to the native machine bit order. 16- and 32-bit samples are automatically byte-swapped if the file was written with a byte order opposite to the native machine byte order,

RETURN VALUES

TIFFReadTile returns −1 if it detects an error; otherwise the number of bytes in the decoded tile is returned.

DIAGNOSTICS

All error messages are directed to the TIFFError(3TIFF) routine.

SEE ALSO

TIFFCheckTile(3TIFF), TIFFComputeTile(3TIFF), TIFFOpen(3TIFF), TIFFReadEncodedTile(3TIFF), TIFFReadRawTile(3TIFF), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


070701000413b7000081a40000000000000000000000014cc7a426000011660000010000010006ffffffffffffffff0000003d00000000root/usr/local/share/doc/tiff-3.9.4/html/man/tiffinfo.1.html TIFFINFO

TIFFINFO

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
SEE ALSO

NAME

tiffinfo − print information about TIFF files

SYNOPSIS

tiffinfo [ options ] input.tif ...

DESCRIPTION

Tiffinfo displays information about files created according to the Tag Image File Format, Revision 6.0. By default, the contents of each TIFF directory in each file is displayed, with the value of each tag shown symbolically (where sensible).

OPTIONS

−c

Display the colormap and color/gray response curves, if present.

−D

In addition to displaying the directory tags, read and decompress all the data in each image (but not display it).

−d

In addition to displaying the directory tags, print each byte of decompressed data in hexadecimal.

−j

Display any JPEG -related tags that are present.

−o

Set the initial TIFF directory according to the specified file offset. The file offset may be specified using the usual C-style syntax; i.e. a leading ‘‘0x’’ for hexadecimal and a leading ‘‘0’’ for octal.

−s

Display the offsets and byte counts for each data strip in a directory.

−z

Enable strip chopping when reading image data.

−#

Set the initial TIFF directory to #.

SEE ALSO

pal2rgb(1), tiffcp(1), tiffcmp(1), tiffmedian(1), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


0707010004139c000081a40000000000000000000000014cc7a42600000da40000010000010006ffffffffffffffff0000004100000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFswab.3tiff.html SWAB

SWAB

NAME
SYNOPSIS
DESCRIPTION
DIAGNOSTICS
SEE ALSO

NAME

TIFFGetBitRevTable, TIFFReverseBits, TIFFSwabShort, TIFFSwabLong, TIFFSwabArrayOfShort, TIFFSwabArrayOfLong − byte- and bit-swapping routines

SYNOPSIS

#include <tiffio.h>

const unsigned char* TIFFGetBitRevTable(int reversed)
void TIFFReverseBits(u_char *
data, unsigned long nbytes)
void TIFFSwabShort(uint16 *
data)
void TIFFSwabLong(uint32 *
data)
void TIFFSwabArrayOfShort(uint16 *
data, unsigned long nshorts)
void TIFFSwabArrayOfLong(uint32 *
data, unsigned long nlongs)

DESCRIPTION

The following routines are used by the library to swap 16- and 32-bit data and to reverse the order of bits in bytes.

TIFFSwabShort and TIFFSwabLong swap the bytes in a single 16-bit and 32-bit item, respectively. TIFFSwabArrayOfShort and TIFFSwabArrayOfLong swap the bytes in an array of 16-bit and 32-bit items, respectively.

TIFFReverseBits replaces each byte in data with the equivalent bit-reversed value. This operation is performed with a lookup table, which is returned using the TIFFGetBitRevTable function. reversed parameter specifies which table should be returned. Supply 1 if you want bit reversal table. Supply 0 to get the table that do not reverse bit values. It is a lookup table that can be used as an identity function; i.e. TIFFNoBitRevTable[n] == n.

DIAGNOSTICS

None.

SEE ALSO

libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


07070100041377000081a40000000000000000000000014cc7a426000009fc0000010000010006ffffffffffffffff0000004600000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFDataWidth.3tiff.html TIFFDataWidth

TIFFDataWidth

NAME
SYNOPSIS
DESCRIPTION
RETURN VALUES
SEE ALSO

NAME

TIFFDataWidth − Get the size of TIFF data types

SYNOPSIS

#include <tiffio.h>

int TIFFDataWidth(TIFFDataType type)

DESCRIPTION

TIFFDataWidth returns a size of type in bytes. Currently following data types are supported:
TIFF_BYTE
TIFF_ASCII
TIFF_SBYTE
TIFF_UNDEFINED
TIFF_SHORT
TIFF_SSHORT
TIFF_LONG
TIFF_SLONG
TIFF_FLOAT
TIFF_IFD
TIFF_RATIONAL
TIFF_SRATIONAL
TIFF_DOUBLE

RETURN VALUES

TIFFDataWidth returns a number of bytes occupied by the item of given type. 0 returned when uknown data type supplied.

SEE ALSO

libtiff(3TIFF),

Libtiff library home page: http://www.remotesensing.org/libtiff/


0707010004139b000081a40000000000000000000000014cc7a426000011040000010000010006ffffffffffffffff0000004200000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFstrip.3tiff.html TIFFSTRIP

TIFFSTRIP

NAME
SYNOPSIS
DESCRIPTION
DIAGNOSTICS
SEE ALSO

NAME

TIFFDefaultStripSize, TIFFStripSize, TIFFVStripSize, TIFFRawStripSize, TIFFComputeStrip, TIFFNumberOfStrips − strip-related utility routines

SYNOPSIS

#include <tiffio.h>

uint32 TIFFDefaultStripSize(TIFF *tif, uint32 estimate)
tsize_t TIFFStripSize(TIFF *
tif)
tsize_t TIFFVStripSize(TIFF *
tif, uint32 nrows)
tsize_t TIFFRawStripSize(TIFF *
tif, tstrip_t strip)
tstrip_t TIFFComputeStrip(TIFF *
tif, uint32 row, tsample_t sample)
tstrip_t TIFFNumberOfStrips(TIFF *
tif)

DESCRIPTION

TIFFDefaultStripSize returns the number of rows for a reasonable-sized strip according to the current settings of the ImageWidth, BitsPerSample, SamplesPerPixel, tags and any compression-specific requirements. If the estimate parameter, if non-zero, then it is taken as an estimate of the desired strip size and adjusted according to any compression-specific requirements. The value returned by this function is typically used to define the RowsPerStrip tag. In lieu of any unusual requirements TIFFDefaultStripSize tries to create strips that have approximately 8 kilobytes of uncompressed data.

TIFFStripSize returns the equivalent size for a strip of data as it would be returned in a call to TIFFReadEncodedStrip or as it would be expected in a call to TIFFWriteEncodedStrip.

TIFFVStripSize returns the number of bytes in a strip with nrows rows of data.

TIFFRawStripSize returns the number of bytes in a raw strip (i.e. not decoded).

TIFFComputeStrip returns the strip that contains the specified coordinates. A valid strip is always returned; out-of-range coordinate values are clamped to the bounds of the image. The row parameter is always used in calculating a strip. The sample parameter is used only if data are organized in separate planes (PlanarConfiguration=2).

TIFFNumberOfStrips returns the number of strips in the image.

DIAGNOSTICS

None.

SEE ALSO

TIFFReadEncodedStrip(3TIFF), TIFFReadRawStrip(3TIFF), TIFFWriteEncodedStrip(3TIFF), TIFFWriteRawStrip(3TIFF), libtiff(3TIFF),

Libtiff library home page: http://www.remotesensing.org/libtiff/


070701000413b3000081a40000000000000000000000014cc7a426000062450000010000010006ffffffffffffffff0000003d00000000root/usr/local/share/doc/tiff-3.9.4/html/man/tiffcrop.1.html TIFFCROP

TIFFCROP

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
EXAMPLES
SEE ALSO

NAME

tiffcrop − copy, convert, crop, extract, or process a TIFF file

SYNOPSIS

tiffcrop [ options ] src1.tif ... srcN.tif dst.tif

DESCRIPTION

tiffcrop combines one or more files created according to the Tag Image File Format, Revision 6.0 into a single TIFF file. The output file may be compressed using a different algorithm than the input files. tiffcrop is most often used to extract portions of an image for processing with bar code recognizer or OCR software when that software cannot restrict the region of interest to a specific portion of the image or to improve efficiency when the regions of interest must be rotated. It can also be used to subdivide all or part of a processed image into smaller sections.

Functions are applied to the input image in the following order:

cropping, fixed area extraction, zones, inversion, mirroring, rotation.

Functions are applied to the output image in the following order:

output resolution, output margins, rows and columns or page size divisions, orientation options, strip, tile, byte order, and compression options.

By default, tiffcrop will copy all the understood tags in a TIFF directory of an input file to the associated directory in the output file. Options can be used to force the resultant image to be written as strips or tiles of data, respectively.

tiffcrop can be used to reorganize the storage characteristics of data in a file, and to reorganize, extract, rotate, and otherwise process the image data as specified at the same time whereas tiffcp does not alter the image data itself.

OPTIONS

−N odd|even|#,#-#,#|last

Specify one or more series or range(s) of images within file to process. The words odd or even may be used to specify all odd or even numbered images. The word last may be used in place of a number in the sequence to indicate the final image in the file without knowing how many images there are. Ranges of images may be specified with a dash and multiple sets can be indicated by joining them in a comma-separated list. eg. use −N 1,5-7,last to process the 1st, 5th through 7th, and final image in the file.

−E top|bottom|left|right

Specify the top, bottom, left, or right edge as the reference from which to calcuate the width and length of crop regions or sequence of postions for zones. May be abbreviated to first letter.

−U in|cm|px

Specify the type of units to apply to dimensions for margins and crop regions for input and output images. Inches or centimeters are converted to pixels using the resolution unit specified in the TIFF file (which defaults to inches if not specified in the IFD).

−m #,#,#,#

Specify margins to be removed from the input image. The order must be top, left, bottom, right with only commas separating the elements of the list. Margins are scaled according to the current units and removed before any other extractions are computed. Captial M was in use.

−X #

Set the horizontal (X-axis) dimension of a region to extract relative to the specified origin reference. If the origin is the top or bottom edge, the X axis value will be assumed to start at the left edge.

−Y #

Set the vertical (Y-axis) dimension of a region to extract relative to the specified origin reference. If the origin is the left or right edge, the Y axis value will be assumed to start at the top.

−Z #:#,#:#

Specify zones of the image designated as position X of Y equal sized portions measured from the reference edge, eg 1:3 would be first third of the image starting from the reference edge minus any margins specified for the confining edges. Multiple zones can be specified as a comma separated list but they must reference the same edge. To extract the top quarter and the bottom third of an image you would use −Z 1:4,3:3.

−F horiz|vert

Flip, ie mirror, the image or extracted region horizontally or vertically.

−R 90|180|270

Rotate the image or extracted region 90, 180, or 270 degrees clockwise.

−I

Invert the colorspace values for grayscale and bilevel images. This would be used to correct negative images that have incorrect PHOTMETRIC INTERPRETATION tags. No support for color images.

−H #

Set the horizontal resolution of output images to # expressed in the current units.

−V #

Set the vertical resolution of the output images to # expressed in the current units.

−J #

Set the horizontal margin of an output page size to # expressed in the current units.

−K #

Set the vertical margin of an output page size to # expressed in the current units.

−O portrait|landscape|auto

Set the output orientation of the pages or sections. Auto will use the arrangement that requires the fewest pages.

−S cols:rows

Divide each image into cols across and rows down equal sections.

−P page

Format the output images to fit on page size paper. Use -P list to show the supported page sizes and dimensions.

−B

Force output to be written with Big-Endian byte order. This option only has an effect when the output file is created or overwritten and not when it is appended to.

−C

Suppress the use of ‘‘strip chopping’’ when reading images that have a single strip/tile of uncompressed data.

−c

Specify the compression to use for data written to the output file: none for no compression, packbits for PackBits compression, lzw for Lempel-Ziv & Welch compression, jpeg for baseline JPEG compression, zip for Deflate compression, g3 for CCITT Group 3 (T.4) compression, and g4 for CCITT Group 4 (T.6) compression. By default tiffcrop will compress data according to the value of the Compression tag found in the source file.

The CCITT Group 3 and Group 4 compression algorithms can only be used with bilevel data.

Group 3 compression can be specified together with several T.4-specific options: 1d for 1-dimensional encoding, 2d for 2-dimensional encoding, and fill to force each encoded scanline to be zero-filled so that the terminating EOL code lies on a byte boundary. Group 3-specific options are specified by appending a ‘‘:’’-separated list to the ‘‘g3’’ option; e.g. −c g3:2d:fill to get 2D-encoded data with byte-aligned EOL codes.

LZW compression can be specified together with a predictor value. A predictor value of 2 causes each scanline of the output image to undergo horizontal differencing before it is encoded; a value of 1 forces each scanline to be encoded without differencing. LZW-specific options are specified by appending a ‘‘:’’-separated list to the ‘‘lzw’’ option; e.g. −c lzw:2 for LZW compression with horizontal differencing.

−f

Specify the bit fill order to use in writing output data. By default, tiffcrop will create a new file with the same fill order as the original. Specifying −f lsb2msb will force data to be written with the FillOrder tag set to LSB2MSB, while −f msb2lsb will force data to be written with the FillOrder tag set to MSB2LSB.

−i

Ignore non-fatal read errors and continue processing of the input file.

−l

Specify the length of a tile (in pixels). tiffcrop attempts to set the tile dimensions so that no more than 8 kilobytes of data appear in a tile.

−L

Force output to be written with Little-Endian byte order. This option only has an effect when the output file is created or overwritten and not when it is appended to.

−M

Suppress the use of memory-mapped files when reading images.

−p

Specify the planar configuration to use in writing image data that has more than one 8-bit sample per pixel. By default, tiffcrop will create a new file with the same planar configuration as the original. Specifying −p contig will force data to be written with multi-sample data packed together, while −p separate will force samples to be written in separate planes.

−r

Specify the number of rows (scanlines) in each strip of data written to the output file. By default (or when value 0 is specified), tiffcrop attempts to set the rows/strip that no more than 8 kilobytes of data appear in a strip. If you specify the special value -1 it will results in infinite number of the rows per strip. The entire image will be the one strip in that case.

−s

Force the output file to be written with data organized in strips (rather than tiles).

−t

Force the output file to be written with data organized in tiles (rather than strips).

−w

Specify the width of a tile (in pixels). tiffcrop attempts to set the tile dimensions so that no more than 8 kilobytes of data appear in a tile. tiffcrop attempts to set the tile dimensions so that no more than 8 kilobytes of data appear in a tile.

−,={character}

substitute {character} for ’,’ in parsing image directory indices in files. This is necessary if filenames contain commas. Note that ’,=’ with whitespace immediately following will disable the special meaning of the ’,’ entirely. See examples.

EXAMPLES

The following concatenates two files and writes the result using LZW encoding:

tiffcrop -c lzw a.tif b.tif result.tif

To convert a G3 1d-encoded TIFF to a single strip of G4-encoded data the following might be used:

tiffcrop -c g4 -r 10000 g3.tif g4.tif

(1000 is just a number that is larger than the number of rows in the source file.)

To extract a selected set of images from a multi-image TIFF file use the -N option described above. Thus, to copy the 1st and 3rd images of image file "album.tif" to "result.tif":

tiffcrop -N 1,3 album.tif result.tif

Invert a bilevel image scan of a microfilmed document and crop off margins of 0.25 inches on the left and right, 0.5 inch on the top, nad 0.75 inch on the bottom. From the remaining portion of the image, select the second and third quarters, ie, one half of the area left from the center to each margin.

tiffcrop -U in -m 0.5,0.25,0.75,0.25 -E left -Z 2:4,3:4 -I MicrofilmNegative.tif MicrofilmPostiveCenter.tif

Extract only the final image of a large Architectural E sized multipage TIFF file and rotate it 90 degrees clockwise while reformatting the output to fit on tabloid sized sheets with one quarter of an inch on each side:

tiffcrop -N last -R 90 -O auto -P tabloid -U in -J 0.25 -K 0.25 -H 300 -V 300 Big-PlatMap.tif BigPlatMap-Tabloid.tif

The output images will have a specified resolution of 300 dpi in both directions. The orientation of each page will be determined by whichever choice requires the fewest pages. To specify a specific orientation, use the portrait or landscape option.

SEE ALSO

pal2rgb(1), tiffinfo(1), tiffcmp(1), tiffcp(1), tiffmedian(1), tiffsplit(1), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


07070100041393000081a40000000000000000000000014cc7a42600001cdb0000010000010006ffffffffffffffff0000004a00000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFWriteScanline.3tiff.html TIFFWriteScanline

TIFFWriteScanline

NAME
SYNOPSIS
DESCRIPTION
NOTES
RETURN VALUES
DIAGNOSTICS
BUGS
SEE ALSO

NAME

TIFFWriteScanline − write a scanline to an open TIFF file

SYNOPSIS

#include <tiffio.h>

int TIFFWriteScanline(TIFF *tif, tdata_t buf, uint32 row, tsample_t sample)

DESCRIPTION

Write data to a file at the specified row. The sample parameter is used only if data are organized in separate planes (PlanarConfiguration=2). The data are assumed to be uncompressed and in the native bit- and byte-order of the host machine. The data written to the file is compressed according to the compression scheme of the current TIFF directory (see further below). If the current scanline is past the end of the current subfile, the ImageLength field is automatically increased to include the scanline (except for PlanarConfiguration=2, where the ImageLength cannot be changed once the first data are written). If the ImageLength is increased, the StripOffsets and StripByteCounts fields are similarly enlarged to reflect data written past the previous end of image.

NOTES

The library writes encoded data using the native machine byte order. Correctly implemented TIFF readers are expected to do any necessary byte-swapping to correctly process image data with BitsPerSample greater than 8. The library attempts to hide bit-ordering differences between the image and the native machine by converting data from the native machine order.

In C++ the sample parameter defaults to 0.

Once data are written to a file for the current directory, the values of certain tags may not be altered; see TIFFSetField(3TIFF) for more information.

It is not possible to write scanlines to a file that uses a tiled organization. The routine TIFFIsTiled can be used to determine if the file is organized as tiles or strips.

RETURN VALUES

TIFFWriteScanline returns −1 if it immediately detects an error and 1 for a successful write.

DIAGNOSTICS

All error messages are directed to the TIFFError(3TIFF) routine.

%s: File not open for writing . The file was opened for reading, not writing.

Can not write scanlines to a tiled image. An attempt was made to write a scanline to a tiled image. The image is assumed to be organized in tiles because the TileWidth and TileLength tags have been set with TIFFSetField(3TIFF).

Compression algorithm does not support random access. Data was written in a non-sequential order to a file that uses a compression algorithm and that has RowsPerStrip greater than one. That is, data in the image is to be stored in a compressed form, and with multiple rows packed into a strip. In this case, the library does not support random access to the data. The data should either be written as entire strips, sequentially by rows, or the value of RowsPerStrip should be set to one.

%s: Must set "ImageWidth" before writing data. The image’s width has not be set before the first write. See TIFFSetField(3TIFF) for information on how to do this.

%s: Must set "PlanarConfiguration" before writing data. The organization of data has not be defined before the first write. See TIFFSetField(3TIFF) for information on how to do this.

Can not change "ImageLength" when using separate planes. Separate image planes are being used (PlanarConfiguration=2), but the number of rows has not been specified before the first write. The library supports the dynamic growth of an image only when data are organized in a contiguous manner (PlanarConfiguration=1).

%d: Sample out of range, max %d. The sample parameter was greater than the value of the SamplesPerPixel tag.

%s: No space for strip arrays . There was not enough space for the arrays that hold strip offsets and byte counts.

BUGS

Writing subsampled YCbCR data does not work correctly because, for PlanarConfiguration=2 the size of a scanline is not calculated on a per-sample basis, and for PlanarConfiguration=1 the library does not pack the block-interleaved samples.

SEE ALSO

TIFFOpen(3TIFF), TIFFWriteEncodedStrip(3TIFF), TIFFWriteRawStrip(3TIFF), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


07070100041396000081a40000000000000000000000014cc7a42600000e740000010000010006ffffffffffffffff0000004200000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFcodec.3tiff.html CODEC

CODEC

NAME
SYNOPSIS
DESCRIPTION
DIAGNOSTICS
SEE ALSO

NAME

TIFFFindCODEC, TIFFRegisterCODEC, TIFFUnRegisterCODEC, TIFFIsCODECConfigured − codec-related utility routines

SYNOPSIS

#include <tiffio.h>

const TIFFCodec* TIFFFindCODEC(uint16 scheme);
TIFFCodec* TIFFRegisterCODEC(uint16
scheme, const char *method, TIFFInitMethod init);
void TIFFUnRegisterCODEC(TIFFCodec *
codec);
int TIFFIsCODECConfigured(uint16
scheme);

DESCRIPTION

libtiff supports a variety of compression schemes implemented by software codecs. Each codec adheres to a modular interface that provides for the decoding and encoding of image data; as well as some other methods for initialization, setup, cleanup, and the control of default strip and tile sizes. Codecs are identified by the associated value of the TIFF Compression tag; e.g. 5 for LZW compression.

The TIFFRegisterCODEC routine can be used to augment or override the set of codecs available to an application. If the specified scheme already has a registered codec then it is overridden and any images with data encoded with this compression scheme will be decoded using the supplied coded.

TIFFIsCODECConfigured returns 1 if the codec is configured and working. Otherwise 0 will be returned.

DIAGNOSTICS

No space to register compression scheme %s. TIFFRegisterCODEC was unable to allocate memory for the data structures needed to register a codec.

Cannot remove compression scheme %s; not registered. TIFFUnRegisterCODEC did not locate the specified codec in the table of registered compression schemes.

SEE ALSO

libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


0707010004139d000081a40000000000000000000000014cc7a426000013960000010000010006ffffffffffffffff0000004100000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFtile.3tiff.html TIFFTILE

TIFFTILE

NAME
SYNOPSIS
DESCRIPTION
DIAGNOSTICS
SEE ALSO

NAME

TIFFTileSize, TIFFTileRowSize, TIFFVTileSize, TIFFDefaultTileSize, TIFFComputeTile, TIFFCheckTile, TIFFNumberOfTiles − tile-related utility routines

SYNOPSIS

#include <tiffio.h>

void TIFFDefaultTileSize(TIFF *tif, uint32 *tw, uint32 *th)
tsize_t TIFFTileSize(TIFF *
tif)
tsize_t TIFFTileRowSize(TIFF *
tif)
tsize_t TIFFVTileSize(TIFF *
tif, uint32 nrows)
ttile_t TIFFComputeTile(TIFF *
tif, uint32 x, uint32 y, uint32 z, tsample_t sample)
int TIFFCheckTile(TIFF *
tif, uint32 x, uint32 y, uint32 z, tsample_t sample)
ttile_t TIFFNumberOfTiles(TIFF *
tif)

DESCRIPTION

TIFFDefaultTileSize returns the pixel width and height of a reasonable-sized tile; suitable for setting up the TileWidth and TileLength tags. If the tw and th values passed in are non-zero, then they are adjusted to reflect any compression-specific requirements. The returned width and height are constrained to be a multiple of 16 pixels to conform with the TIFF specification.

TIFFTileSize returns the equivalent size for a tile of data as it would be returned in a call to TIFFReadTile or as it would be expected in a call to TIFFWriteTile.

TIFFVTileSize returns the number of bytes in a row-aligned tile with nrows of data.

TIFFTileRowSize returns the number of bytes of a row of data in a tile.

TIFFComputeTile returns the tile that contains the specified coordinates. A valid tile is always returned; out-of-range coordinate values are clamped to the bounds of the image. The x and y parameters are always used in calculating a tile. The z parameter is used if the image is deeper than 1 slice (ImageDepth>1). The sample parameter is used only if data are organized in separate planes (PlanarConfiguration=2).

TIFFCheckTile returns a non-zero value if the supplied coordinates are within the bounds of the image and zero otherwise. The x parameter is checked against the value of the ImageWidth tag. The y parameter is checked against the value of the ImageLength tag. The z parameter is checked against the value of the ImageDepth tag (if defined). The sample parameter is checked against the value of the SamplesPerPixel parameter if the data are organized in separate planes.

TIFFNumberOfTiles returns the number of tiles in the image.

DIAGNOSTICS

None.

SEE ALSO

TIFFReadEncodedTile(3TIFF), TIFFReadRawTile(3TIFF), TIFFReadTile(3TIFF), TIFFWriteEncodedTile(3TIFF), TIFFWriteRawTile(3TIFF), TIFFWriteTile(3TIFF), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


0707010004139f000081a40000000000000000000000014cc7a426000039790000010000010006ffffffffffffffff0000003d00000000root/usr/local/share/doc/tiff-3.9.4/html/man/fax2tiff.1.html FAX2TIFF

FAX2TIFF

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
DIAGNOSTICS
BUGS
SEE ALSO

NAME

fax2tiff − create a TIFF Class F fax file from raw fax data

SYNOPSIS

fax2tiff [ options ] [ −o output.tif ] input.raw

DESCRIPTION

Fax2tiff creates a TIFF file containing CCITT Group 3 or Group 4 encoded data from one or more files containing ‘‘raw’’ Group 3 or Group 4 encoded data (typically obtained directly from a fax modem). By default, each row of data in the resultant TIFF file is 1-dimensionally encoded and padded or truncated to 1728 pixels, as needed. The resultant image is a set of low resolution (98 lines/inch) or medium resolution (196 lines/inch) pages, each of which is a single strip of data. The generated file conforms to the TIFF Class F ( FAX ) specification for storing facsimile data. This means, in particular, that each page of the data does not include the trailing return to control ( RTC ) code; as required for transmission by the CCITT Group 3 specifications. The old, ‘‘classic’’, format is created if the −c option is used. (The Class F format can also be requested with the −f option.)

The default name of the output image is fax.tif; this can be changed with the −o option. Each input file is assumed to be a separate page of facsimile data from the same document. The order in which input files are specified on the command line is the order in which the resultant pages appear in the output file.

OPTIONS

Options that affect the interpretation of input data are:

−3

Assume input data is CCITT Group 3 encoded (default).

−4

Assume input data is CCITT Group 4 encoded.

−U

Assume input data is uncompressed (Group 3 or Group 4).

−1

Assume input data is encoded with the 1-dimensional version of the CCITT Group 3 Huffman encoding algorithm (default).

−2

Assume input data is 2-dimensional version of the CCITT Group 3 Huffman encoding algorithm.

−P

Assume input data is not EOL-aligned (default). This option has effect with Group 3 encoded input only.

−A

Assume input data is EOL-aligned. This option has effect with Group 3 encoded input only.

−M

Treat input data as having bits filled from most significant bit ( MSB ) to most least bit ( LSB ).

−L

Treat input data as having bits filled from least significant bit ( LSB ) to most significant bit ( MSB ) (default).

−B

Assume input data was encoded with black as 0 and white as 1.

−W

Assume input data was encoded with black as 1 and white as 0 (default).

−R

Specify the vertical resolution, in lines/inch, of the input images. By default input are assumed to have a vertical resolution of 196 lines/inch. If images are low resolution facsimile, a value of 98 lines/inch should be specified.

−X

Specify the width, in pixels, of the input images. By default input are assumed to have a width of 1728 pixels.

Options that affect the output file format are:

−o

Specify the name of the output file.

−7

Force output to be compressed with the CCITT Group 3 Huffman encoding algorithm (default).

−8

Force output to be compressed with the CCITT Group 4 Huffman encoding.

−u

Force output to be uncompressed (Group 3 or Group 4).

−5

Force output to be encoded with the 1-dimensional version of the CCITT Group 3 Huffman encoding algorithm.

−6

Force output to be encoded with the 2-dimensional version of the CCITT Group 3 Huffman encoding algorithm (default).

−a

Force the last bit of each End Of Line ( EOL ) code to land on a byte boundary (default). This ‘‘zero padding’’ will be reflected in the contents of the Group3Options tag of the resultant TIFF file. This option has effect with Group 3 encoded output only.

−p

Do not EOL-align output. This option has effect with Group 3 encoded output only.

−c

Generate "classic" Group 3 TIFF format.

−f

Generate TIFF Class F (TIFF/F) format (default).

−m

Force output data to have bits filled from most significant bit ( MSB ) to most least bit ( LSB ).

−l

Force output data to have bits filled from least significant bit ( LSB ) to most significant bit ( MSB ) (default).

−r

Specify the number of rows (scanlines) in each strip of data written to the output file. By default (or when value 0 is specified), tiffcp attempts to set the rows/strip that no more than 8 kilobytes of data appear in a strip (with except of G3/G4 compression schemes). If you specify special value −1 it will results in infinite number of the rows per strip. The entire image will be the one strip in that case. This is default in case of G3/G4 output compression schemes.

−s

Stretch the input image vertically by writing each input row of data twice to the output file.

−v

Force fax2tiff to print the number of rows of data it retrieved from the input file.

−z

Force output to be compressed with the LZW encoding.

DIAGNOSTICS

The following warnings and errors come from the decoding routines in the library.

Warning, %s: Premature EOL at scanline %d (x %d).\n. The input data had a row that was shorter than the expected width. The row is padded with white.

%s: Premature EOF at scanline %d (x %d).\n. The decoder ran out of data in the middle of a scanline. The resultant row is padded with white.

%s: Bad code word at row %d, x %d\n. An invalid Group 3 code was encountered while decoding the input file. The row number and horizontal position is given. The remainder of the input row is discarded, while the corresponding output row is padded with white.

%s: Bad 2D code word at scanline %d.\n. An invalid Group 4 or 2D Group 3 code was encountered while decoding the input file. The row number and horizontal position is given. The remainder of the input row is discarded, while the corresponding output row is padded with white.

BUGS

Input data are assumed to have a a ‘‘top left’’ orientation; it should be possible to override this assumption from the command line.

SEE ALSO

CCITT Recommendation T.4 (Standardization of Group 3 Facsimile Apparatus for Document Transmission).

The Spirit of TIFF Class F, an appendix to the TIFF 5.0 specification prepared by Cygnet Technologies.

tiffinfo(1), tiffdither(1), tiffgt(1), libtiff(3)

Libtiff library home page: http://www.remotesensing.org/libtiff/


070701000413a6000081a40000000000000000000000014cc7a42600000fd80000010000010006ffffffffffffffff0000003d00000000root/usr/local/share/doc/tiff-3.9.4/html/man/ras2tiff.1.html RAS2TIFF

RAS2TIFF

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
BUGS
SEE ALSO

NAME

ras2tiff − create a TIFF file from a Sun rasterfile

SYNOPSIS

ras2tiff [ options ] input.ras output.tif

DESCRIPTION

ras2tiff converts a file in the Sun rasterfile format to TIFF. By default, the TIFF image is created with data samples packed (PlanarConfiguration=1), compressed with the Lempel-Ziv & Welch algorithm (Compression=5), and with each strip no more than 8 kilobytes. These characteristics can overridden, or explicitly specified with the options described below.

Any colormap information in the rasterfile is carried over to the TIFF file by including a Colormap tag in the output file. If the rasterfile has a colormap, the PhotometricInterpretation tag is set to 3 (palette); otherwise it is set to 2 (RGB) if the depth is 24 or 1 (min-is-black) if the depth is not 24.

OPTIONS

−c

Specify a compression scheme to use when writing image data: −c none for no compression, −c packbits for the PackBits compression algorithm, −c jpeg for the baseline JPEG compression algorithm, −c zip for the Deflate compression algorithm, and −c lzw for Lempel-Ziv & Welch (the default).

−r

Write data with a specified number of rows per strip; by default the number of rows/strip is selected so that each strip is approximately 8 kilobytes.

BUGS

Does not handle all possible rasterfiles. In particular, ras2tiff does not handle run-length encoded images.

SEE ALSO

pal2rgb(1), tiffinfo(1), tiffcp(1), tiffmedian(1), libtiff(3)

Libtiff library home page: http://www.remotesensing.org/libtiff/


07070100041394000081a40000000000000000000000014cc7a42600000e360000010000010006ffffffffffffffff0000004600000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFWriteTile.3tiff.html TIFFWriteTile

TIFFWriteTile

NAME
SYNOPSIS
DESCRIPTION
RETURN VALUES
DIAGNOSTICS
SEE ALSO

NAME

TIFFWriteTile − encode and write a tile of data to an open TIFF file

SYNOPSIS

#include <tiffio.h>

tsize_t TIFFWriteTile(TIFF *tif, tdata_t buf, uint32 x, uint32 y, uint32 z, tsample_t sample)

DESCRIPTION

Write the data for the tile containing the specified coordinates. The data in buf are is (potentially) compressed, and written to the indicated file, normally being appended to the end of the file. The buffer must be contain an entire tile of data. Applications should call the routine TIFFTileSize to find out the size (in bytes) of a tile buffer. The x and y parameters are always used by TIFFWriteTile. The z parameter is used if the image is deeper than 1 slice (ImageDepth>1). The sample parameter is used only if data are organized in separate planes (PlanarConfiguration=2).

RETURN VALUES

TIFFWriteTile returns −1 if it detects an error; otherwise the number of bytes in the tile is returned.

DIAGNOSTICS

All error messages are directed to the TIFFError(3TIFF) routine.

SEE ALSO

TIFFCheckTile(3TIFF), TIFFComputeTile(3TIFF), TIFFOpen(3TIFF), TIFFReadTile(3TIFF), TIFFWriteScanline(3TIFF), TIFFWriteEncodedTile(3TIFF), TIFFWriteRawTile(3TIFF), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


07070100041384000081a40000000000000000000000014cc7a42600000d0c0000010000010006ffffffffffffffff0000004900000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadRawStrip.3tiff.html TIFFReadRawStrip

TIFFReadRawStrip

NAME
SYNOPSIS
DESCRIPTION
RETURN VALUES
DIAGNOSTICS
SEE ALSO

NAME

TIFFReadRawStrip − return the undecoded contents of a strip of data from an open TIFF file

SYNOPSIS

#include <tiffio.h>

tsize_t TIFFReadRawStrip(TIFF *tif, tstrip_t strip, tdata_t buf, tsize_t size)

DESCRIPTION

Read the contents of the specified strip into the (user supplied) data buffer. Note that the value of strip is a ‘‘raw strip number.’’ That is, the caller must take into account whether or not the data is organized in separate planes (PlanarConfiguration=2). To read a full strip of data the data buffer should typically be at least as large as the number returned by TIFFStripSize.

RETURN VALUES

The actual number of bytes of data that were placed in buf is returned; TIFFReadEncodedStrip returns −1 if an error was encountered.

DIAGNOSTICS

All error messages are directed to the TIFFError(3TIFF) routine.

SEE ALSO

TIFFOpen(3TIFF), TIFFReadEncodedStrip(3TIFF), TIFFReadScanline(3TIFF), TIFFStripSize(3TIFF), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


0707010004137f000081a40000000000000000000000014cc7a426000010cb0000010000010006ffffffffffffffff0000004d00000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadEncodedStrip.3tiff.html TIFFReadEncodedStrip

TIFFReadEncodedStrip

NAME
SYNOPSIS
DESCRIPTION
NOTES
RETURN VALUES
DIAGNOSTICS
SEE ALSO

NAME

TIFFReadEncodedStrip − read and decode a strip of data from an open TIFF file

SYNOPSIS

#include <tiffio.h>

tsize_t TIFFReadEncodedStrip(TIFF *tif, tstrip_t strip, tdata_t buf, tsize_t size)

DESCRIPTION

Read the specified strip of data and place up to size bytes of decompressed information in the (user supplied) data buffer.

NOTES

The value of strip is a ‘‘raw strip number.’’ That is, the caller must take into account whether or not the data are organized in separate planes (PlanarConfiguration=2). To read a full strip of data the data buffer should typically be at least as large as the number returned by TIFFStripSize(3TIFF). If the -1 passed in size parameter, the whole strip will be read. You should be sure you have enough space allocated for the buffer.

The library attempts to hide bit- and byte-ordering differences between the image and the native machine by converting data to the native machine order. Bit reversal is done if the FillOrder tag is opposite to the native machine bit order. 16- and 32-bit samples are automatically byte-swapped if the file was written with a byte order opposite to the native machine byte order,

RETURN VALUES

The actual number of bytes of data that were placed in buf is returned; TIFFReadEncodedStrip returns −1 if an error was encountered.

DIAGNOSTICS

All error messages are directed to the TIFFError(3TIFF) routine.

SEE ALSO

TIFFOpen(3TIFF), TIFFReadRawStrip(3TIFF), TIFFReadScanline(3TIFF), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


0707010004137e000081a40000000000000000000000014cc7a42600001fa60000010000010006ffffffffffffffff0000004a00000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadDirectory.3tiff.html TIFFReadDirectory

TIFFReadDirectory

NAME
SYNOPSIS
DESCRIPTION
NOTES
RETURN VALUES
DIAGNOSTICS
SEE ALSO

NAME

TIFFReadDirectory − get the contents of the next directory in an open TIFF file

SYNOPSIS

#include <tiffio.h>

int TIFFReadDirectory(TIFF *tif)

DESCRIPTION

Read the next directory in the specified file and make it the current directory. Applications only need to call TIFFReadDirectory to read multiple subfiles in a single TIFF file— the first directory in a file is automatically read when TIFFOpen is called.

NOTES

If the library is compiled with STRIPCHOP_SUPPORT enabled, then images that have a single uncompressed strip or tile of data are automatically treated as if they were made up of multiple strips or tiles of approximately 8 kilobytes each. This operation is done only in-memory; it does not alter the contents of the file. However, the construction of the ‘‘chopped strips’’ is visible to the application through the number of strips [tiles] returned by TIFFNumberOfStrips [TIFFNumberOfTiles].

RETURN VALUES

If the next directory was successfully read, 1 is returned. Otherwise, 0 is returned if an error was encountered, or if there are no more directories to be read.

DIAGNOSTICS

All error messages are directed to the TIFFError(3TIFF) routine. All warning messages are directed to the TIFFWarning(3TIFF) routine.

Seek error accessing TIFF directory. An error occurred while positioning to the location of the directory.

Wrong data type %d for field "%s". The tag entry in the directory had an incorrect data type. For example, an ImageDescription tag with a SHORT data type.

TIFF directory is missing required "%s" field. The specified tag is required to be present by the TIFF 5.0 specification, but is missing. The directory is (usually) unusable.

%s: Rational with zero denominator. A directory tag has a RATIONAL value whose denominator is zero.

Incorrect count %d for field "%s" (%lu, expecting %lu); tag ignored. The specified tag’s count field is bad. For example, a count other than 1 for a SubFileType tag.

Cannot handle different per-sample values for field "%s". The tag has SamplesPerPixel values and they are not all the same; e.g. BitsPerSample. The library is unable to handle images of this sort.

Count mismatch for field "%s"; expecting %d, got %d. The count field in a tag does not agree with the number expected by the library. This should never happen, so if it does, the library refuses to read the directory.

Invalid TIFF directory; tags are not sorted in ascending order. The directory tags are not properly sorted as specified in the TIFF 5.0 specification. This error is not fatal.

Ignoring unknown field with tag %d (0x%x). An unknown tag was encountered in the directory; the library ignores all such tags.

TIFF directory is missing requred "ImageLength" field. The image violates the specification by not having a necessary field. There is no way for the library to recover from this error.

TIFF directory is missing requred "PlanarConfig" field. The image violates the specification by not having a necessary field. There is no way for the library to recover from this error.

TIFF directory is missing requred "StripOffsets" field. The image has multiple strips, but is missing the tag that specifies the file offset to each strip of data. There is no way for the library to recover from this error.

TIFF directory is missing requred "TileOffsets" field. The image has multiple tiles, but is missing the tag that specifies the file offset to each tile of data. There is no way for the library to recover from this error.

TIFF directory is missing required "StripByteCounts" field. The image has multiple strips, but is missing the tag that specifies the size of each strip of data. There is no way for the library to recover from this error.

TIFF directory is missing required "StripByteCounts" field, calculating from imagelength. The image violates the specification by not having a necessary field. However, when the image is comprised of only one strip or tile, the library will estimate the missing value based on the file size.

Bogus "StripByteCounts" field, ignoring and calculating from imagelength. Certain vendors violate the specification by writing zero for the StripByteCounts tag when they want to leave the value unspecified. If the image has a single strip, the library will estimate the missing value based on the file size.

SEE ALSO

TIFFOpen(3TIFF), TIFFWriteDirectory(3TIFF), TIFFSetDirectory(3TIFF), TIFFSetSubDirectory(3TIFF), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


07070100041397000081a40000000000000000000000014cc7a426000058eb0000010000010006ffffffffffffffff0000004200000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFcolor.3tiff.html COLOR

COLOR

NAME
SYNOPSIS
DESCRIPTION
SEE ALSO

NAME

TIFFYCbCrToRGBInit, TIFFYCbCrtoRGB, TIFFCIELabToRGBInit, TIFFCIELabToXYZ, TIFFXYZToRGB − color conversion routines.

SYNOPSIS

#include <tiffio.h>

int TIFFYCbCrToRGBInit(TIFFYCbCrToRGB *ycbcr, float *luma, float *refBlackWhite");"
void TIFFYCbCrtoRGB(TIFFYCbCrToRGB *
ycbcr, uint32 Y, int32 Cb, int32 Cr, uint32 *R, uint32 *G, uint32 *B );

int TIFFCIELabToRGBInit(TIFFCIELabToRGB *cielab, TIFFDisplay *display, float *refWhite);
void TIFFCIELabToXYZ(TIFFCIELabToRGB *
cielab, uint32 L, int32 a, int32 b, float *X, float *Y, float *Z);
void TIFFXYZToRGB(TIFFCIELabToRGB *
cielab, float X, float Y, float Z",uint32*"R, uint32 *G, uint32 *B);

DESCRIPTION

TIFF supports several color spaces for images stored in that format. There is usually a problem of application to handle the data properly and convert between different colorspaces for displaying and printing purposes. To simplify this task libtiff implements several color conversion routines itself. In particular, these routines used in TIFFRGBAImage(3TIFF) interface.

TIFFYCbCrToRGBInit() used to initialize YCbCr to RGB conversion state. Allocating and freeing of the ycbcr structure belongs to programmer. TIFFYCbCrToRGB defined in tiffio.h as

typedef struct {                /* YCbCr->RGB support */
        TIFFRGBValue* clamptab; /* range clamping table */

int*

Cr_r_tab;
int*

Cb_b_tab;
int32*

Cr_g_tab;
int32*

Cb_g_tab;

int32* Y_tab;
} TIFFYCbCrToRGB;

luma is a float array of three values representing proportions of the red, green and blue in luminance, Y (see section 21 of the TIFF 6.0 specification, where the YCbCr images discussed). TIFFTAG_YCBCRCOEFFICIENTS holds that values in TIFF file. refBlackWhite is a float array of 6 values which specifies a pair of headroom and footroom image data values (codes) for each image component (see section 20 of the TIFF 6.0 specification where the colorinmetry fields discussed). TIFFTAG_REFERENCEBLACKWHITE is responsible for storing these values in TIFF file. Following code snippet should helps to understand the the technique:

float *luma, *refBlackWhite;
uint16 hs, vs;

/* Initialize structures */
ycbcr = (TIFFYCbCrToRGB*)

_TIFFmalloc(TIFFroundup(sizeof(TIFFYCbCrToRGB), sizeof(long))

+ 4*256*sizeof(TIFFRGBValue)

+ 2*256*sizeof(int)

+ 3*256*sizeof(int32));

if (ycbcr == NULL) {
TIFFError("YCbCr->RGB",

"No space for YCbCr->RGB conversion state");

exit(0);
}

TIFFGetFieldDefaulted(tif, TIFFTAG_YCBCRCOEFFICIENTS, &luma);
TIFFGetFieldDefaulted(tif, TIFFTAG_REFERENCEBLACKWHITE, &refBlackWhite);
if (TIFFYCbCrToRGBInit(ycbcr, luma, refBlackWhite) < 0)

exit(0);

/* Start conversion */
uint32 r, g, b;
uint32 Y;
int32 Cb, Cr;

for each pixel in image

TIFFYCbCrtoRGB(img->ycbcr, Y, Cb, Cr, &r, &g, &b);

/* Free state structure */
_TIFFfree(ycbcr);

TIFFCIELabToRGBInit() initializes the CIE L*a*b* 1976 to RGB conversion state. TIFFCIELabToRGB defined as

#define CIELABTORGB_TABLE_RANGE 1500

typedef struct {

/* CIE Lab 1976->RGB support */

int

range;

/* Size of conversion table */

float

rstep, gstep, bstep;

float

X0, Y0, Z0;

/* Reference white point */

TIFFDisplay display;

float

Yr2r[CIELABTORGB_TABLE_RANGE + 1]; /* Conversion of Yr to r */

float

Yg2g[CIELABTORGB_TABLE_RANGE + 1]; /* Conversion of Yg to g */

float

Yb2b[CIELABTORGB_TABLE_RANGE + 1]; /* Conversion of Yb to b */

} TIFFCIELabToRGB;

display is a display device description, declared as

typedef struct {

float d_mat[3][3]; /* XYZ -> luminance matrix */

float d_YCR; /* Light o/p for reference white */

float d_YCG;

float d_YCB;

uint32 d_Vrwr; /* Pixel values for ref. white */

uint32 d_Vrwg;

uint32 d_Vrwb;

float d_Y0R; /* Residual light for black pixel */

float d_Y0G;

float d_Y0B;

float d_gammaR; /* Gamma values for the three guns */

float d_gammaG;

float d_gammaB;

} TIFFDisplay;

For example, the one can use sRGB device, which has the following parameters:

TIFFDisplay display_sRGB = {

{ /* XYZ -> luminance matrix */

{ 3.2410F, -1.5374F, -0.4986F },

{ -0.9692F, 1.8760F, 0.0416F },

{ 0.0556F, -0.2040F, 1.0570F }

},

100.0F, 100.0F, 100.0F, /* Light o/p for reference white */

255, 255, 255, /* Pixel values for ref. white */

1.0F, 1.0F, 1.0F, /* Residual light o/p for black pixel */

2.4F, 2.4F, 2.4F, /* Gamma values for the three guns */

};

refWhite is a color temperature of the reference white. The TIFFTAG_WHITEPOINT contains the chromaticity of the white point of the image from where the reference white can be calculated using following formulae:

refWhite_Y = 100.0
refWhite_X = whitePoint_x / whitePoint_y * refWhite_Y
refWhite_Z = (1.0 - whitePoint_x - whitePoint_y) / whitePoint_y * refWhite_X

The conversion itself performed in two steps: at the first one we will convert CIE L*a*b* 1976 to CIE XYZ using TIFFCIELabToXYZ() routine, and at the second step we will convert CIE XYZ to RGB using TIFFXYZToRGB(). Look at the code sample below:

float   *whitePoint;
float   refWhite[3];

/* Initialize structures */
img->cielab = (TIFFCIELabToRGB *)

_TIFFmalloc(sizeof(TIFFCIELabToRGB));

if (!cielab) {

TIFFError("CIE L*a*b*->RGB",

"No space for CIE L*a*b*->RGB conversion state.");

exit(0);

}

TIFFGetFieldDefaulted(tif, TIFFTAG_WHITEPOINT, &whitePoint);
refWhite[1] = 100.0F;
refWhite[0] = whitePoint[0] / whitePoint[1] * refWhite[1];
refWhite[2] = (1.0F - whitePoint[0] - whitePoint[1])

/ whitePoint[1] * refWhite[1];

if (TIFFCIELabToRGBInit(cielab, &display_sRGB, refWhite) < 0) {

TIFFError("CIE L*a*b*->RGB",

"Failed to initialize CIE L*a*b*->RGB conversion state.");

_TIFFfree(cielab);

exit(0);

}

/* Now we can start to convert */
uint32 r, g, b;
uint32 L;
int32 a, b;
float X, Y, Z;

for each pixel in image

TIFFCIELabToXYZ(cielab, L, a, b, &X, &Y, &Z);

TIFFXYZToRGB(cielab, X, Y, Z, &r, &g, &b);

/* Don’t forget to free the state structure */
_TIFFfree(cielab);

SEE ALSO

TIFFRGBAImage(3TIFF) libtiff(3TIFF),

Libtiff library home page: http://www.remotesensing.org/libtiff/


07070100041379000081a40000000000000000000000014cc7a42600000d110000010000010006ffffffffffffffff0000004200000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFFlush.3tiff.html TIFFFlush

TIFFFlush

NAME
SYNOPSIS
DESCRIPTION
RETURN VALUES
DIAGNOSTICS
SEE ALSO

NAME

TIFFFlush, TIFFFlushData − flush pending writes to an open TIFF file

SYNOPSIS

#include <tiffio.h>

int TIFFFlush(TIFF *tif)
int TIFFFlushData(TIFF *
tif)

DESCRIPTION

TIFFFlush causes any pending writes for the specified file (including writes for the current directory) to be done. In normal operation this call is never needed − the library automatically does any flushing required.

TIFFFlushData flushes any pending image data for the specified file to be written out; directory-related data are not flushed. In normal operation this call is never needed − the library automatically does any flushing required.

RETURN VALUES

0 is returned if an error is encountered, otherwise 1 is returned.

DIAGNOSTICS

All error messages are directed to the TIFFError(3TIFF) routine.

SEE ALSO

TIFFOpen(3TIFF), TIFFWriteEncodedStrip(3TIFF), TIFFWriteEncodedTile(3TIFF), TIFFWriteRawStrip(3TIFF), TIFFWriteRawTile(3TIFF), TIFFWriteScanline(3TIFF), TIFFWriteTile(3TIFF) libtiff(3TIFF),

Libtiff library home page: http://www.remotesensing.org/libtiff/


070701000413bb000081a40000000000000000000000014cc7a426000018280000010000010006ffffffffffffffff0000003b00000000root/usr/local/share/doc/tiff-3.9.4/html/man/tiffsv.1.html TIFFSV

TIFFSV

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
NOTE
BUGS
SEE ALSO

NAME

tiffsv − save an image from the framebuffer in a TIFF file (Silicon Graphics version)

SYNOPSIS

tiffsv [ options ] output.tif [ x1 x2 y1 y2 ]

DESCRIPTION

tiffsv saves all or part of the framebuffer in a file using the Tag Image File Format, Revision 6.0. By default, the image is saved with data samples packed (PlanarConfiguration=1), compressed with the Lempel-Ziv & Welch algorithm (Compression=5), and with each strip no more than 8 kilobytes. These characteristics can be overridden, or explicitly specified with the options described below.

OPTIONS

−b

Save the image as a greyscale image as if it were processed by tiff2bw(1). This option is included for compatibility with the standard scrsave(6D) program.

−c

Specify the compression to use for data written to the output file: none for no compression, packbits for PackBits compression, jpeg for baseline JPEG compression, zip for Deflate compression, and lzw for Lempel-Ziv & Welch compression (default).

LZW compression can be specified together with a predictor value. A predictor value of 2 causes each scanline of the output image to undergo horizontal differencing before it is encoded; a value of 1 forces each scanline to be encoded without differencing. LZW-specific options are specified by appending a ‘‘:’’-separated list to the ‘‘lzw’’ option; e.g. −c lzw:2 for LZW compression with horizontal differencing.

−p

Specify the planar configuration to use in writing image data. By default, tiffsv will create a new file with the data samples packed contiguously. Specifying −p contig will force data to be written with multi-sample data packed together, while −p separate will force samples to be written in separate planes.

−r

Specify the number of rows (scanlines) in each strip of data written to the output file. By default, tiffsv attempts to set the rows/strip that no more than 8 kilobytes of data appear in a strip.

NOTE

Except for the use of TIFF, this program is equivalent to the standard scrsave program. This means, for example, that you can use it in conjunction with the standard icut program simply by creating a link called scrsave, or by creating a shell script called scrsave that invokes tiffgt with the appropriate options.

BUGS

If data are saved compressed and in separate planes, then the rows in each strip is silently set to one to avoid limitations in the libtiff(3TIFF) library.

SEE ALSO

scrsave(6D) pal2rgb(1), tiffdump(1), tiffgt(1), tiffinfo(1), tiffcp(1), tiffmedian(1), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


070701000413b5000081a40000000000000000000000014cc7a426000011400000010000010006ffffffffffffffff0000003d00000000root/usr/local/share/doc/tiff-3.9.4/html/man/tiffdump.1.html TIFFDUMP

TIFFDUMP

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
SEE ALSO

NAME

tiffdump − print verbatim information about TIFF files

SYNOPSIS

tiffdump [ options ] name ...

DESCRIPTION

tiffdump displays directory information from files created according to the Tag Image File Format, Revision 6.0. The header of each TIFF file (magic number, version, and first directory offset) is displayed, followed by the tag contents of each directory in the file. For each tag, the name, data type, count, and value(s) is displayed. When the symbolic name for a tag or data type is known, the symbolic name is displayed followed by it’s numeric (decimal) value. Tag values are displayed enclosed in ‘‘<>’’ characters immediately preceded by the value of the count field. For example, an ImageWidth tag might be displayed as ‘‘ImageWidth (256) SHORT (3) 1<800>’’.

tiffdump is particularly useful for investigating the contents of TIFF files that libtiff does not understand.

OPTIONS

−h

Force numeric data to be printed in hexadecimal rather than the default decimal.

−m items

Change the number of indirect data items that are printed. By default, this will be 24.

−o offset

Dump the contents of the IFD at the a particular file offset. The file offset may be specified using the usual C-style syntax; i.e. a leading ‘‘0x’’ for hexadecimal and a leading ‘‘0’’ for octal.

SEE ALSO

tiffinfo(1), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


070701000413a8000081a40000000000000000000000014cc7a426000010920000010000010006ffffffffffffffff0000003e00000000root/usr/local/share/doc/tiff-3.9.4/html/man/rgb2ycbcr.1.html RGB2YCBCR

RGB2YCBCR

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
SEE ALSO

NAME

rgb2ycbcr − convert non-YCbCr TIFF images to a YCbCr TIFF image

SYNOPSIS

rgb2ycbcr [ options ] src1.tif src2.tif ... dst.tif

DESCRIPTION

rgb2ycbcr converts RGB color, greyscale, or bi-level TIFF images to YCbCr images by transforming and sampling pixel data. If multiple files are specified on the command line each source file is converted to a separate directory in the destination file.

By default, chrominance samples are created by sampling 2 by 2 blocks of luminance values; this can be changed with the −h and −v options. Output data are compressed with the PackBits compression scheme, by default; an alternate scheme can be selected with the −c option. By default, output data are compressed in strips with the number of rows in each strip selected so that the size of a strip is never more than 8 kilobytes; the −r option can be used to explicitly set the number of rows per strip.

OPTIONS

−c

Specify a compression scheme to use when writing image data: −c none for no compression, −c packbits for the PackBits compression algorithm (the default), −c jpeg for the JPEG compression algorithm, −c zip for the deflate compression algorithm, and −c lzw for Lempel-Ziv & Welch.

−h

Set the horizontal sampling dimension to one of: 1, 2 (default), or 4.

−r

Write data with a specified number of rows per strip; by default the number of rows/strip is selected so that each strip is approximately 8 kilobytes.

−v

Set the vertical sampling dimension to one of: 1, 2 (default), or 4.

SEE ALSO

tiffinfo(1), tiffcp(1), libtiff(3)

Libtiff library home page: http://www.remotesensing.org/libtiff


070701000413b6000081a40000000000000000000000014cc7a426000031d10000010000010006ffffffffffffffff0000003b00000000root/usr/local/share/doc/tiff-3.9.4/html/man/tiffgt.1.html TIFFGT

TIFFGT

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
BUGS
SEE ALSO

NAME

tiffgt − display an image stored in a TIFF file (Silicon Graphics version)

SYNOPSIS

tiffgt [ options ] input.tif ...

DESCRIPTION

tiffgt displays one or more images stored using the Tag Image File Format, Revision 6.0. Each image is placed in a fixed size window that the user must position on the display (unless configured otherwise through X defaults). If the display has fewer than 24 bitplanes, or if the image does not warrant full color, then RGB color values are mapped to the closest values that exist in the colormap (this is done using the rgbi routine found in the graphics utility library −lgutil.)

tiffgt correctly handles files with any of the following characteristics:

BitsPerSample

1, 2, 4, 8, 16

SamplesPerPixel

1, 3, 4 (the 4th sample is ignored)

PhotometricInterpretation

0 (min-is-white), 1 (min-is-black), 2 (RGB), 3 (palette), 6 (YCbCr)

PlanarConfiguration

1 (contiguous), 2 (separate)

Orientation

1 (top-left), 4 (bottom-left)

Data may be organized as strips or tiles and may be compressed with any of the compression algorithms supported by the libtiff(3) library.

For palette images (PhotometricInterpretation=3), tiffgt inspects the colormap values and assumes either 16-bit or 8-bit values according to the maximum value. That is, if no colormap entry greater than 255 is found, tiffgt assumes the colormap has only 8-bit values; otherwise it assumes 16-bit values. This inspection is done to handle old images written by previous (incorrect) versions of libtiff.

tiffgt can be used to display multiple images one-at-a-time. The left mouse button switches the display to the first image in the next file in the list of files specified on the command line. The right mouse button switches to the first image in the previous file in the list. The middle mouse button causes the first image in the first file specified on the command line to be displayed. In addition the following keyboard commands are recognized:

b

Use a PhotometricInterpretation of MinIsBlack in displaying the current image.

l

Use a FillOrder of lsb-to-msb in decoding the current image.

m

Use a FillOrder of msb-to-lsb in decoding the current image.

c

Use a colormap visual to display the current image.

r

Use a true color (24-bit RGB) visual to display the current image.

w

Use a PhotometricInterpretation of MinIsWhite in displaying the current image.

W

Toggle (enable/disable) display of warning messages from the TIFF library when decoding images.

E

Toggle (enable/disable) display of error messages from the TIFF library when decoding images.

z

Reset all parameters to their default settings (FillOrder, PhotometricInterpretation, handling of warnings and errors).

PageUp

Display the previous image in the current file or the last image in the previous file.

PageDown

Display the next image in the current file or the first image in the next file.

Home

Display the first image in the current file.

End

Display the last image in the current file (unimplemented).

OPTIONS

−c

Force image display in a colormap window.

−d

Specify an image to display by directory number. By default the first image in the file is displayed. Directories are numbered starting at zero.

−e

Enable reporting of error messages from the TIFF library. By default tiffgt silently ignores images that cannot be read.

−f

Force tiffgt to run as a foreground process. By default tiffgt will place itself in the background once it has opened the requested image file.

−l

Force the presumed bit ordering to be LSB to MSB.

−m

Force the presumed bit ordering to be MSB to LSB.

−o

Specify an image to display by directory offset. By default the first image in the file is displayed. Directories offsets may be specified using C-style syntax; i.e. a leading ‘‘0x’’ for hexadecimal and a leading ‘‘0’’ for octal.

−p

Override the value of the PhotometricInterpretation tag; the parameter may be one of: miniswhite, minisblack, rgb, palette, mask, separated, ycbcr, and cielab.

−r

Force image display in a full color window.

−s

Stop on the first read error. By default all errors in the input data are ignored and tiffgt does it’s best to display as much of an image as possible.

−w

Enable reporting of warning messages from the TIFF library. By default tiffgt ignores warning messages generated when reading an image.

−v

Place information in the title bar describing what type of window (full color or colormap) is being used, the name of the input file, and the directory index of the image (if non-zero). By default, the window type is not shown in the title bar.

BUGS

Images wider and taller than the display are silently truncated to avoid crashing old versions of the window manager.

SEE ALSO

tiffdump(1), tiffinfo(1), tiffcp(1), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


07070100041376000081a40000000000000000000000014cc7a426000009af0000010000010006ffffffffffffffff0000004200000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFClose.3tiff.html TIFFClose

TIFFClose

NAME
SYNOPSIS
DESCRIPTION
DIAGNOSTICS
SEE ALSO

NAME

TIFFClose − close a previously opened TIFF file

SYNOPSIS

#include <tiffio.h>

void TIFFClose(TIFF *tif)

DESCRIPTION

TIFFClose closes a file that was previously opened with TIFFOpen(3TIFF). Any buffered data are flushed to the file, including the contents of the current directory (if modified); and all resources are reclaimed.

DIAGNOSTICS

All error messages are directed to the routine. Likewise, warning messages are directed to the TIFFWarning(3TIFF) routine.

SEE ALSO

libtiff(3TIFF), TIFFOpen(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


07070100041388000081a40000000000000000000000014cc7a42600000ef40000010000010006ffffffffffffffff0000004900000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFSetDirectory.3tiff.html TIFFSetDirectory

TIFFSetDirectory

NAME
SYNOPSIS
DESCRIPTION
RETURN VALUES
DIAGNOSTICS
SEE ALSO

NAME

TIFFSetDirectory, TIFFSetSubDirectory − set the current directory for an open TIFF file

SYNOPSIS

#include <tiffio.h>

int TIFFSetDirectory(TIFF *tif, tdir_t dirnum)
int TIFFSetSubDirectory(TIFF *
tif, uint32 diroff)

DESCRIPTION

TIFFSetDirectory changes the current directory and reads its contents with TIFFReadDirectory. The parameter dirnum specifies the subfile/directory as an integer number, with the first directory numbered zero.

TIFFSetSubDirectory acts like TIFFSetDirectory, except the directory is specified as a file offset instead of an index; this is required for accessing subdirectories linked through a SubIFD tag.

RETURN VALUES

On successful return 1 is returned. Otherwise, 0 is returned if dirnum or diroff specifies a non-existent directory, or if an error was encountered while reading the directory’s contents.

DIAGNOSTICS

All error messages are directed to the TIFFError(3TIFF) routine.

%s: Error fetching directory count. An error was encountered while reading the ‘‘directory count’’ field.

%s: Error fetching directory link. An error was encountered while reading the ‘‘link value’’ that points to the next directory in a file.

SEE ALSO

TIFFCurrentDirectory(3TIFF), TIFFOpen(3TIFF), TIFFReadDirectory(3TIFF), TIFFWriteDirectory(3TIFF), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


0707010004138e000081a40000000000000000000000014cc7a426000013e50000010000010006ffffffffffffffff0000004e00000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFWriteEncodedStrip.3tiff.html TIFFWriteEncodedStrip

TIFFWriteEncodedStrip

NAME
SYNOPSIS
DESCRIPTION
NOTES
RETURN VALUES
DIAGNOSTICS
SEE ALSO

NAME

TIFFWritedEncodedStrip − compress and write a strip of data to an open TIFF file

SYNOPSIS

#include <tiffio.h>

tsize_t TIFFWriteEncodedStrip(TIFF *tif, tstrip_t strip, tdata_t buf, tsize_t size)

DESCRIPTION

Compress size bytes of raw data from buf and write the result to the specified strip; replacing any previously written data. Note that the value of strip is a ‘‘raw strip number.’’ That is, the caller must take into account whether or not the data are organized in separate planes (PlanarConfiguration=2).

NOTES

The library writes encoded data using the native machine byte order. Correctly implemented TIFF readers are expected to do any necessary byte-swapping to correctly process image data with BitsPerSample greater than 8.

The strip number must be valid according to the current settings of the ImageLength and RowsPerStrip tags. An image may be dynamically grown by increasing the value of ImageLength prior to each call to TIFFWriteEncodedStrip.

RETURN VALUES

−1 is returned if an error was encountered. Otherwise, the value of size is returned.

DIAGNOSTICS

All error messages are directed to the TIFFError(3TIFF) routine.

%s: File not open for writing. The file was opened for reading, not writing.

Can not write scanlines to a tiled image. The image is assumed to be organized in tiles because the TileWidth and TileLength tags have been set with TIFFSetField(3TIFF).

%s: Must set "ImageWidth" before writing data. The image’s width has not be set before the first write. See TIFFSetField(3TIFF) for information on how to do this.

%s: Must set "PlanarConfiguration" before writing data. The organization of data has not be defined before the first write. See TIFFSetField(3TIFF) for information on how to do this.

%s: No space for strip arrays". There was not enough space for the arrays that hold strip offsets and byte counts.

SEE ALSO

TIFFOpen(3TIFF), TIFFWriteScanline(3TIFF), TIFFWriteRawStrip(3TIFF), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


0707010004137a000081a40000000000000000000000014cc7a426000058bb0000010000010006ffffffffffffffff0000004500000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFGetField.3tiff.html TIFFGetField

TIFFGetField

NAME
SYNOPSIS
DESCRIPTION
AUTOREGISTERED TAGS
RETURN VALUES
DIAGNOSTICS
SEE ALSO

NAME

TIFFGetField, TIFFVGetField − get the value(s) of a tag in an open TIFF file

SYNOPSIS

#include <tiffio.h>

int TIFFGetField(TIFF *tif, ttag_t tag, ...)

#include <stdarg.h>

int TIFFVGetField(TIFF *tif, ttag_t tag, va_list ap)
int TIFFGetFieldDefaulted(TIFF *
tif, ttag_t tag, ...)
int TIFFVGetFieldDefaulted(TIFF *
tif, ttag_t tag, va_list ap)

DESCRIPTION

TIFFGetField returns the value of a tag or pseudo-tag associated with the the current directory of the opened TIFF file tif. (A pseudo-tag is a parameter that is used to control the operation of the TIFF library but whose value is not read or written to the underlying file.) The file must have been previously opened with TIFFOpen(3TIFF). The tag is identified by tag, one of the values defined in the include file tiff.h (see also the table below). The type and number of values returned is dependent on the tag being requested. The programming interface uses a variable argument list as prescribed by the stdarg(3) interface. The returned values should only be interpreted if TIFFGetField returns 1.

TIFFVGetField is functionally equivalent to TIFFGetField except that it takes a pointer to a variable argument list. TIFFVGetField is useful for layering interfaces on top of the functionality provided by TIFFGetField.

TIFFGetFieldDefaulted and TIFFVGetFieldDefaulted are identical to TIFFGetField and TIFFVGetField, except that if a tag is not defined in the current directory and it has a default value, then the default value is returned.

The tags understood by libtiff(3TIFF), the number of parameter values, and the types for the returned values are shown below. The data types are specified as in C and correspond to the types used to specify tag values to TIFFSetField(3TIFF). Remember that TIFFGetField returns parameter values, so all the listed data types are pointers to storage where values should be returned. Consult the TIFF specification (or relevant industry specification) for information on the meaning of each tag and their possible values.

Tag Name Count Types Notes

TIFFTAG_ARTIST

1

char**

TIFFTAG_BADFAXLINES

1

uint32*

TIFFTAG_BITSPERSAMPLE

1

uint16*

TIFFTAG_CLEANFAXDATA

1

uint16*

TIFFTAG_COLORMAP

3

uint16**

1<<BitsPerSample arrays

TIFFTAG_COMPRESSION

1

uint16*

TIFFTAG_CONSECUTIVEBADFAXLINES

1

uint32*

TIFFTAG_COPYRIGHT

1

char**

TIFFTAG_DATATYPE

1

uint16*

TIFFTAG_DATETIME

1

char**

TIFFTAG_DOCUMENTNAME

1

char**

TIFFTAG_DOTRANGE

2

uint16*

TIFFTAG_EXTRASAMPLES

2

uint16*,uint16**

count & types array

TIFFTAG_FAXFILLFUNC

1

TIFFFaxFillFunc*

G3/G4 compression pseudo-tag

TIFFTAG_FAXMODE

1

int*

G3/G4 compression pseudo-tag

TIFFTAG_FILLORDER

1

uint16*

TIFFTAG_GROUP3OPTIONS

1

uint32*

TIFFTAG_GROUP4OPTIONS

1

uint32*

TIFFTAG_HALFTONEHINTS

2

uint16*

TIFFTAG_HOSTCOMPUTER

1

char**

TIFFTAG_ICCPROFILE

2

uint32*,void**

count, profile data

TIFFTAG_IMAGEDEPTH

1

uint32*

TIFFTAG_IMAGEDESCRIPTION

1

char**

TIFFTAG_IMAGELENGTH

1

uint32*

TIFFTAG_IMAGEWIDTH

1

uint32*

TIFFTAG_INKNAMES

1

char**

TIFFTAG_INKSET

1

uint16*

TIFFTAG_JPEGCOLORMODE

1

int*

JPEG pseudo-tag

TIFFTAG_JPEGQUALITY

1

int*

JPEG pseudo-tag

TIFFTAG_JPEGTABLES

2

uint32*,void**

count & tables

TIFFTAG_JPEGTABLESMODE

1

int*

JPEG pseudo-tag

TIFFTAG_MAKE

1

char**

TIFFTAG_MATTEING

1

uint16*

TIFFTAG_MAXSAMPLEVALUE

1

uint16*

TIFFTAG_MINSAMPLEVALUE

1

uint16*

TIFFTAG_MODEL

1

char**

TIFFTAG_ORIENTATION

1

uint16*

TIFFTAG_PAGENAME

1

char**

TIFFTAG_PAGENUMBER

2

uint16*

TIFFTAG_PHOTOMETRIC

1

uint16*

TIFFTAG_PHOTOSHOP

2

uint32*,void**

count, data

TIFFTAG_PLANARCONFIG

1

uint16*

TIFFTAG_PREDICTOR

1

uint16*

TIFFTAG_PRIMARYCHROMATICITIES

1

float**

6-entry array

TIFFTAG_REFERENCEBLACKWHITE

1

float**

2*SamplesPerPixel array

TIFFTAG_RESOLUTIONUNIT

1

uint16*

TIFFTAG_RICHTIFFIPTC

2

uint32*,void**

count, data

TIFFTAG_ROWSPERSTRIP

1

uint32*

TIFFTAG_SAMPLEFORMAT

1

uint16*

TIFFTAG_SAMPLESPERPIXEL

1

uint16*

TIFFTAG_SMAXSAMPLEVALUE

1

double*

TIFFTAG_SMINSAMPLEVALUE

1

double*

TIFFTAG_SOFTWARE

1

char**

TIFFTAG_STONITS

1

double**

TIFFTAG_STRIPBYTECOUNTS

1

uint32**

TIFFTAG_STRIPOFFSETS

1

uint32**

TIFFTAG_SUBFILETYPE

1

uint32*

TIFFTAG_SUBIFD

2

uint16*,uint32**

count & offsets array

TIFFTAG_TARGETPRINTER

1

char**

TIFFTAG_THRESHHOLDING

1

uint16*

TIFFTAG_TILEBYTECOUNTS

1

uint32**

TIFFTAG_TILEDEPTH

1

uint32*

TIFFTAG_TILELENGTH

1

uint32*

TIFFTAG_TILEOFFSETS

1

uint32**

TIFFTAG_TILEWIDTH

1

uint32*

TIFFTAG_TRANSFERFUNCTION

1 or 3†

uint16**1<<BitsPerSample entry arrays

TIFFTAG_WHITEPOINT

1

float**

2-entry array

TIFFTAG_XMLPACKET

2

uint32*,void**

count, data

TIFFTAG_XPOSITION

1

float*

TIFFTAG_XRESOLUTION

1

float*

TIFFTAG_YCBCRCOEFFICIENTS

1

float**

3-entry array

TIFFTAG_YCBCRPOSITIONING

1

uint16*

TIFFTAG_YCBCRSUBSAMPLING

2

uint16*

TIFFTAG_YPOSITION

1

float*

TIFFTAG_YRESOLUTION

1

float*‡

† If SamplesPerPixel is one, then a single array is returned; otherwise three arrays are returned.
‡ The contents of this field are quite complex. See The ICC Profile Format Specification, Annex B.3 "Embedding ICC Profiles in TIFF Files" (available at http://www.color.org) for an explanation.

AUTOREGISTERED TAGS

If you can’t find the tag in the table above that means this is unsupported tag. But you still be able to read it’s value if you know the data type of that tag. For example, if you want to read the LONG value from the tag 33424 and ASCII string from the tag 36867 you can use the following code:

uint16  count;
void    *data;

TIFFGetField(tiff, 33424, &count, &data);
printf("Tag %d: %d, count %d0, 33424, *(uint32 *)data, count);
TIFFGetField(tiff, 36867, &count, &data);
printf("Tag %d: %s, count %d0, 36867, (char *)data, count);

is not supported by libtiff(3TIFF), library

RETURN VALUES

1 is returned if the tag is defined in the current directory; otherwise a 0 is returned.

DIAGNOSTICS

All error messages are directed to the TIFFError(3TIFF) routine.

Unknown field, tag 0x%x. An unknown tag was supplied.

SEE ALSO

TIFFOpen(3TIFF), TIFFSetField(3TIFF), TIFFSetDirectory(3TIFF), TIFFReadDirectory(3TIFF), TIFFWriteDirectory(3TIFF) libtiff(3TIFF),

Libtiff library home page: http://www.remotesensing.org/libtiff/


070701000413a2000081a40000000000000000000000014cc7a4260000f71f0000010000010006ffffffffffffffff0000004000000000root/usr/local/share/doc/tiff-3.9.4/html/man/libtiff.3tiff.html INTRO

INTRO

NAME
SYNOPSIS
DESCRIPTION
DATA TYPES
LIST OF ROUTINES
TAG USAGE
PSEUDO TAGS
DIAGNOSTICS
SEE ALSO
BUGS

NAME

libtiff − introduction to libtiff, a library for reading and writing TIFF files

SYNOPSIS

#include <tiffio.h>

cc file.c -ltiff

DESCRIPTION

libtiff is a library for reading and writing data files encoded with the Tag Image File format, Revision 6.0 (or revision 5.0 or revision 4.0). This file format is suitable for archiving multi-color and monochromatic image data.

The library supports several compression algorithms, as indicated by the Compression field, including: no compression (1), CCITT 1D Huffman compression (2), CCITT Group 3 Facsimile compression (3), CCITT Group 4 Facsimile compression (4), Lempel-Ziv & Welch compression (5), baseline JPEG compression (7), word-aligned 1D Huffman compression (32771), and PackBits compression (32773). In addition, several nonstandard compression algorithms are supported: the 4-bit compression algorithm used by the ThunderScan program (32809) (decompression only), NeXT’s 2-bit compression algorithm (32766) (decompression only), an experimental LZ-style algorithm known as Deflate (32946), and an experimental CIE LogLuv compression scheme designed for images with high dynamic range (32845 for LogL and 32845 for LogLuv). Directory information may be in either little- or big-endian byte order−byte swapping is automatically done by the library. Data bit ordering may be either Most Significant Bit ( MSB ) to Least Significant Bit ( LSB ) or LSB to MSB. Finally, the library does not support files in which the BitsPerSample, Compression, MinSampleValue, or MaxSampleValue fields are defined differently on a per-sample basis (in Rev. 6.0 the Compression tag is not defined on a per-sample basis, so this is immaterial).

DATA TYPES

The library makes extensive use of C typedefs to promote portability. Two sets of typedefs are used, one for communication with clients of the library and one for internal data structures and parsing of the TIFF format. The following typedefs are exposed to users either through function definitions or through parameters passed through the varargs interfaces.

typedef unsigned short uint16;

16-bit unsigned integer

typedef unsigned <thing> uint32;

32-bit unsigned integer

typedef unsigned int ttag_t;

directory tag

typedef uint16 tdir_t;

directory index

typedef uint16 tsample_t;

sample number

typedef uint32 tstrip_t;

strip number

typedef uint32 ttile_t;

tile number

typedef int32 tsize_t;

i/o size in bytes

typedef void* tdata_t;

image data ref

typedef void* thandle_t;

client data handle

typedef int32 toff_t;

file offset

Note that tstrip_t, ttile_t, and tsize_t are constrained to be no more than 32-bit quantities by 32-bit fields they are stored in in the TIFF image. Likewise tsample_t is limited by the 16-bit field used to store the SamplesPerPixel tag. tdir_t constrains the maximum number of IFDs that may appear in an image and may be an arbitrary size (w/o penalty). ttag_t must be either int, unsigned int, pointer, or double because the library uses a varargs interface and ANSI C restricts the type of the parameter before an ellipsis to be a promoted type. toff_t is defined as int32 because TIFF file offsets are (unsigned) 32-bit quantities. A signed value is used because some interfaces return −1 on error. Finally, note that user-specified data references are passed as opaque handles and only cast at the lowest layers where their type is presumed.

LIST OF ROUTINES

The following routines are part of the library. Consult specific manual pages for details on their operation; on most systems doing ‘‘man function-name’’ will work.

Name Description

TIFFCheckpointDirectory

writes the current state of the directory

TIFFCheckTile

very x,y,z,sample is within image

TIFFCIELabToRGBInit

initialize CIE L*a*b* 1976 to RGB conversion state

TIFFCIELabToXYZ

perform CIE L*a*b* 1976 to CIE XYZ conversion

TIFFClientOpen

open a file for reading or writing

TIFFClose

close an open file

TIFFComputeStrip

return strip containing y,sample

TIFFComputeTile

return tile containing x,y,z,sample

TIFFCurrentDirectory

return index of current directory

TIFFCurrentRow

return index of current scanline

TIFFCurrentStrip

return index of current strip

TIFFCurrentTile

return index of current tile

TIFFDataWidth

return the size of TIFF data types

TIFFError

library error handler

TIFFFdOpen

open a file for reading or writing

TIFFFileName

return name of open file

TIFFFileno

return open file descriptor

TIFFFindCODEC

find standard codec for the specific scheme

TIFFFlush

flush all pending writes

TIFFFlushData

flush pending data writes

TIFFGetBitRevTable

return bit reversal table

TIFFGetField

return tag value in current directory

TIFFGetFieldDefaulted

return tag value in current directory

TIFFGetMode

return open file mode

TIFFGetVersion

return library version string

TIFFIsCODECConfigured

check, whether we have working codec

TIFFIsMSB2LSB

return true if image data is being returned

with bit 0 as the most significant bit

TIFFIsTiled

return true if image data is tiled

TIFFIsByteSwapped

return true if image data is byte-swapped

TIFFNumberOfStrips

return number of strips in an image

TIFFNumberOfTiles

return number of tiles in an image

TIFFOpen

open a file for reading or writing

TIFFPrintDirectory

print description of the current directory

TIFFReadBufferSetup

specify i/o buffer for reading

TIFFReadDirectory

read the next directory

TIFFReadEncodedStrip

read and decode a strip of data

TIFFReadEncodedTile

read and decode a tile of data

TIFFReadRawStrip

read a raw strip of data

TIFFReadRawTile

read a raw tile of data

TIFFReadRGBAImage

read an image into a fixed format raster

TIFFReadScanline

read and decode a row of data

TIFFReadTile

read and decode a tile of data

TIFFRegisterCODEC

override standard codec for the specific scheme

TIFFReverseBits

reverse bits in an array of bytes

TIFFRGBAImageBegin

setup decoder state for TIFFRGBAImageGet

TIFFRGBAImageEnd

release TIFFRGBAImage decoder state

TIFFRGBAImageGet

read and decode an image

TIFFRGBAImageOK

is image readable by TIFFRGBAImageGet

TIFFScanlineSize

return size of a scanline

TIFFSetDirectory

set the current directory

TIFFSetSubDirectory

set the current directory

TIFFSetErrorHandler

set error handler function

TIFFSetField

set a tag’s value in the current directory

TIFFSetWarningHandler

set warning handler function

TIFFStripSize

returns size of a strip

TIFFRawStripSize

returns the number of bytes in a raw strip

TIFFSwabShort

swap bytes of short

TIFFSwabLong

swap bytes of long

TIFFSwabArrayOfShort

swap bytes of an array of shorts

TIFFSwabArrayOfLong

swap bytes of an array of longs

TIFFTileRowSize

return size of a row in a tile

TIFFTileSize

return size of a tile

TIFFUnRegisterCODEC

unregisters the codec

TIFFVGetField

return tag value in current directory

TIFFVGetFieldDefaulted

return tag value in current directory

TIFFVSetField

set a tag’s value in the current directory

TIFFVStripSize

returns the number of bytes in a strip

TIFFWarning

library warning handler

TIFFWriteDirectory

write the current directory

TIFFWriteEncodedStrip

compress and write a strip of data

TIFFWriteEncodedTile

compress and write a tile of data

TIFFWriteRawStrip

write a raw strip of data

TIFFWriteRawTile

write a raw tile of data

TIFFWriteScanline

write a scanline of data

TIFFWriteTile

compress and write a tile of data

TIFFXYZToRGB

perform CIE XYZ to RGB conversion

TIFFYCbCrToRGBInit

initialize YCbCr to RGB conversion state

TIFFYCbCrtoRGB

perform YCbCr to RGB conversion

Auxiliary functions:

_TIFFfree

free memory buffer

_TIFFmalloc

dynamically allocate memory buffer

_TIFFmemcmp

compare contents of the memory buffers

_TIFFmemcpy

copy contents of the one buffer to another

_TIFFmemset

fill memory buffer with a constant byte

_TIFFrealloc

dynamically reallocate memory buffer

TAG USAGE

The table below lists the TIFF tags that are recognized and handled by the library. If no use is indicated in the table, then the library reads and writes the tag, but does not use it internally. Note that some tags are meaningful only when a particular compression scheme is being used; e.g. Group3Options is only useful if Compression is set to CCITT Group 3 encoding. Tags of this sort are considered codec-specific tags and the library does not recognize them except when the Compression tag has been previously set to the relevant compression scheme.

Tag Name                Value  R/W  Library Use/Notes

Artist

315

R/W

BadFaxLines

326

R/W

BitsPerSample

258

R/W

lots

CellLength

265

parsed but ignored

CellWidth

264

parsed but ignored

CleanFaxData

327

R/W

ColorMap

320

R/W

ColorResponseUnit

300

parsed but ignored

Compression

259

R/W

choosing codec

ConsecutiveBadFaxLines

328

R/W

Copyright 33432 R/W

DataType

32996

R

obsoleted by SampleFormat tag

DateTime

306

R/W

DocumentName

269

R/W

DotRange

336

R/W

ExtraSamples

338

R/W

lots

FaxRecvParams

34908

R/W

FaxSubAddress

34909

R/W

FaxRecvTime

34910

R/W

FillOrder

266

R/W

control bit order

FreeByteCounts

289

parsed but ignored

FreeOffsets

288

parsed but ignored

GrayResponseCurve

291

parsed but ignored

GrayResponseUnit

290

parsed but ignored

Group3Options

292

R/W

used by Group 3 codec

Group4Options

293

R/W

HostComputer

316

R/W

ImageDepth

32997

R/W

tile/strip calculations

ImageDescription

270

R/W

ImageLength

257

R/W

lots

ImageWidth

256

R/W

lots

InkNames

333

R/W

InkSet

332

R/W

JPEGTables

347

R/W

used by JPEG codec

Make

271

R/W

Matteing

32995

R

obsoleted by ExtraSamples tag

MaxSampleValue

281

R/W

MinSampleValue

280

R/W

Model

272

R/W

NewSubFileType

254

R/W

called SubFileType in spec

NumberOfInks

334

R/W

Orientation

274

R/W

PageName

285

R/W

PageNumber

297

R/W

PhotometricInterpretation

262

R/Wused by Group 3 and JPEG codecs

PlanarConfiguration

284

R/W

data i/o

Predictor

317

R/W

used by LZW and Deflate codecs

PrimaryChromacities

319

R/W

ReferenceBlackWhite

532

R/W

ResolutionUnit

296

R/W

used by Group 3 codec

RowsPerStrip

278

R/W

data i/o

SampleFormat

339

R/W

SamplesPerPixel

277

R/W

lots

SMinSampleValue

340

R/W

SMaxSampleValue

341

R/W

Software

305

R/W

StoNits

37439

R/W

StripByteCounts

279

R/W

data i/o

StripOffsets

273

R/W

data i/o

SubFileType

255

R/W

called OSubFileType in spec

TargetPrinter

337

R/W

Thresholding

263

R/W

TileByteCounts

324

R/W

data i/o

TileDepth

32998

R/W

tile/strip calculations

TileLength

323

R/W

data i/o

TileOffsets

324

R/W

data i/o

TileWidth

322

R/W

data i/o

TransferFunction

301

R/W

WhitePoint

318

R/W

XPosition

286

R/W

XResolution

282

R/W

YCbCrCoefficients

529

R/W

used by TIFFRGBAImage support

YCbCrPositioning

531

R/W

tile/strip size calulcations

YCbCrSubsampling

530

R/W

YPosition

286

R/W

YResolution

283

R/W

used by Group 3 codec

PSEUDO TAGS

In addition to the normal TIFF tags the library supports a collection of tags whose values lie in a range outside the valid range of TIFF tags. These tags are termed pseud-tags and are used to control various codec-specific functions within the library. The table below summarizes the defined pseudo-tags.

Tag Name                Codec  R/W  Library Use/Notes

TIFFTAG_FAXMODE

G3

R/W

general codec operation

TIFFTAG_FAXFILLFUNC

G3/G4

R/W

bitmap fill function

TIFFTAG_JPEGQUALITY

JPEG

R/W

compression quality control

TIFFTAG_JPEGCOLORMODE

JPEG

R/W

control colorspace conversions

TIFFTAG_JPEGTABLESMODE

JPEG

R/W

control contents of JPEGTables tag

TIFFTAG_ZIPQUALITY

Deflate

R/Wcompression quality level

TIFFTAG_PIXARLOGDATAFMT

PixarLog

R/Wuser data format

TIFFTAG_PIXARLOGQUALITY

PixarLog

R/Wcompression quality level

TIFFTAG_SGILOGDATAFMT

SGILog

R/W

user data format

TIFFTAG_FAXMODE

Control the operation of the Group 3 codec. Possible values (independent bits that can be combined by or’ing them together) are: FAXMODE_CLASSIC (enable old-style format in which the RTC is written at the end of the last strip), FAXMODE_NORTC (opposite of FAXMODE_CLASSIC; also called FAXMODE_CLASSF), FAXMODE_NOEOL (do not write EOL codes at the start of each row of data), FAXMODE_BYTEALIGN (align each encoded row to an 8-bit boundary), FAXMODE_WORDALIGN (align each encoded row to an 16-bit boundary), The default value is dependent on the compression scheme; this pseudo-tag is used by the various G3 and G4 codecs to share code.

TIFFTAG_FAXFILLFUNC

Control the function used to convert arrays of black and white runs to packed bit arrays. This hook can be used to image decoded scanlines in multi-bit depth rasters (e.g. for display in colormap mode) or for other purposes. The default value is a pointer to a builtin function that images packed bilevel data.

TIFFTAG_IPTCNEWSPHOTO

Tag contaings image metadata per the IPTC newsphoto spec: Headline, captioning, credit, etc... Used by most wire services.

TIFFTAG_PHOTOSHOP

Tag contains Photoshop captioning information and metadata. Photoshop uses in parallel and redundantly alongside IPTCNEWSPHOTO information.

TIFFTAG_JPEGQUALITY

Control the compression quality level used in the baseline algorithm. Note that quality levels are in the range 0-100 with a default value of 75.

TIFFTAG_JPEGCOLORMODE

Control whether or not conversion is done between RGB and YCbCr colorspaces. Possible values are: JPEGCOLORMODE_RAW (do not convert), and JPEGCOLORMODE_RGB (convert to/from RGB) The default value is JPEGCOLORMODE_RAW.

TIFFTAG_JPEGTABLESMODE

Control the information written in the JPEGTables tag. Possible values (independent bits that can be combined by or’ing them together) are: JPEGTABLESMODE_QUANT (include quantization tables), and JPEGTABLESMODE_HUFF (include Huffman encoding tables). The default value is JPEGTABLESMODE_QUANT|JPEGTABLESMODE_HUFF.

TIFFTAG_ZIPQUALITY

Control the compression technique used by the Deflate codec. Quality levels are in the range 1-9 with larger numbers yielding better compression at the cost of more computation. The default quality level is 6 which yields a good time-space tradeoff.

TIFFTAG_PIXARLOGDATAFMT

Control the format of user data passed in to the PixarLog codec when encoding and passed out from when decoding. Possible values are: PIXARLOGDATAFMT_8BIT for 8-bit unsigned pixels, PIXARLOGDATAFMT_8BITABGR for 8-bit unsigned ABGR-ordered pixels, PIXARLOGDATAFMT_11BITLOG for 11-bit log-encoded raw data, PIXARLOGDATAFMT_12BITPICIO for 12-bit PICIO-compatible data, PIXARLOGDATAFMT_16BIT for 16-bit signed samples, and PIXARLOGDATAFMT_FLOAT for 32-bit IEEE floating point samples.

TIFFTAG_PIXARLOGQUALITY

Control the compression technique used by the PixarLog codec. This value is treated identically to TIFFTAG_ZIPQUALITY; see the above description.

TIFFTAG_SGILOGDATAFMT

Control the format of client data passed in to the SGILog codec when encoding and passed out from when decoding. Possible values are: SGILOGDATAFMT_FLTXYZ for converting between LogLuv and 32-bit IEEE floating valued XYZ pixels, SGILOGDATAFMT_16BITLUV for 16-bit encoded Luv pixels, SGILOGDATAFMT_32BITRAW and SGILOGDATAFMT_24BITRAW for no conversion of data, SGILOGDATAFMT_8BITRGB for returning 8-bit RGB data (valid only when decoding LogLuv-encoded data), SGILOGDATAFMT_FLTY for converting between LogL and 32-bit IEEE floating valued Y pixels, SGILOGDATAFMT_16BITL for 16-bit encoded L pixels, and SGILOGDATAFMT_8BITGRY for returning 8-bit greyscale data (valid only when decoding LogL-encoded data).

DIAGNOSTICS

All error messages are directed through the TIFFError routine. By default messages are directed to stderr in the form: module: message\n. Warning messages are likewise directed through the TIFFWarning routine.

SEE ALSO

fax2tiff(1), gif2tiff(1), pal2rgb(1), ppm2tiff(1), rgb2ycbcr(1), ras2tiff(1), raw2tiff(1), sgi2tiff(1), tiff2bw(1), tiffdither(1), tiffdump(1), tiffcp(1), tiffcmp(1), tiffgt(1), tiffinfo(1), tiffmedian(1), tiffsplit(1), tiffsv(1).

Tag Image File Format Specification — Revision 6.0, an Aldus Technical Memorandum.

The Spirit of TIFF Class F, an appendix to the TIFF 5.0 specification prepared by Cygnet Technologies.

Libtiff library home page: http://www.remotesensing.org/libtiff/

BUGS

The library does not support multi-sample images where some samples have different bits/sample.

The library does not support random access to compressed data that is organized with more than one row per tile or strip.


07070100041382000081a40000000000000000000000014cc7a42600001d390000010000010006ffffffffffffffff0000004a00000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadRGBAStrip.3tiff.html TIFFReadRGBAStrip

TIFFReadRGBAStrip

NAME
SYNOPSIS
DESCRIPTION
NOTES
RETURN VALUES
DIAGNOSTICS
SEE ALSO

NAME

TIFFReadRGBAStrip − read and decode an image strip into a fixed-format raster

SYNOPSIS

#include <tiffio.h>

#define TIFFGetR(abgr) ((abgr) & 0xff)
#define TIFFGetG(abgr) (((abgr) >> 8) & 0xff)
#define TIFFGetB(abgr) (((abgr) >> 16) & 0xff)
#define TIFFGetA(abgr) (((abgr) >> 24) & 0xff)

int TIFFReadRGBAStrip(TIFF *tif, uint32 row, uint32 *raster)

DESCRIPTION

TIFFReadRGBAStrip reads a single strip of a strip-based image into memory, storing the result in the user supplied RGBA raster. The raster is assumed to be an array of width times rowsperstrip 32-bit entries, where width is the width of the image (TIFFTAG_IMAGEWIDTH) and rowsperstrip is the maximum lines in a strip (TIFFTAG_ROWSPERSTRIP).

The row value should be the row of the first row in the strip (strip * rowsperstrip, zero based).

Note that the raster is assume to be organized such that the pixel at location (x,y) is raster[y*width+x]; with the raster origin in the lower-left hand corner of the strip. That is bottom to top organization. When reading a partial last strip in the file the last line of the image will begin at the beginning of the buffer.

Raster pixels are 8-bit packed red, green, blue, alpha samples. The macros TIFFGetR, TIFFGetG, TIFFGetB, and TIFFGetA should be used to access individual samples. Images without Associated Alpha matting information have a constant Alpha of 1.0 (255).

See the TIFFRGBAImage(3TIFF) page for more details on how various image types are converted to RGBA values.

NOTES

Samples must be either 1, 2, 4, 8, or 16 bits. Colorimetric samples/pixel must be either 1, 3, or 4 (i.e. SamplesPerPixel minus ExtraSamples).

Palette image colormaps that appear to be incorrectly written as 8-bit values are automatically scaled to 16-bits.

TIFFReadRGBAStrip is just a wrapper around the more general TIFFRGBAImage(3TIFF) facilities. It’s main advantage over the similar TIFFReadRGBAImage() function is that for large images a single buffer capable of holding the whole image doesn’t need to be allocated, only enough for one strip. The TIFFReadRGBATile() function does a similar operation for tiled images.

RETURN VALUES

1 is returned if the image was successfully read and converted. Otherwise, 0 is returned if an error was encountered.

DIAGNOSTICS

All error messages are directed to the TIFFError(3TIFF) routine.

Sorry, can not handle %d-bit pictures. The image had BitsPerSample other than 1, 2, 4, 8, or 16.

Sorry, can not handle %d-channel images. The image had SamplesPerPixel other than 1, 3, or 4.

Missing needed "PhotometricInterpretation" tag. The image did not have a tag that describes how to display the data.

No "PhotometricInterpretation" tag, assuming RGB. The image was missing a tag that describes how to display it, but because it has 3 or 4 samples/pixel, it is assumed to be RGB.

No "PhotometricInterpretation" tag, assuming min-is-black. The image was missing a tag that describes how to display it, but because it has 1 sample/pixel, it is assumed to be a grayscale or bilevel image.

No space for photometric conversion table. There was insufficient memory for a table used to convert image samples to 8-bit RGB.

Missing required "Colormap" tag. A Palette image did not have a required Colormap tag.

No space for tile buffer. There was insufficient memory to allocate an i/o buffer.

No space for strip buffer. There was insufficient memory to allocate an i/o buffer.

Can not handle format. The image has a format (combination of BitsPerSample, SamplesPerPixel, and PhotometricInterpretation) that TIFFReadRGBAImage can not handle.

No space for B&W mapping table. There was insufficient memory to allocate a table used to map grayscale data to RGB.

No space for Palette mapping table. There was insufficient memory to allocate a table used to map data to 8-bit RGB.

SEE ALSO

TIFFOpen(3TIFF), TIFFRGBAImage(3TIFF), TIFFReadRGBAImage(3TIFF), TIFFReadRGBATile(3TIFF), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


0707010004137b000081a40000000000000000000000014cc7a426000035840000010000010006ffffffffffffffff0000004100000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFOpen.3tiff.html TIFFOpen

TIFFOpen

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
BYTE ORDER
RETURN VALUES
DIAGNOSTICS
SEE ALSO

NAME

TIFFOpen, TIFFFdOpen, TIFFClientOpen − open a TIFF file for reading or writing

SYNOPSIS

#include <tiffio.h>

TIFF* TIFFOpen(const char *filename, const char *mode)
TIFF* TIFFFdOpen(const int
fd, const char *filename, const char *mode)

typedef tsize_t (*TIFFReadWriteProc)(thandle_t, tdata_t, tsize_t);
typedef toff_t (*TIFFSeekProc)(thandle_t, toff_t, int);
typedef int (*TIFFCloseProc)(thandle_t);
typedef toff_t (*TIFFSizeProc)(thandle_t);
typedef int (*TIFFMapFileProc)(thandle_t, tdata_t*, toff_t*);
typedef void (*TIFFUnmapFileProc)(thandle_t, tdata_t, toff_t);

TIFF* TIFFClientOpen(const char *filename, const char *mode, thandle_t clientdata, TIFFReadWriteProc readproc, TIFFReadWriteProc writeproc, TIFFSeekProc seekproc, TIFFCloseProc closeproc, TIFFSizeProc sizeproc, TIFFMapFileProc mapproc, TIFFUnmapFileProc unmapproc)

DESCRIPTION

TIFFOpen opens a TIFF file whose name is filename and returns a handle to be used in subsequent calls to routines in libtiff. If the open operation fails, then zero is returned. The mode parameter specifies if the file is to be opened for reading (‘‘r’’), writing (‘‘w’’), or appending (‘‘a’’) and, optionally, whether to override certain default aspects of library operation (see below). When a file is opened for appending, existing data will not be touched; instead new data will be written as additional subfiles. If an existing file is opened for writing, all previous data is overwritten.

If a file is opened for reading, the first TIFF directory in the file is automatically read (also see TIFFSetDirectory(3TIFF) for reading directories other than the first). If a file is opened for writing or appending, a default directory is automatically created for writing subsequent data. This directory has all the default values specified in TIFF Revision 6.0: BitsPerSample=1, ThreshHolding=bilevel art scan, FillOrder=1 (most significant bit of each data byte is filled first), Orientation=1 (the 0th row represents the visual top of the image, and the 0th column represents the visual left hand side), SamplesPerPixel=1, RowsPerStrip=infinity, ResolutionUnit=2 (inches), and Compression=1 (no compression). To alter these values, or to define values for additional fields, TIFFSetField(3TIFF) must be used.

TIFFFdOpen is like TIFFOpen except that it opens a TIFF file given an open file descriptor fd. The file’s name and mode must reflect that of the open descriptor. The object associated with the file descriptor must support random access.

TIFFClientOpen is like TIFFOpen except that the caller supplies a collection of functions that the library will use to do UNIX -like I/O operations. The readproc and writeproc are called to read and write data at the current file position. seekproc is called to change the current file position a la lseek(2). closeproc is invoked to release any resources associated with an open file. sizeproc is invoked to obtain the size in bytes of a file. mapproc and unmapproc are called to map and unmap a file’s contents in memory; c.f. mmap(2) and munmap(2). The clientdata parameter is an opaque ‘‘handle’’ passed to the client-specified routines passed as parameters to TIFFClientOpen.

OPTIONS

The open mode parameter can include the following flags in addition to the ‘‘r’’, ‘‘w’’, and ‘‘a’’ flags. Note however that option flags must follow the read-write-append specification.

l

When creating a new file force information be written with Little-Endian byte order (but see below). By default the library will create new files using the native CPU byte order.

b

When creating a new file force information be written with Big-Endian byte order (but see below). By default the library will create new files using the native CPU byte order.

L

Force image data that is read or written to be treated with bits filled from Least Significant Bit ( LSB ) to Most Significant Bit ( MSB ). Note that this is the opposite to the way the library has worked from its inception.

B

Force image data that is read or written to be treated with bits filled from Most Significant Bit ( MSB ) to Least Significant Bit ( LSB ); this is the default.

H

Force image data that is read or written to be treated with bits filled in the same order as the native CPU.

M

Enable the use of memory-mapped files for images opened read-only. If the underlying system does not support memory-mapped files or if the specific image being opened cannot be memory-mapped then the library will fallback to using the normal system interface for reading information. By default the library will attempt to use memory-mapped files.

m

Disable the use of memory-mapped files.

C

Enable the use of ‘‘strip chopping’’ when reading images that are comprised of a single strip or tile of uncompressed data. Strip chopping is a mechanism by which the library will automatically convert the single-strip image to multiple strips, each of which has about 8 Kilobytes of data. This facility can be useful in reducing the amount of memory used to read an image because the library normally reads each strip in its entirety. Strip chopping does however alter the apparent contents of the image because when an image is divided into multiple strips it looks as though the underlying file contains multiple separate strips. Finally, note that default handling of strip chopping is a compile-time configuration parameter. The default behaviour, for backwards compatibility, is to enable strip chopping.

c

Disable the use of strip chopping when reading images.

h

Read TIFF header only, do not load the first image directory. That could be useful in case of the broken first directory. We can open the file and proceed to the other directories.

BYTE ORDER

The TIFF specification (all versions) states that compliant readers must be capable of reading images written in either byte order. Nonetheless some software that claims to support the reading of TIFF images is incapable of reading images in anything but the native CPU byte order on which the software was written. (Especially notorious are applications written to run on Intel-based machines.) By default the library will create new files with the native byte-order of the CPU on which the application is run. This ensures optimal performance and is portable to any application that conforms to the TIFF specification. To force the library to use a specific byte-order when creating a new file the ‘‘b’’ and ‘‘l’’ option flags may be included in the call to open a file; for example, ‘‘wb’’ or ‘‘wl’’.

RETURN VALUES

Upon successful completion TIFFOpen, TIFFFdOpen, and TIFFClientOpen return a TIFF pointer. Otherwise, NULL is returned.

DIAGNOSTICS

All error messages are directed to the TIFFError(3TIFF) routine. Likewise, warning messages are directed to the TIFFWarning(3TIFF) routine.

"%s": Bad mode. The specified mode parameter was not one of ‘‘r’’ (read), ‘‘w’’ (write), or ‘‘a’’ (append).

%s: Cannot open. TIFFOpen() was unable to open the specified filename for read/writing.

Cannot read TIFF header. An error occurred while attempting to read the header information.

Error writing TIFF header. An error occurred while writing the default header information for a new file.

Not a TIFF file, bad magic number %d (0x%x). The magic number in the header was not (hex) 0x4d4d or (hex) 0x4949.

Not a TIFF file, bad version number %d (0x%x). The version field in the header was not 42 (decimal).

Cannot append to file that has opposite byte ordering. A file with a byte ordering opposite to the native byte ordering of the current machine was opened for appending (‘‘a’’). This is a limitation of the library.

SEE ALSO

libtiff(3TIFF), TIFFClose(3TIFF)


07070100041392000081a40000000000000000000000014cc7a42600000f8a0000010000010006ffffffffffffffff0000004900000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFWriteRawTile.3tiff.html TIFFWriteRawtile

TIFFWriteRawtile

NAME
SYNOPSIS
DESCRIPTION
RETURN VALUES
DIAGNOSTICS
SEE ALSO

NAME

TIFFWriteRawTile − write a tile of raw data to an open TIFF file

SYNOPSIS

#include <tiffio.h>

tsize_t TIFFWriteRawTile(TIFF *tif, ttile_t tile, tdata_t buf, tsize_t size)

DESCRIPTION

Append size bytes of raw data to the specified tile.

RETURN VALUES

−1 is returned if an error occurred. Otherwise, the value of size is returned.

DIAGNOSTICS

All error messages are directed to the TIFFError(3TIFF) routine.

%s: File not open for writing. The file was opened for reading, not writing.

Can not write tiles to a stripped image. The image is assumed to be organized in strips because neither of the TileWidth or TileLength tags have been set with TIFFSetField(3TIFF).

%s: Must set "ImageWidth" before writing data. The image’s width has not be set before the first write. See TIFFSetField(3TIFF) for information on how to do this.

%s: Must set "PlanarConfiguration" before writing data. The organization of data has not be defined before the first write. See TIFFSetField(3TIFF) for information on how to do this.

%s: No space for tile arrays". There was not enough space for the arrays that hold tile offsets and byte counts.

%s: Specified tile %d out of range, max %d. The specified tile is not valid according to the currently specified image dimensions.

SEE ALSO

TIFFOpen(3TIFF), TIFFWriteEncodedTile(3TIFF), TIFFWriteScanline(3TIFF), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


070701000413ab000081a40000000000000000000000014cc7a42600000fd90000010000010006ffffffffffffffff0000003c00000000root/usr/local/share/doc/tiff-3.9.4/html/man/tiff2bw.1.html TIFF2BW

TIFF2BW

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
SEE ALSO

NAME

tiff2bw − convert a color TIFF image to greyscale

SYNOPSIS

tiff2bw [ options ] input.tif output.tif

DESCRIPTION

Tiff2bw converts an RGB or Palette color TIFF image to a greyscale image by combining percentages of the red, green, and blue channels. By default, output samples are created by taking 28% of the red channel, 59% of the green channel, and 11% of the blue channel. To alter these percentages, the −R, −G, and −B options may be used.

OPTIONS

−c

Specify a compression scheme to use when writing image data: −c none for no compression, −c packbits for the PackBits compression algorithm, −c zip for the Deflate compression algorithm, −c g3 for the CCITT Group 3 compression algorithm, −c g4 for the CCITT Group 4 compression algorithm, and −c lzw for Lempel-Ziv & Welch (the default).

−r

Write data with a specified number of rows per strip; by default the number of rows/strip is selected so that each strip is approximately 8 kilobytes.

−R

Specify the percentage of the red channel to use (default 28).

−G

Specify the percentage of the green channel to use (default 59).

−B

Specify the percentage of the blue channel to use (default 11).

SEE ALSO

pal2rgb(1), tiffinfo(1), tiffcp(1), tiffmedian(1), libtiff(3)

Libtiff library home page: http://www.remotesensing.org/libtiff/


070701000413a7000081a40000000000000000000000014cc7a426000031ca0000010000010006ffffffffffffffff0000003d00000000root/usr/local/share/doc/tiff-3.9.4/html/man/raw2tiff.1.html RAW2TIFF

RAW2TIFF

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
GUESSING THE IMAGE GEOMETRY
SEE ALSO

NAME

raw2tiff − create a TIFF file from a raw data

SYNOPSIS

raw2tiff [ options ] input.raw output.tif

DESCRIPTION

raw2tiff converts a raw byte sequence into TIFF. By default, the TIFF image is created with data samples packed (PlanarConfiguration=1), compressed with the PackBits algorithm (Compression=32773), and with each strip no more than 8 kilobytes. These characteristics can overridden, or explicitly specified with the options described below.

OPTIONS

−H number

size of input image file header in bytes (0 by default). This amount of data just will be skipped from the start of file while reading.

−w number

width of input image in pixels (can be guessed, see GUESSING THE IMAGE GEOMETRY below).

−l number

length of input image in lines (can be guessed, see GUESSING THE IMAGE GEOMETRY below).

−b number

number of bands in input image (1 by default).

−d data_type

type of samples in input image, where data_type may be:

byte

8-bit unsigned integer (default),

short

16-bit unsigned integer,

long

32-bit unsigned integer,

sbyte

8-bit signed integer,

sshort

16-bit signed integer,

slong

32-bit signed integer,

float

32-bit IEEE floating point,

double

64-bit IEEE floating point.

−i config

type of samples interleaving in input image, where config may be:

pixel

pixel interleaved data (default),

band

band interleaved data.

−p photo

photometric interpretation (color space) of the input image, where photo may be:

miniswhite

white color represented with 0 value,

minisblack

black color represented with 0 value (default),

rgb

image has RGB color model,

cmyk

image has CMYK (separated) color model,

ycbcr

image has YCbCr color model,

cielab

image has CIE L*a*b color model,

icclab

image has ICC L*a*b color model,

itulab

image has ITU L*a*b color model.

−s

swap bytes fetched from the input file.

−L

input data has LSB2MSB bit order (default).

−M

input data has MSB2LSB bit order.

−c

Specify a compression scheme to use when writing image data: −c none for no compression, −c packbits for the PackBits compression algorithm (the default), −c jpeg for the baseline JPEG compression algorithm, −c zip for the Deflate compression algorithm, and −c lzw for Lempel-Ziv & Welch.

−r number

Write data with a specified number of rows per strip; by default the number of rows/strip is selected so that each strip is approximately 8 kilobytes.

GUESSING THE IMAGE GEOMETRY

raw2tiff can guess image width and height in case one or both of these parameters are not specified. If you omit one of those parameters, the complementary one will be calculated based on the file size (taking into account header size, number of bands and data type). If you omit both parameters, the statistical approach will be used. Utility will compute correlation coefficient between two lines at the image center using several appropriate line sizes and the highest absolute value of the coefficient will indicate the right line size. That is why you should be cautious with the very large images, because guessing process may take a while (depending on your system performance). Of course, the utility can’t guess the header size, number of bands and data type, so it should be specified manually. If you don’t know anything about your image, just try with the several combinations of those options.

There is no magic, it is just a mathematical statistics, so it can be wrong in some cases. But for most ordinary images guessing method will work fine.

SEE ALSO

pal2rgb(1), tiffcp(1), tiffmedian(1), libtiff(3)

Libtiff library home page: http://www.remotesensing.org/libtiff/


07070100041395000081a40000000000000000000000014cc7a42600000f280000010000010006ffffffffffffffff0000004300000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFbuffer.3tiff.html TIFFBUFFER

TIFFBUFFER

NAME
SYNOPSIS
DESCRIPTION
DIAGNOSTICS
SEE ALSO

NAME

TIFFReadBufferSetup, TIFFWriteBufferSetup − I/O buffering control routines

SYNOPSIS

#include <tiffio.h>

int TIFFReadBufferSetup(TIFF *tif, tdata_t buffer, tsize_t size);
int TIFFWriteBufferSetup(TIFF *tif, tdata_t buffer, tsize_t size);

DESCRIPTION

The following routines are provided for client-control of the I/O buffers used by the library. Applications need never use these routines; they are provided only for ‘‘intelligent clients’’ that wish to optimize memory usage and/or eliminate potential copy operations that can occur when working with images that have data stored without compression.

TIFFReadBufferSetup sets up the data buffer used to read raw (encoded) data from a file. If the specified pointer is NULL (zero), then a buffer of the appropriate size is allocated. Otherwise the caller must guarantee that the buffer is large enough to hold any individual strip of raw data. TIFFReadBufferSetup returns a non-zero value if the setup was successful and zero otherwise.

TIFFWriteBufferSetup sets up the data buffer used to write raw (encoded) data to a file. If the specified size is −1 then the buffer size is selected to hold a complete tile or strip, or at least 8 kilobytes, whichever is greater. If the specified buffer is NULL (zero), then a buffer of the appropriate size is dynamically allocated. TIFFWriteBufferSetup returns a non-zero value if the setup was successful and zero otherwise.

DIAGNOSTICS

%s: No space for data buffer at scanline %ld. TIFFReadBufferSetup was unable to dynamically allocate space for a data buffer.

%s: No space for output buffer. TIFFWriteBufferSetup was unable to dynamically allocate space for a data buffer.

SEE ALSO

libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


070701000413aa000081a40000000000000000000000014cc7a42600000fe40000010000010006ffffffffffffffff0000003e00000000root/usr/local/share/doc/tiff-3.9.4/html/man/thumbnail.1.html THUMBNAIL

THUMBNAIL

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
BUGS
SEE ALSO

NAME

thumbnail − create a TIFF file with thumbnail images

SYNOPSIS

thumbnail [ options ] input.tif output.tif

DESCRIPTION

thumbnail is a program written to show how one might use the SubIFD tag (#330) to store thumbnail images. thumbnail copies a TIFF Class F facsimile file to the output file and for each image an 8-bit greyscale thumbnail sketch. The output file contains the thumbnail image with the associated full-resolution page linked below with the SubIFD tag.

By default, thumbnail images are 216 pixels wide by 274 pixels high. Pixels are calculated by sampling and filtering the input image with each pixel value passed through a contrast curve.

OPTIONS

−w

Specify the width of thumbnail images in pixels.

−h

Specify the height of thumbnail images in pixels.

−c

Specify a contrast curve to apply in generating the thumbnail images. By default pixels values are passed through a linear contrast curve that simply maps the pixel value ranges. Alternative curves are: exp50 for a 50% exponential curve, exp60 for a 60% exponential curve, exp70 for a 70% exponential curve, exp80 for a 80% exponential curve, exp90 for a 90% exponential curve, exp for a pure exponential curve, linear for a linear curve.

BUGS

There are no options to control the format of the saved thumbnail images.

SEE ALSO

tiffdump(1), tiffgt(1), tiffinfo(1), libtiff(3)

Libtiff library home page: http://www.remotesensing.org/libtiff/


070701000413b8000081a40000000000000000000000014cc7a426000014220000010000010006ffffffffffffffff0000003f00000000root/usr/local/share/doc/tiff-3.9.4/html/man/tiffmedian.1.html TIFFMEDIAN

TIFFMEDIAN

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
NOTES
SEE ALSO

NAME

tiffmedian − apply the median cut algorithm to data in a TIFF file

SYNOPSIS

tiffmedian [ options ] input.tif output.tif

DESCRIPTION

tiffmedian applies the median cut algorithm to an RGB image in input.tif to generate a palette image that is written to output.tif. The generated colormap has, by default, 256 entries. The image data is quantized by mapping each pixel to the closest color values in the colormap.

OPTIONS

−c

Specify the compression to use for data written to the output file: none for no compression, packbits for PackBits compression, lzw for Lempel-Ziv & Welch compression, and zip for Deflate compression. By default tiffmedian will compress data according to the value of the Compression tag found in the source file.

LZW compression can be specified together with a predictor value. A predictor value of 2 causes each scanline of the output image to undergo horizontal differencing before it is encoded; a value of 1 forces each scanline to be encoded without differencing. LZW-specific options are specified by appending a ‘‘:’’-separated list to the ‘‘lzw’’ option; e.g. −c lzw:2 for LZW compression with horizontal differencing.

−C

Specify the number of entries to use in the generated colormap. By default all 256 entries/colors are used.

−f

Apply Floyd-Steinberg dithering before selecting a colormap entry.

−r

Specify the number of rows (scanlines) in each strip of data written to the output file. By default, tiffmedian attempts to set the rows/strip that no more than 8 kilobytes of data appear in a strip.

NOTES

This program is derived from Paul Heckbert’s median program.

SEE ALSO

pal2rgb(1), tiffinfo(1), tiffcp(1), tiffcmp(1), libtiff(3TIFF)

Color Image Quantization for Frame Buffer Display, Paul Heckbert, SIGGRAPH proceedings, 1982, pp. 297-307.

Libtiff library home page: http://www.remotesensing.org/libtiff/


07070100041383000081a40000000000000000000000014cc7a4260000211d0000010000010006ffffffffffffffff0000004900000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadRGBATile.3tiff.html TIFFReadRGBATile

TIFFReadRGBATile

NAME
SYNOPSIS
DESCRIPTION
NOTES
RETURN VALUES
DIAGNOSTICS
SEE ALSO

NAME

TIFFReadRGBATile − read and decode an image tile into a fixed-format raster

SYNOPSIS

#include <tiffio.h>

#define TIFFGetR(abgr)

((abgr) & 0xff)

#define TIFFGetG(abgr)

(((abgr) >> 8) & 0xff)

#define TIFFGetB(abgr)

(((abgr) >> 16) & 0xff)

#define TIFFGetA(abgr)

(((abgr) >> 24) & 0xff)

int TIFFReadRGBATile(TIFF *tif, uint32 x, uint32 y, uint32 *raster)

DESCRIPTION

TIFFReadRGBATile reads a single tile of a tile-based image into memory, storing the result in the user supplied RGBA raster. The raster is assumed to be an array of width times length 32-bit entries, where width is the width of a tile (TIFFTAG_TILEWIDTH) and length is the height of a tile (TIFFTAG_TILELENGTH).

The x and y values are the offsets from the top left corner to the top left corner of the tile to be read. They must be an exact multiple of the tile width and length.

Note that the raster is assume to be organized such that the pixel at location (x,y) is raster[y*width+x]; with the raster origin in the lower-left hand corner of the tile. That is bottom to top organization. Edge tiles which partly fall off the image will be filled out with appropriate zeroed areas.

Raster pixels are 8-bit packed red, green, blue, alpha samples. The macros TIFFGetR, TIFFGetG, TIFFGetB, and TIFFGetA should be used to access individual samples. Images without Associated Alpha matting information have a constant Alpha of 1.0 (255).

See the TIFFRGBAImage(3TIFF) page for more details on how various image types are converted to RGBA values.

NOTES

Samples must be either 1, 2, 4, 8, or 16 bits. Colorimetric samples/pixel must be either 1, 3, or 4 (i.e. SamplesPerPixel minus ExtraSamples).

Palette image colormaps that appear to be incorrectly written as 8-bit values are automatically scaled to 16-bits.

TIFFReadRGBATile is just a wrapper around the more general TIFFRGBAImage(3TIFF) facilities. It’s main advantage over the similar TIFFReadRGBAImage() function is that for large images a single buffer capable of holding the whole image doesn’t need to be allocated, only enough for one tile. The TIFFReadRGBAStrip() function does a similar operation for stripped images.

RETURN VALUES

1 is returned if the image was successfully read and converted. Otherwise, 0 is returned if an error was encountered.

DIAGNOSTICS

All error messages are directed to the TIFFError(3TIFF) routine.

Sorry, can not handle %d-bit pictures. The image had BitsPerSample other than 1, 2, 4, 8, or 16.

Sorry, can not handle %d-channel images. The image had SamplesPerPixel other than 1, 3, or 4.

Missing needed "PhotometricInterpretation" tag. The image did not have a tag that describes how to display the data.

No "PhotometricInterpretation" tag, assuming RGB. The image was missing a tag that describes how to display it, but because it has 3 or 4 samples/pixel, it is assumed to be RGB.

No "PhotometricInterpretation" tag, assuming min-is-black. The image was missing a tag that describes how to display it, but because it has 1 sample/pixel, it is assumed to be a grayscale or bilevel image.

No space for photometric conversion table. There was insufficient memory for a table used to convert image samples to 8-bit RGB.

Missing required "Colormap" tag. A Palette image did not have a required Colormap tag.

No space for tile buffer. There was insufficient memory to allocate an i/o buffer.

No space for strip buffer. There was insufficient memory to allocate an i/o buffer.

Can not handle format. The image has a format (combination of BitsPerSample, SamplesPerPixel, and PhotometricInterpretation) that TIFFReadRGBAImage can not handle.

No space for B&W mapping table. There was insufficient memory to allocate a table used to map grayscale data to RGB.

No space for Palette mapping table. There was insufficient memory to allocate a table used to map data to 8-bit RGB.

SEE ALSO

TIFFOpen(3TIFF), TIFFRGBAImage(3TIFF), TIFFReadRGBAImage(3TIFF), TIFFReadRGBAStrip(3TIFF), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


07070100041380000081a40000000000000000000000014cc7a426000010250000010000010006ffffffffffffffff0000004c00000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadEncodedTile.3tiff.html TIFFReadEncodedTile

TIFFReadEncodedTile

NAME
SYNOPSIS
DESCRIPTION
NOTES
RETURN VALUES
DIAGNOSTICS
SEE ALSO

NAME

TIFFReadEncodedTile − read and decode a tile of data from an open TIFF file

SYNOPSIS

#include <tiffio.h>

int TIFFReadEncodedTile(TIFF *tif, ttile_t tile, tdata_t buf, tsize_t size)

DESCRIPTION

Read the specified tile of data and place up to size bytes of decompressed information in the (user supplied) data buffer.

NOTES

The value of tile is a ‘‘raw tile number.’’ That is, the caller must take into account whether or not the data are organized in separate planes (PlanarConfiguration=2). TIFFComputeTile automatically does this when converting an (x,y,z,sample) coordinate quadruple to a tile number. To read a full tile of data the data buffer should be at least as large as the value returned by TIFFTileSize.

The library attempts to hide bit- and byte-ordering differences between the image and the native machine by converting data to the native machine order. Bit reversal is done if the FillOrder tag is opposite to the native machine bit order. 16- and 32-bit samples are automatically byte-swapped if the file was written with a byte order opposite to the native machine byte order,

RETURN VALUES

The actual number of bytes of data that were placed in buf is returned; TIFFReadEncodedTile returns −1 if an error was encountered.

DIAGNOSTICS

All error messages are directed to the TIFFError(3TIFF) routine.

SEE ALSO

TIFFOpen(3TIFF), TIFFReadRawTile(3TIFF), TIFFReadTile(3TIFF), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


070701000413ae000081a40000000000000000000000014cc7a426000011ec0000010000010006ffffffffffffffff0000003e00000000root/usr/local/share/doc/tiff-3.9.4/html/man/tiff2rgba.1.html TIFF2RGBA

TIFF2RGBA

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
SEE ALSO

NAME

tiff2rgba − convert a TIFF image to RGBA color space

SYNOPSIS

tiff2rgba [ options ] input.tif output.tif

DESCRIPTION

Tiff2rgba converts a wide variety of TIFF images into an RGBA TIFF image. This includes the ability to translate different color spaces and photometric interpretation into RGBA, support for alpha blending, and translation of many different bit depths into a 32bit RGBA image.

Internally this program is implemented using the TIFFReadRGBAImage() function, and it suffers any limitations of that image. This includes limited support for > 8 BitsPerSample images, and flaws with some esoteric combinations of BitsPerSample, photometric interpretation, block organization and planar configuration.

The generated images are stripped images with four samples per pixel (red, green, blue and alpha) or if the −n flag is used, three samples per pixel (red, green, and blue). The resulting images are always planar configuration contiguous. For this reason, this program is a useful utility for transform exotic TIFF files into a form ingestible by almost any TIFF supporting software.

OPTIONS

−c

Specify a compression scheme to use when writing image data: −c none for no compression (the default), −c packbits for the PackBits compression algorithm, −c zip for the Deflate compression algorithm, −c jpeg for the JPEG compression algorithm, and −c lzw for Lempel-Ziv & Welch.

−r

Write data with a specified number of rows per strip; by default the number of rows/strip is selected so that each strip is approximately 8 kilobytes.

−b

Process the image one block (strip/tile) at a time instead of by reading the whole image into memory at once. This may be necessary for very large images on systems with limited RAM.

−n

Drop the alpha component from the output file, producing a pure RGB file. Currently this does not work if the −b flag is also in effect.

SEE ALSO

tiff2bw(1), TIFFReadRGBAImage(3t), libtiff(3)

Libtiff library home page: http://www.remotesensing.org/libtiff/


07070100041386000081a40000000000000000000000014cc7a426000014890000010000010006ffffffffffffffff0000004900000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadScanline.3tiff.html TIFFReadScanline

TIFFReadScanline

NAME
SYNOPSIS
DESCRIPTION
NOTES
RETURN VALUES
DIAGNOSTICS
BUGS
SEE ALSO

NAME

TIFFReadScanline − read and decode a scanline of data from an open TIFF file

SYNOPSIS

#include <tiffio.h>

int TIFFReadScanline(TIFF *tif, tdata_t buf, uint32 row, tsample_t sample)

DESCRIPTION

Read the data for the specified row into the (user supplied) data buffer buf. The data are returned decompressed and, in the native byte- and bit-ordering, but are otherwise packed (see further below). The buffer must be large enough to hold an entire scanline of data. Applications should call the routine TIFFScanlineSize to find out the size (in bytes) of a scanline buffer. The row parameter is always used by TIFFReadScanline; the sample parameter is used only if data are organized in separate planes (PlanarConfiguration=2).

NOTES

The library attempts to hide bit- and byte-ordering differences between the image and the native machine by converting data to the native machine order. Bit reversal is done if the FillOrder tag is opposite to the native machine bit order. 16- and 32-bit samples are automatically byte-swapped if the file was written with a byte order opposite to the native machine byte order,

In C++ the sample parameter defaults to 0.

RETURN VALUES

TIFFReadScanline returns −1 if it detects an error; otherwise 1 is returned.

DIAGNOSTICS

All error messages are directed to the TIFFError(3TIFF) routine.

Compression algorithm does not support random access. Data was requested in a non-sequential order from a file that uses a compression algorithm and that has RowsPerStrip greater than one. That is, data in the image is stored in a compressed form, and with multiple rows packed into a strip. In this case, the library does not support random access to the data. The data should either be accessed sequentially, or the file should be converted so that each strip is made up of one row of data.

BUGS

Reading subsampled YCbCR data does not work correctly because, for PlanarConfiguration=2 the size of a scanline is not calculated on a per-sample basis, and for PlanarConfiguration=1 the library does not unpack the block-interleaved samples; use the strip- and tile-based interfaces to read these formats.

SEE ALSO

TIFFOpen(3TIFF), TIFFReadEncodedStrip(3TIFF), TIFFReadRawStrip(3TIFF), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


070701000413ba000081a40000000000000000000000014cc7a42600000b6f0000010000010006ffffffffffffffff0000003e00000000root/usr/local/share/doc/tiff-3.9.4/html/man/tiffsplit.1.html TIFFSPLIT

TIFFSPLIT

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
BUGS
SEE ALSO

NAME

tiffsplit − split a multi-image TIFF into single-image TIFF files

SYNOPSIS

tiffsplit src.tif [ prefix ]

DESCRIPTION

tiffsplit takes a multi-directory (page) TIFF file and creates one or more single-directory (page) TIFF files from it. The output files are given names created by concatenating a prefix, a lexically ordered suffix in the range [aaa-zzz], the suffix .tif (e.g. xaaa.tif, xaab.tif, xzzz.tif). If a prefix is not specified on the command line, the default prefix of x is used.

OPTIONS

None.

BUGS

Only a select set of ‘‘known tags’’ is copied when splitting.

SEE ALSO

tiffcp(1), tiffinfo(1), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


07070100041399000081a40000000000000000000000014cc7a4260000142e0000010000010006ffffffffffffffff0000004200000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFquery.3tiff.html QUERY

QUERY

NAME
SYNOPSIS
DESCRIPTION
DIAGNOSTICS
SEE ALSO

NAME

TIFFCurrentRow, TIFFCurrentStrip, TIFFCurrentTile, TIFFCurrentDirectory, TIFFLastDirectory, TIFFFileno, TIFFFileName, TIFFGetMode, TIFFIsTiled, TIFFIsByteSwapped, TIFFIsUpSampled, TIFFIsMSB2LSB, TIFFGetVersion − query routines

SYNOPSIS

#include <tiffio.h>

uint32 TIFFCurrentRow(TIFF* tif)
tstrip_t TIFFCurrentStrip(TIFF*
tif)
ttile_t TIFFCurrentTile(TIFF*
tif)
tdir_t TIFFCurrentDirectory(TIFF*
tif)
int TIFFLastDirectory(TIFF*
tif)
int TIFFFileno(TIFF*
tif)
char* TIFFFileName(TIFF*
tif)
int TIFFGetMode(TIFF*
tif)
int TIFFIsTiled(TIFF*
tif)
int TIFFIsByteSwapped(TIFF*
tif)
int TIFFIsUpSampled(TIFF*
tif)
int TIFFIsMSB2LSB(TIFF*
tif)
const char* TIFFGetVersion(void)

DESCRIPTION

The following routines return status information about an open TIFF file.

TIFFCurrentDirectory returns the index of the current directory (directories are numbered starting at 0). This number is suitable for use with the TIFFSetDirectory routine.

TIFFLastDirectory returns a non-zero value if the current directory is the last directory in the file; otherwise zero is returned.

TIFFCurrentRow, TIFFCurrentStrip, and TIFFCurrentTile, return the current row, strip, and tile, respectively, that is being read or written. These values are updated each time a read or write is done.

TIFFFileno returns the underlying file descriptor used to access the TIFF image in the filesystem.

TIFFFileName returns the pathname argument passed to TIFFOpen or TIFFFdOpen.

TIFFGetMode returns the mode with which the underlying file was opened. On UNIX systems, this is the value passed to the open(2) system call.

TIFFIsTiled returns a non-zero value if the image data has a tiled organization. Zero is returned if the image data is organized in strips.

TIFFIsByteSwapped returns a non-zero value if the image data was in a different byte-order than the host machine. Zero is returned if the TIFF file and local host byte-orders are the same. Note that TIFFReadTile(), TIFFReadStrip() and TIFFReadScanline() functions already normally perform byte swapping to local host order if needed.

TIFFIsUpSampled returns a non-zero value if image data returned through the read interface routines is being up-sampled. This can be useful to applications that want to calculate I/O buffer sizes to reflect this usage (though the usual strip and tile size routines already do this).

TIFFIsMSB2LSB returns a non-zero value if the image data is being returned with bit 0 as the most significant bit.

TIFFGetVersion returns an ASCII string that has a version stamp for the TIFF library software.

DIAGNOSTICS

None.

SEE ALSO

libtiff(3TIFF), TIFFOpen(3TIFF), TIFFFdOpen(3TIFF)


07070100041385000081a40000000000000000000000014cc7a42600000d610000010000010006ffffffffffffffff0000004800000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadRawTile.3tiff.html TIFFReadRawTile

TIFFReadRawTile

NAME
SYNOPSIS
DESCRIPTION
RETURN VALUES
DIAGNOSTICS
SEE ALSO

NAME

TIFFReadRawTile − return an undecoded tile of data from an open TIFF file

SYNOPSIS

#include <tiffio.h>

tsize_t TIFFReadRawTile(TIFF *tif, ttile_t tile, tdata_t buf, tsize_t size)

DESCRIPTION

Read the contents of the specified tile into the (user supplied) data buffer. Note that the value of tile is a ‘‘raw tile number.’’ That is, the caller must take into account whether or not the data is organized in separate planes (PlanarConfiguration=2). TIFFComputeTile automatically does this when converting an (x,y,z,sample) coordinate quadruple to a tile number. To read a full tile of data the data buffer should typically be at least as large as the value returned by TIFFTileSize.

RETURN VALUES

The actual number of bytes of data that were placed in buf is returned; TIFFReadEncodedTile returns −1 if an error was encountered.

DIAGNOSTICS

All error messages are directed to the TIFFError(3TIFF) routine.

SEE ALSO

TIFFOpen(3TIFF), TIFFReadEncodedTile(3TIFF), TIFFReadTile(3TIFF), TIFFTileSize(3TIFF), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


07070100041381000081a40000000000000000000000014cc7a426000028f20000010000010006ffffffffffffffff0000004a00000000root/usr/local/share/doc/tiff-3.9.4/html/man/TIFFReadRGBAImage.3tiff.html TIFFReadRGBAImage

TIFFReadRGBAImage

NAME
SYNOPSIS
DESCRIPTION
NOTES
RETURN VALUES
DIAGNOSTICS
SEE ALSO

NAME

TIFFReadRGBAImage, TIFFReadRGBAImageOriented − read and decode an image into a fixed-format raster

SYNOPSIS

#include <tiffio.h>

#define TIFFGetR(abgr) ((abgr) & 0xff)
#define TIFFGetG(abgr) (((abgr) >> 8) & 0xff)
#define TIFFGetB(abgr) (((abgr) >> 16) & 0xff)
#define TIFFGetA(abgr) (((abgr) >> 24) & 0xff)

int TIFFReadRGBAImage(TIFF *tif, uint32 width, uint32 height, uint32 *raster, int stopOnError)
int TIFFReadRGBAImageOriented(TIFF *
tif, uint32 width, uint32 height, uint32 *raster, int orientation, int stopOnError)

DESCRIPTION

TIFFReadRGBAImage reads a strip- or tile-based image into memory, storing the result in the user supplied raster. The raster is assumed to be an array of width times height 32-bit entries, where width must be less than or equal to the width of the image (height may be any non-zero size). If the raster dimensions are smaller than the image, the image data is cropped to the raster bounds. If the raster height is greater than that of the image, then the image data are placed in the lower part of the raster. (Note that the raster is assume to be organized such that the pixel at location (x,y) is raster[y*width+x]; with the raster origin in the lower-left hand corner.)

TIFFReadRGBAImageOriented works like TIFFReadRGBAImage with except of that user can specify the raster origin position with the orientation parameter. Four orientations supported:

ORIENTATION_TOPLEFT

origin in top-left corner,

ORIENTATION_TOPRIGHT

origin in top-right corner,

ORIENTATION_BOTLEFT

origin in bottom-left corner and

ORIENTATION_BOTRIGHT

origin in bottom-right corner.

If you choose ORIENTATION_BOTLEFT result will be the same as returned by the TIFFReadRGBAImage.

Raster pixels are 8-bit packed red, green, blue, alpha samples. The macros TIFFGetR, TIFFGetG, TIFFGetB, and TIFFGetA should be used to access individual samples. Images without Associated Alpha matting information have a constant Alpha of 1.0 (255).

TIFFReadRGBAImage converts non-8-bit images by scaling sample values. Palette, grayscale, bilevel, CMYK , and YCbCr images are converted to RGB transparently. Raster pixels are returned uncorrected by any colorimetry information present in the directory.

The paramater stopOnError specifies how to act if an error is encountered while reading the image. If stopOnError is non-zero, then an error will terminate the operation; otherwise TIFFReadRGBAImage will continue processing data until all the possible data in the image have been requested.

NOTES

In C++ the stopOnError parameter defaults to 0.

Samples must be either 1, 2, 4, 8, or 16 bits. Colorimetric samples/pixel must be either 1, 3, or 4 (i.e. SamplesPerPixel minus ExtraSamples).

Palettte image colormaps that appear to be incorrectly written as 8-bit values are automatically scaled to 16-bits.

TIFFReadRGBAImage is just a wrapper around the more general TIFFRGBAImage(3TIFF) facilities.

RETURN VALUES

1 is returned if the image was successfully read and converted. Otherwise, 0 is returned if an error was encountered and stopOnError is zero.

DIAGNOSTICS

All error messages are directed to the TIFFError(3TIFF) routine.

Sorry, can not handle %d-bit pictures. The image had BitsPerSample other than 1, 2, 4, 8, or 16.

Sorry, can not handle %d-channel images. The image had SamplesPerPixel other than 1, 3, or 4.

Missing needed "PhotometricInterpretation" tag. The image did not have a tag that describes how to display the data.

No "PhotometricInterpretation" tag, assuming RGB. The image was missing a tag that describes how to display it, but because it has 3 or 4 samples/pixel, it is assumed to be RGB.

No "PhotometricInterpretation" tag, assuming min-is-black. The image was missing a tag that describes how to display it, but because it has 1 sample/pixel, it is assumed to be a grayscale or bilevel image.

No space for photometric conversion table. There was insufficient memory for a table used to convert image samples to 8-bit RGB.

Missing required "Colormap" tag. A Palette image did not have a required Colormap tag.

No space for tile buffer. There was insufficient memory to allocate an i/o buffer.

No space for strip buffer. There was insufficient memory to allocate an i/o buffer.

Can not handle format. The image has a format (combination of BitsPerSample, SamplesPerPixel, and PhotometricInterpretation) that TIFFReadRGBAImage can not handle.

No space for B&W mapping table. There was insufficient memory to allocate a table used to map grayscale data to RGB.

No space for Palette mapping table. There was insufficient memory to allocate a table used to map data to 8-bit RGB.

SEE ALSO

TIFFOpen(3TIFF), TIFFRGBAImage(3TIFF), TIFFReadRGBAStrip(3TIFF), TIFFReadRGBATile(3TIFF), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


070701000413ac000081a40000000000000000000000014cc7a426000046160000010000010006ffffffffffffffff0000003d00000000root/usr/local/share/doc/tiff-3.9.4/html/man/tiff2pdf.1.html TIFF2PDF

TIFF2PDF

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
EXAMPLES
BUGS
SEE ALSO

NAME

tiff2pdf − convert a TIFF image to a PDF document

SYNOPSIS

tiff2pdf [ options ] input.tiff

DESCRIPTION

tiff2pdf opens a TIFF image and writes a PDF document to standard output.

The program converts one TIFF file to one PDF file, including multiple page TIFF files, tiled TIFF files, black and white. grayscale, and color TIFF files that contain data of TIFF photometric interpretations of bilevel, grayscale, RGB, YCbCr, CMYK separation, and ICC L*a*b* as supported by libtiff and PDF.

If you have multiple TIFF files to convert into one PDF file then use tiffcp or other program to concatenate the files into a multiple page TIFF file. If the input TIFF file is of huge dimensions (greater than 10000 pixels height or width) convert the input image to a tiled TIFF if it is not already.

The standard output is standard output. Set the output file name with the −o output.pdf option.

All black and white files are compressed into a single strip CCITT G4 Fax compressed PDF, unless tiled, where tiled black and white images are compressed into tiled CCITT G4 Fax compressed PDF, libtiff CCITT support is assumed.

Color and grayscale data can be compressed using either JPEG compression, ITU-T T.81, or Zip/Deflate LZ77 compression. Set the compression type using the −j or −z options. JPEG compression support requires that libtiff be configured with JPEG support, and Zip/Deflate compression support requires that libtiff be configured with Zip support, in tiffconf.h. Use only one or the other of −j and −z.

If the input TIFF contains single strip CCITT G4 Fax compressed information, then that is written to the PDF file without transcoding, unless the options of no compression and no passthrough are set, −d and −n.

If the input TIFF contains JPEG or single strip Zip/Deflate compressed information, and they are configured, then that is written to the PDF file without transcoding, unless the options of no compression and no passthrough are set.

The default page size upon which the TIFF image is placed is determined by the resolution and extent of the image data. Default values for the TIFF image resolution can be set using the −x and −y options. The page size can be set using the −p option for paper size, or −w and −l for paper width and length, then each page of the TIFF image is centered on its page. The distance unit for default resolution and page width and length can be set by the −u option, the default unit is inch.

Various items of the output document information can be set with the −e, −c, −a, −t, −s, and −k options. Setting the argument of the option to "" for these tags causes the relevant document information field to be not written. Some of the document information values otherwise get their information from the input TIFF image, the software, author, document name, and image description.

The Portable Document Format (PDF) specification is copyrighted by Adobe Systems, Incorporated.

OPTIONS

−o output-file

Set the output to go to file. output-file

−j

Compress with JPEG (requires libjpeg configured with libtiff).

−z

Compress with Zip/Deflate (requires zlib configured with libtiff).

−q quality

Set the compression quality, 1-100 for JPEG.

−n

Do not allow data to be converted without uncompressing, no compressed data passthrough.

−b

Set PDF ‘‘Interpolate’’ user preference.

−d

Do not compress (decompress).

−i

Invert colors.

−p paper-size

Set paper size, e.g., letter, legal, A4.

−u [i|m]

Set distance unit, i for inch, m for centimeter.

−w width

Set width in units.

−l length

Set length in units.

−x xres

Set x/width resolution default.

−y yres

Set y/length resolution default.

−r [d|o]

Set d for resolution default for images without resolution, o for resolution override for all images.

−f

Set PDF ‘‘Fit Window’’ user preference.

−e YYYYMMDDHHMMSS

Set document information date, overrides image or current date/time default, YYYYMMDDHHMMSS.

−c creator

Set document information creator, overrides image software default.

−a author

Set document information author, overrides image artist default.

−t title

Set document information title, overrides image document name default.

−s subject

Set document information subject, overrides image image description default.

−k keywords

Set document information keywords.

−h

List usage reminder to stderr and exit.

EXAMPLES

The following example would generate the file output.pdf from input.tiff.

tiff2pdf −o output.pdf input.tiff

The following example would generate PDF output from input.tiff and write it to standard output.

tiff2pdf input.tiff

The following example would generate the file output.pdf from input.tiff, putting the image pages on a letter sized page, compressing the output with JPEG, with JPEG quality 75, setting the title to ‘‘Document’’, and setting the ‘‘Fit Window’’ option.

tiff2pdf −p letter −j −q 75 −t "Document" −f −o output.pdf input.tiff

BUGS

Please report bugs via the web interface at

http://bugzilla.remotesensing.org/enter_bug.cgi?product=libtiff

SEE ALSO

libtiff(3), tiffcp(1), tiff2ps(1)

Libtiff library home page: http://www.remotesensing.org/libtiff/


070701000413b2000081a40000000000000000000000014cc7a42600003bec0000010000010006ffffffffffffffff0000003b00000000root/usr/local/share/doc/tiff-3.9.4/html/man/tiffcp.1.html TIFFCP

TIFFCP

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
EXAMPLES
SEE ALSO

NAME

tiffcp − copy (and possibly convert) a TIFF file

SYNOPSIS

tiffcp [ options ] src1.tif ... srcN.tif dst.tif

DESCRIPTION

tiffcp combines one or more files created according to the Tag Image File Format, Revision 6.0 into a single TIFF file. Because the output file may be compressed using a different algorithm than the input files, tiffcp is most often used to convert between different compression schemes.

By default, tiffcp will copy all the understood tags in a TIFF directory of an input file to the associated directory in the output file.

tiffcp can be used to reorganize the storage characteristics of data in a file, but it is explicitly intended to not alter or convert the image data content in any way.

OPTIONS

−b image

subtract the following monochrome image from all others processed. This can be used to remove a noise bias from a set of images. This bias image is typically an image of noise the camera saw with its shutter closed.

−B

Force output to be written with Big-Endian byte order. This option only has an effect when the output file is created or overwritten and not when it is appended to.

−C

Suppress the use of ‘‘strip chopping’’ when reading images that have a single strip/tile of uncompressed data.

−c

Specify the compression to use for data written to the output file: none for no compression, packbits for PackBits compression, lzw for Lempel-Ziv & Welch compression, jpeg for baseline JPEG compression, zip for Deflate compression, g3 for CCITT Group 3 (T.4) compression, and g4 for CCITT Group 4 (T.6) compression. By default tiffcp will compress data according to the value of the Compression tag found in the source file.

The CCITT Group 3 and Group 4 compression algorithms can only be used with bilevel data.

Group 3 compression can be specified together with several T.4-specific options: 1d for 1-dimensional encoding, 2d for 2-dimensional encoding, and fill to force each encoded scanline to be zero-filled so that the terminating EOL code lies on a byte boundary. Group 3-specific options are specified by appending a ‘‘:’’-separated list to the ‘‘g3’’ option; e.g. −c g3:2d:fill to get 2D-encoded data with byte-aligned EOL codes.

LZW compression can be specified together with a predictor value. A predictor value of 2 causes each scanline of the output image to undergo horizontal differencing before it is encoded; a value of 1 forces each scanline to be encoded without differencing. LZW-specific options are specified by appending a ‘‘:’’-separated list to the ‘‘lzw’’ option; e.g. −c lzw:2 for LZW compression with horizontal differencing.

−f

Specify the bit fill order to use in writing output data. By default, tiffcp will create a new file with the same fill order as the original. Specifying −f lsb2msb will force data to be written with the FillOrder tag set to LSB2MSB, while −f msb2lsb will force data to be written with the FillOrder tag set to MSB2LSB.

−i

Ignore non-fatal read errors and continue processing of the input file.

−l

Specify the length of a tile (in pixels). tiffcp attempts to set the tile dimensions so that no more than 8 kilobytes of data appear in a tile.

−L

Force output to be written with Little-Endian byte order. This option only has an effect when the output file is created or overwritten and not when it is appended to.

−M

Suppress the use of memory-mapped files when reading images.

−p

Specify the planar configuration to use in writing image data that has one 8-bit sample per pixel. By default, tiffcp will create a new file with the same planar configuration as the original. Specifying −p contig will force data to be written with multi-sample data packed together, while −p separate will force samples to be written in separate planes.

−r

Specify the number of rows (scanlines) in each strip of data written to the output file. By default (or when value 0 is specified), tiffcp attempts to set the rows/strip that no more than 8 kilobytes of data appear in a strip. If you specify special value −1 it will results in infinite number of the rows per strip. The entire image will be the one strip in that case.

−s

Force the output file to be written with data organized in strips (rather than tiles).

−t

Force the output file to be written with data organized in tiles (rather than strips). options can be used to force the resultant image to be written as strips or tiles of data, respectively.

−w

Specify the width of a tile (in pixels). tiffcp attempts to set the tile dimensions so that no more than 8 kilobytes of data appear in a tile. tiffcp attempts to set the tile dimensions so that no more than 8 kilobytes of data appear in a tile.

−x

Force the output file to be written with PAGENUMBER value in sequence.

−,=character

substitute character for ‘,’ in parsing image directory indices in files. This is necessary if filenames contain commas. Note that −,= with whitespace immediately following will disable the special meaning of the ‘,’ entirely. See examples.

EXAMPLES

The following concatenates two files and writes the result using LZW encoding:

tiffcp −c lzw a.tif b.tif result.tif

To convert a G3 1d-encoded TIFF to a single strip of G4-encoded data the following might be used:

tiffcp −c g4 −r 10000 g3.tif g4.tif

(1000 is just a number that is larger than the number of rows in the source file.)

To extract a selected set of images from a multi-image TIFF file, the file name may be immediately followed by a ‘,’ separated list of image directory indices. The first image is always in directory 0. Thus, to copy the 1st and 3rd images of image file ‘‘album.tif’’ to ‘‘result.tif’’:

tiffcp album.tif,0,2 result.tif

A trailing comma denotes remaining images in sequence. The following command will copy all image with except the first one:

tiffcp album.tif,1, result.tif

Given file ‘‘CCD.tif’’ whose first image is a noise bias followed by images which include that bias, subtract the noise from all those images following it (while decompressing) with the command:

tiffcp −c none −b CCD.tif CCD.tif,1, result.tif

If the file above were named ‘‘CCD,X.tif’’, the −,= option would be required to correctly parse this filename with image numbers, as follows:

tiffcp −c none −,=% −b CCD,X.tif CCD,X%1%.tif result.tif

SEE ALSO

pal2rgb(1), tiffinfo(1), tiffcmp(1), tiffmedian(1), tiffsplit(1), libtiff(3TIFF)

Libtiff library home page: http://www.remotesensing.org/libtiff/


0707010004135b000081a40000000000000000000000014cc7a42600000a560000010000010006ffffffffffffffff0000003300000000root/usr/local/share/doc/tiff-3.9.4/html/bugs.html Bugs and the TIFF Mailing List

Bugs, Bugzilla, and the TIFF Mailing List

This software is free. Please let us know when you find a problem or fix a bug.

Thanks to MapTools.org, libtiff now uses bugzilla to track bugs. All bugs filed in the older bugzilla at bugzilla.remotesensing.org (pre April 2008) have unfortunately been lost.

If you think you've discovered a bug, please first check to see if it is already known by looking at the list of already reported bugs. You can do so by visiting the buglist at http://bugzilla.maptools.org/buglist.cgi?product=libtiff. Also verify that the problem is still reproducable with the current development software from CVS.

If you'd like to enter a new bug, you can do so at http://bugzilla.maptools.org/enter_bug.cgi?product=libtiff.

If you'd like to inform us about some kind of security issue that should not be disclosed for a period of time, then you can contact maintainers directly. Send a copies of your report to the following people: Frank Warmerdam <warmerdam@pobox.com>, Andrey Kiselev <dron@ak4719.spb.edu>.

Of course, reporting bugs is no substitute for discussion. The tiff@lists.maptools.org mailing list is for users of this software, and discussion TIFF issues in general. It is managed with the Mailman software, and the web interface for subscribing and managing your access to the list is at:

http://lists.maptools.org/mailman/listinfo/tiff

Posts to the list are only accepted from members of the list in order to limit the amount of spam propagated. Also, to be approved as a member you will need to email the list administrator with a brief description of why you are interested in TIFF so we can weed out spammers.

A Long Term Archive including recent messages, and most messages back to 1993, with search capabilities is available, and has been prepared and hosted by AWare Systems.


Last updated: $Date: 2008/09/03 08:04:26 $ 070701000413c8000081a40000000000000000000000014cc7a427000008f00000010000010006ffffffffffffffff0000003a00000000root/usr/local/share/doc/tiff-3.9.4/html/v3.4beta033.html Changes in TIFF v3.4beta033 TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:


CHANGES IN THE SOFTWARE CONFIGURATION:
  • support was added for building the library as a DSO under OSF/1


CHANGES IN LIBTIFF:
  • fixes to the Pixar codec
  • portability mods for VMS


CHANGES IN THE TOOLS:
  • fixes to gif2tiff and ppm2tiff for building under MS/DOS
  • portability mods to fax2ps and ycbcr for VMS


CHANGES IN THE CONTRIBUTED SOFTWARE:
  • a new package from Alexander Lehmann for building the library and tools under MS/DOS with DJGPP v2
  • updated VMS support from Karsten Spang
TIFF home page.

Sam Leffler / sam@engr.sgi.com Last updated $Date: 1999/08/09 20:21:21 $.
070701000413de000081a40000000000000000000000014cc7a4270000203f0000010000010006ffffffffffffffff0000003500000000root/usr/local/share/doc/tiff-3.9.4/html/v3.7.3.html Changes in TIFF v3.7.3 TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:


MAJOR CHANGES:
  • Replace runtime endianess check with the compile time one.
  • Added support for the new predictor type (floating point predictor), defined at the TIFF Technical Note 3.
  • Added Support for custom tags, passed by value. Added support for all DNG tags.


CHANGES IN THE SOFTWARE CONFIGURATION:


CHANGES IN LIBTIFF:
  • tiffiop.h, tif_open.c: Added open option 'h' to avoid reading the first IFD when needed. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=875
  • tiff.h: Use correct int size on Sparc 64bit/Sun compiler platform. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=855
  • tif_dirinfo.c: Added support for ClipPath, XClipPathUnits and YClipPathUnits tags.
  • tif_dirinfo.c, tif_dir.h, tif_dir.c, tif_print.c: Make DocumentName, Artist, HostComputer, ImageDescription, Make, Model, Copyright, DateTime, PageName, TextureFormat, TextureWrapModes and TargetPrinter tags custom.
  • tif_jpeg.c: Cleanup the codec state depending on TIFF_CODERSETUP flag (to fix memory leaks).
  • tif_dirwrite.c: Use tdir_count when calling TIFFCvtNativeToIEEEDouble() in the TIFFWriteDoubleArray() function as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=845
  • tif_dirinfo.c, tif_print.c: TIFFFetchByteArray() returns uint16 array when fetching the BYTE and SBYTE fields, so we should consider result as pointer to uint16 array and not as array of chars. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=831
  • tif_dir.c: More efficient custom tags retrieval as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=830
  • tif_win32.c: Use FILE_SHARE_READ | FILE_SHARE_WRITE share mode in CreateFile() call as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=829
  • tif_jpeg.c: Substantial fix for addtiffo problems with JPEG encoded TIFF files. Pre-allocate lots of space for jpegtables in directory.
  • tif_dirread.c: Changed the code that computes stripbytecount[0] if it appears bogus to ignore if stripoffset[0] is zero. This is a common case with GDAL indicating a "null" tile/strip.
  • tif_jpeg.c: added LIB_JPEG_MK1 support in JPEGDecodeRaw().
  • tif_dirread.c: Ensure that broken files with too many values in PerSampleShorts, TIFFFetchPerSampleLongs and TIFFFetchPerSampleAnys work ok instead of crashing. http://bugzilla.remotesensing.org/show_bug.cgi?id=843
  • tif_predict.h, tif_predict.c: Added ability to decode and encode floating point predictor, as per TIFF Technical Note 3. See http://chriscox.org/TIFF_TN3_Draft2.pdf for details.
  • tiffio.h, tiffiop.h, tif_dir.c, tif_read.c, tif_swab.c: Added _TIFFSwab24BitData() and TIFFSwabArrayOfLong() functions used to swap 24-bit floating point values.
  • tiff.h: Added predictor constants.
  • tiffiop.h, tif_dir.c: Use uint32 type for appropriate values in _TIFFVSetField() function. Inspired by the bug http://bugzilla.remotesensing.org/show_bug.cgi?id=816
  • tif_open.c: Do not read header in case the output file should be truncated (Ron).
  • tif_dirinfo.c, tif_config.h.vc: Use lfind() instead of bsearch() in _TIFFFindFieldInfoByName() function (Ron).
  • tif_dir.c, tif_print.c: Properly handle all data types in custom tags.
  • dirinfo.c: Added DNG tags.
  • tiff.h: Added missed DNG tag (LensInfo); added DNG 1.1.0.0 tags.
  • tif_dir.c, tif_print.c: Added Support for custom tags, passed by value.
  • tiff.h, tif_dirinfo.c, tiffiop.h: Added EXIF related tags.


CHANGES IN THE TOOLS:


CHANGES IN THE CONTRIB AREA:
  • addtiffo/{tif_overview.c, tif_ovrcache.c, tif_ovrcache.h}: Make overviews working for contiguous images.
Last updated $Date: 2006/01/04 22:04:46 $. 070701000413d2000081a40000000000000000000000014cc7a427000017da0000010000010006ffffffffffffffff0000003a00000000root/usr/local/share/doc/tiff-3.9.4/html/v3.5.6-beta.html Changes in TIFF v3.5.6 TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:


CHANGES IN THE SOFTWARE CONFIGURATION:
  • Added GNULDdso target and switched linux and freebsd to use it.
  • tools/Makefile.in: Modified to install properly on SGI.
  • configure: Fixed DSO test for Linux as per patch from Jan Van Buggenhout .


CHANGES IN LIBTIFF:
  • tif_dir.c: Clear TIFF_ISTILED flag in TIFFDefaultDirectory as per http://bugzilla.remotesensing.org/show_bug.cgi?id=18 from vandrove@vc.cvut.cz.
  • Modified tif_packbits.c decoding to avoid overrunning the output buffer, and to issue a warning if data needs to be discarded. See http://bugzilla.remotesensing.org/show_bug.cgi?id=18
  • Modified TIFFClientOpen() to emit an error on an attempt to open a comperessed file for update (O_RDWR/r+) access. This is because the compressor/decompressor code gets very confused when the mode is O_RDWR, assuming this means writing only. See bug http://bugzilla.remotesensing.org/show_bug.cgi?id=13
  • Applied patch for 0x0000 sequences in tif_fax3.h's definition of EXPAND1D() as per bug 11 (from Roman).
  • Fixed tiffcomp.h to avoid win32 stuff if unix #defined, to improve cygwin compatibility.
  • Applied patch from Roman Shpount to tif_fax3.c. This seems to be a proper fix to the buffer sizing problem. See http://bugzilla.remotesensing.org/show_bug.cgi?id=11
  • Fixed tif_getimage.c to fix overrun bug with YCbCr images without downsampling. http://bugzilla.remotesensing.org/show_bug.cgi?id=10 Thanks to Nick Lamb for reporting the bug and proving the patch.
  • Fixed tif_jpeg.c so avoid destroying the decompressor before we are done access data thanks to bug report from: Michael Eckstein .
  • tif_open.c: Don't set MMAP for O_RDWR files.
  • tif_open.c: Set STRIPCHOP_DEFAULT for O_RDWR as well as O_RDONLY so that files opened for update can be strip chopped too.
  • tif_read.c: fixed up bug with files missing rowsperstrip and the strips per separation fix done a few weeks ago.
  • Tentatively added support for SAMPLEFORMAT_COMPLEXIEEEFP, and SAMPLEFORMAT_COMPLEXINT.
  • index.html, bugs.html: added bugzilla info.
  • tif_read.c: fix subtle bug with determining the number of rows for strips that are the last strip in a separation but not the last strip of all in TIFFReadEncodedStrip().
  • Applied 16/32 bit fix to tif_fax3.c. Fix supplied by Peter Skarpetis
  • Modified tiffio.h logic with regard to including windows.h. It won't include it when building with __CYGWIN__.
  • README: update to mention www.libtiff.org, don't list Sam's old email address.
  • libtiff/tif_dirread.c: Don't use estimate strip byte count for one tile/strip images with an offset, and byte count of zero. These could be "unpopulated" images.
  • tif_win32.c: Applied patch to fix overreads and ovverwrites caught by BoundsChecker. From Arvan Pritchard (untested).
  • tif_getimage.c: Applied patch to silence VC6 warnings. From Arvan Pritchard
  • tif_lzw.c: Applied patch to silence VC6 warnings. From Arvan Pritchard
  • libtiff/tif_apple.c: Applied "Carbon" support patches supplied by Leonard Rosenthol . May interfere with correct building on older systems. If so, please let me know.


CHANGES IN THE TOOLS:
  • tools/rgb2ycbcr.c: fixed output strip size to account for vertical roundup if rows_per_strip not a multiple of vertical sample size.
  • tools/tiffsplit.c: Copy TIFFTAG_SAMPLEFORMAT.
  • Modified tiff2bw to ensure portions add to 100%, and that white is properly recovered. See bug http://bugzilla.remotesensing.org/show_bug.cgi?id=15 Patch c/o Stanislav Brabec


CHANGES IN CONTRIB:
  • contrib/addtiffo: Added "averaging" resampling option.
  • Added contrib/stream (stream io) code submitted by Avi Bleiweiss.


CHANGES IN THE LZW COMPRESSION KIT
  • updated tif_dir.c to reflect changes to no-lzw tif_dir.c
TIFF home page.

Last updated $Date: 2006/03/18 17:12:47 $. 070701000413d5000081a40000000000000000000000014cc7a42700001aa90000010000010006ffffffffffffffff0000003500000000root/usr/local/share/doc/tiff-3.9.4/html/v3.6.1.html Changes in TIFF v3.6.1 TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:


MAJOR CHANGES:


CHANGES IN THE SOFTWARE CONFIGURATION:
  • libtiff/makefile.vc, tools/makefile.vc: Support for IJG JPEG library.
  • Makefile.in: Add an absolute path to the test_pics.sh call.
  • Makefile.in: Add an absolute path to the test_pics.sh call.
  • libtiff/tiffcomp.h: #define _BSDTYPES_DEFINED when defining BSD typedefs.
  • configure, libtiff/{Makefile.in, mkversion.c}: Relative buildings fixed.
  • Makefile.in: Add an absolute path to the test_pics.sh call.


CHANGES IN LIBTIFF:
  • libtiff/{tif_color.c, tif_getimage.c, tiffio.h}: Added support for ReferenceBlackWhite tag handling when converted from YCbCr color space as per bug 120.
  • libtiff/{tif_getimage.c, tif_aux.c}: Read WhitePoint tag from the file and properly use it for CIE Lab 1976 to RGB transform.
  • libtiff/{tif_getimage.c, tiffio.h}: Finally resolved problems with orientation handling. TIFFRGBAImage interface now properly supports all possible orientations, i.e. images will be flipped both in horizontal and vertical directions if required. 'Known bugs' section now removed from the appropriate manual pages.
  • libtiff/tif_luv.c: Fixed bug in 48-bit to 24-bit conversion routine, reported by Antonio Scuri.
  • libtiff/{tiffio.h, tif_codec.c}: Added new function TIFFIsCODECConfigured(), suggested by Ross Finlayson.
  • libtiff/tif_ojpeg.c: TIFFVGetField() function now can properly extract the fields from the OJPEG files. Patch supplied by Ross Finlayson.
  • libtiff/tif_dir.h: _TIFFFindOrRegisterdInfo declaration replaced with _TIFFFindOrRegisterFieldInfo as reported by Ross Finlayson.
  • libtiff/tif_dirinfo.c: Implemented binary search in _TIFFMergeFieldInfo(). Patch supplied by Ross Finlayson.
  • tif_dirread.c: do not mark all anonymously defined tags to be IGNOREd (as it was done in 3.6.0).
  • libtiff/{tiff.h, tif_dirinfo.c}: Added support for IFD (13) datatype, intruduced in "Adobe PageMaker TIFF Technical Notes".
  • libtiff/{tif_color.c, tif_getimage.c, tiffio.h}: New color space conversion code: CIE L*a*b* 1976 images now supported by the TIFFRGBAImage interface. YCbCr to RGB conversion code also moved there and now has publicly available interface. These routines currently used in TIFFRGBAImage interface only and not supported in other libtiff tools yet. So if you want, for example, to convert CIE Lab image into PostScript file you should do it in two steps: chnge colorspace to RGB using tiff2rgba utility abd then process it with the tiff2ps.
  • libtiff/tif_tile.c: Remove spurious use of "s" (sample) in the planarconfig_contig case in TIFFComputeTile() as per bug 387
  • libtiff/tiffiop.h: New macros: TIFFmax and TIFFmin.
  • libtiff/{tiffio.h, tif_strip.c}: Added TIFFRawStripSize() function as suggested by Chris Hanson.
  • libtiff/{tif_lzw.c, tif_fax3.c}: Proper support for update mode as per bug 424.


CHANGES IN THE TOOLS:
  • tiff2pdf: New tool, written by Ross Finlayson, to directly convert TIFF files to PDF.
  • tiffgt: Unmaintained and platform dependent sgigt utility removed and replaced with the completely rewritten portable tiffgt tool (depend on OpenGL and GLUT). This tool will not build by default.
  • ras2tiff: Properly determine SUN Rasterfiles with the reverse byte order (it is reported by the magic header field). Problem reported by Andreas Wiesmann.
  • raw2tiff: Implemented image size guessing using correlation coefficient calculation between two neighbour lines.


CHANGES IN THE CONTRIB AREA:
  • contrib/pds/{tif_pdsdirread.c, tif_pdsdirwrite.c}: Use TIFFDataWidth() function insted of tiffDataWidth array.
CHANGES IN THE LZW COMPRESSION KIT:
  • Proper support for update mode as per bug 424.
TIFF home page.

Last updated $Date: 2003/12/24 22:14:15 $. 070701000413db000081a40000000000000000000000014cc7a42700000e250000010000010006ffffffffffffffff0000003a00000000root/usr/local/share/doc/tiff-3.9.4/html/v3.7.0beta2.html Changes in TIFF v3.7.0beta2 TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:


MAJOR CHANGES:
  • The code has been reviewed by Dmitry Levin: added checks for values, returned by the space allocation functions, fixed problems with the possible integer overflows.


CHANGES IN THE SOFTWARE CONFIGURATION:
  • Several fixes in the test suite.


CHANGES IN LIBTIFF:
  • Preliminary support for BigTIFF files: now libtiff can recognize and reject to open such images. ;-)
  • libtiff/tif_dirinfo.c: changed type of XMLPacket (tag 700) to TIFFTAG_BYTE instead of TIFFTAG_UNDEFINED to comply with the info in the Adobe XMP Specification.
  • Added many checks for integer overflow and for successful space allocations in the different parts of library. Code review completed by Dmitry V. Levin.
  • libtiff/{tiffio.h, tif_compress.c}: Added TIFFGetConfiguredCODECs()function to get the list of configured codecs.


CHANGES IN THE TOOLS:
  • tiff2bw: Write ImageWidth/Height tags to output file, as noted by Gennady Khokhorin.


CHANGES IN THE CONTRIB AREA:
  • No changes.
CHANGES IN THE LZW COMPRESSION KIT:
  • This one is not longer needed.
TIFF home page.

Last updated $Date: 2006/03/18 17:12:47 $. 07070100041374000081a40000000000000000000000014cc7a426000092390000010000010006ffffffffffffffff0000003600000000root/usr/local/share/doc/tiff-3.9.4/html/libtiff.html Using The TIFF Library

Using The TIFF Library

libtiff is a set of C functions (a library) that support the manipulation of TIFF image files. The library requires an ANSI C compilation environment for building and presumes an ANSI C environment for use.


libtiff provides interfaces to image data at several layers of abstraction (and cost). At the highest level image data can be read into an 8-bit/sample, ABGR pixel raster format without regard for the underlying data organization, colorspace, or compression scheme. Below this high-level interface the library provides scanline-, strip-, and tile-oriented interfaces that return data decompressed but otherwise untransformed. These interfaces require that the application first identify the organization of stored data and select either a strip-based or tile-based API for manipulating data. At the lowest level the library provides access to the raw uncompressed strips or tiles, returning the data exactly as it appears in the file.

The material presented in this chapter is a basic introduction to the capabilities of the library; it is not an attempt to describe everything a developer needs to know about the library or about TIFF. Detailed information on the interfaces to the library are given in the UNIX manual pages that accompany this software.

Michael Still has also written a useful introduction to libtiff for the IBM DeveloperWorks site available at http://www.ibm.com/developerworks/linux/library/l-libtiff.

The following sections are found in this chapter:


How to tell which version you have

The software version can be found by looking at the file named VERSION that is located at the top of the source tree; the precise alpha number is given in the file dist/tiff.alpha. If you have need to refer to this specific software, you should identify it as:

TIFF <version> <alpha>

where <version> is whatever you get from "cat VERSION" and <alpha> is what you get from "cat dist/tiff.alpha".

Within an application that uses libtiff the TIFFGetVersion routine will return a pointer to a string that contains software version information. The library include file <tiffio.h> contains a C pre-processor define TIFFLIB_VERSION that can be used to check library version compatiblity at compile time.


Library Datatypes

libtiff defines a portable programming interface through the use of a set of C type definitions. These definitions, defined in in the files tiff.h and tiffio.h, isolate the libtiff API from the characteristics of the underlying machine. To insure portable code and correct operation, applications that use libtiff should use the typedefs and follow the function prototypes for the library API.


Memory Management

libtiff uses a machine-specific set of routines for managing dynamically allocated memory. _TIFFmalloc, _TIFFrealloc, and _TIFFfree mimic the normal ANSI C routines. Any dynamically allocated memory that is to be passed into the library should be allocated using these interfaces in order to insure pointer compatibility on machines with a segmented architecture. (On 32-bit UNIX systems these routines just call the normal malloc, realloc, and free routines in the C library.)

To deal with segmented pointer issues libtiff also provides _TIFFmemcpy, _TIFFmemset, and _TIFFmemmove routines that mimic the equivalent ANSI C routines, but that are intended for use with memory allocated through _TIFFmalloc and _TIFFrealloc.


Error Handling

libtiff handles most errors by returning an invalid/erroneous value when returning from a function call. Various diagnostic messages may also be generated by the library. All error messages are directed to a single global error handler routine that can be specified with a call to TIFFSetErrorHandler. Likewise warning messages are directed to a single handler routine that can be specified with a call to TIFFSetWarningHandler


Basic File Handling

The library is modeled after the normal UNIX stdio library. For example, to read from an existing TIFF image the file must first be opened:

#include "tiffio.h"
main()
{
    TIFF* tif = TIFFOpen("foo.tif", "r");
    ... do stuff ...
    TIFFClose(tif);
}

The handle returned by TIFFOpen is opaque, that is the application is not permitted to know about its contents. All subsequent library calls for this file must pass the handle as an argument.

To create or overwrite a TIFF image the file is also opened, but with a "w" argument:

#include "tiffio.h"
main()
{
    TIFF* tif = TIFFOpen("foo.tif", "w");
    ... do stuff ...
    TIFFClose(tif);
}

If the file already exists it is first truncated to zero length.

Note that unlike the stdio library TIFF image files may not be opened for both reading and writing; there is no support for altering the contents of a TIFF file.

libtiff buffers much information associated with writing a valid TIFF image. Consequently, when writing a TIFF image it is necessary to always call TIFFClose or TIFFFlush to flush any buffered information to a file. Note that if you call TIFFClose you do not need to call TIFFFlush.


TIFF Directories

TIFF supports the storage of multiple images in a single file. Each image has an associated data structure termed a directory that houses all the information about the format and content of the image data. Images in a file are usually related but they do not need to be; it is perfectly alright to store a color image together with a black and white image. Note however that while images may be related their directories are not. That is, each directory stands on its own; their is no need to read an unrelated directory in order to properly interpret the contents of an image.

libtiff provides several routines for reading and writing directories. In normal use there is no need to explicitly read or write a directory: the library automatically reads the first directory in a file when opened for reading, and directory information to be written is automatically accumulated and written when writing (assuming TIFFClose or TIFFFlush are called).

For a file open for reading the TIFFSetDirectory routine can be used to select an arbitrary directory; directories are referenced by number with the numbering starting at 0. Otherwise the TIFFReadDirectory and TIFFWriteDirectory routines can be used for sequential access to directories. For example, to count the number of directories in a file the following code might be used:

#include "tiffio.h"
main(int argc, char* argv[])
{
    TIFF* tif = TIFFOpen(argv[1], "r");
    if (tif) {
        int dircount = 0;
        do {
            dircount++;
        } while (TIFFReadDirectory(tif));
        printf("%d directories in %s\n", dircount, argv[1]);
        TIFFClose(tif);
    }
    exit(0);
}

Finally, note that there are several routines for querying the directory status of an open file: TIFFCurrentDirectory returns the index of the current directory and TIFFLastDirectory returns an indication of whether the current directory is the last directory in a file. There is also a routine, TIFFPrintDirectory, that can be called to print a formatted description of the contents of the current directory; consult the manual page for complete details.


TIFF Tags

Image-related information such as the image width and height, number of samples, orientation, colorimetric information, etc. are stored in each image directory in fields or tags. Tags are identified by a number that is usually a value registered with the Aldus (now Adobe) Corporation. Beware however that some vendors write TIFF images with tags that are unregistered; in this case interpreting their contents is usually a waste of time.

libtiff reads the contents of a directory all at once and converts the on-disk information to an appropriate in-memory form. While the TIFF specification permits an arbitrary set of tags to be defined and used in a file, the library only understands a limited set of tags. Any unknown tags that are encountered in a file are ignored. There is a mechanism to extend the set of tags the library handles without modifying the library itself; this is described elsewhere.

libtiff provides two interfaces for getting and setting tag values: TIFFGetField and TIFFSetField. These routines use a variable argument list-style interface to pass parameters of different type through a single function interface. The get interface takes one or more pointers to memory locations where the tag values are to be returned and also returns one or zero according to whether the requested tag is defined in the directory. The set interface takes the tag values either by-reference or by-value. The TIFF specification defines default values for some tags. To get the value of a tag, or its default value if it is undefined, the TIFFGetFieldDefaulted interface may be used.

The manual pages for the tag get and set routines specifiy the exact data types and calling conventions required for each tag supported by the library.


TIFF Compression Schemes

libtiff includes support for a wide variety of data compression schemes. In normal operation a compression scheme is automatically used when the TIFF Compression tag is set, either by opening a file for reading, or by setting the tag when writing.

Compression schemes are implemented by software modules termed codecs that implement decoder and encoder routines that hook into the core library i/o support. Codecs other than those bundled with the library can be registered for use with the TIFFRegisterCODEC routine. This interface can also be used to override the core-library implementation for a compression scheme.


Byte Order

The TIFF specification says, and has always said, that a correct TIFF reader must handle images in big-endian and little-endian byte order. libtiff conforms in this respect. Consequently there is no means to force a specific byte order for the data written to a TIFF image file (data is written in the native order of the host CPU unless appending to an existing file, in which case it is written in the byte order specified in the file).


Data Placement

The TIFF specification requires that all information except an 8-byte header can be placed anywhere in a file. In particular, it is perfectly legitimate for directory information to be written after the image data itself. Consequently TIFF is inherently not suitable for passing through a stream-oriented mechanism such as UNIX pipes. Software that require that data be organized in a file in a particular order (e.g. directory information before image data) does not correctly support TIFF. libtiff provides no mechanism for controlling the placement of data in a file; image data is typically written before directory information.


TIFFRGBAImage Support

libtiff provides a high-level interface for reading image data from a TIFF file. This interface handles the details of data organization and format for a wide variety of TIFF files; at least the large majority of those files that one would normally encounter. Image data is, by default, returned as ABGR pixels packed into 32-bit words (8 bits per sample). Rectangular rasters can be read or data can be intercepted at an intermediate level and packed into memory in a format more suitable to the application. The library handles all the details of the format of data stored on disk and, in most cases, if any colorspace conversions are required: bilevel to RGB, greyscale to RGB, CMYK to RGB, YCbCr to RGB, 16-bit samples to 8-bit samples, associated/unassociated alpha, etc.

There are two ways to read image data using this interface. If all the data is to be stored in memory and manipulated at once, then the routine TIFFReadRGBAImage can be used:

#include "tiffio.h"
main(int argc, char* argv[])
{
    TIFF* tif = TIFFOpen(argv[1], "r");
    if (tif) {
        uint32 w, h;
        size_t npixels;
        uint32* raster;
        
        TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &w);
        TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &h);
        npixels = w * h;
        raster = (uint32*) _TIFFmalloc(npixels * sizeof (uint32));
        if (raster != NULL) {
            if (TIFFReadRGBAImage(tif, w, h, raster, 0)) {
                ...process raster data...
            }
            _TIFFfree(raster);
        }
        TIFFClose(tif);
    }
    exit(0);
}

Note above that _TIFFmalloc is used to allocate memory for the raster passed to TIFFReadRGBAImage; this is important to insure the ``appropriate type of memory'' is passed on machines with segmented architectures.

Alternatively, TIFFReadRGBAImage can be replaced with a more low-level interface that permits an application to have more control over this reading procedure. The equivalent to the above is:

#include "tiffio.h"
main(int argc, char* argv[])
{
    TIFF* tif = TIFFOpen(argv[1], "r");
    if (tif) {
        TIFFRGBAImage img;
        char emsg[1024];
        
        if (TIFFRGBAImageBegin(&img, tif, 0, emsg)) {
            size_t npixels;
            uint32* raster;
            
            npixels = img.width * img.height;
            raster = (uint32*) _TIFFmalloc(npixels * sizeof (uint32));
            if (raster != NULL) {
                if (TIFFRGBAImageGet(&img, raster, img.width, img.height)) {
                    ...process raster data...
                }
                _TIFFfree(raster);
            }
            TIFFRGBAImageEnd(&img);
        } else
            TIFFError(argv[1], emsg);
        TIFFClose(tif);
    }
    exit(0);
}

However this usage does not take advantage of the more fine-grained control that's possible. That is, by using this interface it is possible to:

  • repeatedly fetch (and manipulate) an image without opening and closing the file
  • interpose a method for packing raster pixel data according to application-specific needs (or write the data at all)
  • interpose methods that handle TIFF formats that are not already handled by the core library

The first item means that, for example, image viewers that want to handle multiple files can cache decoding information in order to speedup the work required to display a TIFF image.

The second item is the main reason for this interface. By interposing a "put method" (the routine that is called to pack pixel data in the raster) it is possible share the core logic that understands how to deal with TIFF while packing the resultant pixels in a format that is optimized for the application. This alternate format might be very different than the 8-bit per sample ABGR format the library writes by default. For example, if the application is going to display the image on an 8-bit colormap display the put routine might take the data and convert it on-the-fly to the best colormap indices for display.

The last item permits an application to extend the library without modifying the core code. By overriding the code provided an application might add support for some esoteric flavor of TIFF that it needs, or it might substitute a packing routine that is able to do optimizations using application/environment-specific information.

The TIFF image viewer found in tools/sgigt.c is an example of an application that makes use of the TIFFRGBAImage support.


Scanline-based Image I/O

The simplest interface provided by libtiff is a scanline-oriented interface that can be used to read TIFF images that have their image data organized in strips (trying to use this interface to read data written in tiles will produce errors.) A scanline is a one pixel high row of image data whose width is the width of the image. Data is returned packed if the image data is stored with samples packed together, or as arrays of separate samples if the data is stored with samples separated. The major limitation of the scanline-oriented interface, other than the need to first identify an existing file as having a suitable organization, is that random access to individual scanlines can only be provided when data is not stored in a compressed format, or when the number of rows in a strip of image data is set to one (RowsPerStrip is one).

Two routines are provided for scanline-based i/o: TIFFReadScanline and TIFFWriteScanline. For example, to read the contents of a file that is assumed to be organized in strips, the following might be used:

#include "tiffio.h"
main()
{
    TIFF* tif = TIFFOpen("myfile.tif", "r");
    if (tif) {
        uint32 imagelength;
        tdata_t buf;
        uint32 row;
        
        TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &imagelength);
        buf = _TIFFmalloc(TIFFScanlineSize(tif));
        for (row = 0; row < imagelength; row++)
            tiffreadscanline(tif, buf, row);
        _tifffree(buf);
        tiffclose(tif);
    }
}

TIFFScanlineSize returns the number of bytes in a decoded scanline, as returned by TIFFReadScanline. Note however that if the file had been create with samples written in separate planes, then the above code would only read data that contained the first sample of each pixel; to handle either case one might use the following instead:

#include "tiffio.h"
main()
{
    TIFF* tif = TIFFOpen("myfile.tif", "r");
    if (tif) {
        uint32 imagelength;
        tdata_t buf;
        uint32 row;
        
        TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &imagelength);
        TIFFGetField(tif, TIFFTAG_PLANARCONFIG, &config);
        buf = _TIFFmalloc(TIFFScanlineSize(tif));
        if (config == PLANARCONFIG_CONTIG) {
            for (row = 0; row < imagelength; row++)
                tiffreadscanline(tif, buf, row);
        } else if (config == planarconfig_separate) {
            uint16 s, nsamples;
            
            tiffgetfield(tif, tifftag_samplesperpixel, &nsamples);
            for (s = 0; s < nsamples; s++)
                for (row = 0; row < imagelength; row++)
                    tiffreadscanline(tif, buf, row, s);
        }
        _tifffree(buf);
        tiffclose(tif);
    }
}

Beware however that if the following code were used instead to read data in the case PLANARCONFIG_SEPARATE,...

            for (row = 0; row < imagelength; row++)
                for (s = 0; s < nsamples; s++)
                    tiffreadscanline(tif, buf, row, s);

...then problems would arise if RowsPerStrip was not one because the order in which scanlines are requested would require random access to data within strips (something that is not supported by the library when strips are compressed).


Strip-oriented Image I/O

The strip-oriented interfaces provided by the library provide access to entire strips of data. Unlike the scanline-oriented calls, data can be read or written compressed or uncompressed. Accessing data at a strip (or tile) level is often desirable because there are no complications with regard to random access to data within strips.

A simple example of reading an image by strips is:

#include "tiffio.h"
main()
{
    TIFF* tif = TIFFOpen("myfile.tif", "r");
    if (tif) {
        tdata_t buf;
        tstrip_t strip;
        
        buf = _TIFFmalloc(TIFFStripSize(tif));
        for (strip = 0; strip < tiffnumberofstrips(tif); strip++)
            tiffreadencodedstrip(tif, strip, buf, (tsize_t) -1);
        _tifffree(buf);
        tiffclose(tif);
    }
}

Notice how a strip size of -1 is used; TIFFReadEncodedStrip will calculate the appropriate size in this case.

The above code reads strips in the order in which the data is physically stored in the file. If multiple samples are present and data is stored with PLANARCONFIG_SEPARATE then all the strips of data holding the first sample will be read, followed by strips for the second sample, etc.

Finally, note that the last strip of data in an image may have fewer rows in it than specified by the RowsPerStrip tag. A reader should not assume that each decoded strip contains a full set of rows in it.

The following is an example of how to read raw strips of data from a file:

#include "tiffio.h"
main()
{
    TIFF* tif = TIFFOpen("myfile.tif", "r");
    if (tif) {
        tdata_t buf;
        tstrip_t strip;
        uint32* bc;
        uint32 stripsize;
        
        TIFFGetField(tif, TIFFTAG_STRIPBYTECOUNTS, &bc);
        stripsize = bc[0];
        buf = _TIFFmalloc(stripsize);
        for (strip = 0; strip < tiffnumberofstrips(tif); strip++) {
            if (bc[strip] > stripsize) {
                buf = _TIFFrealloc(buf, bc[strip]);
                stripsize = bc[strip];
            }
            TIFFReadRawStrip(tif, strip, buf, bc[strip]);
        }
        _TIFFfree(buf);
        TIFFClose(tif);
    }
}

As above the strips are read in the order in which they are physically stored in the file; this may be different from the logical ordering expected by an application.


Tile-oriented Image I/O

Tiles of data may be read and written in a manner similar to strips. With this interface, an image is broken up into a set of rectangular areas that may have dimensions less than the image width and height. All the tiles in an image have the same size, and the tile width and length must each be a multiple of 16 pixels. Tiles are ordered left-to-right and top-to-bottom in an image. As for scanlines, samples can be packed contiguously or separately. When separated, all the tiles for a sample are colocated in the file. That is, all the tiles for sample 0 appear before the tiles for sample 1, etc.

Tiles and strips may also be extended in a z dimension to form volumes. Data volumes are organized as "slices". That is, all the data for a slice is colocated. Volumes whose data is organized in tiles can also have a tile depth so that data can be organized in cubes.

There are actually two interfaces for tiles. One interface is similar to scanlines, to read a tiled image, code of the following sort might be used:

main()
{
    TIFF* tif = TIFFOpen("myfile.tif", "r");
    if (tif) {
        uint32 imageWidth, imageLength;
        uint32 tileWidth, tileLength;
        uint32 x, y;
        tdata_t buf;
        
        TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &imageWidth);
        TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &imageLength);
        TIFFGetField(tif, TIFFTAG_TILEWIDTH, &tileWidth);
        TIFFGetField(tif, TIFFTAG_TILELENGTH, &tileLength);
        buf = _TIFFmalloc(TIFFTileSize(tif));
        for (y = 0; y < imagelength; y += tilelength)
            for (x = 0; x < imagewidth; x += tilewidth)
                tiffreadtile(tif, buf, x, y, 0);
        _tifffree(buf);
        tiffclose(tif);
    }
}

(once again, we assume samples are packed contiguously.)

Alternatively a direct interface to the low-level data is provided a la strips. Tiles can be read with TIFFReadEncodedTile or TIFFReadRawTile, and written with TIFFWriteEncodedTile or TIFFWriteRawTile. For example, to read all the tiles in an image:

#include "tiffio.h"
main()
{
    TIFF* tif = TIFFOpen("myfile.tif", "r");
    if (tif) {
        tdata_t buf;
        ttile_t tile;
        
        buf = _TIFFmalloc(TIFFTileSize(tif));
        for (tile = 0; tile < tiffnumberoftiles(tif); tile++)
            tiffreadencodedtile(tif, tile, buf, (tsize_t) -1);
        _tifffree(buf);
        tiffclose(tif);
    }
}


Other Stuff

Some other stuff will almost certainly go here...


Last updated: $Date: 2005/12/28 06:53:18 $

0707010004135f000081a40000000000000000000000014cc7a426000004400000010000010006ffffffffffffffff0000003500000000root/usr/local/share/doc/tiff-3.9.4/html/images.html TIFF Test Images

TIFF Test Images

Test images are available for most formats supported by the library. Most of the images included in the test kit are also part of this documentation (albeit in TIFF rather than GIF or JFIF). The images are kept in a separate archive that should be located in the same directory as this software.

The latest archive of test images is located at ftp://ftp.remotesensing.org/pub/libtiff/pics-3.8.0.tar.gz

There are two other good sources for TIFF test images: the contributed software contrib/dbs includes several programs that generate test images suitable for debugging, and the tiffcp program can be used to generate a variety of images with different storage characteristics.


Last updated: $Date: 2006/01/02 23:50:44 $ 070701000413e1000081a40000000000000000000000014cc7a42700001f7b0000010000010006ffffffffffffffff0000003500000000root/usr/local/share/doc/tiff-3.9.4/html/v3.8.1.html Changes in TIFF v3.8.1 TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:


MAJOR CHANGES:
  • Bug-fix release.


CHANGES IN THE SOFTWARE CONFIGURATION:
  • libtool related stuff updated from the 2.1a branch.
  • Fix with_default_strip_size comparison as reported by Norihiko Murase.


CHANGES IN LIBTIFF:


CHANGES IN THE TOOLS:


CHANGES IN THE CONTRIB AREA:
Last updated $Date: 2006/03/13 14:52:12 $. 0707010004135d000081a40000000000000000000000014cc7a42600000e9b0000010000010006ffffffffffffffff0000003600000000root/usr/local/share/doc/tiff-3.9.4/html/contrib.html Contributed TIFF Software

Contributed TIFF Software

The contrib directory has contributed software that uses the TIFF library or which is associated with the library (typically glue and guidance for ports to non-UNIX platforms, or tools that aren't directly TIFF related).

contrib/vms scripts and files from Karsten Spang for building the library and tools under VMS
contrib/dbs various tools from Dan & Chris Sears, including a simple X-based viewer
contrib/ras two programs by Patrick Naughton for converting between Sun rasterfile format and TIFF (these require libpixrect.a, as opposed to the one in tools that doesn't)
contrib/mac-mpw
contrib/mac-cw
scripts and files from Niles Ritter for building the library and tools under Macintosh/MPW C and code warrior.
contrib/acorn scripts and files from Peter Greenham for building the library and tools on an Acorn RISC OS system.
contrib/win32 scripts and files from Scott Wagner for building the library under Windows NT and Windows 95. (The makefile.vc in the libtiff/libtiff directory may be sufficient for most users.)
contrib/win_dib two separate implementations of TIFF to DIB code suitable for any Win32 platform. Contributed by Mark James, and Philippe Tenenhaus.
contrib/ojpeg Patch for IJG JPEG library related to support for some Old JPEG in TIFF files. Contributed by Scott Marovich.
contrib/dosdjgpp scripts and files from Alexander Lehmann for building the library under MSDOS with the DJGPP v2 compiler.
contrib/tags scripts and files from Niles Ritter for adding private tag support at runtime, without changing libtiff.
contrib/mfs code from Mike Johnson to read+write images in memory without modifying the library
contrib/pds various routines from Conrad Poelman; a TIFF image iterator and code to support ``private sub-directories''
contrib/iptcutil A utility by Bill Radcliffe to convert an extracted IPTC Newsphoto caption from a binary blob to ASCII text, and vice versa. IPTC binary blobs can be extracted from images via the ImageMagick convert(1) utility.
contrib/addtiffo A utility (and supporting subroutine) for building one or more reduce resolution overviews to an existing TIFF file. Supplied by Frank Warmerdam.
contrib/stream A class (TiffStream) for accessing TIFF files through a C++ stream interface. Supplied by Avi Bleiweiss.

Questions regarding these packages are usually best directed toward their authors.


Last updated: $Date: 2006/01/03 01:42:30 $ 070701000413cc000081a40000000000000000000000014cc7a4270000087b0000010000010006ffffffffffffffff0000003500000000root/usr/local/share/doc/tiff-3.9.4/html/v3.5.1.html Changes in TIFF v3.5.1 TIFF CHANGE INFORMATION


CHANGES IN THE SOFTWARE CONFIGURATION:
  • None of consequence


CHANGES IN LIBTIFF:
  • Support was added for IPTC Newsphoto metadata (TIFFTAGE_IPTCNEWSPHOTO)
  • Support was added for photoshop caption handling (TIFFTAG_PHOTOSHOP)


CHANGES IN THE TOOLS:
  • Bill Radcliffe's iptcutil was added to the "contrib" subdirectory . It can convert an IPTC binary blob to ASCII text and vice-versa. The blob itself can be extracted from or added to an image with the ImageMagick convert(1) utility.
TIFF home page.

Last updated $Date: 2006/01/03 01:42:30 $. 0707010004135a000081a40000000000000000000000014cc7a42600002e1e0000010000010006ffffffffffffffff0000003900000000root/usr/local/share/doc/tiff-3.9.4/html/addingtags.html Modifying The TIFF Library

Defining New TIFF Tags

Libtiff has built-in knowledge of all the standard TIFF tags, as well as extentions. The following describes how to add knowledge of new tags as builtins to libtiff, or how to application specific tags can be used by applications without modifying libtiff.

TIFFFieldInfo

How libtiff manages specific tags is primarily controlled by the definition for that tag value stored internally as a TIFFFieldInfo structure. This structure looks like this:

typedef	struct {
  ttag_t    field_tag;          /* field's tag */
  short	    field_readcount;    /* read count/TIFF_VARIABLE/TIFF_SPP */
  short	    field_writecount;   /* write count/TIFF_VARIABLE */
  TIFFDataType field_type;      /* type of associated data */
  unsigned short field_bit;     /* bit in fieldsset bit vector */
  unsigned char field_oktochange;/* if true, can change while writing */
  unsigned char field_passcount;/* if true, pass dir count on set */
  char	*field_name;		/* ASCII name */
} TIFFFieldInfo;
  • field_tag: the tag number. For instance 277 for the SamplesPerPixel tag. Builtin tags will generally have a #define in tiff.h for each known tag.

  • field_readcount: The number of values which should be read. The special value TIFF_VARIABLE (-1) indicates that a variable number of values may be read. The special value TIFFTAG_SPP (-2) indicates that there should be one value for each sample as defined by TIFFTAG_SAMPLESPERPIXEL. The special value TIFF_VARIABLE2 (-3) is presumably similar to TIFF_VARIABLE though I am not sure what the distinction in behaviour is. This field is TIFF_VARIABLE for variable length ascii fields.

  • field_writecount: The number of values which should be written. Generally the same as field_readcount. A few built-in exceptions exist, but I haven't analysed why they differ.

  • field_type: Type of the field. One of TIFF_BYTE, TIFF_ASCII, TIFF_SHORT, TIFF_LONG, TIFF_RATIONAL, TIFF_SBYTE, TIFF_UNDEFINED, TIFF_SSHORT, TIFF_SLONG, TIFF_SRATIONAL, TIFF_FLOAT, TIFF_DOUBLE or TIFF_IFD. Note that some fields can support more than one type (for instance short and long). These fields should have multiple TIFFFieldInfos.

  • field_bit: Built-in tags stored in special fields in the TIFF structure have assigned field numbers to distinguish them (ie. FIELD_SAMPLESPERPIXEL). New tags should generally just use FIELD_CUSTOM indicating they are stored in the generic tag list.

  • field_oktochange: TRUE if it is OK to change this tag value while an image is being written. FALSE for stuff that must be set once and then left unchanged (like ImageWidth, or PhotometricInterpretation for instance).

  • field_passcount: If TRUE, then the count value must be passed in TIFFSetField(), and TIFFGetField(), otherwise the count is not required. This should generally be TRUE for non-ascii variable count tags unless the count is implicit (such as with the colormap).

  • field_name: A name for the tag. Normally mixed case (studly caps) like "StripByteCounts" and relatively short.

A TIFFFieldInfo definition exists for each built-in tag in the tif_dirinfo.c file. Some tags which support multiple data types have more than one definition, one per data type supported.

Various functions exist for getting the internal TIFFFieldInfo definitions, including _TIFFFindFieldInfo(), and _TIFFFindFieldInfoByName(). See tif_dirinfo.c for details. There must be some mechanism to get the whole list, though I don't see it off hand.

Default Tag Auto-registration

In libtiff 3.6.0 a new mechanism was introduced allowing libtiff to read unrecognised tags automatically. When an unknown tags is encountered, it is automatically internally defined with a default name and a type derived from the tag value in the file. Applications only need to predefine application specific tags if they need to be able to set them in a file, or if particular calling conventions are desired for TIFFSetField() and TIFFGetField().

When tags are autodefined like this the field_readcount and field_writecount values are always TIFF_VARIABLE. The field_passcount is always TRUE, and the field_bit is FIELD_CUSTOM. The field name will be "Tag %d" where the %d is the tag number.

Defining Application Tags

For various reasons, it is common for applications to want to define their own tags to store information outside the core TIFF specification. This is done by calling TIFFMergeFieldInfo() with one or more TIFFFieldInfos.

The libgeotiff library provides geospatial information extentions within a TIFF file. First, a set of TIFFFieldInfo's is prepared with information on the new tags:

static const TIFFFieldInfo xtiffFieldInfo[] = {
  
  /* XXX Insert Your tags here */
    { TIFFTAG_GEOPIXELSCALE,	-1,-1, TIFF_DOUBLE,	FIELD_CUSTOM,
      TRUE,	TRUE,	"GeoPixelScale" },
    { TIFFTAG_GEOTRANSMATRIX,	-1,-1, TIFF_DOUBLE,	FIELD_CUSTOM,
      TRUE,	TRUE,	"GeoTransformationMatrix" },
    { TIFFTAG_GEOTIEPOINTS,	-1,-1, TIFF_DOUBLE,	FIELD_CUSTOM,
      TRUE,	TRUE,	"GeoTiePoints" },
    { TIFFTAG_GEOKEYDIRECTORY, -1,-1, TIFF_SHORT,	FIELD_CUSTOM,
      TRUE,	TRUE,	"GeoKeyDirectory" },
    { TIFFTAG_GEODOUBLEPARAMS,	-1,-1, TIFF_DOUBLE,	FIELD_CUSTOM,
      TRUE,	TRUE,	"GeoDoubleParams" },
    { TIFFTAG_GEOASCIIPARAMS,	-1,-1, TIFF_ASCII,	FIELD_CUSTOM,
      TRUE,	FALSE,	"GeoASCIIParams" }
};
In order to define the tags, we call TIFFMergeFieldInfo() on the desired TIFF handle with the list of TIFFFieldInfos.

#define	N(a)	(sizeof (a) / sizeof (a[0]))

    /* Install the extended Tag field info */
    TIFFMergeFieldInfo(tif, xtiffFieldInfo, N(xtiffFieldInfo));
The tags need to be defined for each TIFF file opened - and when reading they should be defined before the tags of the file are read, yet a valid TIFF * is needed to merge the tags against. In order to get them registered at the appropriate part of the setup process, it is necessary to register our merge function as an extender callback with libtiff. This is done with TIFFSetTagExtender(). We also keep track of the previous tag extender (if any) so that we can call it from our extender allowing a chain of customizations to take effect.

static TIFFExtendProc _ParentExtender = NULL;

static
void _XTIFFInitialize(void)
{
    static int first_time=1;
	
    if (! first_time) return; /* Been there. Done that. */
    first_time = 0;
	
    /* Grab the inherited method and install */
    _ParentExtender = TIFFSetTagExtender(_XTIFFDefaultDirectory);
}
The extender callback is looks like this. It merges in our new fields and then calls the next extender if there is one in effect.

static void
_XTIFFDefaultDirectory(TIFF *tif)
{
    /* Install the extended Tag field info */
    TIFFMergeFieldInfo(tif, xtiffFieldInfo, N(xtiffFieldInfo));

    /* Since an XTIFF client module may have overridden
     * the default directory method, we call it now to
     * allow it to set up the rest of its own methods.
     */

    if (_ParentExtender) 
        (*_ParentExtender)(tif);
}
The above approach ensures that our new definitions are used when reading or writing any TIFF file. However, since on reading we already have default definitions for tags, it is usually not critical to pre-define them. If tag definitions are only required for writing custom tags, you can just call TIFFMergeFieldInfo() before setting new tags. The whole extender architecture can then be avoided.

Adding New Builtin Tags

A similar approach is taken to the above. However, the TIFFFieldInfo should be added to the tiffFieldInfo[] list in tif_dirinfo.c. Ensure that new tags are added in sorted order by the tag number.

Normally new built-in tags should be defined with FIELD_CUSTOM; however, if it is desirable for the tag value to have it's own field in the TIFFDirectory structure, then you will need to #define a new FIELD_ value for it, and add appropriate handling as follows:

  1. Define the tag in tiff.h.
  2. Add a field to the directory structure in tif_dir.h and define a FIELD_* bit (also update the definition of FIELD_CODEC to reflect your addition).
  3. Add an entry in the TIFFFieldInfo array defined at the top of tif_dirinfo.c. Note that you must keep this array sorted by tag number and that the widest variant entry for a tag should come first (e.g. LONG before SHORT).
  4. Add entries in _TIFFVSetField() and _TIFFVGetField() for the new tag.
  5. (optional) If the value associated with the tag is not a scalar value (e.g. the array for TransferFunction) and requires special processing, then add the appropriate code to TIFFReadDirectory() and TIFFWriteDirectory(). You're best off finding a similar tag and cribbing code.
  6. Add support to TIFFPrintDirectory() in tif_print.c to print the tag's value.

If you want to maintain portability, beware of making assumptions about data types. Use the typedefs (uint16, etc. when dealing with data on disk and t*_t when stuff is in memory) and be careful about passing items through printf or similar vararg interfaces.

Adding New Codec-private Tags

To add tags that are meaningful only when a particular compression algorithm is used follow these steps:
  1. Define the tag in tiff.h.
  2. Allocate storage for the tag values in the private state block of the codec.
  3. Insure the state block is created when the codec is initialized.
  4. At TIFFInitfoo time override the method pointers in the TIFF structure for getting, setting and printing tag values. For example,
        sp->vgetparent = tif->tif_vgetfield;
        tif->tif_vgetfield = fooVGetField;	/* hook for codec tags */
        sp->vsetparent = tif->tif_vsetfield;
        tif->tif_vsetfield = fooVSetField;	/* hook for codec tags */
        tif->tif_printdir = fooPrintDir;	/* hook for codec tags */
    
    (Actually you may decide not to override the tif_printdir method, but rather just specify it).
  5. Create a private TIFFFieldInfo array for your tags and merge them into the core tags at initialization time using _TIFFMergeFieldInfo; e.g.
        _TIFFMergeFieldInfo(tif, fooFieldInfo, N(fooFieldInfo));
    
    (where N is a macro used liberaly throughout the distributed code).
  6. Fill in the get and set routines. Be sure to call the parent method for tags that you are not handled directly. Also be sure to set the FIELD_* bits for tags that are to be written to the file. Note that you can create ``pseudo-tags'' by defining tags that are processed exclusively in the get/set routines and never written to file (see the handling of TIFFTAG_FAXMODE in tif_fax3.c for an example of this).
  7. Fill in the print routine, if appropriate.
Note that space has been allocated in the FIELD_* bit space for codec-private tags. Define your bits as FIELD_CODEC+<offset> to keep them away from the core tags. If you need more tags than there is room for, just increase FIELD_SETLONGS at the top of tiffiop.h.
Last updated: $Date: 2004/09/10 14:43:18 $ 07070100041359000081a40000000000000000000000014cc7a42600008b720000010000010006ffffffffffffffff0000003c00000000root/usr/local/share/doc/tiff-3.9.4/html/TIFFTechNote2.html
DRAFT TIFF Technical Note #2				17-Mar-95
============================

This Technical Note describes serious problems that have been found in
TIFF 6.0's design for embedding JPEG-compressed data in TIFF (Section 22
of the TIFF 6.0 spec of 3 June 1992).  A replacement TIFF/JPEG
specification is given.  Some corrections to Section 21 are also given.

To permit TIFF implementations to continue to read existing files, the 6.0
JPEG fields and tag values will remain reserved indefinitely.  However,
TIFF writers are strongly discouraged from using the 6.0 JPEG design.  It
is expected that the next full release of the TIFF specification will not
describe the old design at all, except to note that certain tag numbers
are reserved.  The existing Section 22 will be replaced by the
specification text given in the second part of this Tech Note.


Problems in TIFF 6.0 JPEG
=========================

Abandoning a published spec is not a step to be taken lightly.  This
section summarizes the reasons that have forced this decision.
TIFF 6.0's JPEG design suffers from design errors and limitations,
ambiguities, and unnecessary complexity.


Design errors and limitations
-----------------------------

The fundamental design error in the existing Section 22 is that JPEG's
various tables and parameters are broken out as separate fields which the
TIFF control logic must manage.  This is bad software engineering: that
information should be treated as private to the JPEG codec
(compressor/decompressor).  Worse, the fields themselves are specified
without sufficient thought for future extension and without regard to
well-established TIFF conventions.  Here are some of the significant
problems:

* The JPEGxxTable fields do not store the table data directly in the
IFD/field structure; rather, the fields hold pointers to information
elsewhere in the file.  This requires special-purpose code to be added to
*every* TIFF-manipulating application, whether it needs to decode JPEG
image data or not.  Even a trivial TIFF editor, for example a program to
add an ImageDescription field to a TIFF file, must be explicitly aware of
the internal structure of the JPEG-related tables, or else it will probably
break the file.  Every other auxiliary field in the TIFF spec contains
data, not pointers, and can be copied or relocated by standard code that
doesn't know anything about the particular field.  This is a crucial
property of the TIFF format that must not be given up.

* To manipulate these fields, the TIFF control logic is required to know a
great deal about JPEG details, for example such arcana as how to compute
the length of a Huffman code table --- the length is not supplied in the
field structure and can only be found by inspecting the table contents.
This is again a violation of good software practice.  Moreover, it will
prevent easy adoption of future JPEG extensions that might change these
low-level details.

* The design neglects the fact that baseline JPEG codecs support only two
sets of Huffman tables: it specifies a separate table for each color
component.  This implies that encoders must waste space (by storing
duplicate Huffman tables) or else violate the well-founded TIFF convention
that prohibits duplicate pointers.  Furthermore, baseline decoders must
test to find out which tables are identical, a waste of time and code
space.

* The JPEGInterchangeFormat field also violates TIFF's proscription against
duplicate pointers: the normal strip/tile pointers are expected to point
into the larger data area pointed to by JPEGInterchangeFormat.  All TIFF
editing applications must be specifically aware of this relationship, since
they must maintain it or else delete the JPEGInterchangeFormat field.  The
JPEGxxTables fields are also likely to point into the JPEGInterchangeFormat
area, creating additional pointer relationships that must be maintained.

* The JPEGQTables field is fixed at a byte per table entry; there is no
way to support 16-bit quantization values.  This is a serious impediment
to extending TIFF to use 12-bit JPEG.

* The 6.0 design cannot support using different quantization tables in
different strips/tiles of an image (so as to encode some areas at higher
quality than others).  Furthermore, since quantization tables are tied
one-for-one to color components, the design cannot support table switching
options that are likely to be added in future JPEG revisions.


Ambiguities
-----------

Several incompatible interpretations are possible for 6.0's treatment of
JPEG restart markers:

  * It is unclear whether restart markers must be omitted at TIFF segment
    (strip/tile) boundaries, or whether they are optional.

  * It is unclear whether the segment size is required to be chosen as
    a multiple of the specified restart interval (if any); perhaps the
    JPEG codec is supposed to be reset at each segment boundary as if
    there were a restart marker there, even if the boundary does not fall
    at a multiple of the nominal restart interval.

  * The spec fails to address the question of restart marker numbering:
    do the numbers begin again within each segment, or not?

That last point is particularly nasty.  If we make numbering begin again
within each segment, we give up the ability to impose a TIFF strip/tile
structure on an existing JPEG datastream with restarts (which was clearly a
goal of Section 22's authors).  But the other choice interferes with random
access to the image segments: a reader must compute the first restart
number to be expected within a segment, and must have a way to reset its
JPEG decoder to expect a nonzero restart number first.  This may not even
be possible with some JPEG chips.

The tile height restriction found on page 104 contradicts Section 15's
general description of tiles.  For an image that is not vertically
downsampled, page 104 specifies a tile height of one MCU or 8 pixels; but
Section 15 requires tiles to be a multiple of 16 pixels high.

This Tech Note does not attempt to resolve these ambiguities, so
implementations that follow the 6.0 design should be aware that
inter-application compatibility problems are likely to arise.


Unnecessary complexity
----------------------

The 6.0 design creates problems for implementations that need to keep the
JPEG codec separate from the TIFF control logic --- for example, consider
using a JPEG chip that was not designed specifically for TIFF.  JPEG codecs
generally want to produce or consume a standard ISO JPEG datastream, not
just raw compressed data.  (If they were to handle raw data, a separate
out-of-band mechanism would be needed to load tables into the codec.)
With such a codec, the TIFF control logic must parse JPEG markers emitted
by the codec to create the TIFF table fields (when writing) or synthesize
JPEG markers from the TIFF fields to feed the codec (when reading).  This
means that the control logic must know a great deal more about JPEG details
than we would like.  The parsing and reconstruction of the markers also
represents a fair amount of unnecessary work.

Quite a few implementors have proposed writing "TIFF/JPEG" files in which
a standard JPEG datastream is simply dumped into the file and pointed to
by JPEGInterchangeFormat.  To avoid parsing the JPEG datastream, they
suggest not writing the JPEG auxiliary fields (JPEGxxTables etc) nor even
the basic TIFF strip/tile data pointers.  This approach is incompatible
with implementations that handle the full TIFF 6.0 JPEG design, since they
will expect to find strip/tile pointers and auxiliary fields.  Indeed this
is arguably not TIFF at all, since *all* TIFF-reading applications expect
to find strip or tile pointers.  A subset implementation that is not
upward-compatible with the full spec is clearly unacceptable.  However,
the frequency with which this idea has come up makes it clear that
implementors find the existing Section 22 too complex.


Overview of the solution
========================

To solve these problems, we adopt a new design for embedding
JPEG-compressed data in TIFF files.  The new design uses only complete,
uninterpreted ISO JPEG datastreams, so it should be much more forgiving of
extensions to the ISO standard.  It should also be far easier to implement
using unmodified JPEG codecs.

To reduce overhead in multi-segment TIFF files, we allow JPEG overhead
tables to be stored just once in a JPEGTables auxiliary field.  This
feature does not violate the integrity of the JPEG datastreams, because it
uses the notions of "tables-only datastreams" and "abbreviated image
datastreams" as defined by the ISO standard.

To prevent confusion with the old design, the new design is given a new
Compression tag value, Compression=7.  Readers that need to handle
existing 6.0 JPEG files may read both old and new files, using whatever
interpretation of the 6.0 spec they did before.  Compression tag value 6
and the field tag numbers defined by 6.0 section 22 will remain reserved
indefinitely, even though detailed descriptions of them will be dropped
from future editions of the TIFF specification.


Replacement TIFF/JPEG specification
===================================

[This section of the Tech Note is expected to replace Section 22 in the
next release of the TIFF specification.]

This section describes TIFF compression scheme 7, a high-performance
compression method for continuous-tone images.

Introduction
------------

This TIFF compression method uses the international standard for image
compression ISO/IEC 10918-1, usually known as "JPEG" (after the original
name of the standards committee, Joint Photographic Experts Group).  JPEG
is a joint ISO/CCITT standard for compression of continuous-tone images.

The JPEG committee decided that because of the broad scope of the standard,
no one algorithmic procedure was able to satisfy the requirements of all
applications.  Instead, the JPEG standard became a "toolkit" of multiple
algorithms and optional capabilities.  Individual applications may select
a subset of the JPEG standard that meets their requirements.

The most important distinction among the JPEG processes is between lossy
and lossless compression.  Lossy compression methods provide high
compression but allow only approximate reconstruction of the original
image.  JPEG's lossy processes allow the encoder to trade off compressed
file size against reconstruction fidelity over a wide range.  Typically,
10:1 or more compression of full-color data can be obtained while keeping
the reconstructed image visually indistinguishable from the original.  Much
higher compression ratios are possible if a low-quality reconstructed image
is acceptable.  Lossless compression provides exact reconstruction of the
source data, but the achievable compression ratio is much lower than for
the lossy processes; JPEG's rather simple lossless process typically
achieves around 2:1 compression of full-color data.

The most widely implemented JPEG subset is the "baseline" JPEG process.
This provides lossy compression of 8-bit-per-channel data.  Optional
extensions include 12-bit-per-channel data, arithmetic entropy coding for
better compression, and progressive/hierarchical representations.  The
lossless process is an independent algorithm that has little in
common with the lossy processes.

It should be noted that the optional arithmetic-coding extension is subject
to several US and Japanese patents.  To avoid patent problems, use of
arithmetic coding processes in TIFF files intended for inter-application
interchange is discouraged.

All of the JPEG processes are useful only for "continuous tone" data,
in which the difference between adjacent pixel values is usually small.
Low-bit-depth source data is not appropriate for JPEG compression, nor
are palette-color images good candidates.  The JPEG processes work well
on grayscale and full-color data.

Describing the JPEG compression algorithms in sufficient detail to permit
implementation would require more space than we have here.  Instead, we
refer the reader to the References section.


What data is being compressed?
------------------------------

In lossy JPEG compression, it is customary to convert color source data
to YCbCr and then downsample it before JPEG compression.  This gives
2:1 data compression with hardly any visible image degradation, and it
permits additional space savings within the JPEG compression step proper.
However, these steps are not considered part of the ISO JPEG standard.
The ISO standard is "color blind": it accepts data in any color space.

For TIFF purposes, the JPEG compression tag is considered to represent the
ISO JPEG compression standard only.  The ISO standard is applied to the
same data that would be stored in the TIFF file if no compression were
used.  Therefore, if color conversion or downsampling are used, they must
be reflected in the regular TIFF fields; these steps are not considered to
be implicit in the JPEG compression tag value.  PhotometricInterpretation
and related fields shall describe the color space actually stored in the
file.  With the TIFF 6.0 field definitions, downsampling is permissible
only for YCbCr data, and it must correspond to the YCbCrSubSampling field.
(Note that the default value for this field is not 1,1; so the default for
YCbCr is to apply downsampling!)  It is likely that future versions of TIFF
will provide additional PhotometricInterpretation values and a more general
way of defining subsampling, so as to allow more flexibility in
JPEG-compressed files.  But that issue is not addressed in this Tech Note.

Implementors should note that many popular JPEG codecs
(compressor/decompressors) provide automatic color conversion and
downsampling, so that the application may supply full-size RGB data which
is nonetheless converted to downsampled YCbCr.  This is an implementation
convenience which does not excuse the TIFF control layer from its
responsibility to know what is really going on.  The
PhotometricInterpretation and subsampling fields written to the file must
describe what is actually in the file.

A JPEG-compressed TIFF file will typically have PhotometricInterpretation =
YCbCr and YCbCrSubSampling = [2,1] or [2,2], unless the source data was
grayscale or CMYK.


Basic representation of JPEG-compressed images
----------------------------------------------

JPEG compression works in either strip-based or tile-based TIFF files.
Rather than repeating "strip or tile" constantly, we will use the term
"segment" to mean either a strip or a tile.

When the Compression field has the value 7, each image segment contains
a complete JPEG datastream which is valid according to the ISO JPEG
standard (ISO/IEC 10918-1).  Any sequential JPEG process can be used,
including lossless JPEG, but progressive and hierarchical processes are not
supported.  Since JPEG is useful only for continuous-tone images, the
PhotometricInterpretation of the image shall not be 3 (palette color) nor
4 (transparency mask).  The bit depth of the data is also restricted as
specified below.

Each image segment in a JPEG-compressed TIFF file shall contain a valid
JPEG datastream according to the ISO JPEG standard's rules for
interchange-format or abbreviated-image-format data.  The datastream shall
contain a single JPEG frame storing that segment of the image.  The
required JPEG markers within a segment are:
	SOI	(must appear at very beginning of segment)
	SOFn
	SOS	(one for each scan, if there is more than one scan)
	EOI	(must appear at very end of segment)
The actual compressed data follows SOS; it may contain RSTn markers if DRI
is used.

Additional JPEG "tables and miscellaneous" markers may appear between SOI
and SOFn, between SOFn and SOS, and before each subsequent SOS if there is
more than one scan.  These markers include:
	DQT
	DHT
	DAC	(not to appear unless arithmetic coding is used)
	DRI
	APPn	(shall be ignored by TIFF readers)
	COM	(shall be ignored by TIFF readers)
DNL markers shall not be used in TIFF files.  Readers should abort if any
other marker type is found, especially the JPEG reserved markers;
occurrence of such a marker is likely to indicate a JPEG extension.

The tables/miscellaneous markers may appear in any order.  Readers are
cautioned that although the SOFn marker refers to DQT tables, JPEG does not
require those tables to precede the SOFn, only the SOS.  Missing-table
checks should be made when SOS is reached.

If no JPEGTables field is used, then each image segment shall be a complete
JPEG interchange datastream.  Each segment must define all the tables it
references.  To allow readers to decode segments in any order, no segment
may rely on tables being carried over from a previous segment.

When a JPEGTables field is used, image segments may omit tables that have
been specified in the JPEGTables field.  Further details appear below.

The SOFn marker shall be of type SOF0 for strict baseline JPEG data, of
type SOF1 for non-baseline lossy JPEG data, or of type SOF3 for lossless
JPEG data.  (SOF9 or SOF11 would be used for arithmetic coding.)  All
segments of a JPEG-compressed TIFF image shall use the same JPEG
compression process, in particular the same SOFn type.

The data precision field of the SOFn marker shall agree with the TIFF
BitsPerSample field.  (Note that when PlanarConfiguration=1, this implies
that all components must have the same BitsPerSample value; when
PlanarConfiguration=2, different components could have different bit
depths.)  For SOF0 only precision 8 is permitted; for SOF1, precision 8 or
12 is permitted; for SOF3, precisions 2 to 16 are permitted.

The image dimensions given in the SOFn marker shall agree with the logical
dimensions of that particular strip or tile.  For strip images, the SOFn
image width shall equal ImageWidth and the height shall equal RowsPerStrip,
except in the last strip; its SOFn height shall equal the number of rows
remaining in the ImageLength.  (In other words, no padding data is counted
in the SOFn dimensions.)  For tile images, each SOFn shall have width
TileWidth and height TileHeight; adding and removing any padding needed in
the edge tiles is the concern of some higher level of the TIFF software.
(The dimensional rules are slightly different when PlanarConfiguration=2,
as described below.)

The ISO JPEG standard only permits images up to 65535 pixels in width or
height, due to 2-byte fields in the SOFn markers.  In TIFF, this limits
the size of an individual JPEG-compressed strip or tile, but the total
image size can be greater.

The number of components in the JPEG datastream shall equal SamplesPerPixel
for PlanarConfiguration=1, and shall be 1 for PlanarConfiguration=2.  The
components shall be stored in the same order as they are described at the
TIFF field level.  (This applies both to their order in the SOFn marker,
and to the order in which they are scanned if multiple JPEG scans are
used.)  The component ID bytes are arbitrary so long as each component
within an image segment is given a distinct ID.  To avoid any possible
confusion, we require that all segments of a TIFF image use the same ID
code for a given component.

In PlanarConfiguration 1, the sampling factors given in SOFn markers shall
agree with the sampling factors defined by the related TIFF fields (or with
the default values that are specified in the absence of those fields).

When DCT-based JPEG is used in a strip TIFF file, RowsPerStrip is required
to be a multiple of 8 times the largest vertical sampling factor, i.e., a
multiple of the height of an interleaved MCU.  (For simplicity of
specification, we require this even if the data is not actually
interleaved.)  For example, if YCbCrSubSampling = [2,2] then RowsPerStrip
must be a multiple of 16.  An exception to this rule is made for
single-strip images (RowsPerStrip >= ImageLength): the exact value of
RowsPerStrip is unimportant in that case.  This rule ensures that no data
padding is needed at the bottom of a strip, except perhaps the last strip.
Any padding required at the right edge of the image, or at the bottom of
the last strip, is expected to occur internally to the JPEG codec.

When DCT-based JPEG is used in a tiled TIFF file, TileLength is required
to be a multiple of 8 times the largest vertical sampling factor, i.e.,
a multiple of the height of an interleaved MCU; and TileWidth is required
to be a multiple of 8 times the largest horizontal sampling factor, i.e.,
a multiple of the width of an interleaved MCU.  (For simplicity of
specification, we require this even if the data is not actually
interleaved.)  All edge padding required will therefore occur in the course
of normal TIFF tile padding; it is not special to JPEG.

Lossless JPEG does not impose these constraints on strip and tile sizes,
since it is not DCT-based.

Note that within JPEG datastreams, multibyte values appear in the MSB-first
order specified by the JPEG standard, regardless of the byte ordering of
the surrounding TIFF file.


JPEGTables field
----------------

The only auxiliary TIFF field added for Compression=7 is the optional
JPEGTables field.  The purpose of JPEGTables is to predefine JPEG
quantization and/or Huffman tables for subsequent use by JPEG image
segments.  When this is done, these rather bulky tables need not be
duplicated in each segment, thus saving space and processing time.
JPEGTables may be used even in a single-segment file, although there is no
space savings in that case.

JPEGTables:
	Tag = 347 (15B.H)
	Type = UNDEFINED
	N = number of bytes in tables datastream, typically a few hundred
JPEGTables provides default JPEG quantization and/or Huffman tables which
are used whenever a segment datastream does not contain its own tables, as
specified below.

Notice that the JPEGTables field is required to have type code UNDEFINED,
not type code BYTE.  This is to cue readers that expanding individual bytes
to short or long integers is not appropriate.  A TIFF reader will generally
need to store the field value as an uninterpreted byte sequence until it is
fed to the JPEG decoder.

Multibyte quantities within the tables follow the ISO JPEG convention of
MSB-first storage, regardless of the byte ordering of the surrounding TIFF
file.

When the JPEGTables field is present, it shall contain a valid JPEG
"abbreviated table specification" datastream.  This datastream shall begin
with SOI and end with EOI.  It may contain zero or more JPEG "tables and
miscellaneous" markers, namely:
	DQT
	DHT
	DAC	(not to appear unless arithmetic coding is used)
	DRI
	APPn	(shall be ignored by TIFF readers)
	COM	(shall be ignored by TIFF readers)
Since JPEG defines the SOI marker to reset the DAC and DRI state, these two
markers' values cannot be carried over into any image datastream, and thus
they are effectively no-ops in the JPEGTables field.  To avoid confusion,
it is recommended that writers not place DAC or DRI markers in JPEGTables.
However readers must properly skip over them if they appear.

When JPEGTables is present, readers shall load the table specifications
contained in JPEGTables before processing image segment datastreams.
Image segments may simply refer to these preloaded tables without defining
them.  An image segment can still define and use its own tables, subject to
the restrictions below.

An image segment may not redefine any table defined in JPEGTables.  (This
restriction is imposed to allow readers to process image segments in random
order without having to reload JPEGTables between segments.)  Therefore, use
of JPEGTables divides the available table slots into two groups: "global"
slots are defined in JPEGTables and may be used but not redefined by
segments; "local" slots are available for local definition and use in each
segment.  To permit random access, a segment may not reference any local
tables that it does not itself define.


Special considerations for PlanarConfiguration 2
------------------------------------------------

In PlanarConfiguration 2, each image segment contains data for only one
color component.  To avoid confusing the JPEG codec, we wish the segments
to look like valid single-channel (i.e., grayscale) JPEG datastreams.  This
means that different rules must be used for the SOFn parameters.

In PlanarConfiguration 2, the dimensions given in the SOFn of a subsampled
component shall be scaled down by the sampling factors compared to the SOFn
dimensions that would be used in PlanarConfiguration 1.  This is necessary
to match the actual number of samples stored in that segment, so that the
JPEG codec doesn't complain about too much or too little data.  In strip
TIFF files the computed dimensions may need to be rounded up to the next
integer; in tiled files, the restrictions on tile size make this case
impossible.

Furthermore, all SOFn sampling factors shall be given as 1.  (This is
merely to avoid confusion, since the sampling factors in a single-channel
JPEG datastream have no real effect.)

Any downsampling will need to happen externally to the JPEG codec, since
JPEG sampling factors are defined with reference to the full-precision
component.  In PlanarConfiguration 2, the JPEG codec will be working on
only one component at a time and thus will have no reference component to
downsample against.


Minimum requirements for TIFF/JPEG
----------------------------------

ISO JPEG is a large and complex standard; most implementations support only
a subset of it.  Here we define a "core" subset of TIFF/JPEG which readers
must support to claim TIFF/JPEG compatibility.  For maximum
cross-application compatibility, we recommend that writers confine
themselves to this subset unless there is very good reason to do otherwise.

Use the ISO baseline JPEG process: 8-bit data precision, Huffman coding,
with no more than 2 DC and 2 AC Huffman tables.  Note that this implies
BitsPerSample = 8 for each component.  We recommend deviating from baseline
JPEG only if 12-bit data precision or lossless coding is required.

Use no subsampling (all JPEG sampling factors = 1) for color spaces other
than YCbCr.  (This is, in fact, required with the TIFF 6.0 field
definitions, but may not be so in future revisions.)  For YCbCr, use one of
the following choices:
	YCbCrSubSampling field		JPEG sampling factors
	1,1				1h1v, 1h1v, 1h1v
	2,1				2h1v, 1h1v, 1h1v
	2,2  (default value)		2h2v, 1h1v, 1h1v
We recommend that RGB source data be converted to YCbCr for best compression
results.  Other source data colorspaces should probably be left alone.
Minimal readers need not support JPEG images with colorspaces other than
YCbCr and grayscale (PhotometricInterpretation = 6 or 1).

A minimal reader also need not support JPEG YCbCr images with nondefault
values of YCbCrCoefficients or YCbCrPositioning, nor with values of
ReferenceBlackWhite other than [0,255,128,255,128,255].  (These values
correspond to the RGB<=>YCbCr conversion specified by JFIF, which is widely
implemented in JPEG codecs.)

Writers are reminded that a ReferenceBlackWhite field *must* be included
when PhotometricInterpretation is YCbCr, because the default
ReferenceBlackWhite values are inappropriate for YCbCr.

If any subsampling is used, PlanarConfiguration=1 is preferred to avoid the
possibly-confusing requirements of PlanarConfiguration=2.  In any case,
readers are not required to support PlanarConfiguration=2.

If possible, use a single interleaved scan in each image segment.  This is
not legal JPEG if there are more than 4 SamplesPerPixel or if the sampling
factors are such that more than 10 blocks would be needed per MCU; in that
case, use a separate scan for each component.  (The recommended color
spaces and sampling factors will not run into that restriction, so a
minimal reader need not support more than one scan per segment.)

To claim TIFF/JPEG compatibility, readers shall support multiple-strip TIFF
files and the optional JPEGTables field; it is not acceptable to read only
single-datastream files.  Support for tiled TIFF files is strongly
recommended but not required.


Other recommendations for implementors
--------------------------------------

The TIFF tag Compression=7 guarantees only that the compressed data is
represented as ISO JPEG datastreams.  Since JPEG is a large and evolving
standard, readers should apply careful error checking to the JPEG markers
to ensure that the compression process is within their capabilities.  In
particular, to avoid being confused by future extensions to the JPEG
standard, it is important to abort if unknown marker codes are seen.

The point of requiring that all image segments use the same JPEG process is
to ensure that a reader need check only one segment to determine whether it
can handle the image.  For example, consider a TIFF reader that has access
to fast but restricted JPEG hardware, as well as a slower, more general
software implementation.  It is desirable to check only one image segment
to find out whether the fast hardware can be used.  Thus, writers should
try to ensure that all segments of an image look as much "alike" as
possible: there should be no variation in scan layout, use of options such
as DRI, etc.  Ideally, segments will be processed identically except
perhaps for using different local quantization or entropy-coding tables.

Writers should avoid including "noise" JPEG markers (COM and APPn markers).
Standard TIFF fields provide a better way to transport any non-image data.
Some JPEG codecs may change behavior if they see an APPn marker they
think they understand; since the TIFF spec requires these markers to be
ignored, this behavior is undesirable.

It is possible to convert an interchange-JPEG file (e.g., a JFIF file) to
TIFF simply by dropping the interchange datastream into a single strip.
(However, designers are reminded that the TIFF spec discourages huge
strips; splitting the image is somewhat more work but may give better
results.)  Conversion from TIFF to interchange JPEG is more complex.  A
strip-based TIFF/JPEG file can be converted fairly easily if all strips use
identical JPEG tables and no RSTn markers: just delete the overhead markers
and insert RSTn markers between strips.  Converting tiled images is harder,
since the data will usually not be in the right order (unless the tiles are
only one MCU high).  This can still be done losslessly, but it will require
undoing and redoing the entropy coding so that the DC coefficient
differences can be updated.

There is no default value for JPEGTables: standard TIFF files must define all
tables that they reference.  For some closed systems in which many files will
have identical tables, it might make sense to define a default JPEGTables
value to avoid actually storing the tables.  Or even better, invent a
private field selecting one of N default JPEGTables settings, so as to allow
for future expansion.  Either of these must be regarded as a private
extension that will render the files unreadable by other applications.


References
----------

[1] Wallace, Gregory K.  "The JPEG Still Picture Compression Standard",
Communications of the ACM, April 1991 (vol. 34 no. 4), pp. 30-44.

This is the best short technical introduction to the JPEG algorithms.
It is a good overview but does not provide sufficiently detailed
information to write an implementation.

[2] Pennebaker, William B. and Mitchell, Joan L.  "JPEG Still Image Data
Compression Standard", Van Nostrand Reinhold, 1993, ISBN 0-442-01272-1.
638pp.

This textbook is by far the most complete exposition of JPEG in existence.
It includes the full text of the ISO JPEG standards (DIS 10918-1 and draft
DIS 10918-2).  No would-be JPEG implementor should be without it.

[3] ISO/IEC IS 10918-1, "Digital Compression and Coding of Continuous-tone
Still Images, Part 1: Requirements and guidelines", February 1994.
ISO/IEC DIS 10918-2, "Digital Compression and Coding of Continuous-tone
Still Images, Part 2: Compliance testing", final approval expected 1994.

These are the official standards documents.  Note that the Pennebaker and
Mitchell textbook is likely to be cheaper and more useful than the official
standards.


Changes to Section 21: YCbCr Images
===================================

[This section of the Tech Note clarifies section 21 to make clear the
interpretation of image dimensions in a subsampled image.  Furthermore,
the section is changed to allow the original image dimensions not to be
multiples of the sampling factors.  This change is necessary to support use
of JPEG compression on odd-size images.]

Add the following paragraphs to the Section 21 introduction (p. 89),
just after the paragraph beginning "When a Class Y image is subsampled":

	In a subsampled image, it is understood that all TIFF image
	dimensions are measured in terms of the highest-resolution
	(luminance) component.  In particular, ImageWidth, ImageLength,
	RowsPerStrip, TileWidth, TileLength, XResolution, and YResolution
	are measured in luminance samples.

	RowsPerStrip, TileWidth, and TileLength are constrained so that
	there are an integral number of samples of each component in a
	complete strip or tile.  However, ImageWidth/ImageLength are not
	constrained.  If an odd-size image is to be converted to subsampled
	format, the writer should pad the source data to a multiple of the
	sampling factors by replication of the last column and/or row, then
	downsample.  The number of luminance samples actually stored in the
	file will be a multiple of the sampling factors.  Conversely,
	readers must ignore any extra data (outside the specified image
	dimensions) after upsampling.

	When PlanarConfiguration=2, each strip or tile covers the same
	image area despite subsampling; that is, the total number of strips
	or tiles in the image is the same for each component.  Therefore
	strips or tiles of the subsampled components contain fewer samples
	than strips or tiles of the luminance component.

	If there are extra samples per pixel (see field ExtraSamples),
	these data channels have the same number of samples as the
	luminance component.

Rewrite the YCbCrSubSampling field description (pp 91-92) as follows
(largely to eliminate possibly-misleading references to
ImageWidth/ImageLength of the subsampled components):

	(first paragraph unchanged)

	The two elements of this field are defined as follows:

	Short 0: ChromaSubsampleHoriz:

	1 = there are equal numbers of luma and chroma samples horizontally.

	2 = there are twice as many luma samples as chroma samples
	horizontally.

	4 = there are four times as many luma samples as chroma samples
	horizontally.

	Short 1: ChromaSubsampleVert:

	1 = there are equal numbers of luma and chroma samples vertically.

	2 = there are twice as many luma samples as chroma samples
	vertically.

	4 = there are four times as many luma samples as chroma samples
	vertically.

	ChromaSubsampleVert shall always be less than or equal to
	ChromaSubsampleHoriz.  Note that Cb and Cr have the same sampling
	ratios.

	In a strip TIFF file, RowsPerStrip is required to be an integer
	multiple of ChromaSubSampleVert (unless RowsPerStrip >=
	ImageLength, in which case its exact value is unimportant).
	If ImageWidth and ImageLength are not multiples of
	ChromaSubsampleHoriz and ChromaSubsampleVert respectively, then the
	source data shall be padded to the next integer multiple of these
	values before downsampling.

	In a tiled TIFF file, TileWidth must be an integer multiple of
	ChromaSubsampleHoriz and TileLength must be an integer multiple of
	ChromaSubsampleVert.  Padding will occur to tile boundaries.

	The default values of this field are [ 2,2 ].  Thus, YCbCr data is
	downsampled by default!
0707010004135c000081a40000000000000000000000014cc7a4260000a0890000010000010006ffffffffffffffff0000003400000000root/usr/local/share/doc/tiff-3.9.4/html/build.html Building the TIFF Software Distribution

Building the Software Distribution


This chapter contains step-by-step instructions on how to configure and build the TIFF software distribution. The software is most easily built on a UNIX system, but with a little bit of work it can easily be built and used on other non-UNIX platforms.

Building on a UNIX System

To build the software on a UNIX system you need to first run the configure shell script that is located in the top level of the source directory. This script probes the target system for necessary tools and functions and constructs a build environment in which the software may be compiled. Once configuration is done, you simply run make (or gmake) to build the software and then make install to do the installation; for example:
hyla% cd tiff-v3.4beta099
hyla% ./configure
    ...lots of messages...
hyla% make
    ...lots of messages...
hyla# make install
Supplied makefiles are depend on GNU make utility, so you will need the one. Depending on your installation make command may invoke standard system make and gmake invoke GNU make. In this case you should use former. If you don't have make at all, but only gmake, you should export environment variable MAKE=gmake before ./configure.

In general, the software is designed such that the following should be ``make-able'' in each directory:

make [all]      build stuff
make install    build&install stuff
make clean      remove .o files, executables and cruft
make distclean  remove everything, that can be recreated
Note that after running "make distclean" the configure script must be run again to create the Makefiles and other make-related files.

Build Trees

There are two schemes for configuring and building the software. If you intend to build the software for only one target system, you can configure the software so that it is built in the same directories as the source code.
hyla% cd tiff-v3.4beta099
hyla% ls
COPYRIGHT       VERSION         config.sub      dist            man
Makefile.in     config.guess    configure       html            port
README          config.site     contrib         libtiff         tools
hyla% ./configure

Otherwise, you can configure a build tree that is parallel to the source tree hierarchy but which contains only configured files and files created during the build procedure.

hyla% cd tiff-v3.4beta099
hyla% mkdir obj obj/mycpu
hyla% cd obj/mycpu
hyla% ../../configure
This second scheme is useful for:
  • building multiple targets from a single source tree
  • building from a read-only source tree (e.g. if you receive the distribution on CD-ROM)

Configuration Options

The configuration process is critical to the proper compilation, installation, and operation of the software. The configure script runs a series of tests to decide whether or not the target system supports required functionality and, if it does not, whether it can emulate or workaround the missing functions. This procedure is fairly complicated and, due to the nonstandard nature of most UNIX systems, prone to error. The first time that you configure the software for use you should check the output from the configure script and look for anything that does not make sense for your system.

A second function of the configure script is to set the default configuration parameters for the software. Of particular note are the directories where the software is to be installed. By default the software is installed in the /usr/local hierarchy. To change this behaviour the appropriate parameters can be specified on the command line to configure. Run ./configure --help to get a list of possible options. Installation related options are shown below.


Installation directories:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [/usr/local]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [PREFIX]

By default, `make install' will install all the files in
`/usr/local/bin', `/usr/local/lib' etc.  You can specify
an installation prefix other than `/usr/local' using `--prefix',
for instance `--prefix=$HOME'.

For better control, use the options below.

Fine tuning of the installation directories:
  --bindir=DIR           user executables [EPREFIX/bin]
  --sbindir=DIR          system admin executables [EPREFIX/sbin]
  --libexecdir=DIR       program executables [EPREFIX/libexec]
  --datadir=DIR          read-only architecture-independent data [PREFIX/share]
  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
  --libdir=DIR           object code libraries [EPREFIX/lib]
  --includedir=DIR       C header files [PREFIX/include]
  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
  --infodir=DIR          info documentation [PREFIX/info]
  --mandir=DIR           man documentation [PREFIX/man]

Program names:
  --program-prefix=PREFIX            prepend PREFIX to installed program names
  --program-suffix=SUFFIX            append SUFFIX to installed program names
  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names


Configuring Optional Packages/Support

The TIFF software comes with several packages that are installed only as needed, or only if specifically configured at the time the configure script is run. Packages can be configured via the configure script commandline parameters.
Static/Shared Objects Support
--enable-shared[=PKGS]    build shared libraries [default=yes]
--enable-static[=PKGS]    build static libraries [default=yes]

These options control whether or not to configure the software to build a shared and static binaries for the TIFF library. Use of shared libraries can significantly reduce the disk space needed for users of the TIFF software. If shared libarries are not used then the code is statically linked into each application that uses it. By default both types of binaries is configured.

--enable-rpath    Enable runtime linker paths (-R libtool option)

Add library directories (see other options below) to the TIFF library run-time linker path.

JPEG Support
--disable-jpeg    disable IJG JPEG library usage (required for JPEG compression, enabled by default) --with-jpeg-include-dir=DIR    location of IJG JPEG library headers --with-jpeg-lib-dir=DIR    location of IJG JPEG library binary)
The JPEG package enables support for the handling of TIFF images with JPEG-encoded data. Support for JPEG-encoded data requires the Independent JPEG Group (IJG) libjpeg distribution; this software is available at ftp.uu.net:/graphics/jpeg/. configure script automatically tries to search the working IJG JPEG installation. If it fails to find library, JPEG support will be automatically disabled.If you want specify the exact paths to library binary and headers, use above switches for that.
ZIP Support
The ZIP support enables support for the handling of TIFF images with deflate-encoded data. Support for deflate-encoded data requires the freely available zlib distribution written by Jean-loup Gailly and Mark Adler; this software is available at ftp.uu.net:/pub/archiving/zip/zlib/ (or try quest.jpl.nasa.gov:/beta/zlib/). If ZIP support is enabled the DIRS_LIBINC and DIR_GZLIB parameters should also be set (see below). By default this package is not configured.

A Sample Configuration Session

This section shows a sample configuration session and describes the work done. The session is shown indented in a fixed width font with user-supplied input in a bold font. Comments are shown in a normal or italic font. This session was collected on a 486 machine running BSDI 1.1.

wullbrandt% mkdir tiff
wullbrandt% cd tiff
wullbrandt% ln -s /hosts/oxford/usr/people/sam/tiff src

A build tree separate from the source tree is used here. In fact, in this case the distribution is accessed from a read-only NFS-mounted filesystem.

wullbrandt% src/configure
Configuring TIFF Software v3.4beta015.

Reading site-wide parameters from ../tiff-v3.4beta015/config.site.
Reading local parameters from config.local.
Gosh, aren't you lucky to have a i386-unknown-bsdi1.1 system!

Note that configure announces the distribution version and the deduced target configuration (i386-unknown-bsdi1.1 here).

Using /usr/local/bin/gcc for a C compiler (set CC to override).
Looks like /usr/local/bin/gcc supports the -g option.
Using " -g" for C compiler options.

configure checked the normal shell search path for potential ANSI C compilers. The compiler is selected according to it properly compiling a small ANSI C test program. A specific compiler may be requested by setting the CC environment variable to the appropriate pathname, by supplying the parameter on the command line, e.g. -with-CC=gcc, or by setting CC in a configuration file.

Note that an ANSI C compiler is required to build the software. If a C compiler requires options to enable ANSI C compilation, they can be specified with the ENVOPTS parameter.

Once a compiler is selected configure checks to see if the compiler accepts a -g option to enable the generation of debugging symbols, and if the compiler includes an ANSI C preprocessor.


Using /usr/ucb/make to configure the software.

Next various system-specific libraries that may or may not be needed are checked for (none are needed in this case). If your system requires a library that is not automatically included it can be specified by setting the MACHDEPLIBS parameter.

Creating port.h. The port.h file is included by all the C code in the library (but not the tools). It includes definitions for functions and type definitions that are missing from system include files, #defines to enable or disable system-specific functionality, and other odds and ends.


Creating libtiff/port.h with necessary definitions.
... using LSB2MSB bit order for your i386 cpu
... using big-endian byte order for your i386 cpu
... configure use of mmap for memory-mapped files
... O_RDONLY is in <fcntl.h>
... using double for promoted floating point parameters
... enabling use of inline functions
Done creating libtiff/port.h.

This file can take a long time to create so configure generates the file only when it is needed, either because the file does not exist or because a different target or compiler is to be used. Note that running "make distclean" in the top-level directory of the build tree will remove the port.h file (along with all the other files generated by configure).

Selecting emulated library functions. Certain library functions used by the tools are not present on all systems and can be emulated using other system functionality. configure checks for the presence of such functions and if they are missing, will configure emulation code from the port directory to use instead. Building the TIFF software on unsupported systems may require adding to the code to the port directory.


Checking system libraries for functionality to emulate.
Done checking system libraries.

If a routine must be emulated and configure does not automatically check for it, the routine name can be specified using the PORTFUNCS parameter. To add emulation support for a new function foo, create a file port/foo.c that contains the emulation code and then set PORTFUNCS=foo in a configuration file or modify the configure script to automatically check for the missing function.

Checking for Dynamic Shared Object (DSO) support.
Done checking for DSO support.

If the DSO package is enabled (DSO=auto or DSO=yes), then configure will verify the system and compiler are capable of constructing SVR4-style DSO's in the expected way. Note that while a system may support DSO's the compiler may not be capable of generating the required position-independent code and/or the compiler may not pass the needed options through to the loader.

Selecting utility programs. configure locates various system utility programs that are used during installation of the software.


Selecting programs used during installation.
Looks like mv supports the -f option to force a move.
Looks like /bin/ln supports the -s option to create a symbolic link.
Done selecting programs.

Selecting default configuration parameters. The remainder of the work done by configure involves setting up configuration parameters that control the placement and setup of files during the installation procedure.


Selecting default TIFF configuration parameters.

Looks like manual pages go in /usr/contrib/man.
Looks like manual pages should be installed with bsd-nroff-gzip-0.gz.

TIFF configuration parameters are:

[ 1] Directory for tools:               /usr/contrib/bin
[ 2] Directory for libraries:           /usr/contrib/lib
[ 3] Directory for include files:       /usr/contrib/include
[ 4] Directory for manual pages:        /usr/contrib/man
[ 5] Manual page installation scheme:   bsd-nroff-gzip-0.gz

Are these ok [yes]? 

At this point you can interactively modify any of the displayed parameters. Hitting a carriage return or typing yes will accept the current parameters. Typing one of the number displayed along the left hand side causes configure to prompt for a new value of the specified parameter. Typing anything else causes configure to prompt for a new value for each parameter. In general hitting carriage return will accept the current value and typing anything that is unacceptable will cause a help message to be displayed. A description of each of the configuration parameters is given below.

Once acceptable parameters are setup configure will generate all the files that depend on these parameters. Note that certain files may or may not be created based on the configuration of optional packages and/or the functions supported by target system.


Creating Makefile from ../tiff-v3.4beta015/Makefile.in
Creating libtiff/Makefile from ../tiff-v3.4beta015/libtiff/Makefile.in
Creating man/Makefile from ../tiff-v3.4beta015/man/Makefile.in
Creating tools/Makefile from ../tiff-v3.4beta015/tools/Makefile.in
Creating port/install.sh from ../tiff-v3.4beta015/port/install.sh.in
Done.


Shared Library Support

It is desirable to make the TIFF library be a shared object on systems that have support for shared libraries. Unfortunately the rules to use to build a shared library vary between operating systems and even compilers. The distributed software includes support for building a shared version of the library on a number of different systems. This support is split between rules in the file libtiff/Makefile.in that construct the shared library and checks done by the configure script to verify that the expected rules are supported by compilation tools for the target system.

To add new support for building a shared library both these files must be updated. In the configure script search for the section where the autoconfiguration setting of the DSO parameter is handled and add a new case for the target system that sets the DSOSUF, DSOLD, DSOOPTS, and LIBCOPTS options as appropriate for the system. DSOSUF specifies the filename suffix used for the shared library (e.g. ``.so'' for Dynamic Shared Objects on most SVR4-based systems). DSOLD specifies the program to use to build the shared library from a compiled object file; typically ``${LD}'' though on some systems it is better to use the C compiler directly so system-dependent options and libraries are automatically supplied. DSOOPTS are options that must be specified to DSOLD when building the shared library. LIBCOPTS are options to pass to the C compiler when constructing a relocatable object file to include in a shared library; e.g. ``-K PIC'' on a Sun system. The DSO parameter must also be set to a unique label that identifies the target system and compilation tools. This label is used to select a target in libtiff/Makefile.in to do the actual work in building the shared library. Finally, to complete support for the shared library added the appropriate rules to libtiff/Makefile.in under the target specified in the configure script.


Building the Software under Windows 95/98/NT/2000 with MS VC++

With Microsoft Visual C++ installed, and properly configured for commandline use (you will likely need to source VCVARS32.BAT in AUTOEXEC.bAT or somewhere similar) you should be able to use the provided makefile.vc.

The source package is delivered using Unix line termination conventions, which work with MSVC but do not work with Windows 'notepad'. If you use unzip from the Info-Zip package, you can extract the files using Windows normal line termination conventions with a command similar to:

  unzip -aa -a tiff-3.7.4.zip

By default libtiff expects that a pre-built zlib and jpeg library are provided by the user. If this is not the case, then you may edit libtiff\tiffconf.h using a text editor (e.g. notepad) and comment out the entries for JPEG_SUPPORT, PIXARLOG_SUPPORT, and ZIP_SUPPORT. Ignore the comment at the top of the file which says that it has no influence on the build, because the statement is not true for Windows. However, by taking this approach, libtiff will not be able to open some TIFF files.

To build using the provided makefile.vc you may use:

  C:\tiff-3.7.4> nmake /f makefile.vc clean
  C:\tiff-3.7.4> nmake /f makefile.vc

    or (the hard way)

  C:\tiff-3.7.4> cd port
  C:\tiff-3.7.4\port> nmake /f makefile.vc clean
  C:\tiff-3.7.4\port> nmake /f makefile.vc
  C:\tiff-3.7.4> cd ../libtiff
  C:\tiff-3.7.4\libtiff> nmake /f makefile.vc clean
  C:\tiff-3.7.4\libtiff> nmake /f makefile.vc
  C:\tiff-3.7.4\libtiff> cd ..\tools
  C:\tiff-3.7.4\tools> nmake /f makefile.vc clean
  C:\tiff-3.7.4\tools> nmake /f makefile.vc

This will build the library file libtiff\libtiff\libtiff.lib. This can be used in Win32 programs. You may want to adjust the build options before start compiling. All parameters contained in the nmake.opt file.This is a plain text file you can open with your favorite text editor.

The makefile also builds a DLL (libtiff.dll) with an associated import library (libtiff_i.lib). Any builds using libtiff will need to include the LIBTIFF\LIBTIFF directory in the include path.

The libtiff\tools\makefile.vc should build .exe's for all the standard TIFF tool programs.


Building the Software under MS/DOS with the DJGPP v2 compiler

[From the file contrib/dosdjgpp/README.]

The directory contrib/dosdjgpp contains the files necessary to build the library and tools with the DJGPP v2 compiler under MSDOS.

All you have to do is copy the files in the directory into the respective directories and run make. If you want, you can use the conf.bat script to do that for you, make sure that the file is stored with MSDOS text EOL-convention (CR/LF), otherwise the command.com will not do anything.

Note that you probably will not be able to build the library with the v1.x versions of djgpp, due to two problems. First, the top makefile calls a sub-make for each directory and you are likely to run out of memory, since each recursive invocation of a djgpp v1.x program requires about 130k, to avoid that, you can enter the directories manually and call make (well, there are only two dirs). The 2nd problem is that djgpp 1.x doesn't call the coff2exe (stubify) program when creating an executable. This means that all programs compiled are not converted to exe and consequently are not available for calling directly. For the tools directory, you can just call coff2exe for each program after make finishes, but in the libtiff directory, a few programs are created during the make process that have to be called for make to continue (e.g. mkg3states). Make will probably report an error at each such stage. To fix that, either add a coff2exe call before each program is called or call coff2exe manually and rerun make (there 2-3 such programs).


Building the Software on a Macintosh with MPW

The directory contrib/mac-mpw contains support for compiling the library and tools under the MPW Shell on a Macintosh system. This support was contributed by Niles Ritter (ndr@tazboy.jpl.nasa.gov).

[From the file contrib/mac-mpw/README.]

This directory contains all of the utilities and makefile source to build the LIBTIFF library and tools from the MPW Shell. The file BUILD.mpw in this directory is an executable script which uses all of these files to create the MPW makefiles and run them.

The <file>.make files are not MPW makefiles as such, but are when run through the "mactrans" program, which turns the ascii "%nn" metacharacters into the standard weird MPW make characters.

This translation trick is necessary to protect the files when they are put into unix tarfiles, which tend to mangle the special characters.


Building the Software on a Macintosh with CodeWarrior

The directory contrib/mac-cw contains support for compiling the library and tools with MetroWerks CodeWarrior 6.1 on a Macintosh system. This support was contributed by Niles Ritter (ndr@tazboy.jpl.nasa.gov).

[From the file contrib/mac-cw/README.] In this directory you will find a Makefile.script Applescript file, which should be run in order to build the libtiff code using MetroWerks CodeWarrior. Refer to the "metrowerks.note" instructions on building the library for 68k and PowerPC native code, as well as building some of the libtiff tools, which are rather unix-like, but at least give an example of how to link everything together.


Building the Software on a VMS System

The VMS port was done by Karsten Spang (krs@kampsax.dk), who also "sort of" maintains it. The VMS specific files are not in the main directories. Instead they are placed under [.CONTRIB.VMS...] in the distribution tree. Installation: It is assumed that you have unpacked the tar file into a VMS directory tree, in this text called DISK:[TIFF].
  1. Move the VMS specific files to their proper directories.
    $ SET DEFAULT DISK:[TIFF.CONTRIB.VMS]
    $ RENAME [.LIBTIFF]*.* [-.-.LIBTIFF]
    $ RENAME [.TOOLS]*.* [-.-.TOOLS]
    
  2. Compile the library.
    $ SET DEFAULT DISK:[TIFF.LIBTIFF]
    $ @MAKEVMS
    
  3. Compile the tools.
    $ SET DEFAULT DISK:[TIFF.TOOLS]
    $ @MAKEVMS
    
  4. Define the programs.
    $ DEFINE TIFFSHR DISK:[TIFF.LIBTIFF]TIFFSHR
    $ FAX2PS    :==$DISK:[TIFF.TOOLS]FAX2PS
    $ FAX2TIFF  :==$DISK:[TIFF.TOOLS]FAX2TIFF
    $ GIF2TIFF  :==$DISK:[TIFF.TOOLS]GIF2TIFF
    $ PAL2RGB   :==$DISK:[TIFF.TOOLS]PAL2RGB
    $ PPM2TIFF  :==$DISK:[TIFF.TOOLS]PPM2TIFF
    $ RAS2TIFF  :==$DISK:[TIFF.TOOLS]RAS2TIFF
    $ RGB2YCBCR :==$DISK:[TIFF.TOOLS]RGB2YCBCR
    $ THUMBNAIL :==$DISK:[TIFF.TOOLS]THUMBNAIL
    $ TIFF2BW   :==$DISK:[TIFF.TOOLS]TIFF2BW
    $ TIFF2PS   :==$DISK:[TIFF.TOOLS]TIFF2PS
    $ TIFFCMP   :==$DISK:[TIFF.TOOLS]TIFFCMP
    $ TIFFCP    :==$DISK:[TIFF.TOOLS]TIFFCP
    $ TIFFDITHER:==$DISK:[TIFF.TOOLS]TIFFDITHER
    $ TIFFDUMP  :==$DISK:[TIFF.TOOLS]TIFFDUMP
    $ TIFFINFO  :==$DISK:[TIFF.TOOLS]TIFFINFO
    $ TIFFMEDIAN:==$DISK:[TIFF.TOOLS]TIFFMEDIAN
    $ TIFFSPLIT :==$DISK:[TIFF.TOOLS]TIFFSPLIT
    $ YCBCR     :==$DISK:[TIFF.TOOLS]YCBCR
    
You will want to add these lines to your LOGIN.COM file, after changing the name of the directory that you have used on your machine.

This release has been tested on OpenVMS/VAX 5.5-2, using VAX C 3.2. A previous release was tested under OpenVMS/AXP ?.? using DEC C ?.?, it is believed that this release as well works on AXP. The code contains some GNU C specific things. This does *not* imply, however, that the VAX/GCC configuration has been tested, *it has not*.

The command procedures (MAKEVMS.COM) for building the library and tools, is believed to choose the correct options for the VAX and AXP cases automatically.

On the AXP, IEEE floating point is used by default. If you want VAX floating point, remove the /FLOAT=IEEE_FLOAT qualifier, and change HAVE_IEEEFP=1 to HAVE_IEEEFP=0 in the MAKEVMS.COM files in both the libtiff and tools directories.

Compiling your own program on a VMS system:

When compiling a source file in which you "#include <tiffio.h>", use the following command
    $ CC/INCLUDE=DISK:[TIFF.LIBTIFF]
This ensures that the header file is found. On the AXP, also add /FLOAT=IEEE_FLOAT (if used when building the library).

Linking your own program to the TIFF library on a VMS system:

You can link to the library in two ways: Either using the shareable library, or using the object library. On the VAX these possibilities are:
  1. Using the shareable TIFF library.
    $ LINK MY_PROGRAM,DISK:[TIFF.LIBTIFF]TIFF/OPTIONS,SYS$INPUT:/OPTIONS
        SYS$SHARE:VAXCRTL/SHAREABLE
    
  2. Using the TIFF object library.
    $ LINK MY_PROGRAM, -
        DISK:[TIFF.LIBTIFF]TIFF/LIBRARY/INCLUDE=(TIF_FAX3SM,TIF_CODEC), -
        SYS$INPUT:/OPTIONS
        SYS$SHARE:VAXCRTL/SHAREABLE
    
On AXP (and possibly also using DEC C on VAX) the corresponding commands are
  1. Using the shareable TIFF library.
    $ LINK MY_PROGRAM,DISK:[TIFF.LIBTIFF]TIFF/OPTIONS
    
  2. Using the TIFF object library.
    $ LINK MY_PROGRAM,DISK:[TIFF.LIBTIFF]TIFF/LIBRARY
    
Method 1 uses the shortest link time and smallest .EXE files, but it requires that TIFFSHR is defined as above at link time and at run time. Using the compilation procedure above, the tools are linked in this way.

Method 2 gives somewhat longer link time and larger .EXE files, but does not require TIFFSHR to be defined. This method is recommended if you want to run your program on another machine, and for some reason don't want to have the library on that machine. If you plan to have more than one program (including the tools) on the machine, it is recommended that you copy the library to the other machine and use method 1.


Building the Software on an Acorn RISC OS system

The directory contrib/acorn contains support for compiling the library under Acorn C/C++ under Acorn's RISC OS 3.10 or above. Subsequent pathnames will use the Acorn format: The full-stop or period character is a pathname delimeter, and the slash character is not interpreted; the reverse position from Unix. Thus "libtiff/tif_acorn.c" becomes "libtiff.tif_acorn/c".

This support was contributed by Peter Greenham. (peter@enlarion.demon.co.uk).

Installing LibTIFF:

LIBTIFF uses several files which have names longer than the normal RISC OS maximum of ten characters. This complicates matters. Maybe one day Acorn will address the problem and implement long filenames properly. Until then this gets messy, especially as I'm trying to do this with obeyfiles and not have to include binaries in this distribution.

First of all, ensure you have Truncate configured on (type *Configure Truncate On)

Although it is, of course, preferable to have long filenames, LIBTIFF can be installed with short filenames, and it will compile and link without problems. However, getting it there is more problematic. contrib.acorn.install is an installation obeyfile which will create a normal Acorn-style library from the source (ie: with c, h and o folders etc.), but needs the distribution library to have been unpacked into a location which is capable of supporting long filenames, even if only temporarily.

My recommendation, until Acorn address this problem properly, is to use Jason Tribbeck's LongFilenames, or any other working system that gives you long filenames, like a nearby NFS server for instance.

If you are using Longfilenames, even if only temporarily to install LIBTIFF, unpack the TAR into a RAMDisc which has been longfilenamed (ie: *addlongfs ram) and then install from there to the hard disk. Unfortunately Longfilenames seems a bit unhappy about copying a bunch of long-named files across the same filing system, but is happy going between systems. You'll need to create a ramdisk of about 2Mb.

Now you can run the installation script I've supplied (in contrib.acorn), which will automate the process of installing LIBTIFF as an Acorn-style library. The syntax is as follows:

install <source_dir> <dest_dir>

Install will then create <dest_dir> and put the library in there. For example, having used LongFilenames on the RAMDisk and unpacked the library into there, you can then type:

Obey RAM::RamDisc0.$.contrib.acorn.install RAM::RamDisc0.$ ADFS::4.$.LIBTIFF

It doesn't matter if the destination location can cope with long filenames or not. The filenames will be truncated if necessary (*Configure Truncate On if you get errors) and all will be well.

Compiling LibTIFF:

Once the LibTIFF folder has been created and the files put inside, making the library should be just a matter of running 'SetVars' to set the appropriate system variables, then running 'Makefile'.

OSLib

OSLib is a comprehensive API for RISC OS machines, written by Jonathan Coxhead of Acorn Computers (although OSLib is not an official Acorn product). Using the OSLib SWI veneers produces code which is more compact and more efficient than code written using _kernel_swi or _swi. The Acorn port of LibTIFF can take advantage of this if present. Edit the Makefile and go to the Static dependencies section. The first entry is:

# Static dependencies:
@.o.tif_acorn:   @.c.tif_acorn
        cc $(ccflags) -o @.o.tif_acorn @.c.tif_acorn 

Change the cc line to:

        cc $(ccflags) -DINCLUDE_OSLIB -o @.o.tif_acorn @.c.tif_acorn 

Remember, however, that OSLib is only recommended for efficiency's sake. It is not required.


Building the Software on Other Systems

This section contains information that might be useful if you are working on a non-UNIX system that is not directly supported. All library-related files described below are located in the libtiff directory.

The library requires two files that are generated on-the-fly. The file tif_fax3sm.c has the state tables for the Group 3 and Group 4 decoders. This file is generated by the mkg3states program on a UNIX system; for example,


cd libtiff
cc -o mkg3states mkg3states.c
rm -f tif_fax3sm.c
./mkg3states -c const tif_fax3sm.c

The -c option can be used to control whether or not the resutling tables are generated with a const declaration. The -s option can be used to specify a C storage class for the table declarations. The -b option can be used to force data values to be explicitly bracketed with ``{}'' (apparently needed for some MS-Windows compilers); otherwise the structures are emitted in as compact a format as possible. Consult the source code for this program if you have questions.

The second file required to build the library, version.h, contains the version information returned by the TIFFGetVersion routine. This file is built on most systems using the mkversion program and the contents of the VERSION and tiff.alpha files; for example,

cd libtiff
cc -o mkversion mkversion.c
rm -f version.h
./mkversion -v ../VERSION -a ../dist/tiff.alpha version.h

Otherwise, when building the library on a non-UNIX system be sure to consult the files tiffcomp.h and tiffconf.h. The former contains system compatibility definitions while the latter is provided so that the software configuration can be controlled on systems that do not support the make facility for building the software.

Systems without a 32-bit compiler may not be able to handle some of the codecs in the library; especially the Group 3 and 4 decoder. If you encounter problems try disabling support for a particular codec; consult the documentation.

Programs in the tools directory are written to assume an ANSI C compilation environment. There may be a few POSIX'isms as well. The code in the port directory is provided to emulate routines that may be missing on some systems. On UNIX systems the configure script automatically figures out which routines are not present on a system and enables the use of the equivalent emulation routines from the port directory. It may be necessary to manually do this work on a non-UNIX system.


Checking out the Software

Assuming you have working versions of tiffgt and tiffsv, you can just use them to view any of the sample images available for testing (see the section on obtaining the test images). Otherwise, you can do a cursory check of the library with the tiffcp and tiffcmp programs. For example,

tiffcp -lzw cramps.tif x.tif
tiffcmp cramps.tif x.tif

(tiffcmp should be silent if the files compare correctly).


Table of Contents

The following files makup the core library:
libtiff/tiff.h                  TIFF spec definitions
libtiff/tiffcomp.h              non-UNIX OS-compatibility definitions
libtiff/tiffconf.h              non-UNIX configuration definitions
libtiff/tiffio.h                public TIFF library definitions
libtiff/tiffiop.h               private TIFF library definitions
libtiff/t4.h                    CCITT Group 3/4 code tables+definitions
libtiff/tif_dir.h               private defs for TIFF directory handling
libtiff/tif_fax3.h              CCITT Group 3/4-related definitions
libtiff/tif_predict.h           private defs for Predictor tag support
libtiff/uvcode.h                LogL/LogLuv codec-specific definitions
libtiff/version.h               version string (generated by Makefile)

libtiff/tif_acorn.c             Acorn-related OS support
libtiff/tif_apple.c             Apple-related OS support
libtiff/tif_atari.c             Atari-related OS support
libtiff/tif_aux.c               auxilary directory-related functions
libtiff/tif_close.c             close an open TIFF file
libtiff/tif_codec.c             configuration table of builtin codecs
libtiff/tif_compress.c          compression scheme support
libtiff/tif_dir.c               directory tag interface code
libtiff/tif_dirinfo.c           directory known tag support code
libtiff/tif_dirread.c           directory reading code
libtiff/tif_dirwrite.c          directory writing code
libtiff/tif_dumpmode.c          "no" compression codec
libtiff/tif_error.c             library error handler
libtiff/tif_fax3.c              CCITT Group 3 and 4 codec
libtiff/tif_fax3sm.c            G3/G4 state tables (generated by mkg3states)
libtiff/tif_flush.c             i/o and directory state flushing
libtiff/tif_getimage.c          TIFFRGBAImage support
libtiff/tif_jpeg.c              JPEG codec (interface to the IJG distribution)
libtiff/tif_luv.c               SGI LogL/LogLuv codec
libtiff/tif_lzw.c               LZW codec
libtiff/tif_msdos.c             MSDOS-related OS support
libtiff/tif_next.c              NeXT 2-bit scheme codec (decoding only)
libtiff/tif_open.c              open and simply query code
libtiff/tif_packbits.c          Packbits codec
libtiff/tif_pixarlog.c          Pixar codec
libtiff/tif_predict.c           Predictor tag support
libtiff/tif_print.c             directory printing support
libtiff/tif_read.c              image data reading support
libtiff/tif_strip.c             some strip-related code
libtiff/tif_swab.c              byte and bit swapping support
libtiff/tif_thunder.c           Thunderscan codec (decoding only)
libtiff/tif_tile.c              some tile-related code
libtiff/tif_unix.c              UNIX-related OS support
libtiff/tif_version.c           library version support
libtiff/tif_vms.c               VMS-related OS support
libtiff/tif_warning.c           library warning handler
libtiff/tif_win3.c              Windows-3.1-related OS support
libtiff/tif_win32.c             Win32 (95/98/NT) related OS support
libtiff/tif_write.c             image data writing support
libtiff/tif_zip.c               Deflate codec

libtiff/mkg3states.c            program to generate G3/G4 decoder state tables
libtiff/mkspans.c               program to generate black-white span tables
libtiff/mkversion.c             program to generate libtiff/version.h.

Last updated: $Date: 2005/12/24 22:25:05 $ 070701000413d9000081a40000000000000000000000014cc7a427000013620000010000010006ffffffffffffffff0000003900000000root/usr/local/share/doc/tiff-3.9.4/html/v3.7.0beta.html Changes in TIFF v3.7.0beta TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:


MAJOR CHANGES:
  • LZW compression enabled by default. You don't need the separate compression kit anymore.
  • bmp2tiff: Added new utility to convert Windows BMP files into TIFFs.
  • The first attempt to implement a test suite.


CHANGES IN THE SOFTWARE CONFIGURATION:
  • Many portability fixes in the new autotooled build suite.


CHANGES IN LIBTIFF:
  • libtiff/{tif_luv.c, tif_next.c, tif_thunder.c}: Several buffer overruns fixed, as noted by Chris Evans.
  • BSD data types (u_char, u_short, u_int, u_long) is no longer used internally in the libtiff. Should result in simpler configuration and better portability.
  • libtiff/tiff.h: Fix column tagging. Reference current Adobe XMP specification. Reference libtiff bug tracking system to submit private tag additions.
  • libtiff/tif_dirread.c: Don't reject to read tags of the SamplesPerPixel size when the tag count is greater than number of samples as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=576.
  • libtiff/{tiffio.h, tif_open.c}: Applied patches from Joris Van Damme to avoid requirement for tiffiop.h inclusion in some applications. Look for details here: http://www.asmail.be/msg0054799560.html.
  • libtiff/{tiffiop.h, tif_dirinfo.c}: Fixed problem with the static variable as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=593.
  • libtiff/tif_lzw.c: LZW compression code is merged back from the separate package. All libtiff tools are updated to not advertise an abcence of LZW support.
  • libtiff/tif_dir.c: Call TIFFError() instead of producing warnings when setting custom tags by value. Reported by Eric Fieleke.


CHANGES IN THE TOOLS:
  • tiff2ps: Avoid zero division in setupPageState() function; properly initialize array in PSDataBW().
  • tiff2pdf: Multiple bugfixes.
  • ras2tiff: Fixed issue with missed big-endian checks as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=586.
  • bmp2tiff: Added new utility to convert Windows BMP files into TIFFs.


CHANGES IN THE CONTRIB AREA:
  • No changes.
CHANGES IN THE LZW COMPRESSION KIT:
  • This one is not longer needed.
TIFF home page.

Last updated $Date: 2006/03/18 17:12:47 $. 070701000413d1000081a40000000000000000000000014cc7a427000013870000010000010006ffffffffffffffff0000003500000000root/usr/local/share/doc/tiff-3.9.4/html/v3.5.5.html Changes in TIFF v3.5.5 TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:


CHANGES IN THE SOFTWARE CONFIGURATION:
  • configure: added test for libc6 for linux targets. Bug reported by Stanislav Brabec
  • configure: fixed bugs in sed scripts (applied sed script s:/@:s;@:;s:/s;;:;: to configure). fix submitted by Stanislav Brabec
  • tools/iptcutil was not in files list, and wasn't being added to tar archive. Updated Makefile.in.
  • Added 3.5 docs to html/Makefile.in. Thanks to Stanislav Brabec
  • Fixed tools/tiffcmp so that stopondiff testing works. Patch care of Joseph Orost .
  • Added fax3sm_winnt.c to distribution list in Makefile.in.
  • Added libtiff/libtiff.def to TIFFILES distribution list.


CHANGES IN LIBTIFF:
  • tif_fax3.c: Fixed serious bug introduced during the uint16->uint32 conversion for the run arrays.
  • Set td_sampleformat default to SAMPLEFORMAT_UINT instead of SAMPLEFORMAT_VOID in TIFFDefaultDirectory() in tif_dir.c.
  • Added "GetDefaulted" support for TIFFTAG_SAMPLEFORMAT in tif_aux.c.
  • Patched tif_fax3.c so that dsp->runs is allocated a bit bigger to avoid overruns encountered with frle_bug.tif.
  • Modified tif_unix.c to support 2-4GB seeks if USE_64BIT_API is set to 1, and added default (off) setting in tiffconf.h. This should eventually be set by the configure script somehow. The original work on all these 2-4GB changes was done by Peter Smith (psmith@creo.com).
  • Modified tif_win32.c to support 2-4GB seeks.
  • tentatively changed toff_t to be unsigned instead of signed to facilitate support for 2-4GB files.
  • Updated a variety of files to use toff_t. Fixed some mixups between toff_t and tsize_t.
  • Set tif_rawdatasize to zero when freeing raw data buffer in TIFFWriteDirectory().
  • Enabled "REWRITE_HACK" in tif_write.c by default.
  • Fix bug in tif_write.c when switching between reading one directory and writing to another.
  • Made TIFFWriteCheck() public, and added TIFFCreateDirectory()
  • Added TIFFmemory(3t) functions to libtiff.def.
  • Added libtiff/libtiff.def to TIFFILES distribution list.


CHANGES IN THE TOOLS:
  • fax2ps: Fixed mixup of width and height in bounding box statement as per submission by Nalin Dahyabhai .
  • fax2ps: Modified printruns to take uint32 instead of uint16. Patch courtesy of Bernt Herd
  • Largely reimplemented contrib/addtiffo to avoid temp files, updating the TIFF file in place. Fixed a few other bugs to.
  • Altered descriptions in tools to reflect "by default" lzw not supported


CHANGES IN THE LZW COMPRESSION KIT
  • created mangle-src.sh -- sed scripts to munge src into LZW enabled format. Thanks to Stanislav Brabec
  • created Makefile
  • merged tif_dir.c with current source.
  • Created lzw compression kit, as a new CVS module (libtiff-lzw-compression-kit).
  • Updated index.html to note lzw compression kit.
TIFF home page.

Last updated $Date: 2004/11/26 14:37:20 $. 070701000413c6000081a40000000000000000000000014cc7a42700000cfd0000010000010006ffffffffffffffff0000003a00000000root/usr/local/share/doc/tiff-3.9.4/html/v3.4beta031.html Changes in TIFF v3.4beta031 TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:


CHANGES IN THE SOFTWARE CONFIGURATION:
  • configure now captures significantly more information in the config.log file and provides more information when it is unable to setup a configuration
  • support was added for building shared libraries on more systems: AIX, HPUX, Solaris, and Linux.
  • a new configuration parameter LIBCOPTS was added for passing arguments to the C compiler to use when building only the library; this is part of the enhanced support for building shared libraries
  • include files for optional packages that reside in /usr/include are now handled correctly
  • build trees may now be configured using either relative or absolute pathnames to the source distribution
  • several new configuration parameters were added, mainly for building shared libraries: DIST_MAJOR, DIST_MINOR, DIST_ALPHA, and DSOSUF_VERSION


CHANGES IN LIBTIFF:
  • the Deflate support has been revised: it requires version 0.99 of the zlib software distribution, the output format has changed and is incompatible with previous versions of this library (each strip now includes a header read and written by the zlib library)
  • the codec name printed by the TIFFPrintDirectory routine is now taken from the codec table instead of from a builtin table; this means that application-defined codecs are handled correctly
  • a new symbol was added that contains the library version number; this can be used to do a compile-time compatibility check of the library version


CHANGES IN THE MANUAL PAGES:
  • the creation and installation of manual pages was redone; it now implements the documented ``configuration scheme''
TIFF home page.

Sam Leffler / sam@engr.sgi.com Last updated $Date: 1999/08/09 20:21:21 $.
070701000413c2000081a40000000000000000000000014cc7a42700000a570000010000010006ffffffffffffffff0000003a00000000root/usr/local/share/doc/tiff-3.9.4/html/v3.4beta018.html Changes in TIFF v3.4beta018 TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:


CHANGES IN THE SOFTWARE CONFIGURATION:
  • configure now recognizes IRIX 6.x systems
  • configure now uses ENVOPTS when searching for an ANSI C compiler; this fixes a problem configuring the software under HP/UX with the native C compiler
  • configure now correctly recognizes memory-mapped files are supported under AIX


CHANGES IN LIBTIFF:
  • make install now properly installs the include files
  • some portability fixes from Bjorn Brox
  • the G3/G4 codec now warns about decoded rows that are longer than the image/tile width
  • changes from Frank Cringle to make the library work with the gcc-specific bounds checking software
  • miscellaneous fixes to TIFFPrintDirectory
  • bug fix to correct a problem where TIFFWriteRawStrip could not be used to automatically grow an image's length


CHANGES IN THE TOOLS:
  • fixes from Frank Cringle to update fax2tiff
  • portability fixes to tiff2bw and tiffcmp
  • tiffdump now uses the byte swapping routines in the library
TIFF home page.

Sam Leffler / sam@engr.sgi.com Last updated $Date: 1999/08/09 20:21:21 $.
070701000413dc000081a40000000000000000000000014cc7a427000020050000010000010006ffffffffffffffff0000003500000000root/usr/local/share/doc/tiff-3.9.4/html/v3.7.1.html Changes in TIFF v3.7.1 TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:


MAJOR CHANGES:
  • This is mostly bugfix release. Most important fix is the one related to wrong custom tag read/write code.


CHANGES IN THE SOFTWARE CONFIGURATION:
  • autogen.sh: aclocal and autoheader should be executed after libtoolize. Also add '-I .' to aclocal invocation to check current directory for macros.
  • nmake.opt: Link with the user32.lib in windowed mode. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=697
  • nmake.opt, makefile.vc: make it easier to rename the libtiff DLL.
  • configure, configure.ac: Added --enable-rpath option to embed linker paths into library binary.


CHANGES IN LIBTIFF:


CHANGES IN THE TOOLS:
  • fax2ps.c: Be able to extract the first page (#0). As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=690
  • tiff2ps.c: Fixed wrong variable data type when read Position tags (Tristan Hill).
  • tiff2ps.c: Fixed wrong variable data type when read Resolution tags (Peter Fales).
  • tiffset.c: Check the malloc return value (Dmitry V. Levin).


CHANGES IN THE CONTRIB AREA:
  • No changes.
Last updated $Date: 2004/12/20 19:31:44 $. 070701000413c5000081a40000000000000000000000014cc7a42700000ad10000010000010006ffffffffffffffff0000003a00000000root/usr/local/share/doc/tiff-3.9.4/html/v3.4beta029.html Changes in TIFF v3.4beta029 TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:


CHANGES IN THE SOFTWARE CONFIGURATION:
  • configure now relativizes pathname references given in -L options (as frequently specified when configuring ancillary packages)
  • problems related to configuring the software on Ultrix 4.4 have been corrected
  • the shell to use in Makefiles and scripts can now be set with the SCRIPT_SH configuration parameter
  • comments in config.site now correctly indicate how to setup the use of ancillary packages


CHANGES IN LIBTIFF:
  • mods for building the software on a Mac using the MetroWerks CodeWarrior compilers
  • a bug in the CCITT T.4/T.6 decoder was fixed where the last codeword in a strip/tile might not be decoded; this was seen only when decoding multi-strip images
  • a bug in the CCITT RLE codecs was fixed whereby the pseudo tags were not being properly registered


CHANGES IN THE CONTRIBUTED SOFTWARE:
  • contrib/mac-cw contains information and code from Niles Ritter <ndr@tazboy.jpl.nasa.gov> about building the software with the MetroWerks CodeWarrior compilers on Macintosh systems
TIFF home page.

Sam Leffler / sam@engr.sgi.com Last updated $Date: 1999/08/09 20:21:21 $.
070701000413ca000081a40000000000000000000000014cc7a427000007000000010000010006ffffffffffffffff0000003a00000000root/usr/local/share/doc/tiff-3.9.4/html/v3.4beta035.html Changes in TIFF v3.4beta035 TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:


CHANGES IN THE SOFTWARE CONFIGURATION:
  • support was added installing the HTML documentation
  • support was added for building the library as a DSO under FreeBSD


CHANGES IN LIBTIFF:
  • the interface to the mkversion program was restored to the form used prior to v3.4beta034
  • several portability problems for 16-bit systems were fixed
TIFF home page.

Sam Leffler / sam@engr.sgi.com Last updated $Date: 1999/08/09 20:21:21 $.
07070100041372000081a40000000000000000000000014cc7a42600004b240000010000010006ffffffffffffffff0000003800000000root/usr/local/share/doc/tiff-3.9.4/html/internals.html Modifying The TIFF Library

Modifying The TIFF Library

This chapter provides information about the internal structure of the library, how to control the configuration when building it, and how to add new support to the library. The following sections are found in this chapter:


Library Configuration

Information on compiling the library is given elsewhere in this documentation. This section describes the low-level mechanisms used to control the optional parts of the library that are configured at build time. Control is based on a collection of C defines that are specified either on the compiler command line or in a configuration file such as port.h (as generated by the configure script for UNIX systems) or tiffconf.h.

Configuration defines are split into three areas:

  • those that control which compression schemes are configured as part of the builtin codecs,
  • those that control support for groups of tags that are considered optional, and
  • those that control operating system or machine-specific support.

If the define COMPRESSION_SUPPORT is not defined then a default set of compression schemes is automatically configured:

  • CCITT Group 3 and 4 algorithms (compression codes 2, 3, 4, and 32771),
  • the Macintosh PackBits algorithm (compression 32773),
  • a 4-bit run-length encoding scheme from ThunderScan (compression 32809),
  • a 2-bit encoding scheme used by NeXT (compression 32766), and
  • two experimental schemes intended for images with high dynamic range (compression 34676 and 34677).

To override the default compression behaviour define COMPRESSION_SUPPORT and then one or more additional defines to enable configuration of the appropriate codecs (see the table below); e.g.

    #define	COMPRESSION_SUPPORT
    #define	CCITT_SUPPORT
    #define	PACKBITS_SUPPORT
    
Several other compression schemes are configured separately from the default set because they depend on ancillary software packages that are not distributed with libtiff.

Support for JPEG compression is controlled by JPEG_SUPPORT. The JPEG codec that comes with libtiff is designed for use with release 5 or later of the Independent JPEG Group's freely available software distribution. This software can be retrieved from the directory ftp.uu.net:/graphics/jpeg/.

NOTE: Enabling JPEG support automatically enables support for the TIFF 6.0 colorimetry and YCbCr-related tags.

Experimental support for the deflate algorithm is controlled by DEFLATE_SUPPORT. The deflate codec that comes with libtiff is designed for use with version 0.99 or later of the freely available libz library written by Jean-loup Gailly and Mark Adler. The data format used by this library is described in the files zlib-3.1.doc, and deflate-1.1.doc, available in the directory ftp.uu.net:/pub/archiving/zip/doc. The library can be retried from the directory ftp.uu.net:/pub/archiving/zip/zlib/ (or try quest.jpl.nasa.gov:/beta/zlib/).

NOTE: The deflate algorithm is experimental. Do not expect to exchange files using this compression scheme; it is included only because the similar, and more common, LZW algorithm is claimed to be governed by licensing restrictions.

By default tiffconf.h defines COLORIMETRY_SUPPORT, YCBCR_SUPPORT, and CMYK_SUPPORT.

DefineDescription
CCITT_SUPPORT CCITT Group 3 and 4 algorithms (compression codes 2, 3, 4, and 32771)
PACKBITS_SUPPORT Macintosh PackBits algorithm (compression 32773)
LZW_SUPPORT Lempel-Ziv & Welch (LZW) algorithm (compression 5)
THUNDER_SUPPORT 4-bit run-length encoding scheme from ThunderScan (compression 32809)
NEXT_SUPPORT 2-bit encoding scheme used by NeXT (compression 32766)
OJPEG_SUPPORT obsolete JPEG scheme defined in the 6.0 spec (compression 6)
JPEG_SUPPORT current JPEG scheme defined in TTN2 (compression 7)
ZIP_SUPPORT experimental Deflate scheme (compression 32946)
PIXARLOG_SUPPORT Pixar's compression scheme for high-resolution color images (compression 32909)
SGILOG_SUPPORT SGI's compression scheme for high-resolution color images (compression 34676 and 34677)
COLORIMETRY_SUPPORT support for the TIFF 6.0 colorimetry tags
YCBCR_SUPPORT support for the TIFF 6.0 YCbCr-related tags
CMYK_SUPPORT support for the TIFF 6.0 CMYK-related tags
ICC_SUPPORT support for the ICC Profile tag; see The ICC Profile Format Specification, Annex B.3 "Embedding ICC Profiles in TIFF Files"; available at http://www.color.org


General Portability Comments

This software is developed on Silicon Graphics UNIX systems (big-endian, MIPS CPU, 32-bit ints, IEEE floating point). The configure shell script generates the appropriate include files and make files for UNIX systems. Makefiles exist for non-UNIX platforms that the code runs on -- this work has mostly been done by other people.

In general, the code is guaranteed to work only on SGI machines. In practice it is highly portable to any 32-bit or 64-bit system and much work has been done to insure portability to 16-bit systems. If you encounter portability problems please return fixes so that future distributions can be improved.

The software is written to assume an ANSI C compilation environment. If your compiler does not support ANSI function prototypes, const, and <stdarg.h> then you will have to make modifications to the software. In the past I have tried to support compilers without const and systems without <stdarg.h>, but I am no longer interested in these antiquated environments. With the general availability of the freely available GCC compiler, I see no reason to incorporate modifications to the software for these purposes.

An effort has been made to isolate as many of the operating system-dependencies as possible in two files: tiffcomp.h and libtiff/tif_<os>.c. The latter file contains operating system-specific routines to do I/O and I/O-related operations. The UNIX (tif_unix.c), Macintosh (tif_apple.c), and VMS (tif_vms.c) code has had the most use; the MS/DOS support (tif_msdos.c) assumes some level of UNIX system call emulation (i.e. open, read, write, fstat, malloc, free).

Native CPU byte order is determined on the fly by the library and does not need to be specified. The HOST_FILLORDER and HOST_BIGENDIAN definitions are not currently used, but may be employed by codecs for optimization purposes.

The following defines control general portability:

BSDTYPES Define this if your system does NOT define the usual BSD typedefs: u_char, u_short, u_int, u_long.
HAVE_IEEEFP Define this as 0 or 1 according to the floating point format suported by the machine. If your machine does not support IEEE floating point then you will need to add support to tif_machdep.c to convert between the native format and IEEE format.
HAVE_MMAP Define this if there is mmap-style support for mapping files into memory (used only to read data).
HOST_FILLORDER Define the native CPU bit order: one of FILLORDER_MSB2LSB or FILLORDER_LSB2MSB
HOST_BIGENDIAN Define the native CPU byte order: 1 if big-endian (Motorola) or 0 if little-endian (Intel); this may be used in codecs to optimize code

On UNIX systems HAVE_MMAP is defined through the running of the configure script; otherwise support for memory-mapped files is disabled. Note that tiffcomp.h defines HAVE_IEEEFP to be 1 (BSDTYPES is not defined).


Types and Portability

The software makes extensive use of C typedefs to promote portability. Two sets of typedefs are used, one for communication with clients of the library and one for internal data structures and parsing of the TIFF format. There are interactions between these two to be careful of, but for the most part you should be able to deal with portability purely by fiddling with the following machine-dependent typedefs:

uint8 8-bit unsigned integer tiff.h
int8 8-bit signed integer tiff.h
uint16 16-bit unsigned integer tiff.h
int16 16-bit signed integer tiff.h
uint32 32-bit unsigned integer tiff.h
int32 32-bit signed integer tiff.h
dblparam_t promoted type for floats tiffcomp.h

(to clarify dblparam_t, it is the type that float parameters are promoted to when passed by value in a function call.)

The following typedefs are used throughout the library and interfaces to refer to certain objects whose size is dependent on the TIFF image structure:

typedef unsigned int ttag_t; directory tag
typedef uint16 tdir_t; directory index
typedef uint16 tsample_t; sample number
typedef uint32 tstrip_t; strip number
typedef uint32 ttile_t; tile number
typedef int32 tsize_t; i/o size in bytes
typedef void* tdata_t; image data ref
typedef void* thandle_t; client data handle
typedef int32 toff_t; file offset (should be off_t)
typedef unsigned char* tidata_t; internal image data

Note that tstrip_t, ttile_t, and tsize_t are constrained to be no more than 32-bit quantities by 32-bit fields they are stored in in the TIFF image. Likewise tsample_t is limited by the 16-bit field used to store the SamplesPerPixel tag. tdir_t constrains the maximum number of IFDs that may appear in an image and may be an arbitrary size (without penalty). ttag_t must be either int, unsigned int, pointer, or double because the library uses a varargs interface and ANSI C restricts the type of the parameter before an ellipsis to be a promoted type. toff_t is defined as int32 because TIFF file offsets are (unsigned) 32-bit quantities. A signed value is used because some interfaces return -1 on error (sigh). Finally, note that tidata_t is used internally to the library to manipulate internal data. User-specified data references are passed as opaque handles and only cast at the lowest layers where their type is presumed.


General Comments

The library is designed to hide as much of the details of TIFF from applications as possible. In particular, TIFF directories are read in their entirety into an internal format. Only the tags known by the library are available to a user and certain tag data may be maintained that a user does not care about (e.g. transfer function tables).


Adding New Builtin Codecs

To add builtin support for a new compression algorithm, you can either use the "tag-extension" trick to override the handling of the TIFF Compression tag (see Adding New Tags), or do the following to add support directly to the core library:
  1. Define the tag value in tiff.h.
  2. Edit the file tif_codec.c to add an entry to the _TIFFBuiltinCODECS array (see how other algorithms are handled).
  3. Add the appropriate function prototype declaration to tiffiop.h (close to the bottom).
  4. Create a file with the compression scheme code, by convention files are named tif_*.c (except perhaps on some systems where the tif_ prefix pushes some filenames over 14 chars.
  5. Edit Makefile.in (and any other Makefiles) to include the new source file.

A codec, say foo, can have many different entry points:

TIFFInitfoo(tif, scheme)/* initialize scheme and setup entry points in tif */
fooSetupDecode(tif)	/* called once per IFD after tags has been frozen */
fooPreDecode(tif, sample)/* called once per strip/tile, after data is read,
			    but before the first row is decoded */
fooDecode*(tif, bp, cc, sample)/* decode cc bytes of data into the buffer */
    fooDecodeRow(...)	/* called to decode a single scanline */
    fooDecodeStrip(...)	/* called to decode an entire strip */
    fooDecodeTile(...)	/* called to decode an entire tile */
fooSetupEncode(tif)	/* called once per IFD after tags has been frozen */
fooPreEncode(tif, sample)/* called once per strip/tile, before the first row in
			    a strip/tile is encoded */
fooEncode*(tif, bp, cc, sample)/* encode cc bytes of user data (bp) */
    fooEncodeRow(...)	/* called to decode a single scanline */
    fooEncodeStrip(...)	/* called to decode an entire strip */
    fooEncodeTile(...)	/* called to decode an entire tile */
fooPostEncode(tif)	/* called once per strip/tile, just before data is written */
fooSeek(tif, row)	/* seek forwards row scanlines from the beginning
			   of a strip (row will always be >0 and <rows/strip */
fooCleanup(tif)		/* called when compression scheme is replaced by user */

Note that the encoding and decoding variants are only needed when a compression algorithm is dependent on the structure of the data. For example, Group 3 2D encoding and decoding maintains a reference scanline. The sample parameter identifies which sample is to be encoded or decoded if the image is organized with PlanarConfig=2 (separate planes). This is important for algorithms such as JPEG. If PlanarConfig=1 (interleaved), then sample will always be 0.


Other Comments

The library handles most I/O buffering. There are two data buffers when decoding data: a raw data buffer that holds all the data in a strip, and a user-supplied scanline buffer that compression schemes place decoded data into. When encoding data the data in the user-supplied scanline buffer is encoded into the raw data buffer (from where it is written). Decoding routines should never have to explicitly read data -- a full strip/tile's worth of raw data is read and scanlines never cross strip boundaries. Encoding routines must be cognizant of the raw data buffer size and call TIFFFlushData1() when necessary. Note that any pending data is automatically flushed when a new strip/tile is started, so there's no need do that in the tif_postencode routine (if one exists). Bit order is automatically handled by the library when a raw strip or tile is filled. If the decoded samples are interpreted by the decoding routine before they are passed back to the user, then the decoding logic must handle byte-swapping by overriding the tif_postdecode routine (set it to TIFFNoPostDecode) and doing the required work internally. For an example of doing this look at the horizontal differencing code in the routines in tif_predict.c.

The variables tif_rawcc, tif_rawdata, and tif_rawcp in a TIFF structure are associated with the raw data buffer. tif_rawcc must be non-zero for the library to automatically flush data. The variable tif_scanlinesize is the size a user's scanline buffer should be. The variable tif_tilesize is the size of a tile for tiled images. This should not normally be used by compression routines, except where it relates to the compression algorithm. That is, the cc parameter to the tif_decode* and tif_encode* routines should be used in terminating decompression/compression. This ensures these routines can be used, for example, to decode/encode entire strips of data.

In general, if you have a new compression algorithm to add, work from the code for an existing routine. In particular, tif_dumpmode.c has the trivial code for the "nil" compression scheme, tif_packbits.c is a simple byte-oriented scheme that has to watch out for buffer boundaries, and tif_lzw.c has the LZW scheme that has the most complexity -- it tracks the buffer boundary at a bit level. Of course, using a private compression scheme (or private tags) limits the portability of your TIFF files.


Last updated: $Date: 2004/09/10 14:47:31 $ 070701000413c4000081a40000000000000000000000014cc7a4270000175e0000010000010006ffffffffffffffff0000003a00000000root/usr/local/share/doc/tiff-3.9.4/html/v3.4beta028.html Changes in TIFF v3.4beta028 TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:


CHANGES IN THE SOFTWARE CONFIGURATION:
  • a -noninteractive flag was added to configure to control whether or not it prints and prompts for configuration information
  • various typos and fixes were made in configure for the the library-only build support (this and other configure fixes from Richard Mlynarik <mly@adoc.xerox.com>)
  • bugs were fixed in the handling of pathnames supplied for external packages; e.g. DIR_JPEG
  • the handling of SETMAKE is now done properly
  • the default prototype function declaration for pow was corrected
  • a bug was fixed in libtiff/Makefile.in that caused installation to fail on systems without DSO support


CHANGES IN LIBTIFF:
  • Acorn RISC O/S support that was accidentally left out of the left out of the previous distribution is present (from Peter Greenham)
  • complaints about unknown and/or unsupported codecs have been delayed until they are invoked; this permits applications to open images and look at tags even if the image data is compressed with an unknown/unsupported compression scheme
  • bugs in handling unknown tags have been corrected; applications that use multiple codecs, each with codec-specific tags, no longer generate confusing error messages
  • a missing pseudo-tag definition in the CCITT G3 codec was fixed (this problem caused core dumps in the tiffcp program)
  • pseudo-tags are now treated specially; they are always considered to be set (i.e. they do not use bits in the FIELD_* bit-vectors).
  • the use of strip chopping can now be controlled on a per-file basis through a mode parameter supplied when opening a file (``C'' to enable strip chopping and ``c'' to disable)
  • two bugs were fixed in the writing of opposite-endian byte-order files
  • support was added for three new fax-related tags registered to SGI: FaxRecvParams, FaxRecvTime, and FaxSubAddress
  • the bit order of image data read and written can now be controlled on a per-file basis through a mode parameter supplied when opening a file (``B'' to force MSB2LSB bit order, ``L'' for LSB2MSB bit order, and ``H'' for the bit order of the native CPU)
  • the byte order of image and tag data written to newly-created files can now be controlled on a per-file basis through a mode parameter supplied when openening a file (``b'' to force Big-Endian byte order and ``l'' to force Little-Endian byte order)
  • the use memory-mapped files for images opened read-only can now be controlled on a per-file basis through a mode parameter supplied when opening a file (``M'' to enable use of memory-mapped files and ``m'' to disable use)
  • the use of the WIN32 define in tiffiop.h has been replaced by __WIN32__


CHANGES IN THE TOOLS:
  • fax2ps now does a save and restore around each page of PostScript; this fixes a problem with VM overflow when printing a many-page document on some printers
  • a bug in the handling of 3-channel images by ras2tiff was fixed
  • tiffcp has new options to control the byte order of newly created files: -B for Big-Endian byte order, -L for Little-Endian byte order; a -M option to disable the use of memory-mapped files, and a -C option to disable the use of strip chopping
  • bugs were fixed in tiffcp's handling of codec-specific tags


CHANGES IN THE MANUAL PAGES:
  • the TIFFOpen page has been updated to reflect the new optional open mode parameters


CHANGES IN THE CONTRIBUTED SOFTWARE:
  • contrib/win95 contains information and code from Philippe Tenenhaus <100423.3705@compuserve.com> about using the software under Windows 95
  • contrib/winnt contains information and code from Dave Dyer <ddyer@triple-i.com> about using the software under Windows NT
TIFF home page.

Sam Leffler / sam@engr.sgi.com Last updated $Date: 1999/08/09 20:21:21 $.
070701000413d6000081a40000000000000000000000014cc7a427000010400000010000010006ffffffffffffffff0000003500000000root/usr/local/share/doc/tiff-3.9.4/html/v3.7.0.html Changes in TIFF v3.7.0 TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:


MAJOR CHANGES:
  • Several bugs found after 3.7.0beta2 release were fixed.


CHANGES IN THE SOFTWARE CONFIGURATION:
  • ltmain.sh: Fix for MinGW compilation.


CHANGES IN LIBTIFF:
  • libtiff/{tif_dirread.c, tif_jpeg.c, tif_luv.c, tif_ojpeg.c, tif_pixarlog.c, tif_write.c}: Handle the zero strip/tile sizes properly (Dmitry V. Levin, Marcus Meissner).
  • libtiff/tif_dirinfo.c: Type of the TIFFTAG_SUBIFD field changed to TIFF_IFD.
  • Preliminary support for BigTIFF files: now libtiff can recognize and reject to open such images. ;-)
  • libtiff/tif_dir.c: Initialize td_tilewidth and td_tilelength fields of the TIFFDirectory structure with the 0 instead of -1 to avoid confusing integer overflows in TIFFTileRowSize() for striped images.
  • libtiff/tif_dir.c: Initialize td_tilewidth and td_tilelength fields of the TIFFDirectory structure with the 0 instead of -1 to avoid confusing integer overflows in TIFFTileRowSize() for striped images.
  • libtiff/tif_dirinfo.c: Fix bug with tif_foundfield and reallocation of tif_fieldinfo as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=630
  • libtiff/tif_compress.c: Improved error reporting in TIFFGetConfiguredCODECs() (Dmitry V. Levin).


CHANGES IN THE TOOLS:
  • tiffcmp.c (leof): Renamed from 'eof' in order to avoid conflict noticed under MinGW.
  • tiff2pdf.c: Fixed TransferFunction tag handling reported by Ross A. Finlayson.


CHANGES IN THE CONTRIB AREA:
  • No changes.
CHANGES IN THE LZW COMPRESSION KIT:
  • This one is not longer needed.
TIFF home page.

Last updated $Date: 2004/12/20 19:31:44 $. 070701000413c9000081a40000000000000000000000014cc7a427000008710000010000010006ffffffffffffffff0000003a00000000root/usr/local/share/doc/tiff-3.9.4/html/v3.4beta034.html Changes in TIFF v3.4beta034 TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:


CHANGES IN THE SOFTWARE CONFIGURATION:
  • support was added for building the library as a DSO under NetBSD
  • a bug was fixed in the DSO support for Linux
  • the handling of version strings has changed slightly to simplify parsing
  • a new parameter, TIFFLIBREF, was added to control how the library is referenced when linking programs in the tools directory


CHANGES IN LIBTIFF:
  • DSO creation under Solaris now forces the DSO name with a -h option
  • the interface to the mkversion program was changed to eliminate the need to parse files
  • a bug was fixed in the EOL-detection logic of the T.4/T.6 decoder
  • ANSI IT8 TIFF/IT tag definitions were added to tiff.h
TIFF home page.

Sam Leffler / sam@engr.sgi.com Last updated $Date: 1999/08/09 20:21:21 $.
070701000413df000081a40000000000000000000000014cc7a427000010a90000010000010006ffffffffffffffff0000003500000000root/usr/local/share/doc/tiff-3.9.4/html/v3.7.4.html Changes in TIFF v3.7.4 TIFF CHANGE INFORMATION

This document describes the changes made to the software between the previous and current versions (see above). If you don't find something listed here, then it was not done in this timeframe, or it was not considered important enough to be mentioned. The following information is located here:


MAJOR CHANGES:
  • Fixed important bug in custom tags handling code..


CHANGES IN THE SOFTWARE CONFIGURATION:
  • Applied patch from Patrick Welche (all scripts moved in the 'config' and 'm4' directories).
  • SConstruct, libtiff/SConstruct: Added the first very preliminary support for SCons software building tool (http://www.scons.org/). This is experimental infrastructure and it will exist along with the autotools stuff.
  • port/lfind.c: Added lfind() replacement module.


CHANGES IN LIBTIFF:
  • tif_dir.c: When prefreeing tv->value in TIFFSetFieldV also set it to NULL to avoid double free when re-setting custom string fields as per: http://bugzilla.remotesensing.org/show_bug.cgi?id=922
  • tif_dir.c: Fixed up support for swapping "double complex" values (128 bits as 2 64 bits doubles). GDAL gcore tests now pass on bigendian (macosx) system.
  • libtiff/{tif_dirread.c, tif_dirinfo.c}: Do not upcast BYTEs to SHORTs in the TIFFFetchByteArray(). Remove TIFFFetchExtraSamples() function, use TIFFFetchNormalTag() instead as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=831 Remove TIFFFetchExtraSamples() function, use TIFFFetchNormalTag() instead.
  • tif_print.c: Fixed printing of the BYTE and SBYTE arrays.
  • tif_write.c: Do not check the PlanarConfiguration field in the TIFFWriteCheck() function in case of single band images (as per TIFF spec).
  • libtiff/{tif_dir.c, tif_dir.h, tif_dirinfo.c, tif_print.c}: Make FieldOfViewCotangent, MatrixWorldToScreen, MatrixWorldToCamera, ImageFullWidth, ImageFullLength and PrimaryChromaticities tags custom.


CHANGES IN THE TOOLS:
  • tiffcp.c: Fixed WhitePoint tag copying.


CHANGES IN THE CONTRIB AREA:
  • tiffdump.c: Added support for TIFF_IFD datatype.
  • addtiffo/{tif_overview.c, tif_ovrcache.c, tif_ovrcache.h}: Make overviews working for contiguous images.
Last updated $Date: 2005/11/03 14:18:43 $. 07070100041360000041ed0000000000000000000000024cc7a452000000000000010000010006ffffffffffffffff0000003000000000root/usr/local/share/doc/tiff-3.9.4/html/images07070100041361000081a40000000000000000000000014cc7a426000003e80000010000010006ffffffffffffffff0000003900000000root/usr/local/share/doc/tiff-3.9.4/html/images/back.gifGIF87a$Hm$$$H$m$$$$$H$HHHmHHHHHm$mHmmmmmmm$Hmڑ$Hmڶ$Hm$HmU$UHUmUUUUU$U$$UH$Um$U$U$U$U$UHU$HUHHUmHUHUHUHUHUmU$mUHmUmmUmUmUmUmUU$UHUmUUUڑUUU$UHUmUUUڶUUU$UHUmUUUUUU$UHUmUUUUU$Hm$$$H$m$$$$$H$HHHmHHHHHm$mHmmmmmmm$Hmڑ$Hmڶڪ$ڪHڪmڪڪڪڪڪ$Hm$Hm$$$H$m$$$$$H$HHHmHHHHHm$mHmmmmmmm$Hmڑ$Hmڶ$Hm$Hm,7  תÇ#V)igk)>GÓPBeK;tH  "'܉a+ 71r-INRRN b%H-TP'CHJTCϲmKX"H$n$ujmH* IH[6pJ2IjGdtش̞)a d=;"Cj֯]* ;0707010004136b000081a40000000000000000000000014cc7a426000017b50000010000010006ffffffffffffffff0000003b00000000root/usr/local/share/doc/tiff-3.9.4/html/images/oxford.gifGIF89a(x/OO[V?#+ؼI[Y],(xCUU{E8@=^l[<*%/M,".@֢lH1PX!, 4XСTb%ڸ|NǓT9UU "z{($  ab(I%G4(PyŨ΀۴) y"Mi$fśdD͵GO 4,zr7R\)JcUɜI͛8sɳ1\@o 골ѣH )cӧPJJՅ#Wj5oRL:M".0[l["56m> m;_ۯ0%W^z:W@?e[ {^q`n[L+%ՠssa \IH/Jޡsd-.EA[{< Ap `}{;}-_` )`AFa7Ag!n2H› ̴`a`-i@ 6AA @ ?ޏ@B)TqX8U^A\@5ɠ0ߘJY t 'ߝuv~((y*a]$.'P`@i驩᧐Hf2Z릙"뮼W'&$睧> :;觋*Ω!뭱 bxHBߦxV6b*+m>̓BYure {+a& "waCih9'?6֍lS&r,+1/,Q.q+cHd$),-*84*P0 e쬧j0KKW Idwts PR]-42Wl -IHI%AlD#Ja;eG.9%g?6 H57*䠗N+4-кuTw6׮/oEZm&<;3trۨIoe۳\<7\eV go~_YltȚtO: z1#y/sG;C]EFC4DZS" i@OցhjC>zH;i_S#FqMeBPŁ7BĠE zN&!Z]kfU(y%@o|,X >s|`-]^Ek}HcBU 4Ғ!*@zR$= Pa HEr$'([mԡ6~u,~@JoaL@3a;pi+f*);j,)=ʔx2ٞg,w~G@N*FiyT7b$^ټD}`2Uۀ7 B$U8 wlh$@xq%> TUpJa5l`Ƚ829Y3PXw$y.$17KrS$(==9Ȍ*K蓮C(zD)`LRE5MlbAgD S(vFރ!h٥ÜРIzr>(<9;%TT_cu*f<ױp[2~R%qtm9怮ùq-i ^ϦyH!tjMzeu|ު:~oo䏑$~z!+U>U},X}탟ɏȈΧӃhaǦq7|Z$UG'1NoO$W},4q{d˷gJ +Ą0ZǁqtΔ.䤀D-/M}BGF!dP /Q9JG_o `c;J#WE`.J-I3FhԄ7/'zp@OTC0Lag(s4/q/WNB03u (TD%x+L|Β@)Kk"Gzq]NH DH8{nF%NHNH GdoHST2NB*by:DLċxؘ ^ %d/o8$PɴǨ߲-Tbx@؏ȆQ-9oy! 6>3jK@l)U)Sqwl>SRJEj =QS?eSCW=fm4~ =cv EUUEr wU80=@9@ a@9@ Fv ) UvC I󓐐 /ep68%U /9ĕ7#W`yIנnw981>i0.`ĥe恛SUax3"(wx9r99VVIeIz}cA664K7jSP`ieǹYͰju9zZ56Q2XS]xI:Fi:oEn@^ !YTÔoEp3 |W#y`dE6cY:7 [' a&p_܉c1H3&84v'fz E849I[1Ɩ)za a-UyfaQubb9[尙y D: Z3:K%Et9fbz%Pa`c-vCjl9Gc%!7 gbàr4 P{𒫩bl Vi#*Z pQG ~\z4\W:7 sUʨjF 4aG2,a `:4Oc+)ԹC : :*` ѩh [< k<k$`XNpbԾRaX-LաyxxѺV Һ[ ev];#'q!UR%1QK$LJ%{EDu{^&oҾG qyшM)G)ɝTNx`LْR-Œda!{ (hMzЎ QMV~`NdLKP n- .K  33.02>6Px d׭20 "W݈FH T0t F뱾~@{UŮAP@'+l!b\ܤtJ!v#M4g{^wKVUN49ْ͝rNN9pJ6=x 0HTpcJ%0?1#{t aGD!!!O= ?41kR&fHO&]!`?{Jd~KE߭W'Ԙ C$+#m xJ? u)0h0]>!!$ڥҼI40 i_.XkOς4Nâ/Q%IOŴH‚O|Nzp#"Pd2i0Q0!+&۸j `aa9dp0)m"MSFTmSBgtZ>_lx<]rKg،4:°%-:BʱK1Nχ?PLOKKN2MMRTZNL]VTؿYYOS_bM_gNJXpeometJvtThJJxwl|xw DNӾ|%@8ȏx!T8 ZFw)c>YaA L%u ˽3\ɒm2Q}'v3U;UsiNj@%UYkN-j|zR;07070100041364000081a40000000000000000000000014cc7a42600004edd0000010000010006ffffffffffffffff0000003a00000000root/usr/local/share/doc/tiff-3.9.4/html/images/cover.jpgJFIFCC" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ??( )G$SVD 0\$d#'4w}ߢi~my&+s,[7)$ϖ !`Վz Zn{q[Z]NY`O2fUIHY2< W p+85K5K.XBx4X 2^^[ػ(uXa<u?f|[ KGe,& 6xYm48t.hmVK/.5H8m%0I-ZZ~;tNS`,f&wVx|h3UWTS5g~Ml1̋G?>_Q5h,f': T֣5*)RmSGiꗱ\i 1!aai1 +;>t#32øʦNJE.:;I5m~GMCC~%xBQY,]SP'""[}?hӯn~}~}__u]IE>/ᏋtO:ItlC%孷KD=KH44_xgxf|c֧C ,Lv;W R3NRXY?qQܿ(`]I:n Zj1fu+ڟ5hNh \z PI5o G?h_|A59{{,vߊĞ[<z[1jx}*AԒCCz iן 49Чn,V!MSJXltsu_*i,R/t"r1_Xq(aѽJqrK U*ӗ4%U/tca2b3UapVXz5!VtFN%4Rkˆgre(i ćrB2aUjJ,@CSHUV;*rNMR{dOTR啚^MZtqwN̩EPHQEQEQEQEUPH,O=x}Omٓ@'Ɣ?8[s-wJk^W]#(c o~ g/xM?Q>%ԋ n4M51Ha|VmItָi[SxTX4IfkR;5$Mmq|fT n!?a~׶ڭs=SFԤ%hHJJQFŸX𵎳|o-@LjE!ۄҵkpZɔhZ%5JDW'<?գx . :4ೌ(1 FhЭNP5UJ9SGne&|,xS-Q|.g<,FQcrtkԩJuf;?}e|o|q/J>mq+MOeoݬ:u&w#fL&9Ǜg'6;S$IO>/i]CTkiCU/m+ M;Ht[Izv{%;߇.Aaxt8|p!.t4 x}*MBIn̖<3k.Ckwu%q%_4뚷%{𯉼8.մe֐cPXVe,gMuK4wpKk=ůයOGqopMe$ p`0,qcse2EF yZA֯Zn4y%5/_xG qO[˃|)2Kq mfT]4|_Y_bgh8֫/7kpGO!RH XY;/lc+幖YʥaO ' u;UL>oy_:*Lf=y^+߅׷z/CKPυu{LZ~Xy4?񷏾,|>^6~j>!Ӽxn)1u[OCKF̏\eN-n-?ѿV֥o xt[-&վ&4{~+_H×^5Y:eޜ^6';=?x^J Oi~ iz4~fa^w{h2i^/WR7.+3kz~wK?3,8>?zqq52~9~sC-y02#/"RP4<$>1o!x,ӆO))ؘegR4jX|oC b}jNXTV +pNx[|\Ǎn)'|Ykk? Z=1ki{,OaaT*bqu=^֥hݻJK4JuIvI\`iLJopq,0xpw1k4h=>ী/#e h4;[G3&< *km:e}Fbc&ύ>xWƺ_x~3t?t ռI:gf<;x{xHt^H%~uV /e^ޟoh:{|B#}@~*мGe?<7d`4=~EԿ޻w< G? |p ḋfiק -26sqO#ౘZ l.RQ/3'AWa\_YَS_ cc˱tǗ+BxJ1Ƥe~ҟ,͟_o ?gmG_O~O}ki'Y[j:kR:h[kM YoK+Fy:ZX5}I1m/vfP{+gXOl+z}=\co'W~1/3?uj>ܺw4.ҵQy}!&΋igS/hlHoƭCᾧ4_~,^)|eqꫩj=Vpi\[!𞫥MdZ~Oi5i]~wӣ2f{W5 Ù>kaQT]YaVFF?vQ_QF?5Ox:\uMkfE 3>*]v Uʬ+ѩ*pEƴ9xû7~'ƗwU%yy{f?.dY]cL6ַ\8gw/_|5#Z_Xj%+Y!}}=~"4 .:]Ͷx˧6궖"Cxß l|[ >[lZ$v:m̳[H4{[]/Y-c'T8TNdZ/|s 6'v_4tೲ-0`m@C um>Os{m+"'M>)'C8~7xLeU*cpISCj6iףR8Zxux_\1c8[OaeQ5Tq4aX*Uq2UQԕmk2G?׼iixjGNIoi]Cf~wi'S5{H5kk.tִ23]m;8$Z\r_;>4мYw:jOj1:fzq)p9[ Oxw RJ:yapC'ի5+.\Ng䙯 8 xpXN'.{++՛THa{ C.omnqwV|Dw]:F5/ xIs$6w7[j:'-"aq}uk&šn5kFO5>&x:-wXkP~VK|-t*N}3Q'] VR_e^[BǺujx^^iuqM:-% <7TVl-I:^mx6x*5)qnTO?iq2U%̽9ba=Zou4Dѷx)2u,üھC,~K^fSG),8f9n""/מ[UG*?)$gHt^Ե\2🅵+_~T 5WřGPΕc2-&R7W_9|}[k/Oźu+!%Mokzt{M ӢũZCp?IMsŸQqkckz߆do%lgTE"H]Q,2=ƿ읯bgOil|oN{K-"FƅaA52y-uYg5k=IQ^&3ÜFIp`p̫.vf5ha#)ۦNN7yI_x8e,$嫘c8'2|u\iW,(S $)?73=+/m?_ŻGχ_ /?HZKKG<7v&ym^GPГsqmAN N0Ua,V]B"+FPMYb*RVj5WTFmqTUh~v݉E.b(O}u=/įĞ~xk5HuAxs O<[eq,W}.} [xO|)J5];WⷆƢ4 s0|7mO xcO῀>'Ox_\8|!gGW猵 { xR}[:ΙueL3 IG|;|-c~+y{5 &sZ[ iWs?&UK 1exn Lj%L=iaV _Oty|KƿDzDŽ1 M\[h1[#OQt+ ?=Ϳ~9'3|)6{wzͼ5k.L]:xm2]VK>,K?ou_mR ?i 2oŋ#"qu5JСV;}ZgKe݈ggM$cmWq#8 WqFiie\IVe+002*usl-0N)nHd>v?n'S8jT1j\ dprQoϋO?ڼ WSsxK/xL_R4Vn 0w g{ntJ|q^Xů(|o"Ii%VVQ5¡XKOdi.?ࣟ ;º?|Ll?a˝rs6ȱuWGhC|UĚ_[O\x/|qi^"Ƃ+AYm-@ 9l[GIx>xe^q#xas/Ɯ>Z8km?\^Qe9>ye)xMo d-*T<JZ6'?eN\񦦤p|GOGԼ/scKבFm\Z<x7>{-,%d󍥼 _>4WSty4=JD>3_BK}?FouԢ֒Z%РQQmlYτ_NxK7Qѭo^+ge]ySX)kH5 +C25a_Oߏ>6֣5] K{MwBm.K([ iזڝ֥saO>gu?eS'0ؕy0[e uFj1l?)J^SokÜ:~SPaW&B 'G4UFXgZ (5WgUh>Du=B=}V;a1G+īmge}yk k-Ytx㎑qmu#Ue_H?O1xyue^Wΰ\#xcZ8<^ֲ5p~ΝGSʥg8)0f~;߉xϸvXyO7pTe+찘)1xl,VRfʧ' >4(nu_^>摠IsZdz'n.淸ѧQJ5ҥhbp]17//R׾&1Hlt[~H{T÷:&7Z[_i^lڮ4+cKkv9x?óXׯ'K}BZ>kz'moo5Ms]JOo_XjevQW&2Q*8Qte*/du g==iiaU0xV1s ظfI"?.u[xnW+[f,n`Q|ơ ]c9Zp%QAJOFrkpv஭x]T/v$ҕ&f8m2)OCIY :Hx`*qg_ӟn.m0%EYjNn {kgT!(0V80 2<'֥F['Lw릆&?ehJU0:JxjpIYvogӯ G ^R*sw&(J/)ԌEr;;V.چ]^[yBC+R}5}Bnef]F;sw aLxW7O x3|?ԴZMc^MKT<=yê^xttom:}KN/gO{>FiqDTGBK+ۙ01-"gbqO^}{PJhNm_dE D!m/f%Am迩b4`3<~x%J'flOg^xxҏP[9O4jf5΍x5JuhwJNa rͭ!}R[R/$o\^AqzcYo lw7{;;BX}:Ldž?c Bs|{-iemzǕ/YA DŽmFs]X9l,{ǹ>UmF_F| 3-uu?kmxcZӬؼ=cb5/N㺴kג=🈬'yY[`1ZPJ>:SU%Fxw)Βu%G'R6༟2Lƿ瘬?gU-z7+ú1=ZpJr"Ic"Oxz7ׇ.: wZcuk7WwVq: ֒wh~ߢiwƟ YxwS[i&ÖzTK?>}cɯt wKTvsiv,6_oo2{ KD־&)u+HգM׆}}{M; ;/0㼣O쾆cY&<9L%F*uWZhes㾖uO_kiTif 8-/8r6qUxړUaIa07uo|&e_n~'+x3I%iWͷ7iaGi^ noYxO]/P-RJVa/οA S^>* <1i~ St(cu}e_Cw:^:^Vv:vvw]O|Ӯ+ĿwѵK]m&\[\ e]ƺJE nRKr$cqW,'Y0͖mpqLc8ntueVuqwNԩ֮ϩ7ѣo 1<[q,V/G_1_ '1|]XPfk8ÖT(qa0]a~_~xUЦ`vMsoZ4hz=ֵOóZ|TkKZgR_<}MBTYOjet)tntȞymM4=wZ5Xum/ f>|U>4x{Ιoد| agMNLQ? 隶\%Ίv^Y|#v|;vix4YVԮ4<]6)|=p!kID-pAw6W//ⷁ*}>=ϸo!x!^槉6E[.4(M^b' q?o|/>pcy7;xK U<=ahamQp41έJ'VhW^Ij>6W/Zח^#4;MSYFюڗ!Ȣ7^$iȑGx]搤Xe1#1eL33 |ǃ5|n1OjI}VRfk[\%ߘoQVvgfg;o׉߃|6;k=B;K{/-Nm+ cqg˛ZnGpw5& i2K6T"8:QNjT!Jr9II2mxAqY{Vau*g=J1LίxHdᵺ>zIErc@|80i਻wJu+,tx3s Q]Xlc ٞVeDj:/[LH|:XZu[YinH|¨w\%[ԳY{U@,nV 5,aƞ̣?e : FS2Uԝ9BmM_ [h~=޻KwҢ\MwkcqxEy6X^$YLд:amVu,#ȁ_Q{M;-K$|ǧ_ɧ[ ݴsBbs%i& 20'2*l+g6hkyQ .k:a[w;qZkkwdFmj0mSRxCgu<.+2fΖmWq,X}= eZ1?$.WOx/ kpFGVtPR"&֓<ܦ^?ضo8hiïZ46?6=1ZG<1i>-,Ѥ2mnuV ­sݲH MgFT=pj7rkVz~+F_ä꺬3AiDkɧ~|9_fO/ioF< SU\Yjw-ǎ4*Xk.clyt=R_|֛kWn-tKEt"!DRӮΣ\Ky_i\;n1s0, y-jYJw`׬8p=*+hԛQu>;*8Ip( 6yW0TNj ;V5~^O^:W, 7>x[6Kqk>o{xzQ5L FV?^(pLaʰx.LN ( c8ƜkEA2wQ>c)B~q· s,8>&a2O}NX77Q_RaBQ~}6㎇h1BVѡx_GԖmZWG&]n\< 5O]$/eq&zO=Gv|%e{]O񆅯h;qH4"<:47Hܳ%$EKQڛO^/&6`|)-c3h(t4}:Xҥ}_MgHԭ>gմZll>~mg⦡mFCex[Už .'vD-BnDt^  k)cү1*2RejY0]*sʪp򒨱<իN:Ӝ)sHv@_ׅy=e8b U˪q.|6ceXY`m9KzeZCRO:JSM%zG/QEHEc%ŢKu"z\^1s4A`#;]O٥[ZJ+89&RPiX颒5 HV xZ]Hmu[:F s_tJEl=&ɯ>of]tK fo"1"|. 7j"&n â[E*vH5i?k*D6r)I6,%[ rR\3& vhn[&NEX]ȑ"HZIUt6m GD[Hg|MiI'✒ep*~)K{捹i_l1Y6# oRe0q)iO7Ty7RMžZa1}糖,-H'%Dʞf?rscӮ=:k6o 4NX| @:Mzn:iDe+#I$u(Q#G nj~,\.o-_M`:iwi?m%Z٬[YK繑2֖ڤ-ZN>evMh-Pd_:Iu"EnJ]+K-Q{-dq%)|#asn)HįxlϏ 1^3S2<Uupf,ʕ\S7ZW*`?78pZT)JOdYFkUlF nu<.m?L~~?~XIc]"K7/-1%_!K>hoG+lvⵙS/~|_6=l_Z 𖕩]jzdj|a{ׅ/&ϼ) GR|/oj^m~ 3N>*,쯮3ޯI{wk=w"aeEat"Y yԐ#*# D.df$I hB,cicB &m亽vH<* ӶC\ˉ&A\K0N*ŦչURѻ|Gǿ/1ʰY:yJ;<˛ݺSďj7MDWvЭ"Mx(UH9|f>0of &3{2$׋ ;mŗK)t@<*٬-!-,i~O;sqis.SHKRӵ+YPoHXB{id⑾6̲ \)eXl,GRL?\>V 1oĶ]]E$4v42nx/wssVGl s22|Գ@@^B<1 `qMǑ^z}q=+,4bXyJ|dLDz7&:AEuSX)¥XC  'e'ۭ߈-~rPȜc5\sc'n)JR'vܟ}.[.km-ۓvQI'jJ(npiB8=Fs:)4_wMfmh՚L4]c,2>^3gH$Kgq18t6r!ˢ[/EVz^4ܚJMVGbѻJ㙳1M(((((((((((07070100041369000081a40000000000000000000000014cc7a4260000389d0000010000010006ffffffffffffffff0000003800000000root/usr/local/share/doc/tiff-3.9.4/html/images/jim.gifGIF89aHHHFFF666444|||yyyQQQNNN &&&$$$---***bbb___333iiifffDDDYYYUUU""" @@@<<<rrrnnnvvvKKK(((]]]000999,E@G,Xg<)H%q:lveqN.Kz+%í?LljUN/R}R\X^a+?a?8H'<8&m8'&8>//"5$()Z,o? H_"Bh… H#vEPY"G[$vLiS* 0mjՈF-@ F%DBZ_e9c*T`ȀA x f@"h"A6@t0JZ(#"A@Ti %jYb>"HkÌa @,*v^Cm ~(>>CH=9*iBe٣2Y8L2Ua@b)R?"Bi~.^Ȫ[Xd 006@` 8 : C3.PLJАrta%&XI)*5 pYe(XVY@h!ԖA66 D)Q2 %W_f QeaM64vGNj *mĸ2hQ\j`Q tW mVXa0(8!jJldm aA9Gv# vA☉9%lR Z`ZpBBPCGIVJ۵dBm@Th: 3@|.H Jf;`)N D;lӧ 1D@#PB![X &n q*Q ЁI.'O9mlȾTP P$_x@].r6^ i 4DBa*$sqP((TF#݆5A":r-:pF'g nmKʼ 4U@tm ^k.\ Pd/1bcШM"Fkw{N9h0bI3&`fljuiKsP\U*_")-{#Dw|z&bpFv{c:wwN%>@1l(@ 9hF@HJ!ݺTp)ܤZp BA6Ne94$&e ?@ @B`s!9xnZ@J%R,!P;*LIIZK#` I; ( Rzr`XX2'ڀR@j jr2@ @4r`]0'8`BpI@ "Є*!'ADNP@>Xe1^ e@@A \쀌`ɧ7^` fl"E&!:`h>o&GARA.ƺ xI13IPE H^$\MAUⅣE9i3$n8&蕨HWbKQZc&0Fue %Qdюy `6xi$ VǮt5: F$f S?jq6%M!]Nx ueČnzx04\єEMh|ޕB #`/Kd@{XyCDfŶ|S7J+ TQć0fZrpqp.S R*["LiAfpw;tɄQǸ?0Jv Y rr]J@!˒8 fBB2ĕ| }9IR" NHMI`dJJabuXaUph% A݂7t^A Tނ{* ș?LxXѶz9y=)a)0r@| 3hbu]6%*1A֖Nٛ-q@ h JvR5fwI&CJY*V@\u 32>Bv- hSb*5?Jsp/ m&<mt`@KrK0T$nkovkJ)7lqObn1).]!00ǁ Q90 Mwۡir?) \&U<5adETjrx,6 ߷ poX%R&./ a> =FRid|@<t"xK@+pNSMT1{9#T.c) 5 Qk q/6ls&18.4b '1״{cnVoV*5s}.vptk^RP -7, 38Ч="|((5c;O͡0@*sZz2E[ %&=/08l~ q<4QtG!|W5$$0VuAvv)3cA!B!\5yǹ"`itD{BcF'(=OP5 :[eSBz -e'z{BI.G!!@Z8N&ʣ=C;m1/р`BЍ4|JR:kxQ9 OB}O)7}r}XvƒAjbBTv1vTx77|@Г0P.byISR}Y=}-m)F `Ӧ7&@B>li^V&*j'z\|d|AxUU*$ַWr;%v` F 2L)/~?xI,H @('|)|M$Rt2}_y*3ǑuPl0W5|hYVfE(J,(DK ^c)-| -uaԒ!(Q|6~++iNBUb,SAP"XJ ޒ)_V.brz@@p̫,Rw<\j"=afo'U(~d5XՒ(.u..UJU%Բ . Z8/s#3q/ ݰe{60L^RF2|ak3 Rp6kaAdо/!" -fi P x097䤩.0HJ]5 ۪b"* Qr:r!'k-JC$ $6`q-1@{3* W TP/<~XK)@ˡyk$rd-->'*ލ$$3/`m8wNټ$Rw8R੹Ă uSf&D~^mWT!p37h'!_f߆Ѵj%XH]`I\Y(V7p`:BUA}qo24:RԎd%-##sijzu$CXVfihgMSi 4Ζrbga߳ L:3>96-;jV'>Ghp?S[w5…@ѐu I.c7SBv7P+ /;LH9](PS",wȄUâC- 2$$/8@2j-S* @0C_ZpT(k@X0-y\q"9;p0F46APbd!^pԅ,HKKuZNH*𣃠bH ȱċs#k~~m F hb&~h܀@)@ʀ*P(A,4t pNdXO6fC0Pa\ɽ8Ҿ #0A'1@1pIjBC F0\  PSP 3 zp?2f&1(n'l!! Y0 N 5eIk!̢Dc0E1_\\_x`XN9. BW"F*N>_ 0mP ff\>B+$b[*b( @ .,:da*AɷD-Rޤ"_a8CI>%X:40 9o8 8`P1(VгTj>= Lt3ZzA6GzIGt4rIrRYǘ5 RA "p_ =/9]V A ]:#Rks4px+VIX茗.hH. [7Al%I0 P4Je-gi# XO u0K]l Z\"I$,!HD+0ȁ,sB"( C _:/ Q RloIV"tРҭ`$ ]ֆ*c t/^蠅e%!˵@3*A(5epgI'Ap%&IsjYP=oDzB 'g ,fZhA rp> h ۓٸv}|×hyckaȅR̖H%[g1* 2u D@((p*X*yE؅\ۘAdF]ԂwaykSc5AtX:@!1S 8s,O vl xK11$:LOBԠ< d@6($ᯰ,L*pJ@lBf!o0O3\> c4\\ COmE^/K @  *fz H F`(K3Z}LmP>^a$AP! B'lͪEAB NNNr1I~&њ֯lo^MDXBD(@SF#C F\AN +48*a$J vM N.$,88"cT@(oj.\d)t>B b 'C)4\,RxBKl^r"DpQć1PcO u,#ba4@CF+2hh4DT`RC~f,VO 譖Xh L@,Hz,hG؃M9v2`VF* *A ,뢦(*)-Xnɾ~ |l`S|HDDx41aHT4ad!<3^l{k I.b k#R"M |"co,'`L [a&aa?i%h&C1|` +㸼X@|( .:KG&a0`?Vh83hr#NqH!$k r!.xWOz!‡Th&vfF4Y3OL)aL˔a*0pFR@YN#$&AGH\z4Xq4 Rta\TpQ`4 "l'FHKzbKn. h* $q `]DO03"'VR/L's,CD6¸' m[+%o#'CgPyfd2G4#s*7??3_9 |1˯L8CHNJ @p j" U\x(D4uCVq"**SUh"+!l洏 +"t( *@OD AG g=b6is9^3Re27R#UV01M*r9$D~8L$pi5-b2ÁRF=*IJ^f\ڳu``l”*T**/6,,x@1Vh$(\n8̱`Hc{L U%p_ȅQba F#R1_e@*E1ܔT'Ɉ VN{pN#kRJ'|>T Id=ڪ >0Vrxq`4BԖnB yJlU@k˰4" 2<'SGT讖wP7Il"+4)E`W'3?L.jN&=Wg4/]Ti>.WH^Q1pHN먎@kNӏI IG$j#""W]ld""@c$D0&J0+ v!@׬VS#$.1(56\Hdi0:V(NZgr5GhaDg L4BEPXhkntm#K ! |" xcŚ=c֒(r0\0H"Axg5#>cfi>'a~" 8v+ JH/%De Át9\e/S=#H36@dV@"Yd `TVaB"UZۖfRՠɒKR- ,E6ˆdE,F>)2yK^W13W+i6dڀt Va'n ( #PgXG.AJ-Vq[%AZNGXM JQ`G0gsZppk@ У`rwtZCu,:=$RM%aYQ+]0$#v޸@w#Z "A16|*L~[T]llu\U)La9E%E RB,&D{r{q * /fꁀ2{@(H`9>*uca71D#sEŁ[gXEKp$m |"5"t\b*Q?j3`bAxM<S@p (Ppδock, k`yO &q<(0>iHSqݞ , gў]VU_%zO[f=8Ḛ2KM-Oq BbAݡJ, nUלHuMX)VL&n_pn5?tH,26.*UXl 8x,8!h\"|}`a-, (,x|(lPpPT$<. x_ *:;6xTؠĐh$z<<xx(P# 2j2Ã>8A/Z(c ȒU#M?I&/XЃc:˙'(X`Aċ ,@T2`)M| S Qv ÀUېdySo<8xRHr:܃ (D(ADx>pJTt@u|0)hP.F1qaxт &~K׌!C.ar`aR^ #{RjH@PiS2;y .,226O`PFP7iatyA+Xp$!(Bu5M8Sbm S  }TNL!l` `I i1 AGi2+%(X )䀗Ӈ px @d$DP@2@5` 2mT!ŒnJ 0JT2x0y (DA ` J w&A(Pj<#p? `,¢#\ mlB ` ^ («6;̰ ?fa7`/@ ac6p "Y@Q<DA $@AnPiU 3pHjCr7c@):Y-* өk">arP ̰AW!C#j4CbȖGopFq?b -8$ 6Fxу/q+Yn+ awnh5&|A iCo4 lBPYh$1S4p!/c@E^0B@D0B |3ѡ8ΐҢDcMp`9,0nP@q@ Z b`G `64E$@2D H9 $jE3]nj5~bܼE71$?fptaD N ԯ((xU2W4`$(_R  P>W9!G`E-c 3 P)%.Pj"D#pB o:&@x ݅8!k˜<3p @\00dМb "k00O"LT%^#!DmɮH0PJ, 9:j("2h@H~ cA(*`q5< ,@HSP!luCQhnUx9? X+ ̼1BpȪ0(&{\կ1axd3IU i P  v8hm6@ LZ9 dxA LpAQvC*=XUH9E; &vt!1lX  e@U@6I BS6Ba[eLQhK":ȔP`0]8,y\>:cFV6т sd&'( +`K4`R@b`KU/^4nl ;]Ʋ&Gh)ZQ cCPW䜫޶"ftxZrp3I6nPs "vYJz(9bn fR:p: `X k-QA{TvS/--Q 2i H<H.Rа3q)yT6H  #9a)@D +!~-]⸜u~=hɪ|%{{E6FtTm .Hž^ ( )#~\. J1P ꪡye8aV 0x;cH4:p)r++ 8Fq xfF?\]TF`CDPS0!{!C1}ꈮGo"ՂD% P}8@t6rNѺ92m_ߺLhB h r(a:9%GrYLC5@EZ8xSw `,@'@!i.LYvt)&091Н$ࠋXYüAe/`@Tv@l1@xZJ@@`9 =^@\$ǴM00q@xF\O%߁j @ @ X@LZ]^@*XRtxEa9)BE%Mv | 8|: pc$WaE;0@ r | h]NPTeþVpdLn KxD:X ,IqT@ ؀$@ a ۘx@< @Y9t V}aë́@I\dXxטMPHh␜3@1Q$,X Ė _$P?D Q х|9ƞMf$WTҬQ@DYi};TVds,#UJ #R6M%CݦlC$u$L]`x\@Od &ȀEdBxdQ;0707010004136e000081a40000000000000000000000014cc7a4260000404f0000010000010006ffffffffffffffff0000003d00000000root/usr/local/share/doc/tiff-3.9.4/html/images/smallliz.jpgJFIFCC" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?.QDڿئHG B>NB7X`W'n13oo4|W6˵ ,v@?{#8nũMypfv789F2?+x13,uRW_*Mꛓ٫+^62hJr|ͻ٥S4E^r M>lEa-_Cu5~Y-<~O(FCG;r -R=+Jme8"sD~Ys$7UAIc| n6 2\l4)?FX{1[t% 6Y,j9J 5)s{i+Jo~gFW&hjrDv|+-^mE!2Z+qԮ2 [$J9'_L|) $ yHf7)bo=Y㪶!` nVSA~s)thVQ.\EpJ3ylI«29 ?^|?,u GW rFr¡8ԄN0 W&IR`[֥}8:Orqp &eֱӣJjMԛtPoGtݚꏚiړiZf hD\e vE~p-焴[I.oX[&r]rY˞9Xm"fVdVK*e f/Hrlioy?$|zޙ~]a)V,U^Z+FJ\Ӌ̛6GfYWp~FU|WjiMI4z՞՟=TdfSym#!bD;aI<~ouKy~׹";cF9_)i0xƷ+Yi9AfZe)V B x+[G6Z ,hV̐9Tyd9 |n;԰<6ѭⰪ\)NQ :벿T8[,7ԣ*3{E;k'{i嗫SWtf [@2h`I;̍ x#<Ѻ)Yq.&Eu u+&ߎ=եYLl"FgH0/~ѿeώ3]cAocmO,dʬV* e N""*Zʽ~@x'2隤fEنPcG y 7j6Xnfd$lpz^H~xzK ][^E3Xp227gŸm TʡWc;GbH޿1Au6`*W6%\j 7EgGuk[MN= ww"+\)'}k]CAnY}+y%2O䑼LV10rA_:x 5)b(TuyTa8N[sOM#gCry3-T|1j*%&ySrR{9\K^XŸ#M[v8x i4Ėt\cd 2ʼnN: O1K oub&2Wi1I+a&419>1s,` 8r =_O *RK9Ξ'0ګ+5v%d?yRI&מd~/qOkqb#3(i` :G^E*^eڜy,["q&C,BBUY e8L`nSa[ͩj񛘛4t"FwztZƯ]jڼ)qqq5.E煈!rـsM +̱|KҧZRPJQ-xC^-+-_.| TQcҨxʧ*vpMh{-Cm?KTԁK_YWGoTm|=5֡mKK..4Z1n KP2% 1G-x$-/$Dmk`vJ'ϳ5_6nK4ZMqh! 2C(A0j}/^!5Ӡ?Ir̨I21b ]+CM|VjVmj:@S1*s1;5Eapo eVEfSV9Mݴugqn/fbWuIJvS[I/u~U8/ l =Ky慺m2Kes8|G{LO[x#I0mQ11bh%^KΟfh-aq;&vRi"ȁBI$lT^up3X'jFK\򤤹Kng.;~,K/O O^k RO<朽{9)+)j/oxJ%|?iM9[q=je^>/G6 -[tFr\鬌>t2ݡF&Dp FkǾn4y,riUY>mv$-K9 ?iُ@GSy/%m@-oӣgg8yQw;'\K+yC#Fxb[ a$ #㰵F\^| ]2ߥbp~-p`\WӢ5i:K=N\j}Q(letsTo%b'vvۂziI|:e󍝭 JyV6?[O/:͟oo&d7@d3[ VA(CTdKdxF\geԯ˸Yc2! V*-8<[r.pK 9bW於n4_\yR8)ӒR+΢甜6om4KǛ{Ս6a2r9ޠuNYŝжHS33wy=Ei+yy5VraieA\ nuEa!(./f IqF 'r.t[ (m>{5tݣ?2>-sj_XΥ' Gۿ+gjeh{Guie_4E#?2*lÐ+ºv Ol_cGOdr=_GxRR{w!!I|86WgGiwj:\O=GUsS8bgʯUﭻzxVҤtMl2c6b 9"DPHZ8 ⛿&Y;]V})i2$qSN !_~Rk/>Tk[i? 4)v87c1@=ZCScB_i\%dPsf`岂\NY)}RTy:{X&o9s.plڪT Rp"2M;B2ݛnz].}JPMf-^&vImzʃ(H#vs_ho^?M37ZDp[}y^M:wѬlD85~,S6 񞬚nXmxEȍSr˜uH `H2xt|LK~,-ke~fԒÊ᧏byN+FINudڻ6彯6~jmL8 h'KSN 5$⹒(EEivzl-i)l@$P ֻ,́U} 8#oZCl#$(ȯ!?n_ֿEցmu>okj5P3[P185y*Xl.;ίFJҼe}^)AxʮdYOTN}ye{E=SV_3_U_uwݿ"%t51}5H F_V"VQ8S!,[x x {{aUKl^^8egYE~g0G|kLVKq_>%ȱK}gNo5 ;%PZISߣ?·xWqj TԵNږ5[k;X|2L FFΆ/.H6  fP̕ %[aw\m_(;S. F]WI,.KG+6Q FN1j7)/y+.{+^78}vJRBik95 $ݖ(,5!0PY5 &%C'@dTPjI m@\$v طAT1`<;ab[^JjS:\{Jmski'-"5F)(m$"Փz{W%ѵZ~'pc6ڇ.7_l1 1@R3מzݪZj4w P/wk3pp/{(hSK-gaL$`wc}kN=;^wuMr F@Qae*+/@={xLnIR3%%Nߍɹ6d}5v[M| +ŵ}bwW39}|1mm]vG#KX֥H&U1er8|\I4;m[[E(\$`g<ėw}?ƁbU-zFO^5? >bnKyUb3}C7̜uêBIEXMrd޾葧5-xEuCѾשEbXجr]KV*cEPhq>?э0A5jj-q/ ч r7 O>x__vng}ch&4$&T9XIrA J8:yO-u/GO<9*vPRm6ⱾXVfqbCsu=O]ц]S6h*zWM°[gH8u?=0i;[lKUQ!nikRٗ+^B2OЗ~|t/ŽR]Я<'ѡy/,N|e%ů[j>""o->j3e%L]w9r9ukqx~&KOsVNJկi]//ٟ h|'3Fk}S {v$+3SQs(MXt)B?#Ӂ_ <;CLj~x|Mi3.] ,bgl{Bfbk"So?iI}[Sqii7/c% N3\#ӥCTcV+I6wzY\qVwcrBuEѫV.s巴QPzA}RM~GwcusyRIiT,띣:ǽrt-+ {ާiڤZ\v+n;TO[^ ^Y#-jvZ ]B.۫]<+ <6DʛdF'`H ֥UX <3i$̜'zo[q^5xb!M[ÖQq'ȜJKGcf#}ۿ; x)#市g+lG2DFN!K3X:d9'H6>jdtSj۶aKo^;ggh]xD\5䊊L\כ%JЈS>M+@[Xɻxah>[ȂO7 R3dW'mZ}.gjhR[RT,Gx^DzrO6y v}&H|Ǔ#aD, ?֤%qڽ47ե58Dڀn[vwp;~i&}RM6KȢooqRM0 BSq6Fy[:4s:<$_%>[ƜgY\ڣcs,$q#B3I.fu掫]_{º=-~.K񧈾(|Co|M U7!$MV[N tG E|vk8pwus%{IZN֗Gtc$Ueys-%Mtw&_|esM'k/xf>3J̀[X]DogG{rfkx; ^; YiǭiwbKۆӑ͚[v'hTWoGԡ>iwsjM?Wd4ɖIyM *'Z4[VDEn}Af4FD)q^Wp-ݾe٦6֝O8ˋYaa2]Ӥ㇣`' 2QQJ<˙Z?bO$z[N֕}tjӼA3@/˧γv4R*\vaj^i5-% J#q@_' 9_ ~#B;F_ ^Z-֗j_ê#MKG@]Vh xmfoڍX-vzM3k=N0O+\$RʄpqxܖӚQ̽-U[ZלYfu_ R3y"E{/oM6m}5W3dU&$j9l.̎=Ou![Qubc(o cz|$>r _]j0YNvKc3|-|WC}KSNt#rj&I)$KA (>˖uB#VMF$yI;P<&'(qYK^JT精#'b~>du# =մQ}%k=+1%VMyP# uRŝMWMFOZGZ3)epv;ڥOa8ѧ $񓁟R t^)N#kciL3萤&<+WX.*TgCUʓEzsFVPrTsc3c)(TRT!-y\=d~A[o h@m""i[\tlL5[  d\QG@B}ZXO2=j֒J)bGQBT+)ki><]oSӓOэܷG Sۆ 44FP]}Ith>##5Cql5eLLb)sG#dFa V-'%[~#(٫|RWI7̯2O_>\rTxg(.]I_~ qvZ%ŭ^jHgSUiQiڥM.og#[5K,mH-$2h&6輹/0#†aMojm B7%;4k{jw!O2nŞ&U4 i]jVp[5e k{KѥHr?D2N8|mjV9^lhja0d50zҋ~PSi,t'?i" B k׺DKvwE}i4+/oKkHof4 hӍ\9r/gDYYFY(/ xV[ ]k~7M {WRf4,iakȡIHayZBF܀+>)|/AkŃG]-%qdBm{]GmeN;xCebg*J1vp,Rm;olC7aa:PºTp!Rjmyn{'ZxnO2RJ^xkK֩0"UKqjR(BTanRد_'дoO҅O}_YZCbKx"򁔡*N_JS_4$|<ӧхgO58f_7ACh >$ŠLUn_TХޛsXYi1[I@)iTrbx/ѕ,] VTU̞ѼRt{א>x;SjUh`V{$۽z|Ei|syqw>3.%JkkivĒsndVP%#bl[m~j>\á^/QG涳L# 1kH~[}3뫧ZV0Kɭij;I$sKLfC(oOyNK4O<Vg+;Fb,+?,vr]|TKPV^jw9V:+єkQiNN.Vӧߵ? |TV!xP2x3:e`兎niGx$[E;}g"W{40k쯵'Q'Oڗ~ ׬4[/6M$[y&Pe0 P| \?Ȝd55©^>aR.94JLc<3w!gp0:RN\MMM4ޜo[>iaQK[KX>~7Ce6)y _T|X~J- '3G/,1F%X~o^ x!Vk7Riok`^L-\H3$8pzݻZZ;nuHO,(E(`e-)KQ[o%Qj+Kݙ߶?xO[#qki_-XxcWѢMYھ>յ`<|OxgUh,폇>ia_K1缊2fK) -~?Zj-]_ڣB HZI WYU[D"(YoOԖCx{]MR]ED͞[2).&e̻'K8[ NN.R|CQ+ɷ6jk}vUx~U&><0+b`B0J5Q;]]~"xkٮfyJf2\E{U !Vlm$~1 m5-ռ0 Knva6RӤl1(?,x~Yj&,m[My`/.wR0wmG>Nu$灵{9$m-4]D}M쨿VY$qϊ&u :WqRU9>[S&nRi;/>_b28*ҧK0iQ[=ijWkNͫ$}¯+/ wz_1gS^l$Weq̉"ycvFE{7?Dg-˱nqtj9a_X<"*V sFRJW[ kCKKx^.Bhw֞.ӓO{7wƐ]}ݒFynYlmd:֓CG!3nu= +_A5.6IZA$-[yCd~D~Ѿ,𧊾+OSttZ;;^tɘ`gK,\HPOܟ9~տ?%X 4w>"k-hUFf'l|rI=β<.WQ/I5 q#4٧* n"<ӧ„qu3N >YK7SbW3Rl9E_s,X:1ʧ%'.dSp~Y(1t,Kwx;jD`i$Fv Y?{^OkmAUYX|7 #w8+ O%3ά%,Iǜ%T6~}[n薞%xuhG+9#s\r9E8d4g͒X˥ӳQiE-*OṯHWbjҌbc*RRj=ߕOm0707010004136a000081a40000000000000000000000014cc7a426000001080000010000010006ffffffffffffffff0000003900000000root/usr/local/share/doc/tiff-3.9.4/html/images/note.gifGIF87a , I+0 tcY)N]) <,}(=|%Cʕõp8tʲ^+@[j8;qh;%: ?r[I~~z11ED9 yoCzTp$i:;hgMRgPg{da@M=CM%HgJDh7 +.>{A=y+·KHI|GqGkJst{mno>:M<;=RRQGLK011%142M@0H0 (}nVgoZ^\+,*:&CIDCjlCReJl652 %&&666L9Lh=a>egd "",qE&,Qvm|+QKmRx'GV&%J3K"3B"#6%>57v8+$$8$3!T!!84}5>?#24K%"?r#6"+!%?63#%$33B] 42Q">4nVnkV$"2%՞2"NYl$#?nW8>$4M|ĈC<ܐA$nA `dž!H;Xfb2F: iNYB V>0z  (Ȣ`Y@U.!4FWJ""M -\@#<.V,Zk ]iаt1j XX = r`F  ;!O06h \KCyL 67pСE #Phగ8@){.brp@d@ptNs\;$;,A\PA.rDJ+O b a 0P *('6?젌 lRC,u# UCB_9**htQeMz1.JP q>` >h 2X0)@P`^;P@IN6@qNr0F (1НP<Z j@ XBp +n`{@woIJPL~b@bwB hIBX@Ը:D NpIKZ@ >X pJ>AЀp  `A <@ 4 !8sO@r`F@Ї|1B)|ä Ơ 2O|`HA1@d27M_ Ŀue'p< U`*S$`0S`dTKB@)%C35 $hb @{ji /vѿ0`:0A@ @P` Q@ln8\@ ^S!D ^ @{p)\7z("b0" Y,AVt.,Y v4"+f^"D ],F  pxxwubĐA%8G Hpd 漦olWTQV}3 A:Bq/!> *Ą .~A$l4P E1QP%F0О)dpT4P"WΈ ƿ@ r kKHU&@`8MSRJ.,S@8m.檄--Q74(l褚i_يnp`p@8A>.(p_ GN@ h PBG-xPX'DO"Z/ Hƃ< pxXNuˢo3.iF5p s xQdEr$wF/GawP4yā)((B"N{-J@ ~ B A M@bK 8R* 4H>G{QН}8/kgY9 m! N2Kh[@*T*g|ʀ%+ilu 8E^r\f<0`.DmX6 > *T*ĕL ~FaR< )c0G&M=a<íz$#Z<AY\A " 퐇*Z^Ѓ =<eaક ȅyYMP R^,zp-AF6`A!YHDDAqd1n0u4sv0zP/,"1"< 9&02Vs`5RG$8 53x{Á pq#!>Up:.X 44|MU;pYP%8ݓ) LN :N Tp{ BjXXY-f )L44p D 7 qQbPe0IS3%Grm $^Mu >R14Yjp`T*Q3&cO_fDLmp/0W0@j7 9e ')rKT2.N Y$F#p8h$$pFx Q u%9z#a>Y&x0 \.2q!4\ñmDaÃ8@ n #w ưbgaliaA F!1 1F-'BIqab^0W2pf 60&2@ 9)iR3b`F K k>!T`BRk D @VB7 ! X8AW8?O!=4` N5` Pp `b Ô!ޔh@yƑ*e{aJx#P:Jc! eBmҀ F@Ew瀨@m${i` ";`@$V ,`xQ3bTB`0 0Q(Ghwi};=i 9/ Px Z7yp ` UdtqG$<:b:IRuyHP>PSb8J=@*Z=fD -.qН7p5cV XpgkFgh7w`=e#[z61AiM“f0*+ l?Pa1W #%1 6` ĵE2Ba)&rz1 tn3aO4Y7:ܐ *e-A7-~ R\5>g/o'6[tG4Qt7|DDU7 u6!2a ''k126(Rh"Ѹ;!)-NautXPpW~SDK @qO,am}89`(@-a5QpbO.,;1n"ZA0**_4h<nxPWOc`t@r34 {|FoNTG>3"(秆|A(B/p @$, b7;yhC,ti{r6`>!0(r[|'¬/`/\da 4/'B0?3naG<<48/'\mc5ǧjоD2Ёc7ڀt# Q҇#e1jr~w1ƤRP /@xR$4NX2NF&a4(k'` c"$ <&y[|PS+6~]P7dg4FiQ{ k"b%ю+0 Ұ6:7nAnq(x0c1[XA'B0t2r 2hqߣ)I"J'b/Q!(}bQ|ByWVpdH~nI[l,@@F[{%x0M3,R(-ہ( 8%(Ō[Vh~&~!Rdeި~z}:e3MajNܠ.7pRp}q!+)b"e45b8`с&9 dc6&\UiEbt#3F1HSv@Q fh q 1|l&5+Cƨ3lc ۂa6W)ZqR wp;"ZDe;J@ $d1#C9R(` `}39F!bg4$;b]ma҂V'bԕDR AaTP.)ZAaG3HV껆 ??#Cq$C!)"<̳i)H-:@F$B!ts3]YA:e0M@%hNW.H,ƣ|j4Q) 0_X! P#%`B FFۓ:T&qwsHsԙ>.IqD댐")Bf&) 2XB&PV$X;ڮPY b0Cn|% *m;XXAftu.(I$S Iv.A#B(ydQ˂Vx;DHBg?H&?sfEg>%wzY SUрA=/;{RLMf Q+FsT}ZMJ&aV:KViB6DAf !q˔BQ ܫCIgl!?@[@@hǓpDJVP`nE/t}jj m Ze#$à'Gl.fgc'&G fgeӣ&ue@bkdc&dmef#ccF@cce0P1Aj:DL$أXHԐpa >x2%,L!V'{yjO% `) 58:QL g)x>uƚBJP!‚QPPk;> q))8#Տ2L!CG0pQa@lXD1t2C'% @(Pf0 ^J\AA18ָ(-!:K|Vl=6츜Y , 102s08l (bMP%L 7!}8r  <Lj8B0@{`=pAl޲1V|!cP'jlyb"GH1MBޚHN f @pC)EDaprbe't(HaKHaDE`E\l8QGg8M+pKm0(a1C"ŔFٱZx1"A*haqP7ZQm2;t`4Ñ^dD \ Jfl !/Jr9J |ul?GE !EPjC=@<᥁OdqRjCp7a}XrW?RF.] ĆiGlXCC84w.]8J!Rc]BUʹRG~!baVЁ>`To@>|p30Se h8r B "a#C@;J+b(GWC%5a=$U<T`XDNg6MݜNntl`یJҠRUzQLdt!=&2gF cPEQ{[* o5m@AjQЁBK@D h@f(ѤT*ql ۙ,8 <@= ST4dt $"zGhI'i'c 54 ZkMԓD jLT{植P%:^з>U ؉ -cPЁo=ߙ3d=Q?3ڥ&aRLjСH*k'R X :@C&PZp Xܲ 7H=*h Hr )X-(J"QC=`I6 ,v@ < B `w%/  -@PġH!x>DJֆ~?`,*ɏ4D1N GIJ=R|$%2Ѓ o?I;bY!+2J<8 ^0 y%XgZ4:XqrR d #b4e.qr0؆ TX_Poh'0<<@vTqZ:? D@&L9 <6'NY}ր jbPn[*AЂ#I#X Z@6`ztT#!F& 2M#@Ʋ+h9Uxzˁ"-(ծcbJp 4Gz{C J2< ^6.Y`R= Q`#R Q J{%BҮʙl :CQ">L3N/ɏK^p]F G=`[61l[!RL:n  X䓵2=/s@`m@%pؑkTyd/UKo y)*73Xa@g4@4`@E]KMv͒uG[zukBp9s`!07, D*SDjhc|P[/;|FA>`luq5!6 8!F^D7@as:o93/ЀIS9!`Sh@j1#i-]`#ڠ$'l^Z @Y@0aсv-/5ꁨF;xc ;~yN e/v)h@Ya2(b2< ҭ5r}fpxpSN( <?o.a{pEI*#J K>bjEv/@`Ff!ХLo~Р+< N$ ζ\-CękJ@9xԺPZ@'Ͼ/f l +N`언" /jdj! Z!Û>>&t {j `6pkwIl)Kv (/>2"P @ õ"jG4dlqnMӄyf̗.ortD8`8. ֢і$!ͱޑ: XF<B&bBLFQV N v v v$).NGC0bXz˰ɲBQ]0uSF`"kCM긨Rdj >DJxd =mBZ$CH0D` Qzf njˌ3"꣆@ 8&/Lք\̅lz N 2q aM,z"YvB8'\~vfHMFl L33<6O}+HO p-3 vn-{ + .c f.2\#hց9ݼj V0Zd<- (,,@D;F;# ,@7#j#0]J)bCQКќ^6d_K0`--[%gۺS ·"`6`)Zm>^0{CB`h{9 !Y"(vkkVx7hK"*n bNbUbHEqA A" VG h7Vh>-ڀnureN)p| hpT(0݄p @||l~,xx.|$ЀDU@DA(x(ń,dք턜 |il``n lh } m x$!ĬA c,`D/aSp$!Dq )7v@Ë.&3}/4(#4h"ӏ+p#N_|@;FP/h &#2|-΁aGF₰sڴhGgQ°%<)ap #CB 豣XhW ZaȈ,&k=b   Cp@-DZ\@A DP@ mfQ (: [ p .4X{(d & 9 Miu>O@ .pA)j#TPA2 Urݱ&(0g.T 0gLC 0y>V A8qxiJ6voj B3<3 9fB8`$(`icMƴ@ev:(R[@p1Hq'@0(` L  }K0ApC, $Al@RC8 ^ Br(;{(lT/|\;07070100041366000081a40000000000000000000000014cc7a4260000201c0000010000010006ffffffffffffffff0000003900000000root/usr/local/share/doc/tiff-3.9.4/html/images/dave.gifGIF89akh \wGit9G5 s]pLJ)責ԐӌeӄRE0?E0C@?:$A *r=_:z}}Ÿŭ,'`5;e^V/U/q/0qRbVr..?*yhdmIvp8OR( .. ʣ_1mWX3I8B2J >655=zxa`5|k.<p7@;3#@wPG@ /,D 0;0I v q;q }0B$ '"|0BV 0-i; ~5ً0r\:7 D$b JH$أSzfh3Ǭ.`PMQ8qCf-aE-E;b52k/j'>BR!bH\c;(Ǵ$%AIZrX:F#9䛷ʀD)b{T,1V@HnHꞙFX2P,5qEȢ@K`tEQa@ud3fI L3Df`y Ȇ\˺x]`6hZ׀!ph xщ uLj2CAJYv=]Zԇ>#m ^* DůH3% RJF44@7?NdTh>CSH:>:f%t*T4dDY\(ˋUu/ XF80`ի.HP ,f-Qy.uNS@ʶ>- UL ԰:*Yk{]a}q]/7 ,\"ȅ@e$PB*1؈3M Pu/0*@ 4Qq*W44ef "7;~ [GBQ AAkooF;P jR+Y9]P|L!%:UuPsҜf @9 Nκ̛ݭ}{vɁ.:@b}7 zNB:c{+\$h;=OzЎ|]:n<0?}3B<G?v/s`w :ߺw iPOH?@$dBIP 1' _X! UXD8p8# F0_8!.p Wr;| jX+O5>U`g%h\E( c"Hz(рra3'GnD.ҐeF2A{"]c(>CoH m*s- mVxO!WOuq PDhλK|#Mь4l 7}Sy" jqPCD Kl7VB "HdфIjmhdhsĿ"ЁyH̰nVw1N>KL =Q0 wq4 dAz&!z{2QP'R>MyrK=eLHE q~T!`|DOksGgw)h+!Ne\N ]qJO+EcP{GN! NAAERXXYfOkg pwaSBE|+5Qb#L1QW2 7T_Xݰ0} M*Jqi12q.6b+cYM%A#116c F&e(V`,ҤYe'P8}&g P0T(n?p4H5RX;Va@e'a>&CE+.6Q 0TŁ$qdQ%p ?P,%]E" 5n"#2Zeq5uMD?++ YH#%.XU`E")rY3 _A1҄X(x>r#ye#B@>e P;~WR^ZX#`&^IV"_-iS<1` Kj{v9%C/%*`hT3R? % B7d4i&n#9% 9>v4 tiw;gFڬv86mv77xS:foBBhVi;#A"Z7jkc;d&m;Vm d1dl[<<6pFo >o7Am[ F@;FplK v@o>˽ꋾ67o?þKn 4ּAfVAn@fo 0@+?ܿ@@l=-0;fmk&?jq: &vp   T`C*p0 \ vJqQcq /,3tDT1g@sH Cv5 sJtD6t"v^,' >C@BW D%qD QGEGt4&CF'mwsg'sRt[ C}@taCȸ iv,r1Ej`vm0C?1GVlx=L%.Bu`v{,isX(3]%x^TAɞp#Wq @Wl3  ?P˻<ćEs,vVO h8pDrGzzDժc&#MK3X31-R_JxRGid+sK2eTUub$F;Oh܉"V]yhN/HqD#Aa ؑ10)q-OT20P}$Rwr已$\xW4$zU p)qM4ҡ-BX<O1Ҥ(*Na2&ePQBR+pU'P|!DAZ2%׿Ȥ% uڨڕNMA'Y=y(ZbND/'.$Qg/~ؑ01Pm9 YXpWb#Q/(w~Z0M%Aȍl6Cշx'Q8DɩaH(5室X!Ϛq}RTXǭ0& m9s5&s9Y$%_(B~54m-"CjLPsAAw0wM2qUy)0um~PحbO@{Vˎ2a(FFv $ X)a0uH61T+P6a%`0T3qu/i"w{$aON%1PvbX2j*' rQ'}?P$@0)]>DB uF=1b+כfYV|=4`uT*< %#CbfFGcaA/2Eb!IC4k ,uCnG.w.f'b#wccqgDؚB`[4Tj<ɁFkukkƂW@__ mg=76(Y#4N(pϠn0Ì)ęBvصjtk_@(0SP.exఀ0:n~`2a?n!';B7Ȓ&Up@69i޴̷gB a' ef TqJTF'38z|U:#1xc;'5 !x=&ЬHQ T̍[kՊu*Ba>A _6,+ Rn5Qe#O0"DX87-  &}kpA.;`0`6c8P ($p ,8D vG6#FI/?Xo DbF, Fcp|T.~"Da<((fSVTqȴ8Qz, "8p(Ha*Q@p*0"Ȉ'PFQLdqb^ETAF jb&PJhD)- `O[JMI'F:/4`p." H(# \4z"] \ʑv̥4^xYNU&Ijr`S0 VZi}=wuVؕ4-ք} 4 "i`F~`"VV\s5Xb"Xw\cآҾPzEP;*:48!Ug1Yu8ʈ%bs]Wc5VppI<-Ywe#wZ&a\e~Xޝx段Lq g8 lkwj*1kᅦ#.oSRk% rc;8{_56k3K>zۂp ]-o` 6/ӸOwQ ݼ |3l߈crͻʻݨ8xF3:gjN_}-5op6~> bۻ/=OXh;xb+mWC kw5|sj>Xu-SG7 xOVß9pKSLDqXjmEa*`q%YRxx,} ƼRSR,d1 GW^πpq F_OOuጎe<t~*Tú'. !S,&36/y!]I& 72~\r%[ʘyjWZB?X4QeE$R 0X*$%%Qˋ2fx%2-fzX # ?P/oÞ8m*φ 'SxvGŬi7M[S-`ź|g_jv7~^!oK).f89Tt!BgcP"': GjcU ]baV'_s'+;.Y}yWchdX{gjP50G+'8yAp-rYUvIKP $K?m_x1zV^pW4I3.d\,A}#[gG*i_|3'~_ƾ4vYO[k&=>\֥ a6:Oq$+/_~8~0LjFGSKtcP4o O5>ٮ^GVzN2Zrjɦ[ n*_ZΒ~fGQ EΚaRRFxYy.ea*TY,j?W&z+'K kJ_G:]j^]A~.aR0Ki ΉYBo Y L=cMG74x]uNm?=m/.%9l~uŚG?G9.7'^x| ÿ́&,&"*acs>z6|ęEj'J.*i}_ 5d7JIF.PnI.3a$ HQfFrn$ގ,φ&u:GiFUԿc}YOx?fz=m| ]OT׵)5/ to]qk61W;m]'GVwᵟ⿉:D_~kp^~"xzJեYf-$MZĶkNGP־wqG4sAVH"lKow`7~ |5.'_M3>cikMŔw^JLm:TX5FnoI-_ OyM?|Lf7[N?ßi2x#ᝧ]xW>=luiڟmk C4kt*? z=k-_ƾ=úNYx_Y|x6>'{H$MƋ򥍞c`a^4(XDž 0YDp9{<& O202K X|>w؊05kOic0y&+0e8,F UJT*U(`3Ol|}Ŀ<s#/YMZv֭;k彾ܶ>t\*j wCOKMS۾j~jK|P^eEoOl ]]A Fʤ+Zr迲GO[W PԾ$|uu/? |;o_^!׮Z&5ߌ]Bc$E|5y eusgq~d㟃#xGÚڦC}6ZӮoZ}P۪Z:0ԙndz̵b3&q?#qfOʥByq`gqe<}*8Zl=,")iewI,Ez'g'o/<#!+V {_4׺Xi6wς5y֛z7ssgF|i?|uYMaKoxM; ?<#xI:y ڌ:+XGx󽍝>l2w~$|/|%o61O xRgK5+IY|D]Ri߃nuOA 6-k6:^$ ޗyk}s/ѻ7ϱy/eYj6f5LTS5UMVsz4O g͌1Nfƥ_>Y' 9&0QxyCkvЬ@ Đ]G ynLMI>cTO_šGIҮ<].y}_V9-tVL4 F[2;l1guwoqy7Jz|n>"hM~2P=Yt'WW`We_A{{FC}Aͯ]j[fO3 a a*#^.Yb|=lCVuf\LIXy^t:dr*A 7 ~h;jk\<=Fjz|3uiNdږ 5D>am6wOse8:j+=<672fO_ l-ܸjy10NGW\p[WqVgz<33ANwR3VpPU4m'O<+%Ήoi#=ɿKW>i+K5̃H~&1C: CVbjRAqg),vDumޥa|!g~صA^K_Hլ,4>_զ>7tmEl 8H|2|Bwj0cckFoqk5ծc}w7SHu;22^?ǀcVe#έ\U=l& V&X]X/dШM5VTQY*}kpPҎ fX88T*XpK^pXQRcFtCT*L-w_-'/~%&ih!5-6[.ML@E.źG'Se{/ه,&ך%Qt;!ZKs=ŗF%R~K[2o4A *[:t25(Tͪ9?a FJnU!sSNeXZ8G(;)cui0g|m)Tz3FR7_ԫR%S[k.xc3>|$]. /<i6ᆭMKþ ; YujF*#3+m_Ku{^Xox)lmKmDH _Bp\m|R!Ӭ{[[i֐Z\jW7nk9=B͙/㵺i)H9?C9474ė2ME6P[%ƔŔ:O$Qņc}orl419(RJ8(,Dq50q*8Xh*UhWu1rUq2HO !rn1iѥSV7UZ.)NU'u u^T?7]6cM64vHgRI3>,5OKm.<-φ0|u i:"JEl/ /4#V:^sP-{=:8g%"~.5Z|׮obVCtUs=s`b\;niMk_S>׊thEo4ԑ,t.3¬m"1H_~S3 EL,*T*bFF3R0 ҩ(r*bSéʞ?I)C`+f3J,".)QUCZ8 ^*ipS/#>#MMO X|7,[~ūK6o{8u,i !<5DQBoy lm}N)dyf/ V&k$2$GwާX|6sj:%yy}{\vL5յ0\E%8ZcEH-;X4M%/uWw"Ӎǯ\kdH1+K?L R})&Bo|S4pҭNs__ ˊa X^GѶTܪ{j!'đfF&V/q9|!V",,盌(ӥGsW'nGx< _5s?7߇sk#дۉ`xg[ֻڵܺn,-MHoax3_ƭcӽ7zF-OEԬ4Bז/+HH)E-R3 ϰ:}O |!Οg&2xb6YY%.# zdشç\u#jVwmF|k_mn-|#^մBiIksb 2 Iltk$fhoa0b qZX:DPƖėZYs$wkkv.{=M$-[k_^6WN-o odZۙ/}x dtf=cVsDR-΍o5̓G6t5VіWH`w6Mssn项 Jl=ZUPZx4w*ccjGR*W\\3,>̱y<5LFK RW/V8j2hS%*…J^4%o|SAMNL3^-Ý2Jo%gҢmGV[ U:ςv*|=3Om5׼1Ͼ 7tȮ' ޛ\Csn!nT~a~԰? >/7_ҭ^ i1D,m?jqw:G{΢Z鋢;ܝ. x|D|5O}?~ /XM_Zh,4go?ntuk,zMӄדHI pX\fx̾<Uq?ٸ b\-LxHvWL7 5R+էtү|LiVJb2x~ I<ZNu_֞'q-~i֓|^~V#?|GSxIVWRYܵݖlrGFcW߁xlx ^#a7O{y`XEv}as i5 `d6w2ʓ-xWv_⎭- ~9^-]i]xUS4u-;QtKV_is^oi=ޙ w:Pգ}U:uime1ZI}i5-]_7YÏ9O >&Yl2YSЫBXjΕZXU^kKJ'2LvM M &{8TshXL^x,\|hMVTppU]<)g>?Xyե<,bANSi[1tYM\{7]^|=u ~"\Vrx+R7O|NPGxSQV} _R@Iִ0s#L~*]&syg\Fڞamsdwn$.mra5{HbqSWKV+ZidVm.u3 ŵ̒ε 5C a1y%*8:t5C Z {͆;¦9ʪ8X:\E_fҮ', W˰kF T?m m֥jx\h;JR|/jia ^iv#:Q[VK2 :|o.qjk-BZ>nZ GQԮU,K"g綍` с>~ 𵾇_iKo_jJ:e杩ZO{56GOtӧhQzOKWGf\l5k$g%YR+h Kd[@lH_o8xT7VxN 🵒NwBaF,iT5R4:3qc%cjf\+,}zXZv0eV2u*qZZ(םzQs:T#5Hb(~&amsSok [K!l#uݫKwg^NjڏmJ݆З3Mmkhq>Md<3,%rF"䯴N )+q [e$qq+"7 *'Ldfu_%ΎWWqT='*NN.+|=SWpyaThB5)ө S=YFtʤ%s} Cṵ*nIX|agi6[S~~h ºV{LeZ qC\ͨ[d_Vtyg]]$12Z]n?JmUᯇuXψI8+8o)|Im7헑y|@}Y[kk-Z~x;L>';uxn~ _O&[O F&Ҵ ZkZ5ß>x? .j?Eyh_'g7>/:޵/K+1ƷC%𢶣k#[Au~vwҭOX꺅x>/J,b-_Y!Cnn ?f?gMTi!|]_P=펫Ɵmއ>~tKm#iaXj#+ ta@)psQ8k4գvg UWG guaQQZj2sKra2~-e9YXf2xrn[KW:O2V*0WFB92ѼwC3jzxgz=OG|)qxė"|mxY6[BJ|yj> 7.Gok0 TD7d_D宵ok]zu`}ɚ֝oCWо:n`g֬oxKTơ~-D@}N&(Oh^4U"7d#TX5}.Q,$-uD<omӡ[-gDqssLva|7Se*yb^Ua˲ՉUy噫U̱s”2*r5)C(^ӼQtZ}iV:pӴ)Ӯ<^i {į>o?vksMXxuǿ5;}Z/MAu$Cv H̳ߏ (h?ux' 5ďK'cҬ̺ΊtyeT=E neÜ;0Jpn\U|֝<~b⧍ 1O'pOżS,`m*x|6 lN((+Q t|-Z1BvGĺ|7{~![iDn?dcs uk< -Z:)eSbL.#._G WJʥ`Uj8WS: q*/J3GhQGIOtSBZyЧ5]ʜxs/nԼyg^AZ\ZN|!2^iP]B-d6dfGКg x[-jp_h-Ksmekuu戁XuIlKf{ ^kf7~m7z$BX}5ˤBRKs.ᏇEt3i#\}úڵ[YL,Ms,~=BLMRg4ּ([gs5J.ITU*Pt!T+֡:牞-V+Ө'q7&24q yJ)a(RӭK 8TRrƓO|Kimyk zsצ*xxsҌ/ngkzs%"y 5Eh+G%1$xb_Ğޥ:]鯨XcH-h޵ caR[4F?fsm%6 &9MJ[m Auoe y,1IX9fF?m-'VڍΣ?ۼ`ɥ:WqLrܛܿ"18~!3 >[[3C2+_RXHc:jO?~l,8< _դ9?x u\bijuyWtUBU(5nwּ}߇Z׊t߇h si^k zo5OSGJ%ww:tXx_ j7N뚗/./xWL{]=4ۭvm;Cզ6- x\Fo1K "Z^"&h7kԡ|E sGY{2,Rk7w5cF]W0ZƳiok,uI-tK'O' aK[ӠR"|ʦr> _#7WSSET+eU7ckZXiIH2Gqu~)ҥ8ׯb',^#Jpx :4eW Nx/7 GKׇ~j7N`-zŧCGe꿳,K}Xt Ltiw6_G 6;ommVz/ow+_>"xw~ .KoԬM }vOMVKwOf>gk{}JK"ݷ\'a3fecW` .K>O|7w5Pi2ktky4EpymmuCXDW O[5ca?Ndo:'㫝?~tI.#- HUti]B.&fѠ#E IheywA!Ɲiы^Zp:LRGoSխG<^,ִ\xwO Kt;^Io{q<W:NKjww7zfXaC:TH/79k}:RNtڝ,3WX;%MrΣ4OΎK =Z^ʦLG(0Th:xlv WucThaun[AA3f=JN'QN`R'Nx\E=+AB%'R^&_L:ݎ̶3h0s[5bӣSPўPao,o`im-OO4VcKȭ5mZTmڴF@jm3ޫJMM'P\OycK eo Ej}kwiZ6j6ew6݋hcQ- Ux?RdoٚǏ:,Xn73Vvqնw[i M)K{kSCPukK bqt[ #FU%5 _W)Rԡ }b5GUtfeN4p~0,CQZ(2B"oZui+|#/(t~ 2?iۏ,,8j8eᨼ#yV/jI$yhEqhIˬ'.^|SߢoV|+x2;ƙj2Ć' LB Iq-kOҏz?g|Egi=K6pͧKvM.6\ewZ2vswpɦ&!fo& S*_ R^S80EQiTYXrؚ,?aQ?x ,x/\ǫh60{4 &u7JkĭGPWN ugC%Õ.Ֆ.Hi4.ۻikw^i6zsiZ cz|^5œYrx [[v S:ӡUx{E62jr+W'W^"WXiV6jQjZ\k [{[Aomv/Zl-NQo}_b~χ0P z3l^J|>2!K>L6+1 &]<l*ʽL?c**(bfVbdSZ؜G=Zt#SA7_~,iK(ZR.դvMql3gcZ:i]YxO7஗Y T6zn=gzK F蚖/i5+˴#ӵbuhVV0x#Nz]Ok{kƝgu_ l4{=> ^RDoѥ5$-+Q]_~̟ޕw>_b iE]>;},:L7o>O-gٹ(Ыl+a;[_ʾ>xY+bapR y%O.g,<(QPsd\hia$9a:x|,prhaiV:}բ*ѧg+msGV6>mjzKIs캠owԗ:奰HR,KA\>_ᯉ6֫VxmWEI/ivIp 7V/EŎ^$wzo<>i43X^EwhTqjziZl]"M32KK6[ȶ+[%68i{i$O2նeI˲ |_ ɬxǍܵږ#@Lo x~Aٸš5I4WY?v2ZXǝ=@5&'e甧dچT+#<Nbx˷^֐o58.JF"&čKlY mB٦&Y剡khn-&T:~tI:r*iN*q$ZJ5騪jn1pqå/i[;Cq8iKhQjEJ҆it*kaiƴ*G|+_|$O_-0x_Ú<>:KIzK^[!P{Kg;˩esTuZK jv.PCז6w&([xodžO9kgZuc㣌(`ӫb刯QzGA,C)C<93 2xk+ȱUKGJ12O Aҍ*4c7JStPtO.{Jׇ=ioD4 /4}7LnmV5SGo mYx_S:?5{/<$#YԴNm2}&KK Ki85QO. eI|/4LҳifizHZI%?^K_D_g 5YZAm<8bKx,;\M4xu ?8.3n8L>}av)q.")Rs>] lv->&k5ItIH"YVZ7E[,_>*x.[|+ao t$g1*?~X>!ma|7͸W կ^y[ eM C`p|CGE`]BZT!J#_Q8u]Jo hRC=ws]\Ez--SQR.cS.(|'V3kdzx-WTxX9]SGs_\]j3iky.3g&f y+/֫bTXl9Na:4e* )N>SN؊:j8,juKʵ7MBJ; ʥF:ngF5F<=HE֢51^!q ;iamkiZqh>ke:k]b :դ?O<-ۨ-u4nNlbC5=?STK[K;mN7VהkB%lX_/MͨK*F(Jյ=CCJ_]JWzrgnnla1o,,PG"(}~S,wp88<ʺxʔ(T0u(կ:0c/MUR!i{://3r\1x+:a'[5,UêϙFSjN,=Jr ?狣ֱss< /K954q̈.&ZF=gk1 la1~;+ORLj/4xZD=\j,tnRKDUkggx|e௅宫'MB?LD[Ll촧24|PK k4dy].[OI'p'4sL^my1᧌VV+NX5<*ĺQ:ԣ]0Eþ51 ,-,֞ [[FR+WaU4q՛O}[N꿲7]xn~*o>+i5hZ2j6%ĭOCttWu[>D5_jckwzZ@|{e^ χ._>;Z|7>?k1 ]>[6k]CQtPmݦmok'?+cQxZ>^Y˯՝ơھwݪ:^s{ vmb9!3V;=si: ^%]K][U|=jE柧s,0X#f_Mjw&mKU.>ό>3 C)ѣK~Y"8Ic=IbqT1*Ч ʼFK2n|38e5qK乢Qzk Zj,4Mb*4x_ #ً_74.{Y]'EխW˦]]72̂Rkя_ٻSo[?ö-x jZƝ|J㿁 uY59Nܵ&,WWzImsQo|փ[e.?(~?wA^M/>uiI`ײ@0B~z\o_'JtgGwD֕-ͤlREqp(qiĜ;aןa,QTttpz4 4lkTCO?3<F㋥Y,֥S_0qR)֭2bq*SJHVù?߀>|.BX&t{=֛46Ejus,xu^uĿ[]SPm-G&(bFq<ȭ+iĮNfK9[]u,Wf6Hf>පHbD il̼${YIyF2M}ODKHey<2 BgP̑lV9_G#0j0ج68U=oi9ҫ*jNV֨u96mVUeV8IQR"NE]£.*ӯ8Xuygl k42(k{aknDk0-xQŎ#Q\y0K wҵǒ IGYeD&+?[Z {BDn#trOC<NA`s}+NuZE4W2 u+o%BKm,hK,YdvI׫)Jq*nN*g.Ji^RSq* MRIU-MΪ^Y)Mj NmJI0707010004136c000081a40000000000000000000000014cc7a42600005d600000010000010006ffffffffffffffff0000003900000000root/usr/local/share/doc/tiff-3.9.4/html/images/quad.jpgJFIFCC" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ??( )~юq@ E/9AQKSɣzQKN |>ڀ)p} %LqcQKL>Rlz='RRPEPEP]G!žOOxYwIqkn8X y(!Y&$w^dz=ߵ~0~Z#8/xUˋ-w -Y y.u&<_l{{ %J:pT"iqb`STr[.I&~s|v-O⯋x-G+Hlu[hooKT5m6B QsEoZz/d|n!Ҡǖ%(P<% ~E7z$2+Z֥C +c1v7բ}kZNo#0S3\]̩ LsC M<_#O@o1ͰҏE|NN"F8Lt |'Ɖq|AJw]jM&90إDaI?|=4#  L^e uf)P֩VtjSևR*I#?.O01Ru0gfT0NN'C-߻&RKς =28u4V5{-Rv7)w+ǻIy5w4hBԗ/¥(|Cee%ynfO D*I~܍K6(ׅpL.u< Up#K TܨzƝ\5JFc>V9-?τ^>&x+64 kj|+qymou'gèyVkG/q1 ZtK>sEoo<['RuIs-,$Ǣ꠲p=Ft QEXe,8|8̲6g8jBmƒz~T9{G9+r-OUóc9C)u8lRZxB I8RXgʯ]=/+>k??|DX %`=| p/th5ڮ9u3[]VD~!?/j^j: iFN4zm>)|@ږ."#@> f{=O/m-AgJqr+6sfW׵mJi奖k$$gi _x.QJ f^ >-˨ia0}YJo|ya p/q.c~raa0|&_J*sVuԩRTcۓr~̟Ox¾&u5֒OSZՄ{-~;e-/>Ծ)~ʾ y|@뺍5?7R_v_:}.TA5h/RJ|*MS1vFShDHu)p7F@.|+xpDYoQ0{rsp|M Xls%Ċ?5VDo7Ï#<= }J[}͵5O9Sk;-:6a?tcػƺῆ_<%eauFQpYu\Xhmpt|9psʲw]qǜ/qoJχrl."L:41yB7硇7Ua4X#'?/Kpsgo$B9uO,j._tK)-BN4udd2s)g?_;O7a/ oy:DoPxnd-}{mGW3xƚį xFu?xX-WG[mk.nm!Yt(^9R/eYV?E-VoNdz؊*`4ڏ4 ma}8zx7FyVأXgNq6R:n>N:ں6<7>w9ğ W| :Ft-RsU_B\iV[G)i<{-?O?j߅׉2?gކՂ'R-c'b$lurkpغq882)׺6FR9-G5ԢKm-J &!!#? L"ki=J6,qEw:}͍ѥ· ikvQ Yf4{'Z1j{4enpgJL W<%\EkFJQrۚI]_ rŞ"Ҽ=cڕBPemec sk#zNO+;}:#vȹbsw1V<3B|1λm?Vw6M6XtCfUC qorMUpoPo؟M*pNsQm~pCuVqmܩfYKrN7q9\Q^ahҏիpZp乪P8+:ɇ%.go <+f<-5 |EKhz7J3ң- E9&m9u8:x@M3&in|OHf@u _^ו]|.fX \@,xY<m#úO* MGt> }tk EE.yo^[tR2ZioDM.|Jg?_xNе_j~2%4SUѬ[/ hY6{.R}P.y!n-x}#yiVm n*o2,,_/| TVKTjna8ucrZsl1JUjVzP5)_pU)Fom6r&nqrI#5¸\ۓدu{W杷Mi:5Y iqc{cL/yO ? 8/arV8HXC;'#ps_[⯌$ar,ƽOfjx;RvUlݵs3'x ÙN8pjƼӌc4*[;r~߬'m͗h6y;5񺍃k},2Å ` WQ|Pӵ xB( Jy{[ec3yy0&[-?i/I96xDŽu^'@&n%uَ;4*SUaR'4]V?</%]Otldip$ԭ~էݹmG@FKF.@2Ο#⧊.afM{7AkhyVXkk'PsKr\[*啲Ѷx|MzدmG<5(Ɠ>e.NTi-pOR,~ʥgF0u02sRuHVQZn):Ms#/|8Y֏8XՔH{;9mav,6vWzŁǫt==:w;g|AOOkZ ߇QEQ~ug;j$):2ڛkċ/gʉ 'տį B$uaxtԱKFsw#\m7VcVEf؜ \M:*éΔ.THͫ8PP"eXZ8,|aUsJTPNi5?=C~7/QeT3p Ģ௏?4Rkkuv]F'n3`R:A㗊f[<ҭJ0ehTiN:9--?C,ϋ14rƮ"+1>,2&I׮4}i\Yo? |e=|tu]~g"_M?2_OFTӴ}oM mqsk \C ~kx։A $0 W -[[&܄kNx ̻S6>'xIN+ҭ MGRR\=)W>z!R fYqf+|}>^מVмms8o7Qy!w`gIn NqO&$>/Ht/{'DzϦju ;ym-nb~TE#re>6̨?ׇ#ҍz4ܷqn2j2Ie9._?]Lt5VQkԛq~DPc$Q5)x/'m.KSk[;^ѴYӦ(^K4 [MۓyWQ^{ᯃ|5jÖ ƻ{vU+I=䶶ؚuv#&ڍ$jLBjㆅ9J1r*vnv9q6[Z|=L]ZЌ[JΤ!F3VNe&u}:Px=s_ԷtNIU}B?Ohd7h7~+VyT2+궅^/J@}RֺilU$x"[I]Y/FUٺx9ڔp ggO~Q"ΖGüweF^Tn\*~ ?]:c8z+b??P/3:_G|qh:=>qkmggPjSC.쥊C5/ڢi>{bDv-zns1|:8Ee兩 bEs9O_Ng..̱P˱ttcu熫I֥^ԡ(QiQ_]Zz䖢K*ǪIpLEvܐ q|_?t+}4,TfINuk0IkWckJQq;UX/_7`^c8>ɥψ{l7k >\qWg?_(d?Zl~;3xhzUjRITc9IIG$M_BmgO4;tF'khؗ( ;Vx& Γq^Gcu$/;Xiw>(je sjmw ]5!Wz.~:gX {e/%)ki("ʩbM[0G SeB(BU*ʳgܹe4 O-]c6i[Ӯ/cw[0gEaԣJƭ Ҥ 'EFz3ỵ̄q|?juk`g*כUkegOf߳?H_}W(YwJ8;&}h٥s^6#uBj?Ju9}y#+m*(PQ,=HSǞK^J+4ώ1Y[.YCf? R:dӼAλm4OKDfHiOpvHqq_߂>7Ț_U<ྍ?36a4}g¶wH Ȳ nba5pB,hj{ş?qsqZq_>*G"sgspf/ ղI?qg婗>"57\Y4gA%L -qYodO;O'gʩEi}hv_׸$qǧ__|#sc*;=:z q FGoX{pg><,W_ ŷ`1O8?xx*-m˛T.pGYSK$}?/7MuNk/J S#qo2H?_](〫KA? sv'E:JH|h !CJ$oO 9i/BEl8*7oܹv /,'*%O ?rfHf?!ܪFZ'PRm?>7ciٵLVQO֩Et|Um1)T1)n[EN){t*Nulڻ=CXxFtMJmd]CfSLe@˂ `AxRƞ4 #kKZ\mp|˱+< Zմ-VGԚO'Y"be8ʲ0$ϊ>"bx/|-O83-z _YE5xjr*x# ,/c8TVRj)Iz/wX]牴9:~)xO[ҧE>7u#?u~6ij\S^2.{:ts#f4$΋ ;_ԟ7;i.Y!,vH ȼO№UԴ2Mbc՗p{-s@#=3_8.rhSR:gpFNݚRo\k\]\UĹ殎y6iUJrNu04Ƶ*r狋-K :xR]k7~;5çgo<}^D)7UhF\ [ľ<񗈮7:5Z}u N¨U7Jv*P!wźOkQcm_\ܱHi@6de5͌_]t{XO fIolɖ].Ѣ12nOH!/a )qYCYM (^USJ*R)ME[WG/%{>ϸ ^Q?J9 U5jB{V9yMGO؟'߆^?},&m:o}FGԢmp]EdVUǁ 71hՐz~?΢-Sv+iW*_8~ϟ'uσv{?J-A 4:('kG[m-<>~Ͽ|c3KԼ%|Fx.]SN>+ c<^"4$֋pzf'{y Tڌ3۴O$RBʌ9PFyRw2xƟi05<=jqY5dž6$K{u| ռS]qk7 ar\d~3c =xyFC0Uպa13 aRPiԩ Ӽ~CN"Χ8weYac㲼?CbsFZs]& ̬߀1f~WƸto N XzťL WQs[ZY;ݧFk qjS/z]M>-|-ms.a\]2滺e+ͦ։ c-Fzu}uZi5 7k{%$f^lIuxo72ysc_OA> |re-?f_#xԞLHxODKs7VMN>'y:1&ʲ^!̲n!1Rgix.+ȫKsdyaiQJ_ce^)x15 |2Uakc(b.3C )Ɲ\'֤Qѩ}_؟^5 .c|퍍mZMI1*x_m;Si2Oow7=V _q^?R_o=wW6᷊dƻNYmFW-4R4 6Fgk[Uj>kˏg\mg4Q>O&qiRVU,vzJTFץGN BzZ?g./\W Gaq-:+.t(UȰMJ8 CM%JTZ& WZ]qGŹV93Vy)en՞ {YԢ{);{gVmE_Euqo 0[8$Ѩ=0Ξ9AsBcGDDsI&v,Wgq\K3NaN5)R)*jNTuf).zzΞ#x8?,-H֣BhE*Ќ'J:JQS)z"o-#|rß'VwM$5˪gH|ؤ(OILoKNο iO>|L ZY-u{ot-J-GuVv:Koyi M\ΰ <[`kudlsw?Yw4e3HP*q# FS.j2%NyyQjׇ2b*LNUBpʜu9O9%-e{{Y~0Oxjz_|9 LMg^ž}횁5MRmbӭ.& 9g^x#mQ\xoUොb9>? evYjᄐY܁Ai]< v~w5|#W:#K5s8*gW D, xSƈ-vw,M[N .a%Rr\jWOl(</ d8,ZaE uk:MFJan(Y4z9e qQSԧЭ8X+/r|oxž Ŀ:N+iJRo֌TEs?j x[=}J=>akj\Ͱ3v6!O.0ddg?d_xG$:~)*$:5Ø'k-;+>H`P|įVM~&-goSO _rnrm;(p#| 5;ib\ ĸJRSѡBG'Bz0nͼ+ƇCO=<.MUvI8:.o 84jIJ=~|bEԼy"^jWSibL/-+N"w|a哴f> YE$|7(an[3<$6{@x!eJ7 #却Nt ץCLm.f8p{jkY\^)J~\y?x% \ß MḂ-1s\&3Vֳr%)6z[81*Sa9apap:TX\= J^\0F6j={%O]V lSՔsYk8鼯ɪkzEobu䙮ekH'/CuV.k+k in%llv]%o<-Nto7_4=:=Ya k$Xa3JYvίm;O_3|3xƢڃ@[aӬ-ԛxVrb#F[4'w9xlMIk8QBpbfQͳҍ*t0UjQΗ% gYEz8J¹V;33 3_3ʔ9y*W֬Ƨ%(Q Jrt~//4m2f}ֵforcsk+`xg|WuOm2 [@Z/bbr?a/,,+_)OSE|mcJ֑{j+Nml-nrbelo)67REg,:ɼn$OO.Yc)6|.P䥉9ӡ9|5H7|^P3,bj%9qjac)%Nuq5Z4M)-&x>-|'q]^B.|!).nM~gٴrk ~𕐴qP,Y$)oDD%S #v"xgT%nt_2LGŻ3&X%^3 Oޯ~!`7^tɣ[I.2#2Gȣ8$ ľdcYyqG,]* UƮ׎>xƅZ떊S^+|sė\j.u!ȷKV孬b^B[XZy6)VF(><ʸq-xTr/?V< [+FNeW*o֔2&2gq'3+\o,{+c1[Zؼ.cex\]Z9}z9V'0Z!Fҭ῅IqvZ()"bfavHrK._:W_~O/V]N1KvWmŵ2jIT+֒JV($5gkuqZ7KfYb&7R+ 4)m<Wk/ x5{I״鮮"Z2lҕ@ܼW<.2n*.qF#+i`qܫ:r2U8*UUaʤN5]/8,Mx/19>>ɲ r|t#Z[a+єeN  :М/5=?d-[K[QVIZmsKtۋbMJR&l2~ /~!vvyl1 H[!a\\)WG wE@AcMKw%~MtmCGe%EhSSf4ѿ`O~ xĒ!Cxw\<7_8iQX\N>2ң)ӎFLEJZ&ᮭkZ kiw]kgBUsF}Xޟ_ֿU<߶%)on4;Of}_YhV$z嵫;c|YH~_eOkw6k:]%zs4EycWm)=Iiw2q&>G,^nC, NQx*4rx*t*{:& 5iΕzTjr~>'dm>19nM40JYe 4#t9IGSǼ'_ƞ%|%IyVh{\k34\Fzu`u*w*pe﴿/#þ 8xg/3xs7r8t)bpXZj*|XeHt)~j |1kϋ? 0_2;mJԾ[Lwr20  ~-;ṠO|^#Xe WL^Hğdմ-w*N5/,6k ex?6pWlwhL\ή8 j7xLf&qS.ļZ_R<4<{}#OgNgu4y|L~^3i'?h|W1I[_A[k>G[[ +,3¯  }I[_VӴQɺԯl 1`FIn2q_7`q3(sQJ|udEW_fYf+$̨0*a`1B.vJϙZmc5ə|BG2<>!Apym2H8#%4?ù"zqFm_6@con%YAa9ǘC9?۫ W>"%_wAݿt.Tu]>Y!H4}>{.#DϊDٓ.x_&k]GFL1xǟ&hKpM 1ԭMjm$~B>S>=sx֟%:ؚ)fRTWau\+ GoJZ9!c0x8*d!P>eTid4ru*GB0zPVsX?x Y ׋mS~&4nwc[mJ%pVX:WpRrCSC/E|%axU&skh374$`$@̤r?lt~ Bb ^ . FK-+cY}~?U/ ic_&mG6:䵞;OKakq7V-Q*y&4xaŹ3i18<(EW(b|RSuz&7ܗ}2k?|p>οRBge6mZxf*<5S)3ק)|2տǏږHҠ3xZ֛eCcxpkk#L(+{sZF06cg9}_ioß >-}Eɠ^&te4'TxդynjzNcehܢIm}Ayg5}Cxr'8V^25qrr XN5&F7;׀#Il Isem|?& ^ CIT55m0#M[OZZFyuh 3wu$PDFFw|//'_0Axg&=k!k6\Gtt־Ӭ.%5:$'pO9Ǎ^2#p] ,9aVtr51?fiӞ*% Ԕ!*@OpKpeq4ʨ+'-b1d}Zji6N~ } .$=JtC->wR}qod'?r:W+;|UMAx_M7Ï麤6˩}!Z Q [Jrq=)]"ť+} ,Mcr:zo#VhGkXnXe :nBspt}Mn{ww➑vF|KGu"[+m6Y#>.„ P|1هψZoH=žm?D5[-u;Xb]U=2)Mݦms. 7Wo/~ еxWʸDĶ:u5K)[Y΍%/X xxKOR2Nsl"[8M^'J\2K׆aГ8oX⌣VoFfc1gMb(` <:PZuc?o8BAq;tDZ|&zUh}zIuu4?GXwI,F#Z]_G5Mv-U>íء#Q|s gTa/+ q'8nu VH`HltȤHM<\/ޗ)!F?ig*)굶*3qjҊ\k?x-_ڍ}rNm%^d7%vέSK3XxkEIs wo{E-m/Kp]Yj=򤉼'I?/}~_S momZo~_-ԱvRw+a5 O¾"c2 Ø, )JrSoME*RyӚv3_ѓ$F㼃-pz`\ YK*8pU6aЦ9T??a1x)N6O z?`+_ ek+ :WY5fL1ư*M~$y1GGm5Mgwg"̶ƻq*d {w7ٞA&˄4gV_z$EqokrOC=NMNY0di4eFR0jΡyZ{_O-č,773ZѣJ1 J+hc:23, Bw硇b(Q՟5:U# ]htq 4KdNcgCpxy_4}\E)$ZO<2=ĒM4^Icwf$19$ICEmmնmoꤒI$I$KDZ$(C?}=( (?07070100041365000081a40000000000000000000000014cc7a426000033510000010000010006ffffffffffffffff0000003b00000000root/usr/local/share/doc/tiff-3.9.4/html/images/cramps.gifGIF89aQQQDDD nnn```222!!!ָ,C0X Aay,*x:aábX{9`GUT8@^ qz!X&[LdCA@  ]} v~ ~biv vcrD GCmD Gxi^c^o be^    CÎb lvvp*_ :I!a2`! "܌'fцI3JcɀE fBt_+a]b1 h>0g 7 )E 89SFFT45(05*]EZ6E aD,8l"<4kLj-ZC `-\ ^0m`@ҝZꔯ(ie +@ 4s{؃WedJ)H Dʁ>,݃`YW`U%3F: F`@4O- {tRyMƎ>v,6P0J=rED 2XD\Wglx 48h@:X@:Ht(af8"s >IR=(JO;Hhنe LJsSm5Ѥx$Řg^A~B<3.^2bV!!M@ f@8^AO&$2%<80eؑ`9^-hQUF^IVpʼڮt\NEJa嵀:qo21D :.ŒKʚ:0 li**X& fX^y_>ԛWm4!G4|ld&p=>1d8j @`1O\* DH jx!xTM (dkd?+e)Zܜ{$AY5meo7,q6" ĜL٧v tWO,NXCO" `E7h197zÒt8aWH@w "X @,*,0HaGB=)ֺ279+ 3cN5!NT:tC8 i?9ZUDFr"" [@w9{/ 7,`0ط3m-$:HZCB MvRp!3"MmJFHNFJQp2h@EY3*@"X%1T{#C>6ѓF!`d؆e4G#`D@)uUd&ǶP@n3MhLLA#/X8̊ rr5{ځ*n3)"FF!K!^ 2aP4|4:  @K^b|D-j !YF265!?yX˾I+\xaa#0!VB)L!pM M[0bQQ5]JP,-CۜH'TgxdQ^tc@)BbNXQbQ0@wPK+}A `XKo$#;ӕYkse-sNpD#{| )]#CBFjcaN”(!c֡U:%t+8oHR.5l`QNZ4 RGM#AJ5<(aP0xB5s8=褻LnVI T".Ɛ pzW}(l֦+qu YTѦU@T}Z\6#[Y͎H r \g |P #bNz 3xX{@a߈yVxUYngLE J!B>&M.SL鍊; 9 ~ }0F& q= `R$/Uar} (fRdb`Dyc"_¿3MuH-5N@?`);v84QQW14 '7C!@91.Y q SDRZ@6Li0"T01I$ 8r$2 hh@v8Q5!< mB>NRLQOG3xGH=˃pG rk"?= yVb'PDl /@s] E@v2.CLrDG&=0)&UuLgB[v6ˣ"a!9 p"xwH&02DLpDa'p6rڸp,$r94uXb)桬oݓrCc? v"r B 6Q?# F ,q08^L0Xr,f d&p29s?pS3 9Y q BqI"} P|s{f> ZxEF$" r'eG0o&%L?r^1;Hx x`!(4B5rnOf~H/ǡLPjud!5*W=Q:0 bK d b@Ji v@M:MQ]/g-oq^%e Ep%!҇0 k}p0^NWӒaMBInW3(z|d:[eu :P aPaPQ@x1{v80&:GmP-ʮኳpH,lx6FoA_k\@ pT@fX{h;CQ,kc5+0pUlR=efuFb p{lk)[ <kaۣnmPEAH-'^0LBf49͠vE a5xa#3ǁ86b#rbⷉ@  iiVej\CX+z'Qmg>1`0t(,Ff}'f= z2TN҅e+j0&@!l\h9r5K_, :|q# )g[1ow@!A[G%d 0PUgӍ.ZJPaQtenЫ8)1i# Csl9<, (^T,sTj0pvq  [Q_&Vekl{FGQSs(m!V —P8C}yf/aZZ ,_=ȋ3A'%3&Լ@94ihS# (p5[Q 0E4!Gt9!f0v.\&[J'gOJzQx&^gpyBW4$?c>d8@W`}`P"DGKdeA`#R0 {dg"`XNh-89u9ڨiEWSMeGE`;!D?g qGt:[W`"N[ TjHo6-v(imc'z)@LrE6ʸ-중 $11>79S63DLS3Q^n8{(m^hLσCqL !_81`l@ 3E4&*ұ]jO # bSd19aCkEP{aF/g _ނך16n![S.'NPDrr3%Y&)653#*!I}R7EXX6L"%*8jR$69z6m@)F}מX'S@\hflcYCmC'hjP7sFH<bN]6-r S% Q:"Jo.>ӣfSTq@ w#Cn#KvP^C=l@qw<&@GCl*AБe!BЉ"0L xC"{$Bt"Yqwmirr=0a$6dSdX\9tW=5 ,BCkGKACP05# <#nD })3<:zrUY3i >N8 :S^LB1-Q@&lr cb[(e & ?A_ߑ>HK2as=A^`h8T*=1rI~*BKxIS!*l+-G艉-7BqRWюR[O1i ݃/zE-9#rH 0^!?4ro9L$}{O1_Bq`Q]W8 C)sv4#S&0cs<_4!X ] |]P:v>Q:=6q "6(I*+k{5ipQT"1+XtABcwFH&!x3bTO$ `9qA\@ f!~x!GdRd6O0,8A0PE . &<p|(3)#!FGH%I , D"#e弤5ӛ 13I[!mP"!Zf}DŽ)  !nsBP w"fpPbҬ!8(}14Pmdr1 (,M=h|y   3  h@6# Y͔!㌋ D Ovٳ^ 4) `@('pg$c5`hx|qev 72X}31 Fk.2-abz1܉CZ(/pțe3tUY}l?1WhҰXja$\S!E8KɇOA`R+ m2ppB;dRX `i)„/2%jT@c8 /-Adq@l( 17cJjcB@h!Vb 7@ ,~qězal+2:(xIa ( 'ljG/p!Bި (eWnʲt XFjҎfA@B<-`AKQËE[(7YXpi44 8kF!#￐FSVL`2LHzYH`!G5\ʍI*R!,aX #Pl(U0)xa3;9/_6˗⪯E[, F jXtAiEH0Zˠ6)!|#+QFiꪢ(^#3nH#U8u5vo!~*#N)?n:fc馔2n(ιO֎pOd/X@8Υi c?40/z#5I+#\_>櫱[@4ҽGŵKbowE5ϱi;jghT<ʕDUC"FkFԨNW NVpDF$``eL!8B5H)@]?86"g ys҉3i|@WxfL@E1 MBLx#"i`812!KM;R>\Cb0mK0!mC{[R4Hz _KF6TMY#Sa4)':"& B 7P*3p+~> D8†rt[*琦܀G&//nWƛJX%ZxxH :qu`Z(:Hvj ;J#ly炈FALA1(!7%T,'/q镳PM AoN C‰xFo%I$7PMp8pU#^ƜĽ. (ipGh0)xzE)b{qibG-lg-8R\8dz%k4)n<;ll 8_PipOSȠR%/a ɮ(O8Z7<] p?~Ӂ\) H#JIhUpf` Ix̒StD&P #MDt;R봃]Lj2 V#.1= a1yTq+-۹vg̘ YXq8/l:_eO@O\M(5R b#JŰa6m)m uC,~ <JXr]V!ygEwTE,>!qtTP)-uݵqTA)#b\AvpVhI_;uθ[Ѐ) W#b4JjuC6R rT'a9C${sny3tmIP81Gńs(aYvm=۱Y3dTNJNa=ѣN_GLXP$3 . zG\޿EFWM[i=яW ?7X.@o& $Y;:*!K@sQQțl8ʂkJr@,M K%Iؾ PX&3ȲVڛ˽[j8-QԘ/3-c/bfLzA'C) Yq72;ڛs4h73%B"Wx<ə-n( [j4JmQ:+Xx)ӳڲ91suº 9xåb'#H3A0iIx!\ND I=@7Ć ĥ*:%94|E3/LpR=)(!F*Eu/U2 )/%C^1ن +n@5(7GQ P 7I+p (80:Il4+#&i,M9JB D%"S@qh56<ۚX;ȇX\H2 P8 sE;ZM^m#h[ +hȩ ¨t0y"(Qbܠh8;1Y3&3ʚK5#)QP%kZmǸz)rxeQuI qz9Aq? $o!c b`"= 8sY岆:,)EBTh(0 ))B Y a{ZW\j`pѡHQ"qS0D* ӳͷ.V3jziN08K8/*HY:(Y(e:j#,JQJtL\ӰA J$eWrȉ=[YP!pU3b(р:m0:L գH*'~9s[̀ BEyي>V2Y >@8xyq*#`m1[i{K^4Pp9 ZP ycxdʼnX4؀*C,2O0 D`@S29Q̀C IP9`\PYJx$$0Ks**L`J0J/X뢤!aP%!BӌRJp ڒzHx܋ 2 26uЭZjs`3ʣZIG c"7É)W4ר/Pp+H`xm*Zvz/AlڇWehp%{#V0QrPHݬ I019 pQx]G ܸ7XJ*m EQPP،[i- T#WSֲZH޸r #2F_<G8՜x-I6-(8m*Tb8_`XJ`T0Yh(XȄٖ>:9KH Th`X` 3CvT؂X8G9i$&Lc3P6 T. R<{5 n7T=zUC72 (-3 IsØ;vh!ZCTNLY`PvJԂH68T02éNneXeI\DxCL/ @dqb؋PD0HJM4j`#Kxv? `;G:QZ\X x(Js5$r܈ڛm9HIѿ\YWAP,b1 QXt-EX ^8APӘRT-U~euRޫTIWf00H8rujiîC?xIy sJp_XM#ePep0wQ~2!Iؔ6kx  -Bw8,! $u(0 vA?ʨp,״pPEx% ,i f0 3 9^,E10VcaB1m%jjo E's74+,zgh Iies BF+=js )Ȥ+뙁O #5:`|^5ӪBv=ۮ pdRR4$bJ#?GPX/) eISKQKW+ሑZEPuHx5uŬFvj@pa? (ohrz,io.(sh90B8b|9Y82qExo=PjD Oqp(PxGW]j,s&h;SG1+›.1XPq'zviԤp.] N*,t#`!T*)p7 {xH!K^Eiy }%AMK X(pm,4 T虩ӆ^o VXN!i&`DH?$`#*C[nQkvP(wH*l)M)1kl9X-ـX1!P:PJoXh  7I Yy4(T5#DMT!Q 4p .Ldt .13Q:{expRFZOM`#}[`1]! vM#(ȕNH``mq DKpK3ddy[0k#9q4pX!)#p 2r F `H[nTWׄ "hO{&m=PeWFU #>"KcVt@uʔSeʵ.1f]@ycKA!P*a@*!sj>Edk^f\@ImxpqfŸEh'0QC BD=3@^˲@ r8}QKqR rG ibτ/30rAyj/D[T@{(JR &(|Un'bB'Ĵ' 1@!1 rȀN%Z`Ȍ(<H ¢  &Erdg3 R@cH:Pf++: 0(t%AP(gH*"25b M<ÂWGE$֓fc\.-<*|q ppGQC:|$ ![D @ w8C=cL?U< D ВB&Tl܄a=sZN